Description: Fix compilation against libav10 Author: Reinhard Tartler Bug-Debian: http://bugs.debian.org/739439 --- a/plugins/video/H.263-1998/h263-1998.cxx +++ b/plugins/video/H.263-1998/h263-1998.cxx @@ -94,7 +94,7 @@ static struct StdSizes { { CIF16_WIDTH, CIF16_HEIGHT, PLUGINCODEC_CIF16_MPI }, }; -static FFMPEGLibrary FFMPEGLibraryInstance(CODEC_ID_H263P); +static FFMPEGLibrary FFMPEGLibraryInstance(AV_CODEC_ID_H263P); ///////////////////////////////////////////////////////////////////////////// @@ -203,7 +203,7 @@ H263_Base_EncoderContext::~H263_Base_Enc PTRACE(4, m_prefix, "Encoder closed"); } -bool H263_Base_EncoderContext::Init(CodecID codecId) +bool H263_Base_EncoderContext::Init(AVCodecID codecId) { PTRACE(5, m_prefix, "Opening encoder"); @@ -589,7 +589,7 @@ void H263_RFC2190_EncoderContext::RTPCal bool H263_RFC2190_EncoderContext::Init() { - if (!H263_Base_EncoderContext::Init(CODEC_ID_H263)) + if (!H263_Base_EncoderContext::Init(AV_CODEC_ID_H263)) return false; #if LIBAVCODEC_RTP_MODE @@ -632,7 +632,7 @@ H263_RFC2429_EncoderContext::~H263_RFC24 bool H263_RFC2429_EncoderContext::Init() { - return H263_Base_EncoderContext::Init(CODEC_ID_H263P); + return H263_Base_EncoderContext::Init(AV_CODEC_ID_H263P); } @@ -656,7 +656,7 @@ H263_Base_DecoderContext::H263_Base_Deco if (!FFMPEGLibraryInstance.Load()) return; - if ((m_codec = FFMPEGLibraryInstance.AvcodecFindDecoder(CODEC_ID_H263)) == NULL) { + if ((m_codec = FFMPEGLibraryInstance.AvcodecFindDecoder(AV_CODEC_ID_H263)) == NULL) { PTRACE(1, m_prefix, "Codec not found for decoder"); return; } --- a/plugins/video/H.264/h264-x264.cxx +++ b/plugins/video/H.264/h264-x264.cxx @@ -105,7 +105,7 @@ static struct PluginCodec_information Li /////////////////////////////////////////////////////////////////////////////// -FFMPEGLibrary FFMPEGLibraryInstance(CODEC_ID_H264); +FFMPEGLibrary FFMPEGLibraryInstance(AV_CODEC_ID_H264); PLUGINCODEC_CONTROL_LOG_FUNCTION_DEF @@ -1065,17 +1065,17 @@ class MyDecoder : public PluginCodecworkaround_bugs = FF_BUG_AUTODETECT; - m_context->idct_algo = FF_IDCT_H264; + m_context->idct_algo = FF_IDCT_AUTO; m_context->error_concealment = FF_EC_GUESS_MVS | FF_EC_DEBLOCK; m_context->flags = CODEC_FLAG_INPUT_PRESERVED | CODEC_FLAG_EMU_EDGE; - m_context->flags2 = CODEC_FLAG2_SKIP_RD | + m_context->flags2 = #ifdef CODEC_FLAG2_DROP_FRAME_TIMECODE CODEC_FLAG2_DROP_FRAME_TIMECODE | #endif --- a/plugins/video/MPEG4-ffmpeg/mpeg4.cxx +++ b/plugins/video/MPEG4-ffmpeg/mpeg4.cxx @@ -205,7 +205,7 @@ const static struct mpeg4_resolution { { 0 } }; -FFMPEGLibrary FFMPEGLibraryInstance(CODEC_ID_MPEG4); +FFMPEGLibrary FFMPEGLibraryInstance(AV_CODEC_ID_MPEG4); static bool mpeg4IsIframe (BYTE * frameBuffer, unsigned int frameLen ) @@ -688,7 +688,7 @@ void MPEG4EncoderContext::ResizeEncoding bool MPEG4EncoderContext::OpenCodec() { - if((m_avcodec = FFMPEGLibraryInstance.AvcodecFindEncoder(CODEC_ID_MPEG4)) == NULL){ + if((m_avcodec = FFMPEGLibraryInstance.AvcodecFindEncoder(AV_CODEC_ID_MPEG4)) == NULL){ PTRACE(1, "MPEG4", "Encoder not found"); return false; } @@ -1390,7 +1390,7 @@ void MPEG4DecoderContext::ResizeDecoding bool MPEG4DecoderContext::OpenCodec() { - if ((m_avcodec = FFMPEGLibraryInstance.AvcodecFindDecoder(CODEC_ID_MPEG4)) == NULL) { + if ((m_avcodec = FFMPEGLibraryInstance.AvcodecFindDecoder(AV_CODEC_ID_MPEG4)) == NULL) { PTRACE(1, "MPEG4", "Decoder not found for encoder"); return false; } --- a/plugins/video/H.263-1998/h263-1998.h +++ b/plugins/video/H.263-1998/h263-1998.h @@ -115,7 +115,7 @@ class H263_Base_EncoderContext virtual ~H263_Base_EncoderContext(); virtual bool Init() = 0; - virtual bool Init(CodecID codecId); + virtual bool Init(AVCodecID codecId); virtual bool SetOptions(const char * const * options); virtual void SetOption(const char * option, const char * value); --- a/plugins/video/common/dyna.cxx +++ b/plugins/video/common/dyna.cxx @@ -217,14 +217,14 @@ static void logCallbackFFMPEG(void * avc #endif -FFMPEGLibrary::FFMPEGLibrary(CodecID codec) +FFMPEGLibrary::FFMPEGLibrary(AVCodecID codec) { m_codec = codec; - if (m_codec==CODEC_ID_H264) + if (m_codec==AV_CODEC_ID_H264) snprintf( m_codecString, sizeof(m_codecString), "H264"); - if (m_codec==CODEC_ID_H263P) + if (m_codec==AV_CODEC_ID_H263P) snprintf( m_codecString, sizeof(m_codecString), "H263+"); - if (m_codec==CODEC_ID_MPEG4) + if (m_codec==AV_CODEC_ID_MPEG4) snprintf( m_codecString, sizeof(m_codecString), "MPEG4"); m_isLoadedOK = false; } @@ -268,12 +268,12 @@ bool FFMPEGLibrary::Load() return true; } -AVCodec *FFMPEGLibrary::AvcodecFindEncoder(enum CodecID id) +AVCodec *FFMPEGLibrary::AvcodecFindEncoder(enum AVCodecID id) { return avcodec_find_encoder(id); } -AVCodec *FFMPEGLibrary::AvcodecFindDecoder(enum CodecID id) +AVCodec *FFMPEGLibrary::AvcodecFindDecoder(enum AVCodecID id) { WaitAndSignal m(processLock); @@ -308,13 +308,18 @@ int FFMPEGLibrary::AvcodecClose(AVCodecC return avcodec_close(ctx); } +#undef FFMAX +#define FFMAX(a,b) ((a) > (b) ? (a) : (b)) int FFMPEGLibrary::AvcodecEncodeVideo(AVCodecContext *ctx, BYTE *buf, int buf_size, const AVFrame *pict) { + AVPacket pkt = { 0 }; + int ret, got_output; int res; - res = avcodec_encode_video(ctx, buf, buf_size, pict); + ret = avcodec_encode_video2(ctx, &pkt, pict, &got_output); - PTRACE(6, m_codecString, "DYNA\tEncoded into " << res << " bytes, max " << buf_size); + PTRACE(6, m_codecString, "DYNA\tEncoded into " << ret << " bytes, max " << buf_size); + memcpy(buf, pkt.data, FFMAX(pkt.size, buf_size)); return res; } --- a/plugins/video/common/dyna.h +++ b/plugins/video/common/dyna.h @@ -88,13 +88,13 @@ class DynaLink class FFMPEGLibrary { public: - FFMPEGLibrary(CodecID codec); + FFMPEGLibrary(AVCodecID codec); ~FFMPEGLibrary(); bool Load(); - AVCodec *AvcodecFindEncoder(enum CodecID id); - AVCodec *AvcodecFindDecoder(enum CodecID id); + AVCodec *AvcodecFindEncoder(enum AVCodecID id); + AVCodec *AvcodecFindDecoder(enum AVCodecID id); AVCodecContext *AvcodecAllocContext(AVCodec*); AVFrame *AvcodecAllocFrame(void); int AvcodecOpen(AVCodecContext *ctx, AVCodec *codec); @@ -117,7 +117,7 @@ class FFMPEGLibrary DynaLink m_libAvcodec; DynaLink m_libAvutil; - CodecID m_codec; + AVCodecID m_codec; char m_codecString[32]; bool m_isLoadedOK;