summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--pjmedia/include/pjmedia/vid_codec.h5
-rw-r--r--pjmedia/src/pjmedia-codec/ffmpeg_codecs.c12
-rw-r--r--pjsip-apps/src/samples/vid_streamutil.c9
3 files changed, 19 insertions, 7 deletions
diff --git a/pjmedia/include/pjmedia/vid_codec.h b/pjmedia/include/pjmedia/vid_codec.h
index fbb169bb..4726d2b2 100644
--- a/pjmedia/include/pjmedia/vid_codec.h
+++ b/pjmedia/include/pjmedia/vid_codec.h
@@ -126,6 +126,11 @@ typedef struct pjmedia_vid_codec_param
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 94610068..e0886b02 100644
--- a/pjmedia/src/pjmedia-codec/ffmpeg_codecs.c
+++ b/pjmedia/src/pjmedia-codec/ffmpeg_codecs.c
@@ -341,9 +341,11 @@ static pj_status_t h264_preopen(ffmpeg_private *ff)
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 @@ static pj_status_t h263_preopen(ffmpeg_private *ff)
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 fd75bfb3..9d125bda 100644
--- a/pjsip-apps/src/samples/vid_streamutil.c
+++ b/pjsip-apps/src/samples/vid_streamutil.c
@@ -708,7 +708,7 @@ int main(int argc, char *argv[])
/* 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 @@ int main(int argc, char *argv[])
/* 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 @@ int main(int argc, char *argv[])
}
}
+ /* 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 @@ int main(int argc, char *argv[])
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;