Close #1381:
- Added 'ignore_fmtp' field in pjmedia_vid_codec_param to allow application to omit SDP fmtp in codec param without risking video size and frame rate param being overridden with default values.
- Updated sample app vid_streamutil.c to use that field, which currently not supplying SDP fmtp to video codec.
git-svn-id: https://svn.pjsip.org/repos/pjproject/trunk@3795 74dad513-b988-da41-8d7b-12977e46ad98
diff --git a/pjmedia/include/pjmedia/vid_codec.h b/pjmedia/include/pjmedia/vid_codec.h
index fbb169b..4726d2b 100644
--- a/pjmedia/include/pjmedia/vid_codec.h
+++ b/pjmedia/include/pjmedia/vid_codec.h
@@ -126,6 +126,11 @@
pjmedia_format dec_fmt; /**< Decoded format */
pjmedia_codec_fmtp dec_fmtp; /**< Decoder fmtp params */
+ pj_bool_t ignore_fmtp; /**< Ignore fmtp params. If set to
+ PJ_TRUE, the codec will apply
+ format settings specified in
+ enc_fmt and dec_fmt only. */
+
} pjmedia_vid_codec_param;
diff --git a/pjmedia/src/pjmedia-codec/ffmpeg_codecs.c b/pjmedia/src/pjmedia-codec/ffmpeg_codecs.c
index 9461006..e0886b0 100644
--- a/pjmedia/src/pjmedia-codec/ffmpeg_codecs.c
+++ b/pjmedia/src/pjmedia-codec/ffmpeg_codecs.c
@@ -341,9 +341,11 @@
return status;
/* Apply SDP fmtp to format in codec param */
- status = pjmedia_vid_codec_h264_apply_fmtp(&ff->param);
- if (status != PJ_SUCCESS)
- return status;
+ if (!ff->param.ignore_fmtp) {
+ status = pjmedia_vid_codec_h264_apply_fmtp(&ff->param);
+ if (status != PJ_SUCCESS)
+ return status;
+ }
if (ff->param.dir & PJMEDIA_DIR_ENCODING) {
AVCodecContext *ctx = ff->enc_ctx;
@@ -448,7 +450,9 @@
return status;
/* Apply fmtp settings to codec param */
- status = pjmedia_vid_codec_h263_apply_fmtp(&ff->param);
+ if (!ff->param.ignore_fmtp) {
+ status = pjmedia_vid_codec_h263_apply_fmtp(&ff->param);
+ }
return status;
}
diff --git a/pjsip-apps/src/samples/vid_streamutil.c b/pjsip-apps/src/samples/vid_streamutil.c
index fd75bfb..9d125bd 100644
--- a/pjsip-apps/src/samples/vid_streamutil.c
+++ b/pjsip-apps/src/samples/vid_streamutil.c
@@ -708,7 +708,7 @@
/* Create capture */
status = pjmedia_vid_dev_default_param(
pool,
- 0,//PJMEDIA_VID_DEFAULT_CAPTURE_DEV,
+ PJMEDIA_VID_DEFAULT_CAPTURE_DEV,
&vpp.vidparam);
if (status != PJ_SUCCESS)
goto on_exit;
@@ -726,7 +726,7 @@
/* Create renderer */
status = pjmedia_vid_dev_default_param(
pool,
- 1,//PJMEDIA_VID_DEFAULT_RENDER_DEV,
+ PJMEDIA_VID_DEFAULT_RENDER_DEV,
&vpp.vidparam);
if (status != PJ_SUCCESS)
goto on_exit;
@@ -741,6 +741,9 @@
}
}
+ /* Set to ignore fmtp */
+ codec_param.ignore_fmtp = PJ_TRUE;
+
/* Create stream based on program arguments */
status = create_stream(pool, med_endpt, codec_info, &codec_param,
dir, rx_pt, tx_pt, local_port, &remote_addr,
@@ -795,7 +798,7 @@
vpp.active = PJ_FALSE;
status = pjmedia_vid_dev_default_param(
pool,
- 1,//PJMEDIA_VID_DEFAULT_RENDER_DEV,
+ PJMEDIA_VID_DEFAULT_RENDER_DEV,
&vpp.vidparam);
if (status != PJ_SUCCESS)
goto on_exit;