summaryrefslogtreecommitdiff
path: root/pjmedia
diff options
context:
space:
mode:
authorBenny Prijono <bennylp@teluu.com>2011-10-18 06:46:49 +0000
committerBenny Prijono <bennylp@teluu.com>2011-10-18 06:46:49 +0000
commit044e24c187fff2e14fc2f102cd561ccf057a7de3 (patch)
treee031a25cb11b8f9b8edb421525aff55c1db89fb4 /pjmedia
parentb5b11d9cc3013dff26249df8fbd9ad82bd7fe5e8 (diff)
Compile error with older ffmpeg due to H.264 modification (re #1390)
git-svn-id: http://svn.pjsip.org/repos/pjproject/trunk@3824 74dad513-b988-da41-8d7b-12977e46ad98
Diffstat (limited to 'pjmedia')
-rw-r--r--pjmedia/src/pjmedia-codec/ffmpeg_codecs.c34
1 files changed, 23 insertions, 11 deletions
diff --git a/pjmedia/src/pjmedia-codec/ffmpeg_codecs.c b/pjmedia/src/pjmedia-codec/ffmpeg_codecs.c
index 5346289c..62bc4194 100644
--- a/pjmedia/src/pjmedia-codec/ffmpeg_codecs.c
+++ b/pjmedia/src/pjmedia-codec/ffmpeg_codecs.c
@@ -39,10 +39,17 @@
#define THIS_FILE "ffmpeg_codecs.c"
+#define LIBAVCODEC_VER_AT_LEAST(major,minor) (LIBAVCODEC_VERSION_MAJOR > major || \
+ (LIBAVCODEC_VERSION_MAJOR == major && \
+ LIBAVCODEC_VERSION_MINOR >= minor))
+
#include "../pjmedia/ffmpeg_util.h"
#include <libavcodec/avcodec.h>
#include <libavformat/avformat.h>
-#include <libavutil/opt.h>
+#if LIBAVCODEC_VER_AT_LEAST(53,20)
+ /* Needed by 264 so far, on libavcodec 53.20 */
+# include <libavutil/opt.h>
+#endif
/* Prototypes for FFMPEG codecs factory */
@@ -219,8 +226,7 @@ struct ffmpeg_codec_desc
};
-#if PJMEDIA_HAS_FFMPEG_CODEC_H264 && \
- (LIBAVCODEC_VERSION_MAJOR < 53 || LIBAVCODEC_VERSION_MINOR < 20)
+#if PJMEDIA_HAS_FFMPEG_CODEC_H264 && !LIBAVCODEC_VER_AT_LEAST(53,20)
# error "Must use libavcodec version 53.20 or later to enable FFMPEG H264"
#endif
@@ -229,10 +235,12 @@ struct ffmpeg_codec_desc
#define PROFILE_H264_MAIN 77
/* Codec specific functions */
+#if PJMEDIA_HAS_FFMPEG_CODEC_H264
static pj_status_t h264_preopen(ffmpeg_private *ff);
static pj_status_t h264_postopen(ffmpeg_private *ff);
static FUNC_PACKETIZE(h264_packetize);
static FUNC_UNPACKETIZE(h264_unpacketize);
+#endif
static pj_status_t h263_preopen(ffmpeg_private *ff);
static FUNC_PACKETIZE(h263_packetize);
@@ -989,8 +997,7 @@ static pj_status_t ffmpeg_codec_init( pjmedia_vid_codec *codec,
static void print_ffmpeg_err(int err)
{
-#if LIBAVCODEC_VERSION_MAJOR > 52 || \
- (LIBAVCODEC_VERSION_MAJOR >= 52 && LIBAVCODEC_VERSION_MINOR >= 72)
+#if LIBAVCODEC_VER_AT_LEAST(52,72)
char errbuf[512];
if (av_strerror(err, errbuf, sizeof(errbuf)) >= 0)
PJ_LOG(5, (THIS_FILE, "ffmpeg err %d: %s", err, errbuf));
@@ -1021,12 +1028,20 @@ static pj_status_t open_ffmpeg_codec(ffmpeg_private *ff,
/* Allocate ffmpeg codec context */
if (ff->param.dir & PJMEDIA_DIR_ENCODING) {
+#if LIBAVCODEC_VER_AT_LEAST(53,20)
ff->enc_ctx = avcodec_alloc_context3(ff->enc);
+#else
+ ff->enc_ctx = avcodec_alloc_context();
+#endif
if (ff->enc_ctx == NULL)
goto on_error;
}
if (ff->param.dir & PJMEDIA_DIR_DECODING) {
+#if LIBAVCODEC_VER_AT_LEAST(53,20)
ff->dec_ctx = avcodec_alloc_context3(ff->dec);
+#else
+ ff->dec_ctx = avcodec_alloc_context();
+#endif
if (ff->dec_ctx == NULL)
goto on_error;
}
@@ -1052,8 +1067,7 @@ static pj_status_t open_ffmpeg_codec(ffmpeg_private *ff,
/* Set no delay, note that this may cause some codec functionals
* not working (e.g: rate control).
*/
-#if LIBAVCODEC_VERSION_MAJOR > 52 || \
- (LIBAVCODEC_VERSION_MAJOR >= 52 && LIBAVCODEC_VERSION_MINOR >= 113)
+#if LIBAVCODEC_VER_AT_LEAST(52,113)
ctx->rc_lookahead = 0;
#endif
}
@@ -1483,15 +1497,13 @@ static pj_status_t ffmpeg_codec_decode_whole(pjmedia_vid_codec *codec,
output->bit_info = 0;
output->timestamp = input->timestamp;
-#if LIBAVCODEC_VERSION_MAJOR > 52 || \
- (LIBAVCODEC_VERSION_MAJOR >= 52 && LIBAVCODEC_VERSION_MINOR >= 72)
+#if LIBAVCODEC_VER_AT_LEAST(52,72)
//avpacket.flags = AV_PKT_FLAG_KEY;
#else
avpacket.flags = 0;
#endif
-#if LIBAVCODEC_VERSION_MAJOR > 52 || \
- (LIBAVCODEC_VERSION_MAJOR >= 52 && LIBAVCODEC_VERSION_MINOR >= 72)
+#if LIBAVCODEC_VER_AT_LEAST(52,72)
err = avcodec_decode_video2(ff->dec_ctx, &avframe,
&got_picture, &avpacket);
#else