123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778 |
- diff -rupN a/channels/drdynvc/tsmf/ffmpeg/tsmf_ffmpeg.c b/channels/drdynvc/tsmf/ffmpeg/tsmf_ffmpeg.c
- --- a/channels/drdynvc/tsmf/ffmpeg/tsmf_ffmpeg.c 2013-01-02 22:46:59.000000000 +0100
- +++ b/channels/drdynvc/tsmf/ffmpeg/tsmf_ffmpeg.c 2013-07-22 18:12:18.001576713 +0200
- @@ -28,6 +28,8 @@
- #include "tsmf_constants.h"
- #include "tsmf_decoder.h"
-
- +#define AVCODEC_MAX_AUDIO_FRAME_SIZE 192000
- +
- /* Compatibility with older FFmpeg */
- #if LIBAVUTIL_VERSION_MAJOR < 50
- #define AVMEDIA_TYPE_VIDEO 0
- @@ -39,7 +41,7 @@ typedef struct _TSMFFFmpegDecoder
- ITSMFDecoder iface;
-
- int media_type;
- - enum CodecID codec_id;
- + enum AVCodecID codec_id;
- AVCodecContext* codec_context;
- AVCodec* codec;
- AVFrame* frame;
- @@ -54,7 +56,7 @@ static boolean tsmf_ffmpeg_init_context(
- {
- TSMFFFmpegDecoder* mdecoder = (TSMFFFmpegDecoder*) decoder;
-
- - mdecoder->codec_context = avcodec_alloc_context();
- + mdecoder->codec_context = avcodec_alloc_context3(NULL);
- if (!mdecoder->codec_context)
- {
- DEBUG_WARN("avcodec_alloc_context failed.");
- @@ -88,16 +90,6 @@ static boolean tsmf_ffmpeg_init_audio_st
- mdecoder->codec_context->channels = media_type->Channels;
- mdecoder->codec_context->block_align = media_type->BlockAlign;
-
- -#ifdef AV_CPU_FLAG_SSE2
- - mdecoder->codec_context->dsp_mask = AV_CPU_FLAG_SSE2 | AV_CPU_FLAG_MMX2;
- -#else
- -#if LIBAVCODEC_VERSION_MAJOR < 53
- - mdecoder->codec_context->dsp_mask = FF_MM_SSE2 | FF_MM_MMXEXT;
- -#else
- - mdecoder->codec_context->dsp_mask = FF_MM_SSE2 | FF_MM_MMX2;
- -#endif
- -#endif
- -
- return true;
- }
-
- @@ -174,7 +166,7 @@ static boolean tsmf_ffmpeg_prepare(ITSMF
- {
- TSMFFFmpegDecoder* mdecoder = (TSMFFFmpegDecoder*) decoder;
-
- - if (avcodec_open(mdecoder->codec_context, mdecoder->codec) < 0)
- + if (avcodec_open2(mdecoder->codec_context, mdecoder->codec, NULL) < 0)
- {
- DEBUG_WARN("avcodec_open failed.");
- return false;
- @@ -372,8 +364,9 @@ static boolean tsmf_ffmpeg_decode_audio(
- av_init_packet(&pkt);
- pkt.data = (uint8*) src;
- pkt.size = src_size;
- - len = avcodec_decode_audio3(mdecoder->codec_context,
- - (int16_t*) dst, &frame_size, &pkt);
- + AVFrame * frame = avcodec_alloc_frame ();
- + len = avcodec_decode_audio4(mdecoder->codec_context,
- + frame, &frame_size, &pkt);
- }
- #endif
- if (len <= 0 || frame_size <= 0)
- @@ -499,7 +492,6 @@ TSMFDecoderEntry(void)
-
- if (!initialized)
- {
- - avcodec_init();
- avcodec_register_all();
- initialized = true;
- }
|