diff options
author | Nanang Izzuddin <nanang@teluu.com> | 2011-10-06 06:37:46 +0000 |
---|---|---|
committer | Nanang Izzuddin <nanang@teluu.com> | 2011-10-06 06:37:46 +0000 |
commit | 56a567ffe9bbe46f17caa83faf943e095254d9d9 (patch) | |
tree | 31a843f29d1801dd61e4b34c6a5bbe05c889d9c6 | |
parent | 1659aded24d74cbe7dc255bfdcb3d53d87867aca (diff) |
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: http://svn.pjsip.org/repos/pjproject/trunk@3795 74dad513-b988-da41-8d7b-12977e46ad98
-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; |