diff options
-rw-r--r-- | pjmedia/include/pjmedia/vid_codec.h | 5 | ||||
-rw-r--r-- | pjmedia/src/pjmedia-codec/ffmpeg_codecs.c | 12 | ||||
-rw-r--r-- | pjsip-apps/src/samples/vid_streamutil.c | 9 |
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; |