summaryrefslogtreecommitdiff
path: root/pjmedia
diff options
context:
space:
mode:
authorNanang Izzuddin <nanang@teluu.com>2011-10-21 01:36:02 +0000
committerNanang Izzuddin <nanang@teluu.com>2011-10-21 01:36:02 +0000
commit20336d98d512fe7afb211d85d794192df13b8e68 (patch)
tree8dcef5f23ddd2647cbd14f3a49a43f6e4b628d36 /pjmedia
parentd495463f14f9ca766726d155d182249fdffed297 (diff)
Re #1390: Fixed ffmpeg codecs to update size & fps in AVCodecContext after applying SDP fmtp to codec param.
git-svn-id: http://svn.pjsip.org/repos/pjproject/trunk@3833 74dad513-b988-da41-8d7b-12977e46ad98
Diffstat (limited to 'pjmedia')
-rw-r--r--pjmedia/src/pjmedia-codec/ffmpeg_codecs.c29
1 files changed, 27 insertions, 2 deletions
diff --git a/pjmedia/src/pjmedia-codec/ffmpeg_codecs.c b/pjmedia/src/pjmedia-codec/ffmpeg_codecs.c
index 62bc4194..ebb53084 100644
--- a/pjmedia/src/pjmedia-codec/ffmpeg_codecs.c
+++ b/pjmedia/src/pjmedia-codec/ffmpeg_codecs.c
@@ -348,9 +348,19 @@ static pj_status_t h264_preopen(ffmpeg_private *ff)
}
if (ff->param.dir & PJMEDIA_DIR_ENCODING) {
+ pjmedia_video_format_detail *vfd;
AVCodecContext *ctx = ff->enc_ctx;
const char *profile = NULL;
+ vfd = pjmedia_format_get_video_format_detail(&ff->param.enc_fmt,
+ PJ_TRUE);
+
+ /* Override generic params after applying SDP fmtp */
+ ctx->width = vfd->size.w;
+ ctx->height = vfd->size.h;
+ ctx->time_base.num = vfd->fps.denum;
+ ctx->time_base.den = vfd->fps.num;
+
/* Apply profile. */
ctx->profile = data->fmtp.profile_idc;
switch (ctx->profile) {
@@ -475,6 +485,21 @@ static pj_status_t h263_preopen(ffmpeg_private *ff)
status = pjmedia_vid_codec_h263_apply_fmtp(&ff->param);
}
+ /* Override generic params after applying SDP fmtp */
+ if (ff->param.dir & PJMEDIA_DIR_ENCODING) {
+ pjmedia_video_format_detail *vfd;
+ AVCodecContext *ctx = ff->enc_ctx;
+
+ vfd = pjmedia_format_get_video_format_detail(&ff->param.enc_fmt,
+ PJ_TRUE);
+
+ /* Override generic params after applying SDP fmtp */
+ ctx->width = vfd->size.w;
+ ctx->height = vfd->size.h;
+ ctx->time_base.num = vfd->fps.denum;
+ ctx->time_base.den = vfd->fps.num;
+ }
+
return status;
}
@@ -1084,8 +1109,8 @@ static pj_status_t open_ffmpeg_codec(ffmpeg_private *ff,
ctx->opaque = ff;
}
- /* Init codec override generic params or apply specific params before
- * the codec opened.
+ /* Override generic params or apply specific params before opening
+ * the codec.
*/
if (ff->desc->preopen) {
status = (*ff->desc->preopen)(ff);