From 8fd6c2b77521127707acbd83df86dc1adad2dd65 Mon Sep 17 00:00:00 2001 From: Nanang Izzuddin Date: Thu, 26 Apr 2012 07:27:06 +0000 Subject: Misc (re #1446): Updated ffmpeg compatibility issues, e.g: av_set_int() return code not match to av_opt_set_int(), update libavcodec version to at least 53.61 for av_opt_set*() usage. git-svn-id: http://svn.pjsip.org/repos/pjproject/trunk@4089 74dad513-b988-da41-8d7b-12977e46ad98 --- pjmedia/src/pjmedia-codec/ffmpeg_vid_codecs.c | 20 +++++++++++--------- 1 file changed, 11 insertions(+), 9 deletions(-) diff --git a/pjmedia/src/pjmedia-codec/ffmpeg_vid_codecs.c b/pjmedia/src/pjmedia-codec/ffmpeg_vid_codecs.c index fcb7ed50..04dc1f3d 100644 --- a/pjmedia/src/pjmedia-codec/ffmpeg_vid_codecs.c +++ b/pjmedia/src/pjmedia-codec/ffmpeg_vid_codecs.c @@ -52,14 +52,12 @@ # include #endif + /* Various compatibility */ + #if LIBAVCODEC_VER_AT_LEAST(53,20) -# define AV_OPT_SET(obj,name,val,opt) av_opt_set(obj,name,val,opt) -# define AV_OPT_SET_INT(obj,name,val) av_opt_set_int(obj,name,val,0) # define AVCODEC_OPEN(ctx,c) avcodec_open2(ctx,c,NULL) #else -# define AV_OPT_SET(obj,name,val,opt) av_set_string3(obj,name,val,opt,NULL) -# define AV_OPT_SET_INT(obj,name,val) av_set_int(obj,name,val) # define AVCODEC_OPEN(ctx,c) avcodec_open(ctx,c) #endif @@ -69,8 +67,12 @@ * (e.g: H263, H264). */ # define AVCODEC_HAS_ENCODE(c) (c->encode || c->encode2) +# define AV_OPT_SET(obj,name,val,opt) (av_opt_set(obj,name,val,opt)==0) +# define AV_OPT_SET_INT(obj,name,val) (av_opt_set_int(obj,name,val,0)==0) #else # define AVCODEC_HAS_ENCODE(c) (c->encode) +# define AV_OPT_SET(obj,name,val,opt) (av_set_string3(obj,name,val,opt,NULL)==0) +# define AV_OPT_SET_INT(obj,name,val) (av_set_int(obj,name,val)!=NULL) #endif #define AVCODEC_HAS_DECODE(c) (c->decode) @@ -399,10 +401,10 @@ static pj_status_t h264_preopen(ffmpeg_private *ff) default: break; } - if (profile && - AV_OPT_SET(ctx->priv_data, "profile", profile, 0)) + if (profile && !AV_OPT_SET(ctx->priv_data, "profile", profile, 0)) { - PJ_LOG(3, (THIS_FILE, "Failed to set H264 profile")); + PJ_LOG(3, (THIS_FILE, "Failed to set H264 profile to '%s'", + profile)); } /* Apply profile constraint bits. */ @@ -432,10 +434,10 @@ static pj_status_t h264_preopen(ffmpeg_private *ff) /* Misc x264 settings (performance, quality, latency, etc). * Let's just use the x264 predefined preset & tune. */ - if (AV_OPT_SET(ctx->priv_data, "preset", "veryfast", 0)) { + if (!AV_OPT_SET(ctx->priv_data, "preset", "veryfast", 0)) { PJ_LOG(3, (THIS_FILE, "Failed to set x264 preset 'veryfast'")); } - if (AV_OPT_SET(ctx->priv_data, "tune", "animation+zerolatency", 0)) { + if (!AV_OPT_SET(ctx->priv_data, "tune", "animation+zerolatency", 0)) { PJ_LOG(3, (THIS_FILE, "Failed to set x264 tune 'zerolatency'")); } } -- cgit v1.2.3