From 9f73e7e1ae2b9220cea2f4ecd9fb5e20043cb0d0 Mon Sep 17 00:00:00 2001 From: Artur Frysiak Date: Tue, 26 Mar 2013 08:36:32 +0100 Subject: [PATCH] Obsoleted --- xbmc-ffmpeg10.patch | 3159 ------------------------------------------- 1 file changed, 3159 deletions(-) delete mode 100644 xbmc-ffmpeg10.patch diff --git a/xbmc-ffmpeg10.patch b/xbmc-ffmpeg10.patch deleted file mode 100644 index b31f508..0000000 --- a/xbmc-ffmpeg10.patch +++ /dev/null @@ -1,3159 +0,0 @@ -diff -urN xbmc-11.0/lib/DllAvCodec.h xbmc-11.0-ffmpeg-1.0/lib/DllAvCodec.h ---- xbmc-11.0/lib/DllAvCodec.h 2012-03-21 23:07:50.000000000 +0100 -+++ xbmc-11.0-ffmpeg-1.0/lib/DllAvCodec.h 2012-11-08 23:16:18.536405054 +0100 -@@ -24,7 +24,7 @@ - #include "config.h" - #endif - #include "DynamicDll.h" --#include "DllAvCore.h" -+#include "DllAvUtil.h" - #include "utils/log.h" - - extern "C" { -@@ -60,7 +60,6 @@ - #endif - - /* From non-public audioconvert.h */ -- int64_t avcodec_guess_channel_layout(int nb_channels, enum CodecID codec_id, const char *fmt_name); - struct AVAudioConvert; - typedef struct AVAudioConvert AVAudioConvert; - AVAudioConvert *av_audio_convert_alloc(enum AVSampleFormat out_fmt, int out_channels, -@@ -76,28 +75,6 @@ - #endif - } - --/* Some convenience macros introduced at this particular revision of libavcodec. -- */ --#if LIBAVCODEC_VERSION_INT < AV_VERSION_INT(52,25,0) --#define CH_LAYOUT_5POINT0_BACK (CH_LAYOUT_SURROUND|CH_BACK_LEFT|CH_BACK_RIGHT) --#define CH_LAYOUT_5POINT1_BACK (CH_LAYOUT_5POINT0_BACK|CH_LOW_FREQUENCY) --#undef CH_LAYOUT_7POINT1_WIDE --#define CH_LAYOUT_7POINT1_WIDE (CH_LAYOUT_5POINT1_BACK|\ -- CH_FRONT_LEFT_OF_CENTER|CH_FRONT_RIGHT_OF_CENTER) --#endif -- --#if LIBAVCODEC_VERSION_INT < AV_VERSION_INT(52,64,0) --// API added on: 2010-03-31 --#define AVMediaType CodecType --#define AVMEDIA_TYPE_UNKNOWN CODEC_TYPE_UNKNOWN --#define AVMEDIA_TYPE_VIDEO CODEC_TYPE_VIDEO --#define AVMEDIA_TYPE_AUDIO CODEC_TYPE_AUDIO --#define AVMEDIA_TYPE_DATA CODEC_TYPE_DATA --#define AVMEDIA_TYPE_SUBTITLE CODEC_TYPE_SUBTITLE --#define AVMEDIA_TYPE_ATTACHMENT CODEC_TYPE_ATTACHMENT --#define AVMEDIA_TYPE_NB CODEC_TYPE_NB --#endif -- - #include "threads/SingleLock.h" - - class DllAvCodecInterface -@@ -106,20 +83,20 @@ - virtual ~DllAvCodecInterface() {} - virtual void avcodec_register_all(void)=0; - virtual void avcodec_flush_buffers(AVCodecContext *avctx)=0; -- virtual int avcodec_open_dont_call(AVCodecContext *avctx, AVCodec *codec)=0; -+ virtual int avcodec_open2_dont_call(AVCodecContext *avctx, AVCodec *codec, AVDictionary **options)=0; - virtual AVCodec *avcodec_find_decoder(enum CodecID id)=0; - virtual AVCodec *avcodec_find_encoder(enum CodecID id)=0; - virtual int avcodec_close_dont_call(AVCodecContext *avctx)=0; - virtual AVFrame *avcodec_alloc_frame(void)=0; - virtual int avpicture_fill(AVPicture *picture, uint8_t *ptr, PixelFormat pix_fmt, int width, int height)=0; - virtual int avcodec_decode_video2(AVCodecContext *avctx, AVFrame *picture, int *got_picture_ptr, AVPacket *avpkt)=0; -- virtual int avcodec_decode_audio3(AVCodecContext *avctx, int16_t *samples, int *frame_size_ptr, AVPacket *avpkt)=0; -+ virtual int avcodec_decode_audio4(AVCodecContext *avctx, AVFrame *frame, int *got_frame_ptr, AVPacket *avpkt)=0; - virtual int avcodec_decode_subtitle2(AVCodecContext *avctx, AVSubtitle *sub, int *got_sub_ptr, AVPacket *avpkt)=0; - virtual int avcodec_encode_audio(AVCodecContext *avctx, uint8_t *buf, int buf_size, const short *samples)=0; - virtual int avpicture_get_size(PixelFormat pix_fmt, int width, int height)=0; -- virtual AVCodecContext *avcodec_alloc_context(void)=0; -+ virtual AVCodecContext *avcodec_alloc_context3(AVCodec *codec)=0; - virtual void avcodec_string(char *buf, int buf_size, AVCodecContext *enc, int encode)=0; -- virtual void avcodec_get_context_defaults(AVCodecContext *s)=0; -+ virtual void avcodec_get_context_defaults3(AVCodecContext *s, AVCodec *codec)=0; - virtual AVCodecParserContext *av_parser_init(int codec_id)=0; - virtual int av_parser_parse2(AVCodecParserContext *s,AVCodecContext *avctx, uint8_t **poutbuf, int *poutbuf_size, - const uint8_t *buf, int buf_size, -@@ -137,7 +114,6 @@ - virtual enum PixelFormat avcodec_default_get_format(struct AVCodecContext *s, const enum PixelFormat *fmt)=0; - virtual int avcodec_default_get_buffer(AVCodecContext *s, AVFrame *pic)=0; - virtual void avcodec_default_release_buffer(AVCodecContext *s, AVFrame *pic)=0; -- virtual int avcodec_thread_init(AVCodecContext *s, int thread_count)=0; - virtual AVCodec *av_codec_next(AVCodec *c)=0; - virtual AVAudioConvert *av_audio_convert_alloc(enum AVSampleFormat out_fmt, int out_channels, - enum AVSampleFormat in_fmt , int in_channels, -@@ -148,7 +124,6 @@ - const void * const in[6], const int in_stride[6], int len)=0; - virtual int av_dup_packet(AVPacket *pkt)=0; - virtual void av_init_packet(AVPacket *pkt)=0; -- virtual int64_t avcodec_guess_channel_layout(int nb_channels, enum CodecID codec_id, const char *fmt_name)=0; - }; - - #if (defined USE_EXTERNAL_FFMPEG) -@@ -166,12 +141,12 @@ - ::avcodec_register_all(); - } - virtual void avcodec_flush_buffers(AVCodecContext *avctx) { ::avcodec_flush_buffers(avctx); } -- virtual int avcodec_open(AVCodecContext *avctx, AVCodec *codec) -+ virtual int avcodec_open2(AVCodecContext *avctx, AVCodec *codec, AVDictionary **options) - { - CSingleLock lock(DllAvCodec::m_critSection); -- return ::avcodec_open(avctx, codec); -+ return ::avcodec_open2(avctx, codec, options); - } -- virtual int avcodec_open_dont_call(AVCodecContext *avctx, AVCodec *codec) { *(int *)0x0 = 0; return 0; } -+ virtual int avcodec_open2_dont_call(AVCodecContext *avctx, AVCodec *codec, AVDictionary **options) { *(int *)0x0 = 0; return 0; } - virtual int avcodec_close_dont_call(AVCodecContext *avctx) { *(int *)0x0 = 0; return 0; } - virtual AVCodec *avcodec_find_decoder(enum CodecID id) { return ::avcodec_find_decoder(id); } - virtual AVCodec *avcodec_find_encoder(enum CodecID id) { return ::avcodec_find_encoder(id); } -@@ -182,33 +157,21 @@ - } - virtual AVFrame *avcodec_alloc_frame() { return ::avcodec_alloc_frame(); } - virtual int avpicture_fill(AVPicture *picture, uint8_t *ptr, PixelFormat pix_fmt, int width, int height) { return ::avpicture_fill(picture, ptr, pix_fmt, width, height); } --#if LIBAVCODEC_VERSION_INT >= AV_VERSION_INT(52,23,0) -- // API added on: 2009-04-07 - virtual int avcodec_decode_video2(AVCodecContext *avctx, AVFrame *picture, int *got_picture_ptr, AVPacket *avpkt) { return ::avcodec_decode_video2(avctx, picture, got_picture_ptr, avpkt); } -- virtual int avcodec_decode_audio3(AVCodecContext *avctx, int16_t *samples, int *frame_size_ptr, AVPacket *avpkt) { return ::avcodec_decode_audio3(avctx, samples, frame_size_ptr, avpkt); } -+ virtual int avcodec_decode_audio4(AVCodecContext *avctx, AVFrame *frame, int *got_frame_ptr, AVPacket *avpkt) { return ::avcodec_decode_audio4(avctx, frame, got_frame_ptr, avpkt); } - virtual int avcodec_decode_subtitle2(AVCodecContext *avctx, AVSubtitle *sub, int *got_sub_ptr, AVPacket *avpkt) { return ::avcodec_decode_subtitle2(avctx, sub, got_sub_ptr, avpkt); } --#else -- virtual int avcodec_decode_video2(AVCodecContext *avctx, AVFrame *picture, int *got_picture_ptr, AVPacket *avpkt) { return ::avcodec_decode_video(avctx, picture, got_picture_ptr, avpkt->data, avpkt->size); } -- virtual int avcodec_decode_audio3(AVCodecContext *avctx, int16_t *samples, int *frame_size_ptr, AVPacket *avpkt) { return ::avcodec_decode_audio2(avctx, samples, frame_size_ptr, avpkt->data, avpkt->size); } -- virtual int avcodec_decode_subtitle2(AVCodecContext *avctx, AVSubtitle *sub, int *got_sub_ptr, AVPacket *avpkt) { return ::avcodec_decode_subtitle(avctx, sub, got_sub_ptr, avpkt->data, avpkt->size); } --#endif - virtual int avcodec_encode_audio(AVCodecContext *avctx, uint8_t *buf, int buf_size, const short *samples) { return ::avcodec_encode_audio(avctx, buf, buf_size, samples); } - virtual int avpicture_get_size(PixelFormat pix_fmt, int width, int height) { return ::avpicture_get_size(pix_fmt, width, height); } -- virtual AVCodecContext *avcodec_alloc_context() { return ::avcodec_alloc_context(); } -+ virtual AVCodecContext *avcodec_alloc_context3(AVCodec *codec) { return ::avcodec_alloc_context3(codec); } - virtual void avcodec_string(char *buf, int buf_size, AVCodecContext *enc, int encode) { ::avcodec_string(buf, buf_size, enc, encode); } -- virtual void avcodec_get_context_defaults(AVCodecContext *s) { ::avcodec_get_context_defaults(s); } -+ virtual void avcodec_get_context_defaults3(AVCodecContext *s, AVCodec *codec) { ::avcodec_get_context_defaults3(s, codec); } - - virtual AVCodecParserContext *av_parser_init(int codec_id) { return ::av_parser_init(codec_id); } - virtual int av_parser_parse2(AVCodecParserContext *s,AVCodecContext *avctx, uint8_t **poutbuf, int *poutbuf_size, - const uint8_t *buf, int buf_size, - int64_t pts, int64_t dts, int64_t pos) - { --#if LIBAVCODEC_VERSION_INT >= AV_VERSION_INT(52,21,0) -- // API added on : 2009-03-05 - return ::av_parser_parse2(s, avctx, poutbuf, poutbuf_size, buf, buf_size, pts, dts, pos); --#else -- return ::av_parser_parse(s, avctx, poutbuf, poutbuf_size, buf, buf_size, pts, dts); --#endif - } - virtual void av_parser_close(AVCodecParserContext *s) { ::av_parser_close(s); } - -@@ -225,7 +188,6 @@ - virtual int avcodec_default_get_buffer(AVCodecContext *s, AVFrame *pic) { return ::avcodec_default_get_buffer(s, pic); } - virtual void avcodec_default_release_buffer(AVCodecContext *s, AVFrame *pic) { ::avcodec_default_release_buffer(s, pic); } - virtual enum PixelFormat avcodec_default_get_format(struct AVCodecContext *s, const enum PixelFormat *fmt) { return ::avcodec_default_get_format(s, fmt); } -- virtual int avcodec_thread_init(AVCodecContext *s, int thread_count) { return ::avcodec_thread_init(s, thread_count); } - virtual AVCodec *av_codec_next(AVCodec *c) { return ::av_codec_next(c); } - virtual AVAudioConvert *av_audio_convert_alloc(enum AVSampleFormat out_fmt, int out_channels, - enum AVSampleFormat in_fmt , int in_channels, -@@ -241,7 +203,6 @@ - - virtual int av_dup_packet(AVPacket *pkt) { return ::av_dup_packet(pkt); } - virtual void av_init_packet(AVPacket *pkt) { return ::av_init_packet(pkt); } -- virtual int64_t avcodec_guess_channel_layout(int nb_channels, enum CodecID codec_id, const char *fmt_name) { return ::avcodec_guess_channel_layout(nb_channels, codec_id, fmt_name); } - - // DLL faking. - virtual bool ResolveExports() { return true; } -@@ -256,17 +217,16 @@ - { - DECLARE_DLL_WRAPPER(DllAvCodec, DLL_PATH_LIBAVCODEC) - DEFINE_FUNC_ALIGNED1(void, __cdecl, avcodec_flush_buffers, AVCodecContext*) -- DEFINE_FUNC_ALIGNED2(int, __cdecl, avcodec_open_dont_call, AVCodecContext*, AVCodec *) -+ DEFINE_FUNC_ALIGNED3(int, __cdecl, avcodec_open2_dont_call, AVCodecContext*, AVCodec *, AVDictionary **) - DEFINE_FUNC_ALIGNED4(int, __cdecl, avcodec_decode_video2, AVCodecContext*, AVFrame*, int*, AVPacket*) -- DEFINE_FUNC_ALIGNED4(int, __cdecl, avcodec_decode_audio3, AVCodecContext*, int16_t*, int*, AVPacket*) -+ DEFINE_FUNC_ALIGNED4(int, __cdecl, avcodec_decode_audio4, AVCodecContext*, AVFrame*, int*, AVPacket*) - DEFINE_FUNC_ALIGNED4(int, __cdecl, avcodec_decode_subtitle2, AVCodecContext*, AVSubtitle*, int*, AVPacket*) - DEFINE_FUNC_ALIGNED4(int, __cdecl, avcodec_encode_audio, AVCodecContext*, uint8_t*, int, const short*) -- DEFINE_FUNC_ALIGNED0(AVCodecContext*, __cdecl, avcodec_alloc_context) -+ DEFINE_FUNC_ALIGNED1(AVCodecContext*, __cdecl, avcodec_alloc_context3, AVCodec *) - DEFINE_FUNC_ALIGNED1(AVCodecParserContext*, __cdecl, av_parser_init, int) - DEFINE_FUNC_ALIGNED9(int, __cdecl, av_parser_parse2, AVCodecParserContext*,AVCodecContext*, uint8_t**, int*, const uint8_t*, int, int64_t, int64_t, int64_t) - DEFINE_METHOD1(int, av_dup_packet, (AVPacket *p1)) - DEFINE_METHOD1(void, av_init_packet, (AVPacket *p1)) -- DEFINE_METHOD3(int64_t, avcodec_guess_channel_layout, (int p1, enum CodecID p2, const char *p3)) - - LOAD_SYMBOLS(); - -@@ -278,7 +238,7 @@ - DEFINE_METHOD5(int, avpicture_fill, (AVPicture *p1, uint8_t *p2, PixelFormat p3, int p4, int p5)) - DEFINE_METHOD3(int, avpicture_get_size, (PixelFormat p1, int p2, int p3)) - DEFINE_METHOD4(void, avcodec_string, (char *p1, int p2, AVCodecContext *p3, int p4)) -- DEFINE_METHOD1(void, avcodec_get_context_defaults, (AVCodecContext *p1)) -+ DEFINE_METHOD2(void, avcodec_get_context_defaults3, (AVCodecContext *p1, AVCodec *p2)) - DEFINE_METHOD1(void, av_parser_close, (AVCodecParserContext *p1)) - DEFINE_METHOD1(void, avpicture_free, (AVPicture *p1)) - DEFINE_METHOD1(AVBitStreamFilterContext*, av_bitstream_filter_init, (const char *p1)) -@@ -290,7 +250,6 @@ - DEFINE_METHOD2(void, avcodec_default_release_buffer, (AVCodecContext *p1, AVFrame *p2)) - DEFINE_METHOD2(enum PixelFormat, avcodec_default_get_format, (struct AVCodecContext *p1, const enum PixelFormat *p2)) - -- DEFINE_METHOD2(int, avcodec_thread_init, (AVCodecContext *p1, int p2)) - DEFINE_METHOD1(AVCodec*, av_codec_next, (AVCodec *p1)) - DEFINE_METHOD6(AVAudioConvert*, av_audio_convert_alloc, (enum AVSampleFormat p1, int p2, - enum AVSampleFormat p3, int p4, -@@ -301,7 +260,7 @@ - const void * const p4[6], const int p5[6], int p6)) - BEGIN_METHOD_RESOLVE() - RESOLVE_METHOD(avcodec_flush_buffers) -- RESOLVE_METHOD_RENAME(avcodec_open,avcodec_open_dont_call) -+ RESOLVE_METHOD_RENAME(avcodec_open2,avcodec_open2_dont_call) - RESOLVE_METHOD_RENAME(avcodec_close,avcodec_close_dont_call) - RESOLVE_METHOD(avcodec_find_decoder) - RESOLVE_METHOD(avcodec_find_encoder) -@@ -309,13 +268,13 @@ - RESOLVE_METHOD_RENAME(avcodec_register_all, avcodec_register_all_dont_call) - RESOLVE_METHOD(avpicture_fill) - RESOLVE_METHOD(avcodec_decode_video2) -- RESOLVE_METHOD(avcodec_decode_audio3) -+ RESOLVE_METHOD(avcodec_decode_audio4) - RESOLVE_METHOD(avcodec_decode_subtitle2) - RESOLVE_METHOD(avcodec_encode_audio) - RESOLVE_METHOD(avpicture_get_size) -- RESOLVE_METHOD(avcodec_alloc_context) -+ RESOLVE_METHOD(avcodec_alloc_context3) - RESOLVE_METHOD(avcodec_string) -- RESOLVE_METHOD(avcodec_get_context_defaults) -+ RESOLVE_METHOD(avcodec_get_context_defaults3) - RESOLVE_METHOD(av_parser_init) - RESOLVE_METHOD(av_parser_parse2) - RESOLVE_METHOD(av_parser_close) -@@ -328,26 +287,24 @@ - RESOLVE_METHOD(avcodec_default_get_buffer) - RESOLVE_METHOD(avcodec_default_release_buffer) - RESOLVE_METHOD(avcodec_default_get_format) -- RESOLVE_METHOD(avcodec_thread_init) - RESOLVE_METHOD(av_codec_next) - RESOLVE_METHOD(av_audio_convert_alloc) - RESOLVE_METHOD(av_audio_convert_free) - RESOLVE_METHOD(av_audio_convert) - RESOLVE_METHOD(av_dup_packet) - RESOLVE_METHOD(av_init_packet) -- RESOLVE_METHOD(avcodec_guess_channel_layout) - END_METHOD_RESOLVE() - - /* dependencies of libavcodec */ -- DllAvCore m_dllAvCore; -+ DllAvUtil m_dllAvUtil; - // DllAvUtil loaded implicitely by m_dllAvCore - - public: - static CCriticalSection m_critSection; -- int avcodec_open(AVCodecContext *avctx, AVCodec *codec) -+ int avcodec_open2(AVCodecContext *avctx, AVCodec *codec, AVDictionary **options) - { - CSingleLock lock(DllAvCodec::m_critSection); -- return avcodec_open_dont_call(avctx,codec); -+ return avcodec_open2_dont_call(avctx,codec, options); - } - int avcodec_close(AVCodecContext *avctx) - { -@@ -361,7 +318,7 @@ - } - virtual bool Load() - { -- if (!m_dllAvCore.Load()) -+ if (!m_dllAvUtil.Load()) - return false; - return DllDynamic::Load(); - } -diff -urN xbmc-11.0/lib/DllAvCore.h xbmc-11.0-ffmpeg-1.0/lib/DllAvCore.h ---- xbmc-11.0/lib/DllAvCore.h 2012-03-21 23:07:50.000000000 +0100 -+++ xbmc-11.0-ffmpeg-1.0/lib/DllAvCore.h 1970-01-01 01:00:00.000000000 +0100 -@@ -1,182 +0,0 @@ --#pragma once --/* -- * Copyright (C) 2005-2010 Team XBMC -- * http://www.xbmc.org -- * -- * This Program is free software; you can redistribute it and/or modify -- * it under the terms of the GNU General Public License as published by -- * the Free Software Foundation; either version 2, or (at your option) -- * any later version. -- * -- * This Program is distributed in the hope that it will be useful, -- * but WITHOUT ANY WARRANTY; without even the implied warranty of -- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -- * GNU General Public License for more details. -- * -- * You should have received a copy of the GNU General Public License -- * along with XBMC; see the file COPYING. If not, write to the Free -- * Software Foundation, Inc., 51 Franklin Street, Fifth Floor, -- * Boston, MA 02110-1301, USA. -- * http://www.gnu.org/copyleft/gpl.html -- * -- */ -- --#if (defined HAVE_CONFIG_H) && (!defined WIN32) -- #include "config.h" --#endif --#include "DynamicDll.h" --#include "DllAvUtil.h" --#include "utils/log.h" -- --extern "C" { --#ifdef USE_EXTERNAL_FFMPEG -- #ifdef HAVE_LIBAVUTIL_SAMPLEFMT_H -- // libavcore was merged to libavutil on 2010-02-15 -- #include -- #include -- #endif -- -- #ifdef HAVE_LIBAVCORE_AVCORE_H -- #include -- #endif -- #ifdef HAVE_LIBAVCORE_SAMPLEFMT_H -- #include -- #endif -- -- /* Needed for old FFmpeg versions as used below */ -- #ifdef HAVE_LIBAVCODEC_AVCODEC_H -- #include -- #else -- #include -- #endif --#else -- #include "libavcore/avcore.h" -- #include "libavcore/samplefmt.h" --#endif --} -- --/* Compatibility for old external FFmpeg versions. */ -- --#ifdef USE_EXTERNAL_FFMPEG -- --#ifndef LIBAVCORE_VERSION_INT --// API added on: 2010-07-21, removed on 2010-02-15 --#define LIBAVCORE_VERSION_INT 0 --#endif -- --#ifndef AV_SAMPLE_FMT_NONE --// API added on: 2010-11-02 --#define AVSampleFormat SampleFormat --#define AV_SAMPLE_FMT_NONE SAMPLE_FMT_NONE --#define AV_SAMPLE_FMT_U8 SAMPLE_FMT_U8 --#define AV_SAMPLE_FMT_S16 SAMPLE_FMT_S16 --#define AV_SAMPLE_FMT_S32 SAMPLE_FMT_S32 --#define AV_SAMPLE_FMT_FLT SAMPLE_FMT_FLT --#define AV_SAMPLE_FMT_DBL SAMPLE_FMT_DBL --#endif -- --#ifndef AV_CH_FRONT_LEFT --// API added on: 2010-11-21 --#define AV_CH_FRONT_LEFT CH_FRONT_LEFT --#define AV_CH_FRONT_RIGHT CH_FRONT_RIGHT --#define AV_CH_FRONT_CENTER CH_FRONT_CENTER --#define AV_CH_LOW_FREQUENCY CH_LOW_FREQUENCY --#define AV_CH_BACK_LEFT CH_BACK_LEFT --#define AV_CH_BACK_RIGHT CH_BACK_RIGHT --#define AV_CH_FRONT_LEFT_OF_CENTER CH_FRONT_LEFT_OF_CENTER --#define AV_CH_FRONT_RIGHT_OF_CENTER CH_FRONT_RIGHT_OF_CENTER --#define AV_CH_BACK_CENTER CH_BACK_CENTER --#define AV_CH_SIDE_LEFT CH_SIDE_LEFT --#define AV_CH_SIDE_RIGHT CH_SIDE_RIGHT --#define AV_CH_TOP_CENTER CH_TOP_CENTER --#define AV_CH_TOP_FRONT_LEFT CH_TOP_FRONT_LEFT --#define AV_CH_TOP_FRONT_CENTER CH_TOP_FRONT_CENTER --#define AV_CH_TOP_FRONT_RIGHT CH_TOP_FRONT_RIGHT --#define AV_CH_TOP_BACK_LEFT CH_TOP_BACK_LEFT --#define AV_CH_TOP_BACK_CENTER CH_TOP_BACK_CENTER --#define AV_CH_TOP_BACK_RIGHT CH_TOP_BACK_RIGHT --#define AV_CH_STEREO_LEFT CH_STEREO_LEFT --#define AV_CH_STEREO_RIGHT CH_STEREO_RIGHT -- --#define AV_CH_LAYOUT_NATIVE CH_LAYOUT_NATIVE -- --#define AV_CH_LAYOUT_MONO CH_LAYOUT_MONO --#define AV_CH_LAYOUT_STEREO CH_LAYOUT_STEREO --#define AV_CH_LAYOUT_2_1 CH_LAYOUT_2_1 --#define AV_CH_LAYOUT_SURROUND CH_LAYOUT_SURROUND --#define AV_CH_LAYOUT_4POINT0 CH_LAYOUT_4POINT0 --#define AV_CH_LAYOUT_2_2 CH_LAYOUT_2_2 --#define AV_CH_LAYOUT_QUAD CH_LAYOUT_QUAD --#define AV_CH_LAYOUT_5POINT0 CH_LAYOUT_5POINT0 --#define AV_CH_LAYOUT_5POINT1 CH_LAYOUT_5POINT1 --#define AV_CH_LAYOUT_5POINT0_BACK CH_LAYOUT_5POINT0_BACK --#define AV_CH_LAYOUT_5POINT1_BACK CH_LAYOUT_5POINT1_BACK --#define AV_CH_LAYOUT_7POINT0 CH_LAYOUT_7POINT0 --#define AV_CH_LAYOUT_7POINT1 CH_LAYOUT_7POINT1 --#define AV_CH_LAYOUT_7POINT1_WIDE CH_LAYOUT_7POINT1_WIDE --#define AV_CH_LAYOUT_STEREO_DOWNMIX CH_LAYOUT_STEREO_DOWNMIX --#endif -- --#endif // USE_EXTERNAL_FFMPEG -- --class DllAvCoreInterface --{ --public: -- virtual ~DllAvCoreInterface() {} -- virtual int av_get_bits_per_sample_fmt(enum AVSampleFormat sample_fmt) = 0; --}; -- --#if (defined USE_EXTERNAL_FFMPEG) -- --// Use direct layer --class DllAvCore : public DllDynamic, DllAvCoreInterface --{ --public: -- virtual ~DllAvCore() {} --#if LIBAVCORE_VERSION_INT >= AV_VERSION_INT(0,12,0) || LIBAVUTIL_VERSION_INT >= AV_VERSION_INT(50,38,0) -- // API added on: 2010-11-02, moved to libavutil on 2010-02-15 -- virtual int av_get_bits_per_sample_fmt(enum AVSampleFormat sample_fmt) { return ::av_get_bits_per_sample_fmt(sample_fmt); } --#else -- // from avcodec.h -- virtual int av_get_bits_per_sample_fmt(enum AVSampleFormat sample_fmt) { return ::av_get_bits_per_sample_format(sample_fmt); } --#endif -- -- // DLL faking. -- virtual bool ResolveExports() { return true; } -- virtual bool Load() { --#if LIBAVCORE_VERSION_INT > 0 -- CLog::Log(LOGDEBUG, "DllAvCore: Using libavcore system library"); --#endif -- return true; -- } -- virtual void Unload() {} --}; -- --#else -- --class DllAvCore : public DllDynamic, DllAvCoreInterface --{ -- DECLARE_DLL_WRAPPER(DllAvCore, DLL_PATH_LIBAVCORE) -- -- LOAD_SYMBOLS() -- -- DEFINE_METHOD1(int, av_get_bits_per_sample_fmt, (enum AVSampleFormat p1)) -- -- BEGIN_METHOD_RESOLVE() -- RESOLVE_METHOD(av_get_bits_per_sample_fmt) -- END_METHOD_RESOLVE() -- -- /* dependency of libavcore */ -- DllAvUtil m_dllAvUtil; -- --public: -- virtual bool Load() -- { -- if (!m_dllAvUtil.Load()) -- return false; -- return DllDynamic::Load(); -- } --}; -- --#endif -- -diff -urN xbmc-11.0/lib/DllAvFilter.h xbmc-11.0-ffmpeg-1.0/lib/DllAvFilter.h ---- xbmc-11.0/lib/DllAvFilter.h 2012-03-21 23:07:50.000000000 +0100 -+++ xbmc-11.0-ffmpeg-1.0/lib/DllAvFilter.h 2012-11-08 23:16:12.336405273 +0100 -@@ -24,8 +24,8 @@ - #include "config.h" - #endif - #include "DynamicDll.h" --#include "DllAvCore.h" - #include "DllAvCodec.h" -+#include "DllSwResample.h" - #include "utils/log.h" - - extern "C" { -@@ -43,24 +43,17 @@ - #if (defined USE_EXTERNAL_FFMPEG) - #if (defined HAVE_LIBAVFILTER_AVFILTER_H) - #include -+ #include -+ #include - #elif (defined HAVE_FFMPEG_AVFILTER_H) - #include -- #endif -- /* for av_vsrc_buffer_add_frame */ -- #if LIBAVFILTER_VERSION_INT >= AV_VERSION_INT(2,8,0) -- #include -- #elif LIBAVFILTER_VERSION_INT >= AV_VERSION_INT(2,7,0) -- int av_vsrc_buffer_add_frame(AVFilterContext *buffer_filter, -- AVFrame *frame); -- #elif LIBAVCODEC_VERSION_INT >= AV_VERSION_INT(53,3,0) -- int av_vsrc_buffer_add_frame(AVFilterContext *buffer_filter, -- AVFrame *frame, int64_t pts); -- #else -- int av_vsrc_buffer_add_frame(AVFilterContext *buffer_filter, -- AVFrame *frame, int64_t pts, AVRational pixel_aspect); -+ #include -+ #include - #endif - #else - #include "libavfilter/avfiltergraph.h" -+ #include "libavfilter/buffersink.h" -+ #include "libavfilter/avcodec.h" - #endif - } - -@@ -80,20 +73,16 @@ - virtual void avfilter_inout_free(AVFilterInOut **inout)=0; - virtual int avfilter_graph_parse(AVFilterGraph *graph, const char *filters, AVFilterInOut **inputs, AVFilterInOut **outputs, void *log_ctx)=0; - virtual int avfilter_graph_config(AVFilterGraph *graphctx, void *log_ctx)=0; -- virtual int avfilter_poll_frame(AVFilterLink *link)=0; -- virtual int avfilter_request_frame(AVFilterLink *link)=0; --#if LIBAVFILTER_VERSION_INT >= AV_VERSION_INT(2,13,0) -+#if LIBAVFILTER_VERSION_INT < AV_VERSION_INT(3,0,0) - virtual int av_vsrc_buffer_add_frame(AVFilterContext *buffer_filter, AVFrame *frame, int flags)=0; --#elif LIBAVFILTER_VERSION_INT >= AV_VERSION_INT(2,7,0) -- virtual int av_vsrc_buffer_add_frame(AVFilterContext *buffer_filter, AVFrame *frame)=0; --#elif LIBAVCODEC_VERSION_INT >= AV_VERSION_INT(53,3,0) -- virtual int av_vsrc_buffer_add_frame(AVFilterContext *buffer_filter, AVFrame *frame, int64_t pts)=0; - #else -- virtual int av_vsrc_buffer_add_frame(AVFilterContext *buffer_filter, AVFrame *frame, int64_t pts, AVRational pixel_aspect)=0; -+ virtual int av_buffersrc_add_frame(AVFilterContext *buffer_filter, AVFrame *frame, int flags)=0; - #endif -- virtual AVFilterBufferRef *avfilter_get_video_buffer(AVFilterLink *link, int perms, int w, int h)=0; - virtual void avfilter_unref_buffer(AVFilterBufferRef *ref)=0; - virtual int avfilter_link(AVFilterContext *src, unsigned srcpad, AVFilterContext *dst, unsigned dstpad)=0; -+ virtual int av_buffersink_get_buffer_ref(AVFilterContext *buffer_sink, AVFilterBufferRef **bufref, int flags)=0; -+ virtual AVBufferSinkParams *av_buffersink_params_alloc()=0; -+ virtual int av_buffersink_poll_frame(AVFilterContext *ctx)=0; - }; - - #if (defined USE_EXTERNAL_FFMPEG) -@@ -115,12 +104,7 @@ - virtual void avfilter_graph_free(AVFilterGraph **graph) - { - CSingleLock lock(DllAvCodec::m_critSection); --#if LIBAVFILTER_VERSION_INT >= AV_VERSION_INT(1,76,0) - ::avfilter_graph_free(graph); --#else -- ::avfilter_graph_free(*graph); -- *graph = NULL; --#endif - } - void avfilter_register_all() - { -@@ -133,56 +117,32 @@ - virtual AVFilterInOut *avfilter_inout_alloc() - { - CSingleLock lock(DllAvCodec::m_critSection); --#if LIBAVFILTER_VERSION_INT >= AV_VERSION_INT(2,17,0) - return ::avfilter_inout_alloc(); --#else -- return (AVFilterInOut*)::av_mallocz(sizeof(AVFilterInOut)); --#endif - } - virtual void avfilter_inout_free(AVFilterInOut **inout) - { - CSingleLock lock(DllAvCodec::m_critSection); --#if LIBAVFILTER_VERSION_INT >= AV_VERSION_INT(2,17,0) - ::avfilter_inout_free(inout); --#else -- *inout = NULL; --#endif - } - virtual int avfilter_graph_parse(AVFilterGraph *graph, const char *filters, AVFilterInOut **inputs, AVFilterInOut **outputs, void *log_ctx) - { - CSingleLock lock(DllAvCodec::m_critSection); --#if ( LIBAVFILTER_VERSION_INT >= AV_VERSION_INT(1,79,0) \ -- && LIBAVFILTER_VERSION_INT < AV_VERSION_INT(2,0,0) ) \ -- ||( LIBAVFILTER_VERSION_INT >= AV_VERSION_INT(2,16,0)) - return ::avfilter_graph_parse(graph, filters, inputs, outputs, log_ctx); --#elif LIBAVFILTER_VERSION_INT >= AV_VERSION_INT(2,15,1) -- return ::avfilter_graph_parse(graph, filters, *inputs, *outputs, log_ctx); --#else -- return ::avfilter_graph_parse(graph, filters, *inputs, *outputs, (AVClass*)log_ctx); --#endif - } - virtual int avfilter_graph_config(AVFilterGraph *graphctx, void *log_ctx) - { --#if LIBAVFILTER_VERSION_INT >= AV_VERSION_INT(2,15,1) - return ::avfilter_graph_config(graphctx, log_ctx); --#else -- return ::avfilter_graph_config(graphctx, (AVClass*)log_ctx); --#endif - } -- virtual int avfilter_poll_frame(AVFilterLink *link) { return ::avfilter_poll_frame(link); } -- virtual int avfilter_request_frame(AVFilterLink *link) { return ::avfilter_request_frame(link); } --#if LIBAVFILTER_VERSION_INT >= AV_VERSION_INT(2,13,0) -+#if LIBAVFILTER_VERSION_INT < AV_VERSION_INT(3,0,0) - virtual int av_vsrc_buffer_add_frame(AVFilterContext *buffer_filter, AVFrame *frame, int flags) { return ::av_vsrc_buffer_add_frame(buffer_filter, frame, flags); } --#elif LIBAVFILTER_VERSION_INT >= AV_VERSION_INT(2,7,0) -- virtual int av_vsrc_buffer_add_frame(AVFilterContext *buffer_filter, AVFrame *frame) { return ::av_vsrc_buffer_add_frame(buffer_filter, frame); } --#elif LIBAVCODEC_VERSION_INT >= AV_VERSION_INT(53,3,0) -- virtual int av_vsrc_buffer_add_frame(AVFilterContext *buffer_filter, AVFrame *frame, int64_t pts) { return ::av_vsrc_buffer_add_frame(buffer_filter, frame, pts); } - #else -- virtual int av_vsrc_buffer_add_frame(AVFilterContext *buffer_filter, AVFrame *frame, int64_t pts, AVRational pixel_aspect) { return ::av_vsrc_buffer_add_frame(buffer_filter, frame, pts, pixel_aspect); } -+ virtual int av_buffersrc_add_frame(AVFilterContext *buffer_filter, AVFrame* frame, int flags) { return ::av_buffersrc_add_frame(buffer_filter, frame, flags); } - #endif -- virtual AVFilterBufferRef *avfilter_get_video_buffer(AVFilterLink *link, int perms, int w, int h) { return ::avfilter_get_video_buffer(link, perms, w, h); } - virtual void avfilter_unref_buffer(AVFilterBufferRef *ref) { ::avfilter_unref_buffer(ref); } - virtual int avfilter_link(AVFilterContext *src, unsigned srcpad, AVFilterContext *dst, unsigned dstpad) { return ::avfilter_link(src, srcpad, dst, dstpad); } -+ virtual int av_buffersink_get_buffer_ref(AVFilterContext *buffer_sink, AVFilterBufferRef **bufref, int flags) { return ::av_buffersink_get_buffer_ref(buffer_sink, bufref, flags); } -+ virtual AVBufferSinkParams *av_buffersink_params_alloc() { return ::av_buffersink_params_alloc(); } -+ virtual int av_buffersink_poll_frame(AVFilterContext *ctx) { return av_buffersink_poll_frame(ctx); } - // DLL faking. - virtual bool ResolveExports() { return true; } - virtual bool Load() { -@@ -200,45 +160,25 @@ - - DEFINE_METHOD3(int, avfilter_open_dont_call, (AVFilterContext **p1, AVFilter *p2, const char *p3)) - DEFINE_METHOD1(void, avfilter_free_dont_call, (AVFilterContext *p1)) --#if LIBAVFILTER_VERSION_INT >= AV_VERSION_INT(1,76,0) - DEFINE_METHOD1(void, avfilter_graph_free_dont_call, (AVFilterGraph **p1)) --#else -- DEFINE_METHOD1(void, avfilter_graph_free_dont_call, (AVFilterGraph *p1)) --#endif - DEFINE_METHOD0(void, avfilter_register_all_dont_call) - DEFINE_METHOD6(int, avfilter_graph_create_filter, (AVFilterContext **p1, AVFilter *p2, const char *p3, const char *p4, void *p5, AVFilterGraph *p6)) - DEFINE_METHOD1(AVFilter*, avfilter_get_by_name, (const char *p1)) - DEFINE_METHOD0(AVFilterGraph*, avfilter_graph_alloc) --#if LIBAVFILTER_VERSION_INT >= AV_VERSION_INT(2,17,0) - DEFINE_METHOD0(AVFilterInOut*, avfilter_inout_alloc_dont_call) - DEFINE_METHOD1(void, avfilter_inout_free_dont_call, (AVFilterInOut **p1)) --#endif --#if LIBAVFILTER_VERSION_INT >= AV_VERSION_INT(2,16,0) -- DEFINE_METHOD5(int, avfilter_graph_parse_dont_call, (AVFilterGraph *p1, const char *p2, AVFilterInOut **p3, AVFilterInOut **p4, void *p5)) --#elif LIBAVFILTER_VERSION_INT >= AV_VERSION_INT(2,15,1) -- DEFINE_METHOD5(int, avfilter_graph_parse_dont_call, (AVFilterGraph *p1, const char *p2, AVFilterInOut *p3, AVFilterInOut *p4, void *p5)) --#else -- DEFINE_METHOD5(int, avfilter_graph_parse_dont_call, (AVFilterGraph *p1, const char *p2, AVFilterInOut *p3, AVFilterInOut *p4, AVClass *p5)) --#endif --#if LIBAVFILTER_VERSION_INT >= AV_VERSION_INT(2,15,1) -- DEFINE_METHOD2(int, avfilter_graph_config_dont_call, (AVFilterGraph *p1, void *p2)) --#else -- DEFINE_METHOD2(int, avfilter_graph_config_dont_call, (AVFilterGraph *p1, AVClass *p2)) --#endif -- DEFINE_FUNC_ALIGNED1(int, __cdecl, avfilter_poll_frame, AVFilterLink *) -- DEFINE_FUNC_ALIGNED1(int, __cdecl, avfilter_request_frame, AVFilterLink*) --#if LIBAVFILTER_VERSION_INT >= AV_VERSION_INT(2,13,0) -+ DEFINE_FUNC_ALIGNED5(int, __cdecl, avfilter_graph_parse_dont_call, AVFilterGraph *, const char *, AVFilterInOut **, AVFilterInOut **, void *) -+ DEFINE_FUNC_ALIGNED2(int, __cdecl, avfilter_graph_config_dont_call, AVFilterGraph *, void *) -+#if LIBAVFILTER_VERSION_INT < AV_VERSION_INT(3,0,0) - DEFINE_METHOD3(int, av_vsrc_buffer_add_frame, (AVFilterContext *p1, AVFrame *p2, int p3)) --#elif LIBAVFILTER_VERSION_INT >= AV_VERSION_INT(2,7,0) -- DEFINE_METHOD2(int, av_vsrc_buffer_add_frame, (AVFilterContext *p1, AVFrame *p2)) --#elif LIBAVCODEC_VERSION_INT >= AV_VERSION_INT(53,3,0) -- DEFINE_METHOD3(int, av_vsrc_buffer_add_frame, (AVFilterContext *p1, AVFrame *p2, int64_t p3)) - #else -- DEFINE_METHOD4(int, av_vsrc_buffer_add_frame, (AVFilterContext *p1, AVFrame *p2, int64_t p3, AVRational p4)) -+ DEFINE_METHOD3(int, av_buffersrc_add_frame, (AVFilterContext *p1, AVFrame *p2, int p3)) - #endif -- DEFINE_METHOD4(AVFilterBufferRef*, avfilter_get_video_buffer, (AVFilterLink *p1, int p2, int p3, int p4)) - DEFINE_METHOD1(void, avfilter_unref_buffer, (AVFilterBufferRef *p1)) - DEFINE_METHOD4(int, avfilter_link, (AVFilterContext *p1, unsigned p2, AVFilterContext *p3, unsigned p4)) -+ DEFINE_FUNC_ALIGNED3(int , __cdecl, av_buffersink_get_buffer_ref, AVFilterContext *, AVFilterBufferRef **, int); -+ DEFINE_FUNC_ALIGNED0(AVBufferSinkParams*, __cdecl, av_buffersink_params_alloc); -+ DEFINE_FUNC_ALIGNED1(int , __cdecl, av_buffersink_poll_frame, AVFilterContext *); - - BEGIN_METHOD_RESOLVE() - RESOLVE_METHOD_RENAME(avfilter_open, avfilter_open_dont_call) -@@ -248,22 +188,25 @@ - RESOLVE_METHOD(avfilter_graph_create_filter) - RESOLVE_METHOD(avfilter_get_by_name) - RESOLVE_METHOD(avfilter_graph_alloc) --#if LIBAVFILTER_VERSION_INT >= AV_VERSION_INT(2,17,0) - RESOLVE_METHOD_RENAME(avfilter_inout_alloc, avfilter_inout_alloc_dont_call) - RESOLVE_METHOD_RENAME(avfilter_inout_free, avfilter_inout_free_dont_call) --#endif - RESOLVE_METHOD_RENAME(avfilter_graph_parse, avfilter_graph_parse_dont_call) - RESOLVE_METHOD_RENAME(avfilter_graph_config, avfilter_graph_config_dont_call) -- RESOLVE_METHOD(avfilter_poll_frame) -- RESOLVE_METHOD(avfilter_request_frame) -+#if LIBAVFILTER_VERSION_INT < AV_VERSION_INT(3,0,0) - RESOLVE_METHOD(av_vsrc_buffer_add_frame) -- RESOLVE_METHOD(avfilter_get_video_buffer) -+#else -+ RESOLVE_METHOD(av_buffersrc_add_frame) -+#endif - RESOLVE_METHOD(avfilter_unref_buffer) - RESOLVE_METHOD(avfilter_link) -+ RESOLVE_METHOD(av_buffersink_get_buffer_ref) -+ RESOLVE_METHOD(av_buffersink_params_alloc) -+ RESOLVE_METHOD(av_buffersink_poll_frame) - END_METHOD_RESOLVE() - - /* dependencies of libavfilter */ - DllAvUtil m_dllAvUtil; -+ DllSwResample m_dllSwResample; - - public: - int avfilter_open(AVFilterContext **filter_ctx, AVFilter *filter, const char *inst_name) -@@ -279,12 +222,7 @@ - void avfilter_graph_free(AVFilterGraph **graph) - { - CSingleLock lock(DllAvCodec::m_critSection); --#if LIBAVFILTER_VERSION_INT >= AV_VERSION_INT(1,76,0) - avfilter_graph_free_dont_call(graph); --#else -- avfilter_graph_free_dont_call(*graph); -- m_dllAvUtil.av_freep(graph); --#endif - } - void avfilter_register_all() - { -@@ -294,45 +232,29 @@ - AVFilterInOut* avfilter_inout_alloc() - { - CSingleLock lock(DllAvCodec::m_critSection); --#if LIBAVFILTER_VERSION_INT >= AV_VERSION_INT(2,17,0) - return avfilter_inout_alloc_dont_call(); --#else -- return (AVFilterInOut*)m_dllAvUtil.av_mallocz(sizeof(AVFilterInOut)); --#endif - } - int avfilter_graph_parse(AVFilterGraph *graph, const char *filters, AVFilterInOut **inputs, AVFilterInOut **outputs, void *log_ctx) - { - CSingleLock lock(DllAvCodec::m_critSection); --#if LIBAVFILTER_VERSION_INT >= AV_VERSION_INT(2,16,0) - return avfilter_graph_parse_dont_call(graph, filters, inputs, outputs, log_ctx); --#elif LIBAVFILTER_VERSION_INT >= AV_VERSION_INT(2,15,1) -- return avfilter_graph_parse_dont_call(graph, filters, *inputs, *outputs, log_ctx); --#else -- return avfilter_graph_parse_dont_call(graph, filters, *inputs, *outputs, (AVClass*)log_ctx); --#endif - } - void avfilter_inout_free(AVFilterInOut **inout) - { - CSingleLock lock(DllAvCodec::m_critSection); --#if LIBAVFILTER_VERSION_INT >= AV_VERSION_INT(2,17,0) - avfilter_inout_free_dont_call(inout); --#else -- *inout = NULL; --#endif - } - int avfilter_graph_config(AVFilterGraph *graphctx, void *log_ctx) - { - CSingleLock lock(DllAvCodec::m_critSection); --#if LIBAVFILTER_VERSION_INT >= AV_VERSION_INT(2,15,1) - return avfilter_graph_config_dont_call(graphctx, log_ctx); --#else -- return avfilter_graph_config_dont_call(graphctx, (AVClass*)log_ctx); --#endif - } - virtual bool Load() - { - if (!m_dllAvUtil.Load()) - return false; -+ if (!m_dllSwResample.Load()) -+ return false; - return DllDynamic::Load(); - } - }; -diff -urN xbmc-11.0/lib/DllAvFormat.h xbmc-11.0-ffmpeg-1.0/lib/DllAvFormat.h ---- xbmc-11.0/lib/DllAvFormat.h 2012-03-21 23:07:50.000000000 +0100 -+++ xbmc-11.0-ffmpeg-1.0/lib/DllAvFormat.h 2012-11-08 23:16:03.529738917 +0100 -@@ -62,54 +62,42 @@ - virtual ~DllAvFormatInterface() {} - virtual void av_register_all_dont_call(void)=0; - virtual AVInputFormat *av_find_input_format(const char *short_name)=0; -- virtual int url_feof(ByteIOContext *s)=0; -- virtual AVMetadataTag *av_metadata_get(AVMetadata *m, const char *key, const AVMetadataTag *prev, int flags)=0; -- virtual void av_close_input_file(AVFormatContext *s)=0; -- virtual void av_close_input_stream(AVFormatContext *s)=0; -+ virtual int url_feof(AVIOContext *s)=0; -+ virtual void avformat_close_input(AVFormatContext **s)=0; - virtual int av_read_frame(AVFormatContext *s, AVPacket *pkt)=0; - virtual void av_read_frame_flush(AVFormatContext *s)=0; - virtual int av_read_play(AVFormatContext *s)=0; - virtual int av_read_pause(AVFormatContext *s)=0; - virtual int av_seek_frame(AVFormatContext *s, int stream_index, int64_t timestamp, int flags)=0; - #if (!defined USE_EXTERNAL_FFMPEG) -- virtual int av_find_stream_info_dont_call(AVFormatContext *ic)=0; -+ virtual int avformat_find_stream_info_dont_call(AVFormatContext *ic, AVDictionary **options)=0; - #endif -- virtual int av_open_input_file(AVFormatContext **ic_ptr, const char *filename, AVInputFormat *fmt, int buf_size, AVFormatParameters *ap)=0; -- virtual void url_set_interrupt_cb(URLInterruptCB *interrupt_cb)=0; -- virtual int av_open_input_stream(AVFormatContext **ic_ptr, ByteIOContext *pb, const char *filename, AVInputFormat *fmt, AVFormatParameters *ap)=0; -- virtual int init_put_byte(ByteIOContext *s, unsigned char *buffer, int buffer_size, int write_flag, void *opaque, -+ virtual int avformat_open_input(AVFormatContext **ps, const char *filename, AVInputFormat *fmt, AVDictionary **options)=0; -+ virtual AVIOContext *avio_alloc_context(unsigned char *buffer, int buffer_size, int write_flag, void *opaque, - int (*read_packet)(void *opaque, uint8_t *buf, int buf_size), - int (*write_packet)(void *opaque, uint8_t *buf, int buf_size), - offset_t (*seek)(void *opaque, offset_t offset, int whence))=0; - virtual AVInputFormat *av_probe_input_format(AVProbeData *pd, int is_opened)=0; - virtual AVInputFormat *av_probe_input_format2(AVProbeData *pd, int is_opened, int *score_max)=0; -- virtual int av_probe_input_buffer(ByteIOContext *pb, AVInputFormat **fmt, const char *filename, void *logctx, unsigned int offset, unsigned int max_probe_size)=0; -- virtual void dump_format(AVFormatContext *ic, int index, const char *url, int is_output)=0; -- virtual int url_fdopen(ByteIOContext **s, URLContext *h)=0; -- virtual int url_fopen(ByteIOContext **s, const char *filename, int flags)=0; -- virtual int url_fclose(ByteIOContext *s)=0; -- virtual int url_open_dyn_buf(ByteIOContext **s)=0; -- virtual int url_close_dyn_buf(ByteIOContext *s, uint8_t **pbuffer)=0; -- virtual offset_t url_fseek(ByteIOContext *s, offset_t offset, int whence)=0; -- virtual int get_buffer(ByteIOContext *s, unsigned char *buf, int size)=0; -- virtual int get_partial_buffer(ByteIOContext *s, unsigned char *buf, int size)=0; -- virtual void put_byte(ByteIOContext *s, int b)=0; -- virtual void put_buffer(ByteIOContext *s, const unsigned char *buf, int size)=0; -- virtual void put_be24(ByteIOContext *s, unsigned int val)=0; -- virtual void put_be32(ByteIOContext *s, unsigned int val)=0; -- virtual void put_be16(ByteIOContext *s, unsigned int val)=0; -+ virtual int av_probe_input_buffer(AVIOContext *pb, AVInputFormat **fmt, const char *filename, void *logctx, unsigned int offset, unsigned int max_probe_size)=0; -+ virtual void av_dump_format(AVFormatContext *ic, int index, const char *url, int is_output)=0; -+ virtual int avio_open(AVIOContext **s, const char *filename, int flags)=0; -+ virtual int avio_close(AVIOContext *s)=0; -+ virtual int avio_open_dyn_buf(AVIOContext **s)=0; -+ virtual int avio_close_dyn_buf(AVIOContext *s, uint8_t **pbuffer)=0; -+ virtual offset_t avio_seek(AVIOContext *s, offset_t offset, int whence)=0; -+ virtual int avio_read(AVIOContext *s, unsigned char *buf, int size)=0; -+ virtual void avio_w8(AVIOContext *s, int b)=0; -+ virtual void avio_write(AVIOContext *s, const unsigned char *buf, int size)=0; -+ virtual void avio_wb24(AVIOContext *s, unsigned int val)=0; -+ virtual void avio_wb32(AVIOContext *s, unsigned int val)=0; -+ virtual void avio_wb16(AVIOContext *s, unsigned int val)=0; - virtual AVFormatContext *avformat_alloc_context(void)=0; -- virtual AVStream *av_new_stream(AVFormatContext *s, int id)=0; -+ virtual AVStream *avformat_new_stream(AVFormatContext *s, AVCodec *c)=0; - virtual AVOutputFormat *av_guess_format(const char *short_name, const char *filename, const char *mime_type)=0; -- virtual int av_set_parameters(AVFormatContext *s, AVFormatParameters *ap)=0; -- virtual ByteIOContext *av_alloc_put_byte(unsigned char *buffer, int buffer_size, int write_flag, void *opaque, -- int (*read_packet)(void *opaque, uint8_t *buf, int buf_size), -- int (*write_packet)(void *opaque, uint8_t *buf, int buf_size), -- offset_t (*seek)(void *opaque, offset_t offset, int whence))=0; -- virtual int av_write_header (AVFormatContext *s)=0; -+ virtual int avformat_write_header (AVFormatContext *s, AVDictionary **options)=0; - virtual int av_write_trailer(AVFormatContext *s)=0; - virtual int av_write_frame (AVFormatContext *s, AVPacket *pkt)=0; -- virtual int av_metadata_set2(AVMetadata **pm, const char *key, const char *value, int flags)=0; - }; - - #if (defined USE_EXTERNAL_FFMPEG) -@@ -126,78 +114,45 @@ - } - virtual void av_register_all_dont_call() { *(int* )0x0 = 0; } - virtual AVInputFormat *av_find_input_format(const char *short_name) { return ::av_find_input_format(short_name); } -- virtual int url_feof(ByteIOContext *s) { return ::url_feof(s); } --#if LIBAVFORMAT_VERSION_INT >= AV_VERSION_INT(52,31,0) -- // API added on: 2009-03-01 -- virtual AVMetadataTag *av_metadata_get(AVMetadata *m, const char *key, const AVMetadataTag *prev, int flags){ return ::av_metadata_get(m, key, prev, flags); } --#else -- virtual AVMetadataTag *av_metadata_get(AVMetadata *m, const char *key, const AVMetadataTag *prev, int flags){ return NULL; } --#endif -- virtual void av_close_input_file(AVFormatContext *s) { ::av_close_input_file(s); } -- virtual void av_close_input_stream(AVFormatContext *s) { ::av_close_input_stream(s); } -+ virtual int url_feof(AVIOContext *s) { return ::url_feof(s); } -+ virtual void avformat_close_input(AVFormatContext **s) { ::avformat_close_input(s); } - virtual int av_read_frame(AVFormatContext *s, AVPacket *pkt) { return ::av_read_frame(s, pkt); } - virtual void av_read_frame_flush(AVFormatContext *s) { ::av_read_frame_flush(s); } - virtual int av_read_play(AVFormatContext *s) { return ::av_read_play(s); } - virtual int av_read_pause(AVFormatContext *s) { return ::av_read_pause(s); } - virtual int av_seek_frame(AVFormatContext *s, int stream_index, int64_t timestamp, int flags) { return ::av_seek_frame(s, stream_index, timestamp, flags); } -- virtual int av_find_stream_info(AVFormatContext *ic) -+ virtual int avformat_find_stream_info(AVFormatContext *ic, AVDictionary **options) - { - CSingleLock lock(DllAvCodec::m_critSection); -- return ::av_find_stream_info(ic); -+ return ::avformat_find_stream_info(ic, options); - } -- virtual int av_open_input_file(AVFormatContext **ic_ptr, const char *filename, AVInputFormat *fmt, int buf_size, AVFormatParameters *ap) { return ::av_open_input_file(ic_ptr, filename, fmt, buf_size, ap); } -- virtual void url_set_interrupt_cb(URLInterruptCB *interrupt_cb) { ::url_set_interrupt_cb(interrupt_cb); } -- virtual int av_open_input_stream(AVFormatContext **ic_ptr, ByteIOContext *pb, const char *filename, AVInputFormat *fmt, AVFormatParameters *ap) { return ::av_open_input_stream(ic_ptr, pb, filename, fmt, ap); } -- virtual int init_put_byte(ByteIOContext *s, unsigned char *buffer, int buffer_size, int write_flag, void *opaque, -+ virtual int avformat_open_input(AVFormatContext **ps, const char *filename, AVInputFormat *fmt, AVDictionary **options) -+ { return ::avformat_open_input(ps, filename, fmt, options); } -+ virtual AVIOContext *avio_alloc_context(unsigned char *buffer, int buffer_size, int write_flag, void *opaque, - int (*read_packet)(void *opaque, uint8_t *buf, int buf_size), - int (*write_packet)(void *opaque, uint8_t *buf, int buf_size), -- offset_t (*seek)(void *opaque, offset_t offset, int whence)) { return ::init_put_byte(s, buffer, buffer_size, write_flag, opaque, read_packet, write_packet, seek); } -+ offset_t (*seek)(void *opaque, offset_t offset, int whence)) { return ::avio_alloc_context(buffer, buffer_size, write_flag, opaque, read_packet, write_packet, seek); } - virtual AVInputFormat *av_probe_input_format(AVProbeData *pd, int is_opened) {return ::av_probe_input_format(pd, is_opened); } - virtual AVInputFormat *av_probe_input_format2(AVProbeData *pd, int is_opened, int *score_max) {*score_max = 100; return ::av_probe_input_format(pd, is_opened); } // Use av_probe_input_format, this is not exported by ffmpeg's headers --#if LIBAVFORMAT_VERSION_INT >= AV_VERSION_INT(52,98,0) -- // API added on: 2010-02-08 -- virtual int av_probe_input_buffer(ByteIOContext *pb, AVInputFormat **fmt, const char *filename, void *logctx, unsigned int offset, unsigned int max_probe_size) { return ::av_probe_input_buffer(pb, fmt, filename, logctx, offset, max_probe_size); } --#else -- virtual int av_probe_input_buffer(ByteIOContext *pb, AVInputFormat **fmt, const char *filename, void *logctx, unsigned int offset, unsigned int max_probe_size) { return -1; } --#endif -- virtual void dump_format(AVFormatContext *ic, int index, const char *url, int is_output) { ::dump_format(ic, index, url, is_output); } -- virtual int url_fdopen(ByteIOContext **s, URLContext *h) { return ::url_fdopen(s, h); } -- virtual int url_fopen(ByteIOContext **s, const char *filename, int flags) { return ::url_fopen(s, filename, flags); } -- virtual int url_fclose(ByteIOContext *s) { return ::url_fclose(s); } -- virtual int url_open_dyn_buf(ByteIOContext **s) { return ::url_open_dyn_buf(s); } -- virtual int url_close_dyn_buf(ByteIOContext *s, uint8_t **pbuffer) { return ::url_close_dyn_buf(s, pbuffer); } -- virtual offset_t url_fseek(ByteIOContext *s, offset_t offset, int whence) { return ::url_fseek(s, offset, whence); } -- virtual int get_buffer(ByteIOContext *s, unsigned char *buf, int size) { return ::get_buffer(s, buf, size); } -- virtual int get_partial_buffer(ByteIOContext *s, unsigned char *buf, int size) { return ::get_partial_buffer(s, buf, size); } -- virtual void put_byte(ByteIOContext *s, int b) { ::put_byte(s, b); } -- virtual void put_buffer(ByteIOContext *s, const unsigned char *buf, int size) { ::put_buffer(s, buf, size); } -- virtual void put_be24(ByteIOContext *s, unsigned int val) { ::put_be24(s, val); } -- virtual void put_be32(ByteIOContext *s, unsigned int val) { ::put_be32(s, val); } -- virtual void put_be16(ByteIOContext *s, unsigned int val) { ::put_be16(s, val); } -+ virtual int av_probe_input_buffer(AVIOContext *pb, AVInputFormat **fmt, const char *filename, void *logctx, unsigned int offset, unsigned int max_probe_size) { return ::av_probe_input_buffer(pb, fmt, filename, logctx, offset, max_probe_size); } -+ virtual void av_dump_format(AVFormatContext *ic, int index, const char *url, int is_output) { ::av_dump_format(ic, index, url, is_output); } -+ virtual int avio_open(AVIOContext **s, const char *filename, int flags) { return ::avio_open(s, filename, flags); } -+ virtual int avio_close(AVIOContext *s) { return ::avio_close(s); } -+ virtual int avio_open_dyn_buf(AVIOContext **s) { return ::avio_open_dyn_buf(s); } -+ virtual int avio_close_dyn_buf(AVIOContext *s, uint8_t **pbuffer) { return ::avio_close_dyn_buf(s, pbuffer); } -+ virtual offset_t avio_seek(AVIOContext *s, offset_t offset, int whence) { return ::avio_seek(s, offset, whence); } -+ virtual int avio_read(AVIOContext *s, unsigned char *buf, int size) { return ::avio_read(s, buf, size); } -+ virtual void avio_w8(AVIOContext *s, int b) { ::avio_w8(s, b); } -+ virtual void avio_write(AVIOContext *s, const unsigned char *buf, int size) { ::avio_write(s, buf, size); } -+ virtual void avio_wb24(AVIOContext *s, unsigned int val) { ::avio_wb24(s, val); } -+ virtual void avio_wb32(AVIOContext *s, unsigned int val) { ::avio_wb32(s, val); } -+ virtual void avio_wb16(AVIOContext *s, unsigned int val) { ::avio_wb16(s, val); } - virtual AVFormatContext *avformat_alloc_context() { return ::avformat_alloc_context(); } -- virtual AVStream *av_new_stream(AVFormatContext *s, int id) { return ::av_new_stream(s, id); } --#if LIBAVFORMAT_VERSION_INT < (52<<16 | 45<<8) -- virtual AVOutputFormat *av_guess_format(const char *short_name, const char *filename, const char *mime_type) { return ::guess_format(short_name, filename, mime_type); } --#else -+ virtual AVStream *avformat_new_stream(AVFormatContext *s, AVCodec *c) { return ::avformat_new_stream(s, c); } - virtual AVOutputFormat *av_guess_format(const char *short_name, const char *filename, const char *mime_type) { return ::av_guess_format(short_name, filename, mime_type); } --#endif -- virtual int av_set_parameters(AVFormatContext *s, AVFormatParameters *ap) { return ::av_set_parameters(s, ap); } -- virtual ByteIOContext *av_alloc_put_byte(unsigned char *buffer, int buffer_size, int write_flag, void *opaque, -- int (*read_packet)(void *opaque, uint8_t *buf, int buf_size), -- int (*write_packet)(void *opaque, uint8_t *buf, int buf_size), -- offset_t (*seek)(void *opaque, offset_t offset, int whence)) { return ::av_alloc_put_byte(buffer, buffer_size, write_flag, opaque, read_packet, write_packet, seek); } -- virtual int av_write_header (AVFormatContext *s) { return ::av_write_header (s); } -+ virtual int avformat_write_header (AVFormatContext *s, AVDictionary **options) { return ::avformat_write_header (s, options); } - virtual int av_write_trailer(AVFormatContext *s) { return ::av_write_trailer(s); } - virtual int av_write_frame (AVFormatContext *s, AVPacket *pkt) { return ::av_write_frame(s, pkt); } --#if LIBAVFORMAT_VERSION_INT >= AV_VERSION_INT(52,43,0) -- // API added on: 2009-12-13 -- virtual int av_metadata_set2(AVMetadata **pm, const char *key, const char *value, int flags) { return ::av_metadata_set2(pm, key, value, flags); } --#elif LIBAVFORMAT_VERSION_INT >= AV_VERSION_INT(52,31,0) -- // API added on: 2009-03-01 -- virtual int av_metadata_set2(AVMetadata **pm, const char *key, const char *value, int flags) { return ::av_metadata_set(pm, key, value); } --#else -- virtual int av_metadata_set2(AVMetadata **pm, const char *key, const char *value, int flags) { return -1; } --#endif - - // DLL faking. - virtual bool ResolveExports() { return true; } -@@ -218,108 +173,78 @@ - - DEFINE_METHOD0(void, av_register_all_dont_call) - DEFINE_METHOD1(AVInputFormat*, av_find_input_format, (const char *p1)) -- DEFINE_METHOD1(int, url_feof, (ByteIOContext *p1)) -- DEFINE_METHOD4(AVMetadataTag*, av_metadata_get, (AVMetadata *p1, const char *p2, const AVMetadataTag *p3, int p4)) -- DEFINE_METHOD1(void, av_close_input_file, (AVFormatContext *p1)) -- DEFINE_METHOD1(void, av_close_input_stream, (AVFormatContext *p1)) -+ DEFINE_METHOD1(int, url_feof, (AVIOContext *p1)) -+ DEFINE_METHOD1(void, avformat_close_input, (AVFormatContext **p1)) - DEFINE_METHOD1(int, av_read_play, (AVFormatContext *p1)) - DEFINE_METHOD1(int, av_read_pause, (AVFormatContext *p1)) - DEFINE_METHOD1(void, av_read_frame_flush, (AVFormatContext *p1)) - DEFINE_FUNC_ALIGNED2(int, __cdecl, av_read_frame, AVFormatContext *, AVPacket *) - DEFINE_FUNC_ALIGNED4(int, __cdecl, av_seek_frame, AVFormatContext*, int, int64_t, int) -- DEFINE_FUNC_ALIGNED1(int, __cdecl, av_find_stream_info_dont_call, AVFormatContext*) -- DEFINE_FUNC_ALIGNED5(int, __cdecl, av_open_input_file, AVFormatContext**, const char *, AVInputFormat *, int, AVFormatParameters *) -- DEFINE_FUNC_ALIGNED5(int,__cdecl, av_open_input_stream, AVFormatContext **, ByteIOContext *, const char *, AVInputFormat *, AVFormatParameters *) -+ DEFINE_FUNC_ALIGNED2(int, __cdecl, avformat_find_stream_info_dont_call, AVFormatContext*, AVDictionary **) -+ DEFINE_FUNC_ALIGNED4(int, __cdecl, avformat_open_input, AVFormatContext **, const char *, AVInputFormat *, AVDictionary **) - DEFINE_FUNC_ALIGNED2(AVInputFormat*, __cdecl, av_probe_input_format, AVProbeData*, int) - DEFINE_FUNC_ALIGNED3(AVInputFormat*, __cdecl, av_probe_input_format2, AVProbeData*, int, int*) -- DEFINE_FUNC_ALIGNED6(int, __cdecl, av_probe_input_buffer, ByteIOContext *, AVInputFormat **, const char *, void *, unsigned int, unsigned int) -- DEFINE_FUNC_ALIGNED3(int, __cdecl, get_buffer, ByteIOContext*, unsigned char *, int) -- DEFINE_FUNC_ALIGNED3(int, __cdecl, get_partial_buffer, ByteIOContext*, unsigned char *, int) -- DEFINE_FUNC_ALIGNED2(void, __cdecl, put_byte, ByteIOContext*, int) -- DEFINE_FUNC_ALIGNED3(void, __cdecl, put_buffer, ByteIOContext*, const unsigned char *, int) -- DEFINE_FUNC_ALIGNED2(void, __cdecl, put_be24, ByteIOContext*, unsigned int) -- DEFINE_FUNC_ALIGNED2(void, __cdecl, put_be32, ByteIOContext*, unsigned int) -- DEFINE_FUNC_ALIGNED2(void, __cdecl, put_be16, ByteIOContext*, unsigned int) -- DEFINE_METHOD1(void, url_set_interrupt_cb, (URLInterruptCB *p1)) -- DEFINE_METHOD8(int, init_put_byte, (ByteIOContext *p1, unsigned char *p2, int p3, int p4, void *p5, -+ DEFINE_FUNC_ALIGNED6(int, __cdecl, av_probe_input_buffer, AVIOContext *, AVInputFormat **, const char *, void *, unsigned int, unsigned int) -+ DEFINE_FUNC_ALIGNED3(int, __cdecl, avio_read, AVIOContext*, unsigned char *, int) -+ DEFINE_FUNC_ALIGNED2(void, __cdecl, avio_w8, AVIOContext*, int) -+ DEFINE_FUNC_ALIGNED3(void, __cdecl, avio_write, AVIOContext*, const unsigned char *, int) -+ DEFINE_FUNC_ALIGNED2(void, __cdecl, avio_wb24, AVIOContext*, unsigned int) -+ DEFINE_FUNC_ALIGNED2(void, __cdecl, avio_wb32, AVIOContext*, unsigned int) -+ DEFINE_FUNC_ALIGNED2(void, __cdecl, avio_wb16, AVIOContext*, unsigned int) -+ DEFINE_METHOD7(AVIOContext *, avio_alloc_context, (unsigned char *p1, int p2, int p3, void *p4, -+ int (*p5)(void *opaque, uint8_t *buf, int buf_size), - int (*p6)(void *opaque, uint8_t *buf, int buf_size), -- int (*p7)(void *opaque, uint8_t *buf, int buf_size), -- offset_t (*p8)(void *opaque, offset_t offset, int whence))) -- DEFINE_METHOD4(void, dump_format, (AVFormatContext *p1, int p2, const char *p3, int p4)) -- DEFINE_METHOD2(int, url_fdopen, (ByteIOContext **p1, URLContext *p2)) -- DEFINE_METHOD3(int, url_fopen, (ByteIOContext **p1, const char *p2, int p3)) -- DEFINE_METHOD1(int, url_fclose, (ByteIOContext *p1)) -- DEFINE_METHOD1(int, url_open_dyn_buf, (ByteIOContext **p1)) -- DEFINE_METHOD2(int, url_close_dyn_buf, (ByteIOContext *p1, uint8_t **p2)) -- DEFINE_METHOD3(offset_t, url_fseek, (ByteIOContext *p1, offset_t p2, int p3)) -+ offset_t (*p7)(void *opaque, offset_t offset, int whence))) -+ DEFINE_METHOD4(void, av_dump_format, (AVFormatContext *p1, int p2, const char *p3, int p4)) -+ DEFINE_METHOD3(int, avio_open, (AVIOContext **p1, const char *p2, int p3)) -+ DEFINE_METHOD1(int, avio_close, (AVIOContext *p1)) -+ DEFINE_METHOD1(int, avio_open_dyn_buf, (AVIOContext **p1)) -+ DEFINE_METHOD2(int, avio_close_dyn_buf, (AVIOContext *p1, uint8_t **p2)) -+ DEFINE_METHOD3(offset_t, avio_seek, (AVIOContext *p1, offset_t p2, int p3)) - DEFINE_METHOD0(AVFormatContext *, avformat_alloc_context) -- DEFINE_METHOD2(AVStream *, av_new_stream, (AVFormatContext *p1, int p2)) --#if LIBAVFORMAT_VERSION_INT < (52<<16 | 45<<8) -- DEFINE_METHOD3(AVOutputFormat *, guess_format, (const char *p1, const char *p2, const char *p3)) --#else -+ DEFINE_METHOD2(AVStream *, avformat_new_stream, (AVFormatContext *p1, AVCodec *p2)) - DEFINE_METHOD3(AVOutputFormat *, av_guess_format, (const char *p1, const char *p2, const char *p3)) --#endif -- DEFINE_METHOD2(int, av_set_parameters, (AVFormatContext *p1, AVFormatParameters *p2)); -- DEFINE_METHOD7(ByteIOContext *, av_alloc_put_byte, (unsigned char *p1, int p2, int p3, void *p4, -- int(*p5)(void *opaque, uint8_t *buf, int buf_size), -- int(*p6)(void *opaque, uint8_t *buf, int buf_size), -- offset_t(*p7)(void *opaque, offset_t offset, int whence))) -- DEFINE_METHOD1(int, av_write_header , (AVFormatContext *p1)) -+ DEFINE_METHOD2(int, avformat_write_header , (AVFormatContext *p1, AVDictionary **p2)) - DEFINE_METHOD1(int, av_write_trailer, (AVFormatContext *p1)) - DEFINE_METHOD2(int, av_write_frame , (AVFormatContext *p1, AVPacket *p2)) -- DEFINE_METHOD4(int, av_metadata_set2, (AVMetadata **p1, const char *p2, const char *p3, int p4)); - BEGIN_METHOD_RESOLVE() - RESOLVE_METHOD_RENAME(av_register_all, av_register_all_dont_call) - RESOLVE_METHOD(av_find_input_format) - RESOLVE_METHOD(url_feof) -- RESOLVE_METHOD(av_metadata_get) -- RESOLVE_METHOD(av_close_input_file) -- RESOLVE_METHOD(av_close_input_stream) -+ RESOLVE_METHOD(avformat_close_input) - RESOLVE_METHOD(av_read_frame) - RESOLVE_METHOD(av_read_play) - RESOLVE_METHOD(av_read_pause) -- RESOLVE_METHOD_RENAME(ff_read_frame_flush, av_read_frame_flush) -+ RESOLVE_METHOD(av_read_frame_flush) - RESOLVE_METHOD(av_seek_frame) -- RESOLVE_METHOD_RENAME(av_find_stream_info, av_find_stream_info_dont_call) -- RESOLVE_METHOD(av_open_input_file) -- RESOLVE_METHOD(url_set_interrupt_cb) -- RESOLVE_METHOD(av_open_input_stream) -- RESOLVE_METHOD(init_put_byte) -+ RESOLVE_METHOD_RENAME(avformat_find_stream_info, avformat_find_stream_info_dont_call) -+ RESOLVE_METHOD(avformat_open_input) -+ RESOLVE_METHOD(avio_alloc_context) - RESOLVE_METHOD(av_probe_input_format) - RESOLVE_METHOD(av_probe_input_format2) - RESOLVE_METHOD(av_probe_input_buffer) -- RESOLVE_METHOD(dump_format) -- RESOLVE_METHOD(url_fdopen) -- RESOLVE_METHOD(url_fopen) -- RESOLVE_METHOD(url_fclose) -- RESOLVE_METHOD(url_open_dyn_buf) -- RESOLVE_METHOD(url_close_dyn_buf) -- RESOLVE_METHOD(url_fseek) -- RESOLVE_METHOD(get_buffer) -- RESOLVE_METHOD(get_partial_buffer) -- RESOLVE_METHOD(put_byte) -- RESOLVE_METHOD(put_buffer) -- RESOLVE_METHOD(put_be24) -- RESOLVE_METHOD(put_be32) -- RESOLVE_METHOD(put_be16) -+ RESOLVE_METHOD(av_dump_format) -+ RESOLVE_METHOD(avio_open) -+ RESOLVE_METHOD(avio_close) -+ RESOLVE_METHOD(avio_open_dyn_buf) -+ RESOLVE_METHOD(avio_close_dyn_buf) -+ RESOLVE_METHOD(avio_seek) -+ RESOLVE_METHOD(avio_read) -+ RESOLVE_METHOD(avio_w8) -+ RESOLVE_METHOD(avio_write) -+ RESOLVE_METHOD(avio_wb24) -+ RESOLVE_METHOD(avio_wb32) -+ RESOLVE_METHOD(avio_wb16) - RESOLVE_METHOD(avformat_alloc_context) -- RESOLVE_METHOD(av_new_stream) --#if LIBAVFORMAT_VERSION_INT < (52<<16 | 45<<8) -- RESOLVE_METHOD(guess_format) --#else -+ RESOLVE_METHOD(avformat_new_stream) - RESOLVE_METHOD(av_guess_format) --#endif -- RESOLVE_METHOD(av_set_parameters) -- RESOLVE_METHOD(av_alloc_put_byte) -- RESOLVE_METHOD(av_write_header) -+ RESOLVE_METHOD(avformat_write_header) - RESOLVE_METHOD(av_write_trailer) - RESOLVE_METHOD(av_write_frame) -- RESOLVE_METHOD(av_metadata_set2) - END_METHOD_RESOLVE() - - /* dependencies of libavformat */ - DllAvCodec m_dllAvCodec; -- // DllAvCore loaded implicitely by m_dllAvCodec - // DllAvUtil loaded implicitely by m_dllAvCodec - - public: -@@ -328,10 +253,10 @@ - CSingleLock lock(DllAvCodec::m_critSection); - av_register_all_dont_call(); - } -- int av_find_stream_info(AVFormatContext *ic) -+ int avformat_find_stream_info(AVFormatContext *ic, AVDictionary **options) - { - CSingleLock lock(DllAvCodec::m_critSection); -- return(av_find_stream_info_dont_call(ic)); -+ return avformat_find_stream_info_dont_call(ic, options); - } - - virtual bool Load() -diff -urN xbmc-11.0/lib/DllAvUtil.h xbmc-11.0-ffmpeg-1.0/lib/DllAvUtil.h ---- xbmc-11.0/lib/DllAvUtil.h 2012-03-21 23:07:50.000000000 +0100 -+++ xbmc-11.0-ffmpeg-1.0/lib/DllAvUtil.h 2012-11-08 23:16:18.536405054 +0100 -@@ -65,6 +65,7 @@ - #include "libavutil/opt.h" - #include "libavutil/mem.h" - #include "libavutil/fifo.h" -+ #include "libavutil/samplefmt.h" - #endif - } - -@@ -89,7 +90,7 @@ - virtual int64_t av_rescale_q(int64_t a, AVRational bq, AVRational cq)=0; - virtual const AVCRC* av_crc_get_table(AVCRCId crc_id)=0; - virtual uint32_t av_crc(const AVCRC *ctx, uint32_t crc, const uint8_t *buffer, size_t length)=0; -- virtual int av_set_string3(void *obj, const char *name, const char *val, int alloc, const AVOption **o_out)=0; -+ virtual int av_opt_set(void *obj, const char *name, const char *val, int search_flags)=0; - virtual AVFifoBuffer *av_fifo_alloc(unsigned int size) = 0; - virtual void av_fifo_free(AVFifoBuffer *f) = 0; - virtual void av_fifo_reset(AVFifoBuffer *f) = 0; -@@ -97,6 +98,11 @@ - virtual int av_fifo_generic_read(AVFifoBuffer *f, void *dest, int buf_size, void (*func)(void*, void*, int)) = 0; - virtual int av_fifo_generic_write(AVFifoBuffer *f, void *src, int size, int (*func)(void*, void*, int)) = 0; - virtual char *av_strdup(const char *s)=0; -+ virtual int av_get_bytes_per_sample(enum AVSampleFormat p1) = 0; -+ virtual AVDictionaryEntry *av_dict_get(AVDictionary *m, const char *key, const AVDictionaryEntry *prev, int flags) = 0; -+ virtual int av_dict_set(AVDictionary **pm, const char *key, const char *value, int flags)=0; -+ virtual int av_samples_get_buffer_size (int *linesize, int nb_channels, int nb_samples, enum AVSampleFormat sample_fmt, int align) = 0; -+ virtual int64_t av_get_default_channel_layout(int nb_channels)=0; - }; - - #if (defined USE_EXTERNAL_FFMPEG) -@@ -117,12 +123,7 @@ - virtual int64_t av_rescale_q(int64_t a, AVRational bq, AVRational cq) { return ::av_rescale_q(a, bq, cq); } - virtual const AVCRC* av_crc_get_table(AVCRCId crc_id) { return ::av_crc_get_table(crc_id); } - virtual uint32_t av_crc(const AVCRC *ctx, uint32_t crc, const uint8_t *buffer, size_t length) { return ::av_crc(ctx, crc, buffer, length); } --#if LIBAVCODEC_VERSION_INT >= AV_VERSION_INT(52,7,0) -- // API added on: 2008-12-16 -- virtual int av_set_string3(void *obj, const char *name, const char *val, int alloc, const AVOption **o_out) { return ::av_set_string3(obj, name, val, alloc, o_out); } --#else -- virtual int av_set_string3(void *obj, const char *name, const char *val, int alloc, const AVOption **o_out) { return AVERROR(ENOENT); } --#endif -+ virtual int av_opt_set(void *obj, const char *name, const char *val, int search_flags) { return ::av_opt_set(obj, name, val, search_flags); } - virtual AVFifoBuffer *av_fifo_alloc(unsigned int size) {return ::av_fifo_alloc(size); } - virtual void av_fifo_free(AVFifoBuffer *f) { ::av_fifo_free(f); } - virtual void av_fifo_reset(AVFifoBuffer *f) { ::av_fifo_reset(f); } -@@ -132,6 +133,13 @@ - virtual int av_fifo_generic_write(AVFifoBuffer *f, void *src, int size, int (*func)(void*, void*, int)) - { return ::av_fifo_generic_write(f, src, size, func); } - virtual char *av_strdup(const char *s) { return ::av_strdup(s); } -+ virtual int av_get_bytes_per_sample(enum AVSampleFormat p1) -+ { return ::av_get_bytes_per_sample(p1); } -+ virtual AVDictionaryEntry *av_dict_get(AVDictionary *m, const char *key, const AVDictionaryEntry *prev, int flags){ return ::av_dict_get(m, key, prev, flags); } -+ virtual int av_dict_set(AVDictionary **pm, const char *key, const char *value, int flags) { return ::av_dict_set(pm, key, value, flags); } -+ virtual int av_samples_get_buffer_size (int *linesize, int nb_channels, int nb_samples, enum AVSampleFormat sample_fmt, int align) -+ { return ::av_samples_get_buffer_size(linesize, nb_channels, nb_samples, sample_fmt, align); } -+ virtual int64_t av_get_default_channel_layout(int nb_channels) { return ::av_get_default_channel_layout(nb_channels); } - - // DLL faking. - virtual bool ResolveExports() { return true; } -@@ -160,7 +168,7 @@ - DEFINE_METHOD3(int64_t, av_rescale_q, (int64_t p1, AVRational p2, AVRational p3)); - DEFINE_METHOD1(const AVCRC*, av_crc_get_table, (AVCRCId p1)) - DEFINE_METHOD4(uint32_t, av_crc, (const AVCRC *p1, uint32_t p2, const uint8_t *p3, size_t p4)); -- DEFINE_METHOD5(int, av_set_string3, (void *p1, const char *p2, const char *p3, int p4, const AVOption **p5)); -+ DEFINE_METHOD4(int, av_opt_set, (void *p1, const char *p2, const char *p3, int p4)); - DEFINE_METHOD1(AVFifoBuffer*, av_fifo_alloc, (unsigned int p1)) - DEFINE_METHOD1(void, av_fifo_free, (AVFifoBuffer *p1)) - DEFINE_METHOD1(void, av_fifo_reset, (AVFifoBuffer *p1)) -@@ -168,6 +176,11 @@ - DEFINE_METHOD4(int, av_fifo_generic_read, (AVFifoBuffer *p1, void *p2, int p3, void (*p4)(void*, void*, int))) - DEFINE_METHOD4(int, av_fifo_generic_write, (AVFifoBuffer *p1, void *p2, int p3, int (*p4)(void*, void*, int))) - DEFINE_METHOD1(char*, av_strdup, (const char *p1)) -+ DEFINE_METHOD1(int, av_get_bytes_per_sample, (enum AVSampleFormat p1)) -+ DEFINE_METHOD4(AVDictionaryEntry *, av_dict_get, (AVDictionary *p1, const char *p2, const AVDictionaryEntry *p3, int p4)) -+ DEFINE_METHOD4(int, av_dict_set, (AVDictionary **p1, const char *p2, const char *p3, int p4)); -+ DEFINE_METHOD5(int, av_samples_get_buffer_size, (int *p1, int p2, int p3, enum AVSampleFormat p4, int p5)) -+ DEFINE_METHOD1(int64_t, av_get_default_channel_layout, (int p1)) - - public: - BEGIN_METHOD_RESOLVE() -@@ -181,7 +194,7 @@ - RESOLVE_METHOD(av_rescale_q) - RESOLVE_METHOD(av_crc_get_table) - RESOLVE_METHOD(av_crc) -- RESOLVE_METHOD(av_set_string3) -+ RESOLVE_METHOD(av_opt_set) - RESOLVE_METHOD(av_fifo_alloc) - RESOLVE_METHOD(av_fifo_free) - RESOLVE_METHOD(av_fifo_reset) -@@ -189,6 +202,11 @@ - RESOLVE_METHOD(av_fifo_generic_read) - RESOLVE_METHOD(av_fifo_generic_write) - RESOLVE_METHOD(av_strdup) -+ RESOLVE_METHOD(av_get_bytes_per_sample) -+ RESOLVE_METHOD(av_dict_get) -+ RESOLVE_METHOD(av_dict_set) -+ RESOLVE_METHOD(av_samples_get_buffer_size) -+ RESOLVE_METHOD(av_get_default_channel_layout) - END_METHOD_RESOLVE() - }; - -diff -urN xbmc-11.0/lib/DllSwResample.h xbmc-11.0-ffmpeg-1.0/lib/DllSwResample.h ---- xbmc-11.0/lib/DllSwResample.h 1970-01-01 01:00:00.000000000 +0100 -+++ xbmc-11.0-ffmpeg-1.0/lib/DllSwResample.h 2012-11-08 23:15:55.399739205 +0100 -@@ -0,0 +1,87 @@ -+#pragma once -+/* -+ * Copyright (C) 2005-2010 Team XBMC -+ * http://www.xbmc.org -+ * -+ * This Program is free software; you can redistribute it and/or modify -+ * it under the terms of the GNU General Public License as published by -+ * the Free Software Foundation; either version 2, or (at your option) -+ * any later version. -+ * -+ * This Program is distributed in the hope that it will be useful, -+ * but WITHOUT ANY WARRANTY; without even the implied warranty of -+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -+ * GNU General Public License for more details. -+ * -+ * You should have received a copy of the GNU General Public License -+ * along with XBMC; see the file COPYING. If not, write to -+ * the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA. -+ * http://www.gnu.org/copyleft/gpl.html -+ * -+ */ -+ -+#if (defined HAVE_CONFIG_H) && (!defined WIN32) -+ #include "config.h" -+#endif -+#include "DynamicDll.h" -+ -+extern "C" { -+#ifndef HAVE_MMX -+#define HAVE_MMX -+#endif -+#ifndef __STDC_CONSTANT_MACROS -+#define __STDC_CONSTANT_MACROS -+#endif -+#ifndef __GNUC__ -+#pragma warning(disable:4244) -+#endif -+#if (defined USE_EXTERNAL_FFMPEG) -+ #include -+#else -+ #include "libswresample/swresample.h" -+#endif -+} -+ -+ -+#if (defined USE_EXTERNAL_FFMPEG) -+ -+// Use direct mapping -+class DllSwResample : public DllDynamic -+{ -+public: -+ virtual ~DllSwResample() {} -+ -+ // DLL faking. -+ virtual bool ResolveExports() { return true; } -+ virtual bool Load() { -+ CLog::Log(LOGDEBUG, "DllAvFormat: Using libswresample system library"); -+ return true; -+ } -+ virtual void Unload() {} -+}; -+ -+#else -+ -+class DllSwResample : public DllDynamic -+{ -+ DECLARE_DLL_WRAPPER(DllSwResample, DLL_PATH_LIBSWRESAMPLE) -+ -+ LOAD_SYMBOLS() -+ -+ BEGIN_METHOD_RESOLVE() -+ END_METHOD_RESOLVE() -+ -+ /* dependencies of libavformat */ -+ DllAvUtil m_dllAvUtil; -+ -+public: -+ -+ virtual bool Load() -+ { -+ if (!m_dllAvUtil.Load()) -+ return false; -+ return DllDynamic::Load(); -+ } -+}; -+ -+#endif -diff -urN xbmc-11.0/lib/Makefile.in xbmc-11.0-ffmpeg-1.0/lib/Makefile.in ---- xbmc-11.0/lib/Makefile.in 2012-03-21 23:07:50.000000000 +0100 -+++ xbmc-11.0-ffmpeg-1.0/lib/Makefile.in 2012-11-08 23:15:55.399739205 +0100 -@@ -17,6 +17,14 @@ - WRAPPER=@abs_top_srcdir@/xbmc/cores/DllLoader/exports/wrapper.o - WRAPPER_MACH_ALIAS=@abs_top_srcdir@/xbmc/cores/DllLoader/exports/wrapper_mach_alias - -+AVFORMAT_SO=avformat-53-$(ARCH).so -+AVCODEC_SO=avcodec-53-$(ARCH).so -+AVUTIL_SO=avutil-51-$(ARCH).so -+AVFILTER_SO=avfilter-2-$(ARCH).so -+SWSCALE_SO=swscale-2-$(ARCH).so -+POSTPROC_SO=postproc-52-$(ARCH).so -+SWRESAMPLE_SO=swresample-0-$(ARCH).so -+ - DIRS= - ifneq (@USE_EXTERNAL_FFMPEG@,1) - DIRS+=ffmpeg -@@ -24,13 +32,13 @@ - - LIBS= - ifneq (@USE_EXTERNAL_FFMPEG@,1) -- LIBS+=avutil-50-$(ARCH).so \ -- avcodec-52-$(ARCH).so \ -- avcore-0-$(ARCH).so \ -- avformat-52-$(ARCH).so \ -- postproc-51-$(ARCH).so \ -- avfilter-1-$(ARCH).so \ -- swscale-0-$(ARCH).so -+ LIBS+=$(AVUTIL_SO) \ -+ $(AVCODEC_SO) \ -+ $(AVFORMAT_SO) \ -+ $(POSTPROC_SO) \ -+ $(AVFILTER_SO) \ -+ $(SWSCALE_SO) \ -+ $(SWRESAMPLE_SO) - endif - - ifneq (,$(findstring powerpc,$(ARCH))) -@@ -54,90 +62,90 @@ - BUNDLE1_O = -lbundle1.o - endif - --$(SYSDIR)/avutil-50-$(ARCH).so: $(WRAPPER) ffmpeg/libavutil/libavutil.dylib -+$(SYSDIR)/$(AVUTIL_SO): $(WRAPPER) ffmpeg/libavutil/libavutil.dylib - $(LD) $(LDFLAGS) -alias_list $(WRAPPER_MACH_ALIAS) -o $@ \ - $(WRAPPER) ffmpeg/libavutil/*.o \ - ffmpeg/libavutil/$(ARCH_DIR)/*.o $(BUNDLE1_O) - --$(SYSDIR)/avcodec-52-$(ARCH).so: $(WRAPPER) ffmpeg/libavcodec/libavcodec.dylib -+$(SYSDIR)/$(AVCODEC_SO): $(WRAPPER) ffmpeg/libavcodec/libavcodec.dylib - $(LD) $(LDFLAGS) -alias_list $(WRAPPER_MACH_ALIAS) -o $@ \ - $(WRAPPER) ffmpeg/libavcodec/*.o \ - ffmpeg/libavcodec/$(ARCH_DIR)/*.o $(BUNDLE1_O) - --$(SYSDIR)/avcore-0-$(ARCH).so: $(WRAPPER) ffmpeg/libavcore/libavcore.dylib -- $(LD) $(LDFLAGS) -alias_list $(WRAPPER_MACH_ALIAS) -o $@ \ -- $(WRAPPER) ffmpeg/libavcore/*.o $(BUNDLE1_O) -- --$(SYSDIR)/avformat-52-$(ARCH).so: $(WRAPPER) ffmpeg/libavformat/libavformat.dylib -+$(SYSDIR)/$(AVFORMAT_SO): $(WRAPPER) ffmpeg/libavformat/libavformat.dylib - $(LD) $(LDFLAGS) -alias_list $(WRAPPER_MACH_ALIAS) -o $@ \ - $(WRAPPER) ffmpeg/libavformat/*.o $(BUNDLE1_O) - - ifeq ($(findstring x86,$(ARCH_DIR)), x86) --$(SYSDIR)/avfilter-1-$(ARCH).so: $(WRAPPER) ffmpeg/libavfilter/libavfilter.dylib -+$(SYSDIR)/$(AVFILTER_SO): $(WRAPPER) ffmpeg/libavfilter/libavfilter.dylib - $(LD) $(LDFLAGS) -alias_list $(WRAPPER_MACH_ALIAS) -o $@ \ - $(WRAPPER) ffmpeg/libavfilter/$(ARCH_DIR)/*.o \ - ffmpeg/libavfilter/*.o $(BUNDLE1_O) - else # No libavfilter/ppc or libavfilter/arm --$(SYSDIR)/avfilter-1-$(ARCH).so: $(WRAPPER) ffmpeg/libavfilter/libavfilter.dylib -+$(SYSDIR)/$(AVFILTER_SO): $(WRAPPER) ffmpeg/libavfilter/libavfilter.dylib - $(LD) $(LDFLAGS) -alias_list $(WRAPPER_MACH_ALIAS) -o $@ \ - $(WRAPPER) ffmpeg/libavfilter/*.o $(BUNDLE1_O) - endif - - ifneq ($(findstring arm,$(ARCH)), arm) --$(SYSDIR)/swscale-0-$(ARCH).so: $(WRAPPER) ffmpeg/libswscale/libswscale.dylib -+$(SYSDIR)/$(SWSCALE_SO): $(WRAPPER) ffmpeg/libswscale/libswscale.dylib - $(LD) $(LDFLAGS) -alias_list $(WRAPPER_MACH_ALIAS) -o $@ \ - $(WRAPPER) ffmpeg/libswscale/*.o \ - ffmpeg/libswscale/$(ARCH_DIR)/*.o $(BUNDLE1_O) - else # No ARM version of swscale available yet. --$(SYSDIR)/swscale-0-$(ARCH).so: $(WRAPPER) ffmpeg/libswscale/libswscale.dylib -+$(SYSDIR)/$(SWSCALE_SO): $(WRAPPER) ffmpeg/libswscale/libswscale.dylib - $(LD) $(LDFLAGS) -alias_list $(WRAPPER_MACH_ALIAS) -o $@ \ - $(WRAPPER) ffmpeg/libswscale/*.o - endif - --$(SYSDIR)/postproc-51-$(ARCH).so: $(WRAPPER) ffmpeg/libpostproc/libpostproc.dylib -+$(SYSDIR)/$(POSTPROC_SO): $(WRAPPER) ffmpeg/libpostproc/libpostproc.dylib - $(LD) $(LDFLAGS) -alias_list $(WRAPPER_MACH_ALIAS) -o $@ \ - $(WRAPPER) ffmpeg/libpostproc/*.o $(BUNDLE1_O) - -+$(SYSDIR)/$(SWRESAMPLE_SO): $(WRAPPER) ffmpeg/libswresample/libswresample.dylib -+ $(LD) $(LDFLAGS) -alias_list $(WRAPPER_MACH_ALIAS) -o $@ \ -+ $(WRAPPER) ffmpeg/libswresample/*.o $(BUNDLE1_O) -+ - ffmpeg/libavutil/libavutil.dylib : ffmpeg; - ffmpeg/libavcodec/libavcodec.dylib : ffmpeg; --ffmpeg/libavcore/libavcore.dylib : ffmpeg; - ffmpeg/libavformat/libavformat.dylib : ffmpeg; - ffmpeg/libavformat/libavfilter.dylib : ffmpeg; - ffmpeg/libswscale/libswscale.dylib : ffmpeg; - ffmpeg/libpostproc/libpostproc.dylib : ffmpeg; -+ffmpeg/libswresample/libswresample.dylib : ffmpeg; - ffmpeg: - $(MAKE) -C $@ - - else - --$(SYSDIR)/avutil-50-$(ARCH).so: ffmpeg/libavutil/libavutil.so -+$(SYSDIR)/$(AVUTIL_SO): ffmpeg/libavutil/libavutil.so - cp ffmpeg/libavutil/libavutil.so $@ - --$(SYSDIR)/avcodec-52-$(ARCH).so: $(WRAPPER) ffmpeg/libavcodec/libavcodec.so -+$(SYSDIR)/$(AVCODEC_SO): $(WRAPPER) ffmpeg/libavcodec/libavcodec.so - cp ffmpeg/libavcodec/libavcodec.so $@ - --$(SYSDIR)/avcore-0-$(ARCH).so: $(WRAPPER) ffmpeg/libavcore/libavcore.so -- cp ffmpeg/libavcore/libavcore.so $@ -- --$(SYSDIR)/avformat-52-$(ARCH).so: $(WRAPPER) ffmpeg/libavformat/libavformat.so -+$(SYSDIR)/$(AVFORMAT_SO): $(WRAPPER) ffmpeg/libavformat/libavformat.so - cp ffmpeg/libavformat/libavformat.so $@ - --$(SYSDIR)/avfilter-1-$(ARCH).so: $(WRAPPER) ffmpeg/libavfilter/libavfilter.so -+$(SYSDIR)/$(AVFILTER_SO): $(WRAPPER) ffmpeg/libavfilter/libavfilter.so - cp ffmpeg/libavfilter/libavfilter.so $@ - --$(SYSDIR)/swscale-0-$(ARCH).so: $(WRAPPER) ffmpeg/libswscale/libswscale.so -+$(SYSDIR)/$(SWSCALE_SO): $(WRAPPER) ffmpeg/libswscale/libswscale.so - cp ffmpeg/libswscale/libswscale.so $@ - --$(SYSDIR)/postproc-51-$(ARCH).so: $(WRAPPER) ffmpeg/libpostproc/libpostproc.so -+$(SYSDIR)/$(POSTPROC_SO): $(WRAPPER) ffmpeg/libpostproc/libpostproc.so - cp ffmpeg/libpostproc/libpostproc.so $@ - -+$(SYSDIR)/$(SWRESAMPLE_SO): $(WRAPPER) ffmpeg/libswresample/libswresample.so -+ cp ffmpeg/libswresample/libswresample.so $@ -+ - ffmpeg/libavutil/libavutil.so : ffmpeg; - ffmpeg/libavcodec/libavcodec.so : ffmpeg; --ffmpeg/libavcore/libavcore.so : ffmpeg; - ffmpeg/libavformat/libavformat.so : ffmpeg; - ffmpeg/libavfilter/libavfilter.so : ffmpeg; - ffmpeg/libswscale/libswscale.so : ffmpeg; - ffmpeg/libpostproc/libpostproc.so : ffmpeg; -+ffmpeg/libswresample/libswresample.so : ffmpeg; - ffmpeg: - $(MAKE) -C $@ - -diff -urN xbmc-11.0/lib/xbmc-dll-symbols/DllAvFormat.c xbmc-11.0-ffmpeg-1.0/lib/xbmc-dll-symbols/DllAvFormat.c ---- xbmc-11.0/lib/xbmc-dll-symbols/DllAvFormat.c 2012-03-21 23:07:50.000000000 +0100 -+++ xbmc-11.0-ffmpeg-1.0/lib/xbmc-dll-symbols/DllAvFormat.c 2012-11-08 23:15:47.383072821 +0100 -@@ -28,6 +28,7 @@ - #include - - /* Taken from libavformat/utils.c */ -+#if LIBAVFORMAT_VERSION_INT < AV_VERSION_INT(54,0,0) - static void flush_packet_queue(AVFormatContext *s) - { - AVPacketList *pktl; -@@ -53,6 +54,27 @@ - s->raw_packet_buffer_remaining_size = RAW_PACKET_BUFFER_SIZE; - #endif - } -+#else -+static void free_packet_buffer(AVPacketList **pkt_buf, AVPacketList **pkt_buf_end) -+{ -+ while (*pkt_buf) { -+ AVPacketList *pktl = *pkt_buf; -+ *pkt_buf = pktl->next; -+ av_free_packet(&pktl->pkt); -+ av_freep(&pktl); -+ } -+ *pkt_buf_end = NULL; -+} -+/* XXX: suppress the packet queue */ -+static void flush_packet_queue(AVFormatContext *s) -+{ -+ free_packet_buffer(&s->parse_queue, &s->parse_queue_end); -+ free_packet_buffer(&s->packet_buffer, &s->packet_buffer_end); -+ free_packet_buffer(&s->raw_packet_buffer, &s->raw_packet_buffer_end); -+ -+ s->raw_packet_buffer_remaining_size = RAW_PACKET_BUFFER_SIZE; -+} -+#endif - - /* Taken from libavformat/utils.c */ - void av_read_frame_flush(AVFormatContext *s) -@@ -62,7 +84,9 @@ - - flush_packet_queue(s); - -+#if LIBAVFORMAT_VERSION_INT < AV_VERSION_INT(54,0,0) - s->cur_st = NULL; -+#endif - - /* for each stream, reset read state */ - for(i = 0; i < s->nb_streams; i++) { -@@ -71,14 +95,25 @@ - if (st->parser) { - av_parser_close(st->parser); - st->parser = NULL; -+#if LIBAVFORMAT_VERSION_INT < AV_VERSION_INT(54,0,0) - av_free_packet(&st->cur_pkt); -+#endif - } - st->last_IP_pts = AV_NOPTS_VALUE; -+#if LIBAVFORMAT_VERSION_INT < AV_VERSION_INT(54,0,0) - st->cur_dts = AV_NOPTS_VALUE; /* we set the current DTS to an unspecified origin */ - st->reference_dts = AV_NOPTS_VALUE; - /* fail safe */ - st->cur_ptr = NULL; - st->cur_len = 0; -+#else -+#define RELATIVE_TS_BASE (INT64_MAX - (1LL<<48)) -+ if(st->first_dts == AV_NOPTS_VALUE) st->cur_dts = RELATIVE_TS_BASE; -+ else st->cur_dts = AV_NOPTS_VALUE; /* we set the current DTS to an unspecified origin */ -+ st->reference_dts = AV_NOPTS_VALUE; -+ -+ st->probe_packets = MAX_PROBE_PACKETS; -+#endif - - for(j=0; jpts_buffer[j]= AV_NOPTS_VALUE; -diff -urN xbmc-11.0/xbmc/cdrip/EncoderFFmpeg.cpp xbmc-11.0-ffmpeg-1.0/xbmc/cdrip/EncoderFFmpeg.cpp ---- xbmc-11.0/xbmc/cdrip/EncoderFFmpeg.cpp 2012-03-21 23:07:50.000000000 +0100 -+++ xbmc-11.0-ffmpeg-1.0/xbmc/cdrip/EncoderFFmpeg.cpp 2012-11-08 23:16:18.536405054 +0100 -@@ -59,11 +59,7 @@ - - CStdString filename = URIUtils::GetFileName(strFile); - AVOutputFormat *fmt = NULL; --#if LIBAVFORMAT_VERSION_MAJOR < 52 -- fmt = m_dllAvFormat.guess_format(NULL, filename.c_str(), NULL); --#else - fmt = m_dllAvFormat.av_guess_format(NULL, filename.c_str(), NULL); --#endif - if (!fmt) - { - CLog::Log(LOGERROR, "CEncoderFFmpeg::Init - Unable to guess the output format for the file %s", filename.c_str()); -@@ -82,7 +78,7 @@ - } - - m_Format = m_dllAvFormat.avformat_alloc_context(); -- m_Format->pb = m_dllAvFormat.av_alloc_put_byte(m_BCBuffer, sizeof(m_BCBuffer), URL_RDONLY, this, NULL, MuxerReadPacket, NULL); -+ m_Format->pb = m_dllAvFormat.avio_alloc_context(m_BCBuffer, sizeof(m_BCBuffer), AVIO_FLAG_READ, this, NULL, MuxerReadPacket, NULL); - if (!m_Format->pb) - { - m_dllAvUtil.av_freep(&m_Format); -@@ -93,17 +89,8 @@ - m_Format->oformat = fmt; - m_Format->bit_rate = g_guiSettings.GetInt("audiocds.bitrate") * 1000; - -- /* setup the muxer */ -- if (m_dllAvFormat.av_set_parameters(m_Format, NULL) != 0) -- { -- m_dllAvUtil.av_freep(&m_Format->pb); -- m_dllAvUtil.av_freep(&m_Format); -- CLog::Log(LOGERROR, "CEncoderFFmpeg::Init - Failed to set the muxer parameters"); -- return false; -- } -- - /* add a stream to it */ -- m_Stream = m_dllAvFormat.av_new_stream(m_Format, 1); -+ m_Stream = m_dllAvFormat.avformat_new_stream(m_Format, codec); - if (!m_Stream) - { - m_dllAvUtil.av_freep(&m_Format->pb); -@@ -119,7 +106,7 @@ - m_CodecCtx->bit_rate = m_Format->bit_rate; - m_CodecCtx->sample_rate = iInRate; - m_CodecCtx->channels = iInChannels; -- m_CodecCtx->channel_layout = m_dllAvCodec.avcodec_guess_channel_layout(iInChannels, codec->id, NULL); -+ m_CodecCtx->channel_layout = m_dllAvUtil.av_get_default_channel_layout(iInChannels); - m_CodecCtx->time_base = (AVRational){1, iInRate}; - - if(fmt->flags & AVFMT_GLOBALHEADER) -@@ -144,7 +131,7 @@ - return false; - } - -- if (m_dllAvCodec.avcodec_open(m_CodecCtx, codec)) -+ if (m_dllAvCodec.avcodec_open2(m_CodecCtx, codec, NULL)) - { - CLog::Log(LOGERROR, "CEncoderFFmpeg::Init - Failed to open the codec"); - m_dllAvUtil.av_freep(&m_Stream); -@@ -179,7 +166,7 @@ - SetTag("encoder" , "XBMC FFmpeg Encoder"); - - /* write the header */ -- if (m_dllAvFormat.av_write_header(m_Format) != 0) -+ if (m_dllAvFormat.avformat_write_header(m_Format, NULL) != 0) - { - CLog::Log(LOGERROR, "CEncoderFFmpeg::Init - Failed to write the header"); - delete[] m_Buffer; -@@ -194,7 +181,7 @@ - - void CEncoderFFmpeg::SetTag(const CStdString tag, const CStdString value) - { -- m_dllAvFormat.av_metadata_set2(&m_Format->metadata, tag.c_str(), value.c_str(), 0); -+ m_dllAvUtil.av_dict_set(&m_Format->metadata, tag.c_str(), value.c_str(), 0); - } - - int CEncoderFFmpeg::MuxerReadPacket(void *opaque, uint8_t *buf, int buf_size) -diff -urN xbmc-11.0/xbmc/cores/dvdplayer/DVDCodecs/Audio/DVDAudioCodecFFmpeg.cpp xbmc-11.0-ffmpeg-1.0/xbmc/cores/dvdplayer/DVDCodecs/Audio/DVDAudioCodecFFmpeg.cpp ---- xbmc-11.0/xbmc/cores/dvdplayer/DVDCodecs/Audio/DVDAudioCodecFFmpeg.cpp 2012-03-21 23:07:50.000000000 +0100 -+++ xbmc-11.0-ffmpeg-1.0/xbmc/cores/dvdplayer/DVDCodecs/Audio/DVDAudioCodecFFmpeg.cpp 2012-11-08 23:16:18.536405054 +0100 -@@ -29,10 +29,6 @@ - - CDVDAudioCodecFFmpeg::CDVDAudioCodecFFmpeg() : CDVDAudioCodec() - { -- m_iBufferSize1 = 0; -- m_pBuffer1 = (BYTE*)_aligned_malloc(AVCODEC_MAX_AUDIO_FRAME_SIZE + FF_INPUT_BUFFER_PADDING_SIZE, 16); -- memset(m_pBuffer1, 0, AVCODEC_MAX_AUDIO_FRAME_SIZE + FF_INPUT_BUFFER_PADDING_SIZE); -- - m_iBufferSize2 = 0; - m_pBuffer2 = (BYTE*)_aligned_malloc(AVCODEC_MAX_AUDIO_FRAME_SIZE + FF_INPUT_BUFFER_PADDING_SIZE, 16); - memset(m_pBuffer2, 0, AVCODEC_MAX_AUDIO_FRAME_SIZE + FF_INPUT_BUFFER_PADDING_SIZE); -@@ -45,11 +41,11 @@ - m_channelMap[0] = PCM_INVALID; - m_channels = 0; - m_layout = 0; -+ m_pFrame1 = NULL; - } - - CDVDAudioCodecFFmpeg::~CDVDAudioCodecFFmpeg() - { -- _aligned_free(m_pBuffer1); - _aligned_free(m_pBuffer2); - Dispose(); - } -@@ -59,12 +55,10 @@ - AVCodec* pCodec; - m_bOpenedCodec = false; - -- if (!m_dllAvCore.Load() || !m_dllAvUtil.Load() || !m_dllAvCodec.Load()) -+ if (!m_dllAvUtil.Load() || !m_dllAvCodec.Load()) - return false; - - m_dllAvCodec.avcodec_register_all(); -- m_pCodecContext = m_dllAvCodec.avcodec_alloc_context(); -- m_dllAvCodec.avcodec_get_context_defaults(m_pCodecContext); - - pCodec = m_dllAvCodec.avcodec_find_decoder(hints.codec); - if (!pCodec) -@@ -73,6 +67,7 @@ - return false; - } - -+ m_pCodecContext = m_dllAvCodec.avcodec_alloc_context3(pCodec); - m_pCodecContext->debug_mv = 0; - m_pCodecContext->debug = 0; - m_pCodecContext->workaround_bugs = 1; -@@ -97,13 +92,14 @@ - memcpy(m_pCodecContext->extradata, hints.extradata, hints.extrasize); - } - -- if (m_dllAvCodec.avcodec_open(m_pCodecContext, pCodec) < 0) -+ if (m_dllAvCodec.avcodec_open2(m_pCodecContext, pCodec, NULL) < 0) - { - CLog::Log(LOGDEBUG,"CDVDAudioCodecFFmpeg::Open() Unable to open codec"); - Dispose(); - return false; - } - -+ m_pFrame1 = m_dllAvCodec.avcodec_alloc_frame(); - m_bOpenedCodec = true; - m_iSampleFormat = AV_SAMPLE_FMT_NONE; - return true; -@@ -111,6 +107,9 @@ - - void CDVDAudioCodecFFmpeg::Dispose() - { -+ if (m_pFrame1) m_dllAvUtil.av_free(m_pFrame1); -+ m_pFrame1 = NULL; -+ - if (m_pConvert) - { - m_dllAvCodec.av_audio_convert_free(m_pConvert); -@@ -135,7 +134,7 @@ - - int CDVDAudioCodecFFmpeg::Decode(BYTE* pData, int iSize) - { -- int iBytesUsed; -+ int iBytesUsed, got_frame; - if (!m_pCodecContext) return -1; - - m_iBufferSize1 = AVCODEC_MAX_AUDIO_FRAME_SIZE ; -@@ -145,10 +144,13 @@ - m_dllAvCodec.av_init_packet(&avpkt); - avpkt.data = pData; - avpkt.size = iSize; -- iBytesUsed = m_dllAvCodec.avcodec_decode_audio3( m_pCodecContext -- , (int16_t*)m_pBuffer1 -- , &m_iBufferSize1 -+ iBytesUsed = m_dllAvCodec.avcodec_decode_audio4( m_pCodecContext -+ , m_pFrame1 -+ , &got_frame - , &avpkt); -+ if (iBytesUsed < 0 || !got_frame) -+ return iBytesUsed; -+ m_iBufferSize1 = m_dllAvUtil.av_samples_get_buffer_size(NULL, m_pCodecContext->channels, m_pFrame1->nb_samples, m_pCodecContext->sample_fmt, 1); - - /* some codecs will attempt to consume more data than what we gave */ - if (iBytesUsed > iSize) -@@ -184,9 +186,9 @@ - return iBytesUsed; - } - -- const void *ibuf[6] = { m_pBuffer1 }; -+ const void *ibuf[6] = { m_pFrame1->data[0] }; - void *obuf[6] = { m_pBuffer2 }; -- int istr[6] = { m_dllAvCore.av_get_bits_per_sample_fmt(m_pCodecContext->sample_fmt)/8 }; -+ int istr[6] = { m_dllAvUtil.av_get_bytes_per_sample(m_pCodecContext->sample_fmt) }; - int ostr[6] = { 2 }; - int len = m_iBufferSize1 / istr[0]; - if(m_dllAvCodec.av_audio_convert(m_pConvert, obuf, ostr, ibuf, istr, len) < 0) -@@ -208,7 +210,7 @@ - { - if(m_iBufferSize1) - { -- *dst = m_pBuffer1; -+ *dst = m_pFrame1->data[0]; - return m_iBufferSize1; - } - if(m_iBufferSize2) -@@ -273,7 +275,7 @@ - else - { - CLog::Log(LOGINFO, "CDVDAudioCodecFFmpeg::GetChannelMap - FFmpeg reported %d channels, but the layout contains %d ignoring", m_pCodecContext->channels, bits); -- layout = m_dllAvCodec.avcodec_guess_channel_layout(m_pCodecContext->channels, m_pCodecContext->codec_id, NULL); -+ layout = m_dllAvUtil.av_get_default_channel_layout(m_pCodecContext->channels); - } - - int index = 0; -diff -urN xbmc-11.0/xbmc/cores/dvdplayer/DVDCodecs/Audio/DVDAudioCodecFFmpeg.h xbmc-11.0-ffmpeg-1.0/xbmc/cores/dvdplayer/DVDCodecs/Audio/DVDAudioCodecFFmpeg.h ---- xbmc-11.0/xbmc/cores/dvdplayer/DVDCodecs/Audio/DVDAudioCodecFFmpeg.h 2012-03-21 23:07:50.000000000 +0100 -+++ xbmc-11.0-ffmpeg-1.0/xbmc/cores/dvdplayer/DVDCodecs/Audio/DVDAudioCodecFFmpeg.h 2012-11-08 23:16:03.529738917 +0100 -@@ -23,7 +23,6 @@ - - #include "DVDAudioCodec.h" - #include "DllAvCodec.h" --#include "DllAvCore.h" - #include "DllAvFormat.h" - #include "DllAvUtil.h" - -@@ -51,7 +50,7 @@ - enum AVSampleFormat m_iSampleFormat; - enum PCMChannels m_channelMap[PCM_MAX_CH + 1]; - -- BYTE *m_pBuffer1; -+ AVFrame* m_pFrame1; - int m_iBufferSize1; - - BYTE *m_pBuffer2; -@@ -64,7 +63,6 @@ - int64_t m_layout; - - DllAvCodec m_dllAvCodec; -- DllAvCore m_dllAvCore; - DllAvUtil m_dllAvUtil; - - void BuildChannelMap(); -diff -urN xbmc-11.0/xbmc/cores/dvdplayer/DVDCodecs/Audio/DVDAudioCodecPassthroughFFmpeg.cpp xbmc-11.0-ffmpeg-1.0/xbmc/cores/dvdplayer/DVDCodecs/Audio/DVDAudioCodecPassthroughFFmpeg.cpp ---- xbmc-11.0/xbmc/cores/dvdplayer/DVDCodecs/Audio/DVDAudioCodecPassthroughFFmpeg.cpp 2012-03-21 23:07:50.000000000 +0100 -+++ xbmc-11.0-ffmpeg-1.0/xbmc/cores/dvdplayer/DVDCodecs/Audio/DVDAudioCodecPassthroughFFmpeg.cpp 2012-11-08 23:16:03.529738917 +0100 -@@ -79,11 +79,7 @@ - /* get the muxer */ - AVOutputFormat *fOut = NULL; - --#if LIBAVFORMAT_VERSION_MAJOR < 52 -- fOut = m_dllAvFormat.guess_format(muxerName.c_str(), NULL, NULL); --#else - fOut = m_dllAvFormat.av_guess_format(muxerName.c_str(), NULL, NULL); --#endif - if (!fOut) - { - CLog::Log(LOGERROR, "CDVDAudioCodecPassthroughFFmpeg::SetupMuxer - Failed to get the FFmpeg %s muxer", muxerName.c_str()); -@@ -103,7 +99,7 @@ - muxer.m_pFormat->oformat = fOut; - - /* allocate a put_byte struct so we can grab the output */ -- muxer.m_pFormat->pb = m_dllAvFormat.av_alloc_put_byte(muxer.m_BCBuffer, sizeof(muxer.m_BCBuffer), URL_RDONLY, &muxer, NULL, MuxerReadPacket, NULL); -+ muxer.m_pFormat->pb = m_dllAvFormat.avio_alloc_context(muxer.m_BCBuffer, sizeof(muxer.m_BCBuffer), AVIO_FLAG_READ, &muxer, NULL, MuxerReadPacket, NULL); - if (!muxer.m_pFormat->pb) - { - CLog::Log(LOGERROR, "CDVDAudioCodecPassthroughFFmpeg::SetupMuxer - Failed to allocate ByteIOContext"); -@@ -112,21 +108,10 @@ - } - - /* this is streamed, no file, and ignore the index */ -- muxer.m_pFormat->pb->is_streamed = 1; -+ muxer.m_pFormat->pb->seekable = 0; - muxer.m_pFormat->flags |= AVFMT_NOFILE | AVFMT_FLAG_IGNIDX; - muxer.m_pFormat->bit_rate = hints.bitrate; - -- /* setup the muxer */ -- if (m_dllAvFormat.av_set_parameters(muxer.m_pFormat, NULL) != 0) -- { -- CLog::Log(LOGERROR, "CDVDAudioCodecPassthroughFFmpeg::SetupMuxer - Failed to set the %s muxer parameters", muxerName.c_str()); -- Dispose(); -- return false; -- } -- --#if LIBAVFORMAT_VERSION_INT >= AV_VERSION_INT(52,92,0) -- // API added on: 2011-01-02 -- - /* While this is strictly only needed on big-endian systems, we do it on - * both to avoid as much dead code as possible. - * CoreAudio (at least on the cases we've seen) wants IEC 61937 in -@@ -138,8 +123,7 @@ - #endif - - /* request output of wanted endianness */ -- if (!fOut->priv_class || m_dllAvUtil.av_set_string3(muxer.m_pFormat->priv_data, "spdif_flags", spdifFlags, 0, NULL) != 0) --#endif -+ if (!fOut->priv_class || m_dllAvUtil.av_opt_set(muxer.m_pFormat->priv_data, "spdif_flags", spdifFlags, 0) != 0) - { - #if defined(WORDS_BIGENDIAN) && !defined(__APPLE__) - CLog::Log(LOGERROR, "CDVDAudioCodecPassthroughFFmpeg::SetupMuxer - Unable to set big-endian stream mode (FFmpeg too old?), disabling passthrough"); -@@ -149,7 +133,7 @@ - } - - /* add a stream to it */ -- muxer.m_pStream = m_dllAvFormat.av_new_stream(muxer.m_pFormat, 1); -+ muxer.m_pStream = m_dllAvFormat.avformat_new_stream(muxer.m_pFormat, NULL); - if (!muxer.m_pStream) - { - CLog::Log(LOGERROR, "CDVDAudioCodecPassthroughFFmpeg::SetupMuxer - Failed to allocate AVStream context"); -@@ -159,8 +143,6 @@ - - - /* set the stream's parameters */ -- muxer.m_pStream->stream_copy = 1; -- - m_SampleRate = hints.samplerate; - if(!m_SampleRate && hints.codec == CODEC_ID_AC3) - m_SampleRate = 48000; -@@ -176,7 +158,7 @@ - codec->extradata_size = hints.extrasize; - memcpy(codec->extradata, hints.extradata, hints.extrasize); - -- muxer.m_WroteHeader = m_dllAvFormat.av_write_header(muxer.m_pFormat) == 0; -+ muxer.m_WroteHeader = m_dllAvFormat.avformat_write_header(muxer.m_pFormat, NULL) == 0; - if (!muxer.m_WroteHeader) - { - CLog::Log(LOGERROR, "CDVDAudioCodecPassthrough::SetupMuxer - Failed to write the frame header"); -diff -urN xbmc-11.0/xbmc/cores/dvdplayer/DVDCodecs/Audio/Encoders/DVDAudioEncoderFFmpeg.cpp xbmc-11.0-ffmpeg-1.0/xbmc/cores/dvdplayer/DVDCodecs/Audio/Encoders/DVDAudioEncoderFFmpeg.cpp ---- xbmc-11.0/xbmc/cores/dvdplayer/DVDCodecs/Audio/Encoders/DVDAudioEncoderFFmpeg.cpp 2012-03-21 23:07:50.000000000 +0100 -+++ xbmc-11.0-ffmpeg-1.0/xbmc/cores/dvdplayer/DVDCodecs/Audio/Encoders/DVDAudioEncoderFFmpeg.cpp 2012-11-08 23:16:03.533072250 +0100 -@@ -55,7 +55,7 @@ - bool CDVDAudioEncoderFFmpeg::Initialize(unsigned int channels, enum PCMChannels *channelMap, unsigned int bitsPerSample, unsigned int sampleRate) - { - Reset(); -- if (!channelMap || !m_dllAvUtil.Load() || !m_dllAvCore.Load() || !m_dllAvCodec.Load()) -+ if (!channelMap || !m_dllAvUtil.Load() || !m_dllAvCodec.Load()) - return false; - - m_dllAvCodec.avcodec_register_all(); -@@ -65,7 +65,7 @@ - return false; - - /* always assume 6 channels, 5.1... m_remap will give us what we want */ -- m_CodecCtx = m_dllAvCodec.avcodec_alloc_context(); -+ m_CodecCtx = m_dllAvCodec.avcodec_alloc_context3(codec); - m_CodecCtx->bit_rate = AC3_ENCODE_BITRATE; - m_CodecCtx->sample_rate = sampleRate; - m_CodecCtx->channels = 6; -@@ -104,7 +104,7 @@ - } - } - -- if (m_dllAvCodec.avcodec_open(m_CodecCtx, codec)) -+ if (m_dllAvCodec.avcodec_open2(m_CodecCtx, codec, NULL)) - { - m_dllAvUtil.av_freep(&m_CodecCtx); - return false; -@@ -149,7 +149,7 @@ - - if (m_AudioConvert) - m_TmpBuffer2 = new uint8_t[m_NeededFrames * m_CodecCtx->channels * -- m_dllAvCore.av_get_bits_per_sample_fmt(m_CodecCtx->sample_fmt) / 8]; -+ m_dllAvUtil.av_get_bytes_per_sample(m_CodecCtx->sample_fmt)]; - - return true; - } -@@ -186,7 +186,7 @@ - void *convInBuf[] = { m_TmpBuffer }; - int convInStr[] = { m_BitsPerSample / 8 }; - void *convOutBuf[] = { m_TmpBuffer2 }; -- int convOutStr[] = { m_dllAvCore.av_get_bits_per_sample_fmt(m_CodecCtx->sample_fmt) / 8 }; -+ int convOutStr[] = { m_dllAvUtil.av_get_bytes_per_sample(m_CodecCtx->sample_fmt) }; - if (m_dllAvCodec.av_audio_convert(m_AudioConvert, convOutBuf, convOutStr, - convInBuf, convInStr, m_NeededFrames * m_CodecCtx->channels) < 0) { - CLog::Log(LOGERROR, "CDVDAudioEncoderFFmpeg: Audio conversion failed"); -diff -urN xbmc-11.0/xbmc/cores/dvdplayer/DVDCodecs/Audio/Encoders/DVDAudioEncoderFFmpeg.h xbmc-11.0-ffmpeg-1.0/xbmc/cores/dvdplayer/DVDCodecs/Audio/Encoders/DVDAudioEncoderFFmpeg.h ---- xbmc-11.0/xbmc/cores/dvdplayer/DVDCodecs/Audio/Encoders/DVDAudioEncoderFFmpeg.h 2012-03-21 23:07:50.000000000 +0100 -+++ xbmc-11.0-ffmpeg-1.0/xbmc/cores/dvdplayer/DVDCodecs/Audio/Encoders/DVDAudioEncoderFFmpeg.h 2012-11-08 23:15:55.399739205 +0100 -@@ -43,7 +43,6 @@ - virtual int GetData(uint8_t **data); - private: - DllAvCodec m_dllAvCodec; -- DllAvCore m_dllAvCore; - DllAvUtil m_dllAvUtil; - - AVCodecContext *m_CodecCtx; -diff -urN xbmc-11.0/xbmc/cores/dvdplayer/DVDCodecs/Overlay/DVDOverlayCodecFFmpeg.cpp xbmc-11.0-ffmpeg-1.0/xbmc/cores/dvdplayer/DVDCodecs/Overlay/DVDOverlayCodecFFmpeg.cpp ---- xbmc-11.0/xbmc/cores/dvdplayer/DVDCodecs/Overlay/DVDOverlayCodecFFmpeg.cpp 2012-03-21 23:07:50.000000000 +0100 -+++ xbmc-11.0-ffmpeg-1.0/xbmc/cores/dvdplayer/DVDCodecs/Overlay/DVDOverlayCodecFFmpeg.cpp 2012-11-08 23:16:03.533072250 +0100 -@@ -49,7 +49,14 @@ - - m_dllAvCodec.avcodec_register_all(); - -- m_pCodecContext = m_dllAvCodec.avcodec_alloc_context(); -+ AVCodec* pCodec = m_dllAvCodec.avcodec_find_decoder(hints.codec); -+ if (!pCodec) -+ { -+ CLog::Log(LOGDEBUG,"%s - Unable to find codec %d", __FUNCTION__, hints.codec); -+ return false; -+ } -+ -+ m_pCodecContext = m_dllAvCodec.avcodec_alloc_context3(pCodec); - m_pCodecContext->debug_mv = 0; - m_pCodecContext->debug = 0; - m_pCodecContext->workaround_bugs = FF_BUG_AUTODETECT; -@@ -100,14 +107,7 @@ - delete[] parse_extra; - } - -- AVCodec* pCodec = m_dllAvCodec.avcodec_find_decoder(hints.codec); -- if (!pCodec) -- { -- CLog::Log(LOGDEBUG,"%s - Unable to find codec %d", __FUNCTION__, hints.codec); -- return false; -- } -- -- if (m_dllAvCodec.avcodec_open(m_pCodecContext, pCodec) < 0) -+ if (m_dllAvCodec.avcodec_open2(m_pCodecContext, pCodec, NULL) < 0) - { - CLog::Log(LOGDEBUG,"CDVDVideoCodecFFmpeg::Open() Unable to open codec"); - return false; -@@ -134,19 +134,12 @@ - { - for(unsigned i=0;i= (52<<10) - if(sub.rects[i]) - { - m_dllAvUtil.av_free(sub.rects[i]->pict.data[0]); - m_dllAvUtil.av_free(sub.rects[i]->pict.data[1]); - m_dllAvUtil.av_freep(&sub.rects[i]); - } --#else -- if(sub.rects[i].bitmap) -- m_dllAvUtil.av_freep(&sub.rects[i].bitmap); -- if(m_Subtitle.rects[i].rgba_palette) -- m_dllAvUtil.av_freep(&sub.rects[i].rgba_palette); --#endif - } - if(sub.rects) - m_dllAvUtil.av_freep(&sub.rects); -@@ -294,7 +287,6 @@ - overlay->source_width = m_width; - overlay->source_height = m_height; - --#if LIBAVCODEC_VERSION_INT >= (52<<10) - BYTE* s = rect.pict.data[0]; - BYTE* t = overlay->data; - for(int i=0;idata; -- for(int i=0;ilinesize; -- } -- -- memcpy(overlay->palette, rect.rgba_palette, rect.nb_colors*4); -- -- m_dllAvUtil.av_freep(&rect.bitmap); -- m_dllAvUtil.av_freep(&rect.rgba_palette); --#endif - m_SubtitleIndex++; - - return overlay; -diff -urN xbmc-11.0/xbmc/cores/dvdplayer/DVDCodecs/Video/DVDVideoCodecFFmpeg.cpp xbmc-11.0-ffmpeg-1.0/xbmc/cores/dvdplayer/DVDCodecs/Video/DVDVideoCodecFFmpeg.cpp ---- xbmc-11.0/xbmc/cores/dvdplayer/DVDCodecs/Video/DVDVideoCodecFFmpeg.cpp 2012-03-21 23:07:50.000000000 +0100 -+++ xbmc-11.0-ffmpeg-1.0/xbmc/cores/dvdplayer/DVDCodecs/Video/DVDVideoCodecFFmpeg.cpp 2012-11-08 23:16:12.336405273 +0100 -@@ -123,12 +123,11 @@ - CDVDVideoCodecFFmpeg::CDVDVideoCodecFFmpeg() : CDVDVideoCodec() - { - m_pCodecContext = NULL; -- m_pConvertFrame = NULL; - m_pFrame = NULL; - m_pFilterGraph = NULL; - m_pFilterIn = NULL; - m_pFilterOut = NULL; -- m_pFilterLink = NULL; -+ m_pBufferRef = NULL; - - m_iPictureWidth = 0; - m_iPictureHeight = 0; -@@ -163,9 +162,13 @@ - m_dllAvFilter.avfilter_register_all(); - - m_bSoftware = hints.software; -- m_pCodecContext = m_dllAvCodec.avcodec_alloc_context(); -+ -+ m_formats.push_back(PIX_FMT_YUV420P); -+ m_formats.push_back(PIX_FMT_YUVJ420P); -+ m_formats.push_back(PIX_FMT_NONE); /* always add none to get a terminated list in ffmpeg world */ - - pCodec = NULL; -+ m_pCodecContext = NULL; - - if (hints.codec == CODEC_ID_H264) - { -@@ -196,6 +199,7 @@ - - CLog::Log(LOGNOTICE,"CDVDVideoCodecFFmpeg::Open() Creating VDPAU(%ix%i, %d)",hints.width, hints.height, hints.codec); - CVDPAU* vdp = new CVDPAU(); -+ m_pCodecContext = m_dllAvCodec.avcodec_alloc_context3(pCodec); - m_pCodecContext->codec_id = hints.codec; - m_pCodecContext->width = hints.width; - m_pCodecContext->height = hints.height; -@@ -207,7 +211,7 @@ - m_pCodecContext->codec_id = CODEC_ID_NONE; // ffmpeg will complain if this has been set - break; - } -- m_pCodecContext->codec_id = CODEC_ID_NONE; // ffmpeg will complain if this has been set -+ m_dllAvUtil.av_freep(&m_pCodecContext); - CLog::Log(LOGNOTICE,"CDVDVideoCodecFFmpeg::Open() Failed to get VDPAU device"); - vdp->Release(); - } -@@ -226,6 +230,9 @@ - - CLog::Log(LOGNOTICE,"CDVDVideoCodecFFmpeg::Open() Using codec: %s",pCodec->long_name ? pCodec->long_name : pCodec->name); - -+ if(m_pCodecContext == NULL) -+ m_pCodecContext = m_dllAvCodec.avcodec_alloc_context3(pCodec); -+ - m_pCodecContext->opaque = (void*)this; - m_pCodecContext->debug_mv = 0; - m_pCodecContext->debug = 0; -@@ -238,9 +245,7 @@ - m_pCodecContext->flags &= CODEC_FLAG_EMU_EDGE; - #else - if (pCodec->id != CODEC_ID_H264 && pCodec->capabilities & CODEC_CAP_DR1 --#if LIBAVCODEC_VERSION_INT >= AV_VERSION_INT(52,69,0) - && pCodec->id != CODEC_ID_VP8 --#endif - ) - m_pCodecContext->flags |= CODEC_FLAG_EMU_EDGE; - #endif -@@ -272,16 +277,16 @@ - if (it->m_name == "surfaces") - m_uSurfacesCount = std::atoi(it->m_value.c_str()); - else -- m_dllAvUtil.av_set_string3(m_pCodecContext, it->m_name.c_str(), it->m_value.c_str(), 0, NULL); -+ m_dllAvUtil.av_opt_set(m_pCodecContext, it->m_name.c_str(), it->m_value.c_str(), 0); - } - - int num_threads = std::min(8 /*MAX_THREADS*/, g_cpuInfo.getCPUCount()); - if( num_threads > 1 && !hints.software && m_pHardware == NULL // thumbnail extraction fails when run threaded - && ( pCodec->id == CODEC_ID_H264 - || pCodec->id == CODEC_ID_MPEG4 )) -- m_dllAvCodec.avcodec_thread_init(m_pCodecContext, num_threads); -+ m_pCodecContext->thread_count = num_threads; - -- if (m_dllAvCodec.avcodec_open(m_pCodecContext, pCodec) < 0) -+ if (m_dllAvCodec.avcodec_open2(m_pCodecContext, pCodec, NULL) < 0) - { - CLog::Log(LOGDEBUG,"CDVDVideoCodecFFmpeg::Open() Unable to open codec"); - return false; -@@ -306,13 +311,6 @@ - if (m_pFrame) m_dllAvUtil.av_free(m_pFrame); - m_pFrame = NULL; - -- if (m_pConvertFrame) -- { -- m_dllAvCodec.avpicture_free(m_pConvertFrame); -- m_dllAvUtil.av_free(m_pConvertFrame); -- } -- m_pConvertFrame = NULL; -- - if (m_pCodecContext) - { - if (m_pCodecContext->codec) m_dllAvCodec.avcodec_close(m_pCodecContext); -@@ -458,9 +456,6 @@ - return VC_ERROR; - } - -- if (len != iSize && m_pCodecContext->skip_frame != AVDISCARD_NONREF) -- CLog::Log(LOGWARNING, "%s - avcodec_decode_video didn't consume the full packet. size: %d, consumed: %d", __FUNCTION__, iSize, len); -- - if (!iGotPicture) - return VC_BUFFER; - -@@ -478,67 +473,32 @@ - if(m_pCodecContext->codec_id == CODEC_ID_H264) - m_started = true; - -- if(m_pCodecContext->pix_fmt != PIX_FMT_YUV420P -- && m_pCodecContext->pix_fmt != PIX_FMT_YUVJ420P -- && m_pHardware == NULL) -- { -- if (!m_dllSwScale.IsLoaded() && !m_dllSwScale.Load()) -- return VC_ERROR; -- -- if (!m_pConvertFrame) -- { -- // Allocate an AVFrame structure -- m_pConvertFrame = (AVPicture*)m_dllAvUtil.av_mallocz(sizeof(AVPicture)); -- // Due to a bug in swsscale we need to allocate one extra line of data -- if(m_dllAvCodec.avpicture_alloc( m_pConvertFrame -- , PIX_FMT_YUV420P -- , m_pCodecContext->width -- , m_pCodecContext->height+1) < 0) -- { -- m_dllAvUtil.av_free(m_pConvertFrame); -- m_pConvertFrame = NULL; -- return VC_ERROR; -- } -- } -+ if(m_pHardware == NULL) -+ { -+ bool need_scale = std::find( m_formats.begin() -+ , m_formats.end() -+ , m_pCodecContext->pix_fmt) == m_formats.end(); - -- // convert the picture -- struct SwsContext *context = m_dllSwScale.sws_getContext(m_pCodecContext->width, m_pCodecContext->height, -- m_pCodecContext->pix_fmt, m_pCodecContext->width, m_pCodecContext->height, -- PIX_FMT_YUV420P, SWS_FAST_BILINEAR | SwScaleCPUFlags(), NULL, NULL, NULL); -+ bool need_reopen = false; -+ if(!m_filters.Equals(m_filters_next)) -+ need_reopen = true; - -- if(context == NULL) -+ if(m_pFilterIn) - { -- CLog::Log(LOGERROR, "CDVDVideoCodecFFmpeg::Decode - unable to obtain sws context for w:%i, h:%i, pixfmt: %i", m_pCodecContext->width, m_pCodecContext->height, m_pCodecContext->pix_fmt); -- return VC_ERROR; -+ if(m_pFilterIn->outputs[0]->format != m_pCodecContext->pix_fmt -+ || m_pFilterIn->outputs[0]->w != m_pCodecContext->width -+ || m_pFilterIn->outputs[0]->h != m_pCodecContext->height) -+ need_reopen = true; - } - -- m_dllSwScale.sws_scale(context -- , m_pFrame->data -- , m_pFrame->linesize -- , 0 -- , m_pCodecContext->height -- , m_pConvertFrame->data -- , m_pConvertFrame->linesize); -- -- m_dllSwScale.sws_freeContext(context); -- } -- else -- { -- // no need to convert, just free any existing convert buffers -- if (m_pConvertFrame) -+ // try to setup new filters -+ if (need_reopen || (need_scale && m_pFilterGraph == NULL)) - { -- m_dllAvCodec.avpicture_free(m_pConvertFrame); -- m_dllAvUtil.av_free(m_pConvertFrame); -- m_pConvertFrame = NULL; -- } -- } -+ m_filters = m_filters_next; - -- // try to setup new filters -- if (!m_filters.Equals(m_filters_next)) -- { -- m_filters = m_filters_next; -- if(FilterOpen(m_filters) < 0) -- FilterClose(); -+ if(FilterOpen(m_filters, need_scale) < 0) -+ FilterClose(); -+ } - } - - int result; -@@ -564,12 +524,6 @@ - if (m_pHardware) - m_pHardware->Reset(); - -- if (m_pConvertFrame) -- { -- m_dllAvCodec.avpicture_free(m_pConvertFrame); -- m_dllAvUtil.av_free(m_pConvertFrame); -- m_pConvertFrame = NULL; -- } - m_filters = ""; - FilterClose(); - } -@@ -579,10 +533,10 @@ - pDvdVideoPicture->iWidth = m_pCodecContext->width; - pDvdVideoPicture->iHeight = m_pCodecContext->height; - -- if(m_pFilterLink) -+ if(m_pBufferRef) - { -- pDvdVideoPicture->iWidth = m_pFilterLink->cur_buf->video->w; -- pDvdVideoPicture->iHeight = m_pFilterLink->cur_buf->video->h; -+ pDvdVideoPicture->iWidth = m_pBufferRef->video->w; -+ pDvdVideoPicture->iHeight = m_pBufferRef->video->h; - } - - /* crop of 10 pixels if demuxer asked it */ -@@ -598,12 +552,8 @@ - - /* use variable in the frame */ - AVRational pixel_aspect = m_pCodecContext->sample_aspect_ratio; -- if (m_pFilterLink) --#ifdef HAVE_AVFILTERBUFFERREFVIDEOPROPS_SAMPLE_ASPECT_RATIO -- pixel_aspect = m_pFilterLink->cur_buf->video->sample_aspect_ratio; --#else -- pixel_aspect = m_pFilterLink->cur_buf->video->pixel_aspect; --#endif -+ if (m_pBufferRef) -+ pixel_aspect = m_pBufferRef->video->sample_aspect_ratio; - - if (pixel_aspect.num == 0) - aspect_ratio = 0; -@@ -632,8 +582,6 @@ - pDvdVideoPicture->iFlags = DVP_FLAG_ALLOCATED; - pDvdVideoPicture->iFlags |= m_pFrame->interlaced_frame ? DVP_FLAG_INTERLACED : 0; - pDvdVideoPicture->iFlags |= m_pFrame->top_field_first ? DVP_FLAG_TOP_FIELD_FIRST: 0; -- if(m_pCodecContext->pix_fmt == PIX_FMT_YUVJ420P) -- pDvdVideoPicture->color_range = 1; - - pDvdVideoPicture->chroma_position = m_pCodecContext->chroma_sample_location; - pDvdVideoPicture->color_primaries = m_pCodecContext->color_primaries; -@@ -677,14 +625,6 @@ - if(!GetPictureCommon(pDvdVideoPicture)) - return false; - -- if(m_pConvertFrame) -- { -- for (int i = 0; i < 4; i++) -- pDvdVideoPicture->data[i] = m_pConvertFrame->data[i]; -- for (int i = 0; i < 4; i++) -- pDvdVideoPicture->iLineSize[i] = m_pConvertFrame->linesize[i]; -- } -- else - { - for (int i = 0; i < 4; i++) - pDvdVideoPicture->data[i] = m_pFrame->data[i]; -@@ -693,20 +633,38 @@ - } - - pDvdVideoPicture->iFlags |= pDvdVideoPicture->data[0] ? 0 : DVP_FLAG_DROPPED; -- pDvdVideoPicture->format = DVDVideoPicture::FMT_YUV420P; - pDvdVideoPicture->extended_format = 0; -+ pDvdVideoPicture->color_range = 0; -+ -+ PixelFormat pix_fmt; -+ if(m_pBufferRef) -+ pix_fmt = (PixelFormat)m_pBufferRef->format; -+ else -+ pix_fmt = m_pCodecContext->pix_fmt; -+ -+ switch(pix_fmt) -+ { -+ case PIX_FMT_YUVJ420P: -+ pDvdVideoPicture->format = DVDVideoPicture::FMT_YUV420P; -+ pDvdVideoPicture->color_range = 1; -+ break; -+ default: -+ pDvdVideoPicture->format = DVDVideoPicture::FMT_YUV420P; -+ break; -+ } - - return true; - } - --int CDVDVideoCodecFFmpeg::FilterOpen(const CStdString& filters) -+int CDVDVideoCodecFFmpeg::FilterOpen(const CStdString& filters, bool scale) - { - int result; -+ AVBufferSinkParams *buffersink_params; - - if (m_pFilterGraph) - FilterClose(); - -- if (filters.IsEmpty()) -+ if (filters.IsEmpty() && !scale) - return 0; - - if (!(m_pFilterGraph = m_dllAvFilter.avfilter_graph_alloc())) -@@ -715,17 +673,8 @@ - return -1; - } - -- // CrHasher HACK (if an alternative becomes available use it!): In order to display the output -- // produced by a combination of filters we insert "nullsink" as the last filter and we use -- // its input pin as our output pin. -- // -- // input --> .. --> last_filter --> [in] nullsink [null] [in] --> output -- // | | -- // | | -- // +------------------------+ -- // - AVFilter* srcFilter = m_dllAvFilter.avfilter_get_by_name("buffer"); -- AVFilter* outFilter = m_dllAvFilter.avfilter_get_by_name("nullsink"); // should be last filter in the graph for now -+ AVFilter* outFilter = m_dllAvFilter.avfilter_get_by_name("buffersink"); // should be last filter in the graph for now - - CStdString args; - -@@ -744,11 +693,19 @@ - return result; - } - -- if ((result = m_dllAvFilter.avfilter_graph_create_filter(&m_pFilterOut, outFilter, "out", NULL, NULL/*nullsink=>NULL*/, m_pFilterGraph)) < 0) -+ buffersink_params = m_dllAvFilter.av_buffersink_params_alloc(); -+ buffersink_params->pixel_fmts = &m_formats[0]; -+#ifdef FF_API_OLD_VSINK_API -+ if ((result = m_dllAvFilter.avfilter_graph_create_filter(&m_pFilterOut, outFilter, "out", NULL, (void*)buffersink_params->pixel_fmts, m_pFilterGraph)) < 0) -+#else -+ if ((result = m_dllAvFilter.avfilter_graph_create_filter(&m_pFilterOut, outFilter, "out", NULL, buffersink_params, m_pFilterGraph)) < 0) -+#endif - { -+ m_dllAvUtil.av_freep(&buffersink_params); - CLog::Log(LOGERROR, "CDVDVideoCodecFFmpeg::FilterOpen - avfilter_graph_create_filter: out"); - return result; - } -+ m_dllAvUtil.av_freep(&buffersink_params); - - if (!filters.empty()) - { -@@ -794,6 +751,12 @@ - - void CDVDVideoCodecFFmpeg::FilterClose() - { -+ if(m_pBufferRef) -+ { -+ m_dllAvFilter.avfilter_unref_buffer(m_pBufferRef); -+ m_pBufferRef = NULL; -+ } -+ - if (m_pFilterGraph) - { - m_dllAvFilter.avfilter_graph_free(&m_pFilterGraph); -@@ -801,7 +764,6 @@ - // Disposed by above code - m_pFilterIn = NULL; - m_pFilterOut = NULL; -- m_pFilterLink = NULL; - } - } - -@@ -809,48 +771,41 @@ - { - int result, frames; - -- m_pFilterLink = m_pFilterOut->inputs[0]; -- - if (frame) - { --#if LIBAVFILTER_VERSION_INT >= AV_VERSION_INT(2,13,0) -+#if LIBAVFILTER_VERSION_INT < AV_VERSION_INT(3,0,0) - result = m_dllAvFilter.av_vsrc_buffer_add_frame(m_pFilterIn, frame, 0); --#elif LIBAVFILTER_VERSION_INT >= AV_VERSION_INT(2,7,0) -- result = m_dllAvFilter.av_vsrc_buffer_add_frame(m_pFilterIn, frame); --#elif LIBAVCODEC_VERSION_INT >= AV_VERSION_INT(53,3,0) -- result = m_dllAvFilter.av_vsrc_buffer_add_frame(m_pFilterIn, frame, frame->pts); - #else -- result = m_dllAvFilter.av_vsrc_buffer_add_frame(m_pFilterIn, frame, frame->pts, m_pCodecContext->sample_aspect_ratio); -+ result = m_dllAvFilter.av_buffersrc_add_frame(m_pFilterIn, frame, 0); - #endif -- - if (result < 0) - { -+#if LIBAVFILTER_VERSION_INT < AV_VERSION_INT(3,0,0) - CLog::Log(LOGERROR, "CDVDVideoCodecFFmpeg::FilterProcess - av_vsrc_buffer_add_frame"); -+#else -+ CLog::Log(LOGERROR, "CDVDVideoCodecFFmpeg::FilterProcess - av_buffersrc_add_frame"); -+#endif - return VC_ERROR; - } - } - -- if ((frames = m_dllAvFilter.avfilter_poll_frame(m_pFilterLink)) < 0) -+ if(m_pBufferRef) -+ { -+ m_dllAvFilter.avfilter_unref_buffer(m_pBufferRef); -+ m_pBufferRef = NULL; -+ } -+ -+ if ((frames = m_dllAvFilter.av_buffersink_poll_frame(m_pFilterOut)) < 0) - { -- CLog::Log(LOGERROR, "CDVDVideoCodecFFmpeg::FilterProcess - avfilter_poll_frame"); -+ CLog::Log(LOGERROR, "CDVDVideoCodecFFmpeg::FilterProcess - av_buffersink_poll_frame"); - return VC_ERROR; - } - - if (frames > 0) - { -- if (m_pFilterLink->cur_buf) -- { -- m_dllAvFilter.avfilter_unref_buffer(m_pFilterLink->cur_buf); -- m_pFilterLink->cur_buf = NULL; -- } -- -- if ((result = m_dllAvFilter.avfilter_request_frame(m_pFilterLink)) < 0) -- { -- CLog::Log(LOGERROR, "CDVDVideoCodecFFmpeg::FilterProcess - avfilter_request_frame"); -- return VC_ERROR; -- } - -- if (!m_pFilterLink->cur_buf) -+ result = m_dllAvFilter.av_buffersink_get_buffer_ref(m_pFilterOut, &m_pBufferRef, 0); -+ if(!m_pBufferRef) - { - CLog::Log(LOGERROR, "CDVDVideoCodecFFmpeg::FilterProcess - cur_buf"); - return VC_ERROR; -@@ -861,11 +816,11 @@ - else - m_pFrame->repeat_pict = -(frames - 1); - -- m_pFrame->interlaced_frame = m_pFilterLink->cur_buf->video->interlaced; -- m_pFrame->top_field_first = m_pFilterLink->cur_buf->video->top_field_first; -+ m_pFrame->interlaced_frame = m_pBufferRef->video->interlaced; -+ m_pFrame->top_field_first = m_pBufferRef->video->top_field_first; - -- memcpy(m_pFrame->linesize, m_pFilterLink->cur_buf->linesize, 4*sizeof(int)); -- memcpy(m_pFrame->data , m_pFilterLink->cur_buf->data , 4*sizeof(uint8_t*)); -+ memcpy(m_pFrame->linesize, m_pBufferRef->linesize, 4*sizeof(int)); -+ memcpy(m_pFrame->data , m_pBufferRef->data , 4*sizeof(uint8_t*)); - - if(frames > 1) - return VC_PICTURE; -diff -urN xbmc-11.0/xbmc/cores/dvdplayer/DVDCodecs/Video/DVDVideoCodecFFmpeg.h xbmc-11.0-ffmpeg-1.0/xbmc/cores/dvdplayer/DVDCodecs/Video/DVDVideoCodecFFmpeg.h ---- xbmc-11.0/xbmc/cores/dvdplayer/DVDCodecs/Video/DVDVideoCodecFFmpeg.h 2012-03-21 23:07:50.000000000 +0100 -+++ xbmc-11.0-ffmpeg-1.0/xbmc/cores/dvdplayer/DVDCodecs/Video/DVDVideoCodecFFmpeg.h 2012-11-08 23:16:03.533072250 +0100 -@@ -75,20 +75,19 @@ - protected: - static enum PixelFormat GetFormat(struct AVCodecContext * avctx, const PixelFormat * fmt); - -- int FilterOpen(const CStdString& filters); -+ int FilterOpen(const CStdString& filters, bool scale); - void FilterClose(); - int FilterProcess(AVFrame* frame); - - AVFrame* m_pFrame; - AVCodecContext* m_pCodecContext; - -- AVPicture* m_pConvertFrame; - CStdString m_filters; - CStdString m_filters_next; - AVFilterGraph* m_pFilterGraph; - AVFilterContext* m_pFilterIn; - AVFilterContext* m_pFilterOut; -- AVFilterLink* m_pFilterLink; -+ AVFilterBufferRef* m_pBufferRef; - - int m_iPictureWidth; - int m_iPictureHeight; -@@ -109,4 +108,5 @@ - int m_iLastKeyframe; - double m_dts; - bool m_started; -+ std::vector m_formats; - }; -diff -urN xbmc-11.0/xbmc/cores/dvdplayer/DVDCodecs/Video/DVDVideoCodecVDA.cpp xbmc-11.0-ffmpeg-1.0/xbmc/cores/dvdplayer/DVDCodecs/Video/DVDVideoCodecVDA.cpp ---- xbmc-11.0/xbmc/cores/dvdplayer/DVDCodecs/Video/DVDVideoCodecVDA.cpp 2012-03-21 23:07:50.000000000 +0100 -+++ xbmc-11.0-ffmpeg-1.0/xbmc/cores/dvdplayer/DVDCodecs/Video/DVDVideoCodecVDA.cpp 2012-11-08 23:16:03.533072250 +0100 -@@ -525,8 +525,8 @@ - { - while (!*(nal_start++)); - nal_end = avc_find_startcode(nal_start, end); -- av_format_ctx->put_be32(pb, nal_end - nal_start); -- av_format_ctx->put_buffer(pb, nal_start, nal_end - nal_start); -+ av_format_ctx->avio_wb32(pb, nal_end - nal_start); -+ av_format_ctx->avio_write(pb, nal_start, nal_end - nal_start); - size += 4 + nal_end - nal_start; - nal_start = nal_end; - } -@@ -537,14 +537,14 @@ - const uint8_t *buf_in, uint8_t **buf, int *size) - { - ByteIOContext *pb; -- int ret = av_format_ctx->url_open_dyn_buf(&pb); -+ int ret = av_format_ctx->avio_open_dyn_buf(&pb); - if (ret < 0) - return ret; - - avc_parse_nal_units(av_format_ctx, pb, buf_in, *size); - - av_util_ctx->av_freep(buf); -- *size = av_format_ctx->url_close_dyn_buf(pb, buf); -+ *size = av_format_ctx->avio_close_dyn_buf(pb, buf); - return 0; - } - -@@ -590,26 +590,26 @@ - } - assert(sps); - -- av_format_ctx->put_byte(pb, 1); /* version */ -- av_format_ctx->put_byte(pb, sps[1]); /* profile */ -- av_format_ctx->put_byte(pb, sps[2]); /* profile compat */ -- av_format_ctx->put_byte(pb, sps[3]); /* level */ -- av_format_ctx->put_byte(pb, 0xff); /* 6 bits reserved (111111) + 2 bits nal size length - 1 (11) */ -- av_format_ctx->put_byte(pb, 0xe1); /* 3 bits reserved (111) + 5 bits number of sps (00001) */ -+ av_format_ctx->avio_w8(pb, 1); /* version */ -+ av_format_ctx->avio_w8(pb, sps[1]); /* profile */ -+ av_format_ctx->avio_w8(pb, sps[2]); /* profile compat */ -+ av_format_ctx->avio_w8(pb, sps[3]); /* level */ -+ av_format_ctx->avio_w8(pb, 0xff); /* 6 bits reserved (111111) + 2 bits nal size length - 1 (11) */ -+ av_format_ctx->avio_w8(pb, 0xe1); /* 3 bits reserved (111) + 5 bits number of sps (00001) */ - -- av_format_ctx->put_be16(pb, sps_size); -- av_format_ctx->put_buffer(pb, sps, sps_size); -+ av_format_ctx->avio_wb16(pb, sps_size); -+ av_format_ctx->avio_write(pb, sps, sps_size); - if (pps) - { -- av_format_ctx->put_byte(pb, 1); /* number of pps */ -- av_format_ctx->put_be16(pb, pps_size); -- av_format_ctx->put_buffer(pb, pps, pps_size); -+ av_format_ctx->avio_w8(pb, 1); /* number of pps */ -+ av_format_ctx->avio_wb16(pb, pps_size); -+ av_format_ctx->avio_write(pb, pps, pps_size); - } - av_util_ctx->av_free(start); - } - else - { -- av_format_ctx->put_buffer(pb, data, len); -+ av_format_ctx->avio_write(pb, data, len); - } - } - return 0; -@@ -706,7 +706,7 @@ - } - - ByteIOContext *pb; -- if (m_dllAvFormat->url_open_dyn_buf(&pb) < 0) -+ if (m_dllAvFormat->avio_open_dyn_buf(&pb) < 0) - { - return false; - } -@@ -717,7 +717,7 @@ - // unhook from ffmpeg's extradata - extradata = NULL; - // extract the avcC atom data into extradata then write it into avcCData for VDADecoder -- extrasize = m_dllAvFormat->url_close_dyn_buf(pb, &extradata); -+ extrasize = m_dllAvFormat->avio_close_dyn_buf(pb, &extradata); - // CFDataCreate makes a copy of extradata contents - avcCData = CFDataCreate(kCFAllocatorDefault, (const uint8_t*)extradata, extrasize); - // done with the converted extradata, we MUST free using av_free -@@ -948,12 +948,12 @@ - int demuxer_bytes; - uint8_t *demuxer_content; - -- if(m_dllAvFormat->url_open_dyn_buf(&pb) < 0) -+ if(m_dllAvFormat->avio_open_dyn_buf(&pb) < 0) - { - return VC_ERROR; - } - demuxer_bytes = avc_parse_nal_units(m_dllAvFormat, pb, pData, iSize); -- demuxer_bytes = m_dllAvFormat->url_close_dyn_buf(pb, &demuxer_content); -+ demuxer_bytes = m_dllAvFormat->avio_close_dyn_buf(pb, &demuxer_content); - avc_demux = CFDataCreate(kCFAllocatorDefault, demuxer_content, demuxer_bytes); - m_dllAvUtil->av_free(demuxer_content); - } -@@ -961,7 +961,7 @@ - { - // convert demuxer packet from 3 byte NAL sizes to 4 byte - ByteIOContext *pb; -- if (m_dllAvFormat->url_open_dyn_buf(&pb) < 0) -+ if (m_dllAvFormat->avio_open_dyn_buf(&pb) < 0) - return VC_ERROR; - - uint32_t nal_size; -@@ -970,14 +970,14 @@ - while (nal_start < end) - { - nal_size = VDA_RB24(nal_start); -- m_dllAvFormat->put_be32(pb, nal_size); -+ m_dllAvFormat->avio_wb32(pb, nal_size); - nal_start += 3; -- m_dllAvFormat->put_buffer(pb, nal_start, nal_size); -+ m_dllAvFormat->avio_write(pb, nal_start, nal_size); - nal_start += nal_size; - } - - uint8_t *demuxer_content; -- int demuxer_bytes = m_dllAvFormat->url_close_dyn_buf(pb, &demuxer_content); -+ int demuxer_bytes = m_dllAvFormat->avio_close_dyn_buf(pb, &demuxer_content); - avc_demux = CFDataCreate(kCFAllocatorDefault, demuxer_content, demuxer_bytes); - m_dllAvUtil->av_free(demuxer_content); - } -diff -urN xbmc-11.0/xbmc/cores/dvdplayer/DVDCodecs/Video/DVDVideoCodecVideoToolBox.cpp xbmc-11.0-ffmpeg-1.0/xbmc/cores/dvdplayer/DVDCodecs/Video/DVDVideoCodecVideoToolBox.cpp ---- xbmc-11.0/xbmc/cores/dvdplayer/DVDCodecs/Video/DVDVideoCodecVideoToolBox.cpp 2012-03-21 23:07:50.000000000 +0100 -+++ xbmc-11.0-ffmpeg-1.0/xbmc/cores/dvdplayer/DVDCodecs/Video/DVDVideoCodecVideoToolBox.cpp 2012-11-08 23:16:03.533072250 +0100 -@@ -474,7 +474,7 @@ - { - b |= 0x80; - } -- av_format_ctx->put_byte(pb, b); -+ av_format_ctx->avio_w8(pb, b); - } - - return numBytes; -@@ -482,37 +482,37 @@ - - void quicktime_write_esds(DllAvFormat *av_format_ctx, ByteIOContext *pb, quicktime_esds_t *esds) - { -- av_format_ctx->put_byte(pb, 0); // Version -- av_format_ctx->put_be24(pb, 0); // Flags -+ av_format_ctx->avio_w8(pb, 0); // Version -+ av_format_ctx->avio_wb24(pb, 0); // Flags - - // elementary stream descriptor tag -- av_format_ctx->put_byte(pb, 0x03); -+ av_format_ctx->avio_w8(pb, 0x03); - quicktime_write_mp4_descr_length(av_format_ctx, pb, - 3 + 5 + (13 + 5 + esds->decoderConfigLen) + 3, false); - // 3 bytes + 5 bytes for tag -- av_format_ctx->put_be16(pb, esds->esid); -- av_format_ctx->put_byte(pb, esds->stream_priority); -+ av_format_ctx->avio_wb16(pb, esds->esid); -+ av_format_ctx->avio_w8(pb, esds->stream_priority); - - // decoder configuration description tag -- av_format_ctx->put_byte(pb, 0x04); -+ av_format_ctx->avio_w8(pb, 0x04); - quicktime_write_mp4_descr_length(av_format_ctx, pb, - 13 + 5 + esds->decoderConfigLen, false); - // 13 bytes + 5 bytes for tag -- av_format_ctx->put_byte(pb, esds->objectTypeId); // objectTypeIndication -- av_format_ctx->put_byte(pb, esds->streamType); // streamType -- av_format_ctx->put_be24(pb, esds->bufferSizeDB); // buffer size -- av_format_ctx->put_be32(pb, esds->maxBitrate); // max bitrate -- av_format_ctx->put_be32(pb, esds->avgBitrate); // average bitrate -+ av_format_ctx->avio_w8(pb, esds->objectTypeId); // objectTypeIndication -+ av_format_ctx->avio_w8(pb, esds->streamType); // streamType -+ av_format_ctx->avio_wb24(pb, esds->bufferSizeDB); // buffer size -+ av_format_ctx->avio_wb32(pb, esds->maxBitrate); // max bitrate -+ av_format_ctx->avio_wb32(pb, esds->avgBitrate); // average bitrate - - // decoder specific description tag -- av_format_ctx->put_byte(pb, 0x05); -+ av_format_ctx->avio_w8(pb, 0x05); - quicktime_write_mp4_descr_length(av_format_ctx, pb, esds->decoderConfigLen, false); -- av_format_ctx->put_buffer(pb, esds->decoderConfig, esds->decoderConfigLen); -+ av_format_ctx->avio_write(pb, esds->decoderConfig, esds->decoderConfigLen); - - // sync layer configuration descriptor tag -- av_format_ctx->put_byte(pb, 0x06); // tag -- av_format_ctx->put_byte(pb, 0x01); // length -- av_format_ctx->put_byte(pb, 0x7F); // no SL -+ av_format_ctx->avio_w8(pb, 0x06); // tag -+ av_format_ctx->avio_w8(pb, 0x01); // length -+ av_format_ctx->avio_w8(pb, 0x7F); // no SL - - /* no IPI_DescrPointer */ - /* no IP_IdentificationDataSet */ -@@ -666,8 +666,8 @@ - { - while (!*(nal_start++)); - nal_end = avc_find_startcode(nal_start, end); -- av_format_ctx->put_be32(pb, nal_end - nal_start); -- av_format_ctx->put_buffer(pb, nal_start, nal_end - nal_start); -+ av_format_ctx->avio_wb32(pb, nal_end - nal_start); -+ av_format_ctx->avio_write(pb, nal_start, nal_end - nal_start); - size += 4 + nal_end - nal_start; - nal_start = nal_end; - } -@@ -678,14 +678,14 @@ - const uint8_t *buf_in, uint8_t **buf, int *size) - { - ByteIOContext *pb; -- int ret = av_format_ctx->url_open_dyn_buf(&pb); -+ int ret = av_format_ctx->avio_open_dyn_buf(&pb); - if (ret < 0) - return ret; - - avc_parse_nal_units(av_format_ctx, pb, buf_in, *size); - - av_util_ctx->av_freep(buf); -- *size = av_format_ctx->url_close_dyn_buf(pb, buf); -+ *size = av_format_ctx->avio_close_dyn_buf(pb, buf); - return 0; - } - -@@ -770,26 +770,26 @@ - } - assert(sps); - -- av_format_ctx->put_byte(pb, 1); /* version */ -- av_format_ctx->put_byte(pb, sps[1]); /* profile */ -- av_format_ctx->put_byte(pb, sps[2]); /* profile compat */ -- av_format_ctx->put_byte(pb, sps[3]); /* level */ -- av_format_ctx->put_byte(pb, 0xff); /* 6 bits reserved (111111) + 2 bits nal size length - 1 (11) */ -- av_format_ctx->put_byte(pb, 0xe1); /* 3 bits reserved (111) + 5 bits number of sps (00001) */ -+ av_format_ctx->avio_w8(pb, 1); /* version */ -+ av_format_ctx->avio_w8(pb, sps[1]); /* profile */ -+ av_format_ctx->avio_w8(pb, sps[2]); /* profile compat */ -+ av_format_ctx->avio_w8(pb, sps[3]); /* level */ -+ av_format_ctx->avio_w8(pb, 0xff); /* 6 bits reserved (111111) + 2 bits nal size length - 1 (11) */ -+ av_format_ctx->avio_w8(pb, 0xe1); /* 3 bits reserved (111) + 5 bits number of sps (00001) */ - -- av_format_ctx->put_be16(pb, sps_size); -- av_format_ctx->put_buffer(pb, sps, sps_size); -+ av_format_ctx->avio_wb16(pb, sps_size); -+ av_format_ctx->avio_write(pb, sps, sps_size); - if (pps) - { -- av_format_ctx->put_byte(pb, 1); /* number of pps */ -- av_format_ctx->put_be16(pb, pps_size); -- av_format_ctx->put_buffer(pb, pps, pps_size); -+ av_format_ctx->avio_w8(pb, 1); /* number of pps */ -+ av_format_ctx->avio_wb16(pb, pps_size); -+ av_format_ctx->avio_write(pb, pps, pps_size); - } - av_util_ctx->av_free(start); - } - else - { -- av_format_ctx->put_buffer(pb, data, len); -+ av_format_ctx->avio_write(pb, data, len); - } - } - return 0; -@@ -1086,7 +1086,7 @@ - ByteIOContext *pb; - quicktime_esds_t *esds; - -- if (m_dllAvFormat->url_open_dyn_buf(&pb) < 0) -+ if (m_dllAvFormat->avio_open_dyn_buf(&pb) < 0) - return false; - - esds = quicktime_set_esds(m_dllAvFormat, extradata, extrasize); -@@ -1095,7 +1095,7 @@ - // unhook from ffmpeg's extradata - extradata = NULL; - // extract the esds atom decoderConfig from extradata -- extrasize = m_dllAvFormat->url_close_dyn_buf(pb, &extradata); -+ extrasize = m_dllAvFormat->avio_close_dyn_buf(pb, &extradata); - free(esds->decoderConfig); - free(esds); - -@@ -1152,7 +1152,7 @@ - // NAL reformating to bitstream format required - - ByteIOContext *pb; -- if (m_dllAvFormat->url_open_dyn_buf(&pb) < 0) -+ if (m_dllAvFormat->avio_open_dyn_buf(&pb) < 0) - return false; - - m_convert_bytestream = true; -@@ -1161,7 +1161,7 @@ - // unhook from ffmpeg's extradata - extradata = NULL; - // extract the avcC atom data into extradata getting size into extrasize -- extrasize = m_dllAvFormat->url_close_dyn_buf(pb, &extradata); -+ extrasize = m_dllAvFormat->avio_close_dyn_buf(pb, &extradata); - - // check for interlaced and get number of ref frames - if (!validate_avcC_spc(extradata, extrasize, &m_max_ref_frames)) -@@ -1301,17 +1301,17 @@ - if (m_convert_bytestream) - { - // convert demuxer packet from bytestream (AnnexB) to bitstream -- if(m_dllAvFormat->url_open_dyn_buf(&pb) < 0) -+ if(m_dllAvFormat->avio_open_dyn_buf(&pb) < 0) - return VC_ERROR; - - demux_size = avc_parse_nal_units(m_dllAvFormat, pb, pData, iSize); -- demux_size = m_dllAvFormat->url_close_dyn_buf(pb, &demux_buff); -+ demux_size = m_dllAvFormat->avio_close_dyn_buf(pb, &demux_buff); - sampleBuff = CreateSampleBufferFrom(m_fmt_desc, demux_buff, demux_size); - } - else if (m_convert_3byteTo4byteNALSize) - { - // convert demuxer packet from 3 byte NAL sizes to 4 byte -- if (m_dllAvFormat->url_open_dyn_buf(&pb) < 0) -+ if (m_dllAvFormat->avio_open_dyn_buf(&pb) < 0) - return VC_ERROR; - - uint32_t nal_size; -@@ -1320,13 +1320,13 @@ - while (nal_start < end) - { - nal_size = VDA_RB24(nal_start); -- m_dllAvFormat->put_be32(pb, nal_size); -+ m_dllAvFormat->avio_wb32(pb, nal_size); - nal_start += 3; -- m_dllAvFormat->put_buffer(pb, nal_start, nal_size); -+ m_dllAvFormat->avio_write(pb, nal_start, nal_size); - nal_start += nal_size; - } - -- demux_size = m_dllAvFormat->url_close_dyn_buf(pb, &demux_buff); -+ demux_size = m_dllAvFormat->avio_close_dyn_buf(pb, &demux_buff); - sampleBuff = CreateSampleBufferFrom(m_fmt_desc, demux_buff, demux_size); - } - else -diff -urN xbmc-11.0/xbmc/cores/dvdplayer/DVDCodecs/Video/VAAPI.cpp xbmc-11.0-ffmpeg-1.0/xbmc/cores/dvdplayer/DVDCodecs/Video/VAAPI.cpp ---- xbmc-11.0/xbmc/cores/dvdplayer/DVDCodecs/Video/VAAPI.cpp 2012-03-21 23:07:50.000000000 +0100 -+++ xbmc-11.0-ffmpeg-1.0/xbmc/cores/dvdplayer/DVDCodecs/Video/VAAPI.cpp 2012-11-08 23:16:03.533072250 +0100 -@@ -223,7 +223,6 @@ - } - - pic->type = FF_BUFFER_TYPE_USER; -- pic->age = 1; - pic->data[0] = (uint8_t*)wrapper; - pic->data[1] = NULL; - pic->data[2] = NULL; -diff -urN xbmc-11.0/xbmc/cores/dvdplayer/DVDCodecs/Video/VDPAU.cpp xbmc-11.0-ffmpeg-1.0/xbmc/cores/dvdplayer/DVDCodecs/Video/VDPAU.cpp ---- xbmc-11.0/xbmc/cores/dvdplayer/DVDCodecs/Video/VDPAU.cpp 2012-03-21 23:07:50.000000000 +0100 -+++ xbmc-11.0-ffmpeg-1.0/xbmc/cores/dvdplayer/DVDCodecs/Video/VDPAU.cpp 2012-11-08 23:16:03.533072250 +0100 -@@ -1197,14 +1197,12 @@ - - if(pic->reference) - { -- pic->age = pA->ip_age[0]; - pA->ip_age[0]= pA->ip_age[1]+1; - pA->ip_age[1]= 1; - pA->b_age++; - } - else - { -- pic->age = pA->b_age; - pA->ip_age[0]++; - pA->ip_age[1]++; - pA->b_age = 1; -diff -urN xbmc-11.0/xbmc/cores/dvdplayer/DVDDemuxers/DVDDemuxFFmpeg.cpp xbmc-11.0-ffmpeg-1.0/xbmc/cores/dvdplayer/DVDDemuxers/DVDDemuxFFmpeg.cpp ---- xbmc-11.0/xbmc/cores/dvdplayer/DVDDemuxers/DVDDemuxFFmpeg.cpp 2012-03-21 23:07:50.000000000 +0100 -+++ xbmc-11.0-ffmpeg-1.0/xbmc/cores/dvdplayer/DVDDemuxers/DVDDemuxFFmpeg.cpp 2012-11-08 23:16:03.533072250 +0100 -@@ -160,7 +160,7 @@ - #define g_demuxer (*((CDVDDemuxFFmpeg**)g_tls.Get())) - #endif - --static int interrupt_cb(void) -+static int interrupt_cb(void* unused) - { - if(g_demuxer && g_demuxer->Aborted()) - return 1; -@@ -178,7 +178,7 @@ - - static int dvd_file_read(void *h, uint8_t* buf, int size) - { -- if(interrupt_cb()) -+ if(interrupt_cb(NULL)) - return -1; - - CDVDInputStream* pInputStream = (CDVDInputStream*)h; -@@ -192,7 +192,7 @@ - */ - static offset_t dvd_file_seek(void *h, offset_t pos, int whence) - { -- if(interrupt_cb()) -+ if(interrupt_cb(NULL)) - return -1; - - CDVDInputStream* pInputStream = (CDVDInputStream*)h; -@@ -236,6 +236,7 @@ - m_speed = DVD_PLAYSPEED_NORMAL; - g_demuxer = this; - m_program = UINT_MAX; -+ const AVIOInterruptCB int_cb = { interrupt_cb, NULL }; - - if (!pInput) return false; - -@@ -246,10 +247,6 @@ - - // register codecs - m_dllAvFormat.av_register_all(); -- m_dllAvFormat.url_set_interrupt_cb(interrupt_cb); -- -- // could be used for interupting ffmpeg while opening a file (eg internet streams) -- // url_set_interrupt_cb(NULL); - - m_pInput = pInput; - strFile = m_pInput->GetFileName(); -@@ -284,14 +281,14 @@ - // try mmsh, then mmst - CStdString strFile2; - strFile2.Format("mmsh://%s",strFile.substr(6,strFile.size()-6).c_str()); -- result = m_dllAvFormat.av_open_input_file(&m_pFormatContext, strFile2.c_str(), iformat, FFMPEG_FILE_BUFFER_SIZE, NULL); -+ result = m_dllAvFormat.avformat_open_input(&m_pFormatContext, strFile2.c_str(), iformat, NULL); - if (result < 0) - { - strFile = "mmst://"; - strFile += strFile2.Mid(7).c_str(); - } - } -- if (result < 0 && m_dllAvFormat.av_open_input_file(&m_pFormatContext, strFile.c_str(), iformat, FFMPEG_FILE_BUFFER_SIZE, NULL) < 0 ) -+ if (result < 0 && m_dllAvFormat.avformat_open_input(&m_pFormatContext, strFile.c_str(), iformat, NULL) < 0 ) - { - CLog::Log(LOGDEBUG, "Error, could not open file %s", strFile.c_str()); - Dispose(); -@@ -301,24 +298,16 @@ - else - { - unsigned char* buffer = (unsigned char*)m_dllAvUtil.av_malloc(FFMPEG_FILE_BUFFER_SIZE); -- m_ioContext = m_dllAvFormat.av_alloc_put_byte(buffer, FFMPEG_FILE_BUFFER_SIZE, 0, m_pInput, dvd_file_read, NULL, dvd_file_seek); -+ m_ioContext = m_dllAvFormat.avio_alloc_context(buffer, FFMPEG_FILE_BUFFER_SIZE, 0, m_pInput, dvd_file_read, NULL, dvd_file_seek); - m_ioContext->max_packet_size = m_pInput->GetBlockSize(); - if(m_ioContext->max_packet_size) - m_ioContext->max_packet_size *= FFMPEG_FILE_BUFFER_SIZE / m_ioContext->max_packet_size; - - if(m_pInput->Seek(0, SEEK_POSSIBLE) == 0) -- m_ioContext->is_streamed = 1; -+ m_ioContext->seekable = 0; - - if( iformat == NULL ) - { --#if defined(USE_EXTERNAL_FFMPEG) && LIBAVFORMAT_VERSION_INT < AV_VERSION_INT(52,98,0) -- // API added on: 2011-02-09 -- // Old versions of ffmpeg do not have av_probe_input_format, so we need -- // to always probe using the lower-level functions as well. -- const bool legacyProbing = true; --#else -- const bool legacyProbing = false; --#endif - // let ffmpeg decide which demuxer we have to open - - bool trySPDIFonly = (m_pInput->GetContent() == "audio/x-spdif-compressed"); -@@ -331,7 +320,7 @@ - // want to probe for spdif (DTS or IEC 61937) compressed audio - // specifically, or in case the file is a wav which may contain DTS or - // IEC 61937 (e.g. ac3-in-wav) and we want to check for those formats. -- if (legacyProbing || trySPDIFonly || (iformat && strcmp(iformat->name, "wav") == 0)) -+ if (trySPDIFonly || (iformat && strcmp(iformat->name, "wav") == 0)) - { - AVProbeData pd; - BYTE probe_buffer[FFMPEG_FILE_BUFFER_SIZE + AVPROBE_PADDING_SIZE]; -@@ -341,7 +330,7 @@ - pd.filename = strFile.c_str(); - - // read data using avformat's buffers -- pd.buf_size = m_dllAvFormat.get_buffer(m_ioContext, pd.buf, m_ioContext->max_packet_size ? m_ioContext->max_packet_size : m_ioContext->buffer_size); -+ pd.buf_size = m_dllAvFormat.avio_read(m_ioContext, pd.buf, m_ioContext->max_packet_size ? m_ioContext->max_packet_size : m_ioContext->buffer_size); - if (pd.buf_size <= 0) - { - CLog::Log(LOGERROR, "%s - error reading from input stream, %s", __FUNCTION__, strFile.c_str()); -@@ -350,10 +339,7 @@ - memset(pd.buf+pd.buf_size, 0, AVPROBE_PADDING_SIZE); - - // restore position again -- m_dllAvFormat.url_fseek(m_ioContext , 0, SEEK_SET); -- -- if (legacyProbing && !trySPDIFonly) -- iformat = m_dllAvFormat.av_probe_input_format(&pd, 1); -+ m_dllAvFormat.avio_seek(m_ioContext , 0, SEEK_SET); - - // the advancedsetting is for allowing the user to force outputting the - // 44.1 kHz DTS wav file as PCM, so that an A/V receiver can decode -@@ -424,7 +410,10 @@ - - - // open the demuxer -- if (m_dllAvFormat.av_open_input_stream(&m_pFormatContext, m_ioContext, strFile.c_str(), iformat, NULL) < 0) -+ m_pFormatContext = m_dllAvFormat.avformat_alloc_context(); -+ m_pFormatContext->pb = m_ioContext; -+ -+ if (m_dllAvFormat.avformat_open_input(&m_pFormatContext, strFile.c_str(), iformat, NULL) < 0) - { - CLog::Log(LOGERROR, "%s - Error, could not open file %s", __FUNCTION__, strFile.c_str()); - Dispose(); -@@ -432,8 +421,11 @@ - } - } - -+ // set the interrupt callback, appeared in libavformat 53.15.0 -+ m_pFormatContext->interrupt_callback = int_cb; -+ - // analyse very short to speed up mjpeg playback start -- if (iformat && (strcmp(iformat->name, "mjpeg") == 0) && m_ioContext->is_streamed) -+ if (iformat && (strcmp(iformat->name, "mjpeg") == 0) && m_ioContext->seekable == 0) - m_pFormatContext->max_analyze_duration = 500000; - - // we need to know if this is matroska or avi later -@@ -447,8 +439,8 @@ - m_pFormatContext->max_analyze_duration = 500000; - - -- CLog::Log(LOGDEBUG, "%s - av_find_stream_info starting", __FUNCTION__); -- int iErr = m_dllAvFormat.av_find_stream_info(m_pFormatContext); -+ CLog::Log(LOGDEBUG, "%s - avformat_find_stream_info starting", __FUNCTION__); -+ int iErr = m_dllAvFormat.avformat_find_stream_info(m_pFormatContext, NULL); - if (iErr < 0) - { - CLog::Log(LOGWARNING,"could not find codec parameters for %s", strFile.c_str()); -@@ -471,7 +463,7 @@ - m_pFormatContext->flags |= AVFMT_FLAG_NONBLOCK; - - // print some extra information -- m_dllAvFormat.dump_format(m_pFormatContext, 0, strFile.c_str(), 0); -+ m_dllAvFormat.av_dump_format(m_pFormatContext, 0, strFile.c_str(), 0); - - UpdateCurrentPTS(); - -@@ -510,20 +502,12 @@ - - if (m_pFormatContext) - { -- if (m_ioContext) -+ if (m_ioContext && m_pFormatContext->pb && m_pFormatContext->pb != m_ioContext) - { -- if(m_pFormatContext->pb && m_pFormatContext->pb != m_ioContext) -- { -- CLog::Log(LOGWARNING, "CDVDDemuxFFmpeg::Dispose - demuxer changed our byte context behind our back, possible memleak"); -- m_ioContext = m_pFormatContext->pb; -- } -- m_dllAvFormat.av_close_input_stream(m_pFormatContext); -- if (m_ioContext->buffer) -- m_dllAvUtil.av_free(m_ioContext->buffer); -- m_dllAvUtil.av_free(m_ioContext); -+ CLog::Log(LOGWARNING, "CDVDDemuxFFmpeg::Dispose - demuxer changed our byte context behind our back, possible memleak"); -+ m_ioContext = m_pFormatContext->pb; - } -- else -- m_dllAvFormat.av_close_input_file(m_pFormatContext); -+ m_dllAvFormat.avformat_close_input(&m_pFormatContext); - } - m_ioContext = NULL; - m_pFormatContext = NULL; -@@ -773,19 +757,12 @@ - { - stream->duration = duration; - duration = m_dllAvUtil.av_rescale_rnd(stream->duration, (int64_t)stream->time_base.num * AV_TIME_BASE, stream->time_base.den, AV_ROUND_NEAR_INF); -- if ((m_pFormatContext->duration == (int64_t)AV_NOPTS_VALUE && m_pFormatContext->file_size > 0) -+ if ((m_pFormatContext->duration == (int64_t)AV_NOPTS_VALUE) - || (m_pFormatContext->duration != (int64_t)AV_NOPTS_VALUE && duration > m_pFormatContext->duration)) - m_pFormatContext->duration = duration; - } - } - -- // check if stream seem to have grown since start -- if(m_pFormatContext->file_size > 0 && m_pFormatContext->pb) -- { -- if(m_pFormatContext->pb->pos > m_pFormatContext->file_size) -- m_pFormatContext->file_size = m_pFormatContext->pb->pos; -- } -- - pPacket->iStreamId = pkt.stream_index; // XXX just for now - } - m_dllAvCodec.av_free_packet(&pkt); -@@ -923,19 +900,6 @@ - if (!m_pFormatContext) - return 0; - -- /* apperently ffmpeg messes up sometimes, so check for negative value too */ -- if (m_pFormatContext->duration == (int64_t)AV_NOPTS_VALUE || m_pFormatContext->duration < 0LL) -- { -- // no duration is available for us -- // try to calculate it -- int iLength = 0; -- if (m_iCurrentPts != DVD_NOPTS_VALUE && m_pFormatContext->file_size > 0 && m_pFormatContext->pb && m_pFormatContext->pb->pos > 0) -- { -- iLength = (int)(((m_iCurrentPts * m_pFormatContext->file_size) / m_pFormatContext->pb->pos) / 1000) & 0xFFFFFFFF; -- } -- return iLength; -- } -- - return (int)(m_pFormatContext->duration / (AV_TIME_BASE / 1000)); - } - -@@ -987,8 +951,8 @@ - st->iBitRate = pStream->codec->bit_rate; - st->iBitsPerSample = pStream->codec->bits_per_coded_sample; - -- if(m_dllAvFormat.av_metadata_get(pStream->metadata, "title", NULL, 0)) -- st->m_description = m_dllAvFormat.av_metadata_get(pStream->metadata, "title", NULL, 0)->value; -+ if(m_dllAvUtil.av_dict_get(pStream->metadata, "title", NULL, 0)) -+ st->m_description = m_dllAvUtil.av_dict_get(pStream->metadata, "title", NULL, 0)->value; - - break; - } -@@ -1077,8 +1041,8 @@ - if(pStream->codec) - st->identifier = pStream->codec->sub_id; - -- if(m_dllAvFormat.av_metadata_get(pStream->metadata, "title", NULL, 0)) -- st->m_description = m_dllAvFormat.av_metadata_get(pStream->metadata, "title", NULL, 0)->value; -+ if(m_dllAvUtil.av_dict_get(pStream->metadata, "title", NULL, 0)) -+ st->m_description = m_dllAvUtil.av_dict_get(pStream->metadata, "title", NULL, 0)->value; - - break; - } -@@ -1089,7 +1053,7 @@ - { - std::string fileName = "special://temp/fonts/"; - XFILE::CDirectory::Create(fileName); -- AVMetadataTag *nameTag = m_dllAvFormat.av_metadata_get(pStream->metadata, "filename", NULL, 0); -+ AVDictionaryEntry *nameTag = m_dllAvUtil.av_dict_get(pStream->metadata, "filename", NULL, 0); - if (!nameTag) { - CLog::Log(LOGERROR, "%s: TTF attachment has no name", __FUNCTION__); - break; -@@ -1138,7 +1102,7 @@ - // API added on: 2010-10-15 - // (Note that while the function was available earlier, the generic - // metadata tags were not populated by default) -- AVMetadataTag *langTag = m_dllAvFormat.av_metadata_get(pStream->metadata, "language", NULL, 0); -+ AVDictionaryEntry *langTag = m_dllAvUtil.av_dict_get(pStream->metadata, "language", NULL, 0); - if (langTag) - strncpy(m_streams[iId]->language, langTag->value, 3); - #else -@@ -1248,7 +1212,7 @@ - // API added on: 2010-10-15 - // (Note that while the function was available earlier, the generic - // metadata tags were not populated by default) -- AVMetadataTag *titleTag = m_dllAvFormat.av_metadata_get(m_pFormatContext->chapters[chapterIdx-1]->metadata, -+ AVDictionaryEntry *titleTag = m_dllAvUtil.av_dict_get(m_pFormatContext->chapters[chapterIdx-1]->metadata, - "title", NULL, 0); - if (titleTag) - strChapterName = titleTag->value; -diff -urN xbmc-11.0/xbmc/cores/dvdplayer/DVDDemuxers/DVDDemuxFFmpeg.h xbmc-11.0-ffmpeg-1.0/xbmc/cores/dvdplayer/DVDDemuxers/DVDDemuxFFmpeg.h ---- xbmc-11.0/xbmc/cores/dvdplayer/DVDDemuxers/DVDDemuxFFmpeg.h 2012-03-21 23:07:50.000000000 +0100 -+++ xbmc-11.0-ffmpeg-1.0/xbmc/cores/dvdplayer/DVDDemuxers/DVDDemuxFFmpeg.h 2012-11-08 23:16:03.533072250 +0100 -@@ -128,7 +128,7 @@ - #define MAX_STREAMS 100 - CDemuxStream* m_streams[MAX_STREAMS]; // maximum number of streams that ffmpeg can handle - -- ByteIOContext* m_ioContext; -+ AVIOContext* m_ioContext; - - DllAvFormat m_dllAvFormat; - DllAvCodec m_dllAvCodec; -diff -urN xbmc-11.0/xbmc/DllPaths_generated.h.in xbmc-11.0-ffmpeg-1.0/xbmc/DllPaths_generated.h.in ---- xbmc-11.0/xbmc/DllPaths_generated.h.in 2012-03-21 23:07:50.000000000 +0100 -+++ xbmc-11.0-ffmpeg-1.0/xbmc/DllPaths_generated.h.in 2012-11-08 23:15:55.399739205 +0100 -@@ -74,13 +74,13 @@ - #define DLL_PATH_LIBMAD "@MAD_SONAME@" - - /* ffmpeg */ --#define DLL_PATH_LIBAVCODEC "special://xbmcbin/system/players/dvdplayer/avcodec-52-@ARCH@.so" --#define DLL_PATH_LIBAVCORE "special://xbmcbin/system/players/dvdplayer/avcore-0-@ARCH@.so" --#define DLL_PATH_LIBAVFORMAT "special://xbmcbin/system/players/dvdplayer/avformat-52-@ARCH@.so" --#define DLL_PATH_LIBAVUTIL "special://xbmcbin/system/players/dvdplayer/avutil-50-@ARCH@.so" --#define DLL_PATH_LIBPOSTPROC "special://xbmcbin/system/players/dvdplayer/postproc-51-@ARCH@.so" --#define DLL_PATH_LIBSWSCALE "special://xbmcbin/system/players/dvdplayer/swscale-0-@ARCH@.so" --#define DLL_PATH_LIBAVFILTER "special://xbmcbin/system/players/dvdplayer/avfilter-1-@ARCH@.so" -+#define DLL_PATH_LIBAVCODEC "special://xbmcbin/system/players/dvdplayer/avcodec-53-@ARCH@.so" -+#define DLL_PATH_LIBAVFORMAT "special://xbmcbin/system/players/dvdplayer/avformat-53-@ARCH@.so" -+#define DLL_PATH_LIBAVUTIL "special://xbmcbin/system/players/dvdplayer/avutil-51-@ARCH@.so" -+#define DLL_PATH_LIBPOSTPROC "special://xbmcbin/system/players/dvdplayer/postproc-52-@ARCH@.so" -+#define DLL_PATH_LIBSWSCALE "special://xbmcbin/system/players/dvdplayer/swscale-2-@ARCH@.so" -+#define DLL_PATH_LIBAVFILTER "special://xbmcbin/system/players/dvdplayer/avfilter-2-@ARCH@.so" -+#define DLL_PATH_LIBSWRESAMPLE "special://xbmcbin/system/players/dvdplayer/swresample-0-@ARCH@.so" - - /* cdrip */ - #if defined(_LINUX) && !defined(__APPLE__) -diff -urN xbmc-11.0/xbmc/DllPaths_win32.h xbmc-11.0-ffmpeg-1.0/xbmc/DllPaths_win32.h ---- xbmc-11.0/xbmc/DllPaths_win32.h 2012-03-21 23:07:50.000000000 +0100 -+++ xbmc-11.0-ffmpeg-1.0/xbmc/DllPaths_win32.h 2012-11-08 23:15:55.399739205 +0100 -@@ -58,13 +58,13 @@ - #define DLL_PATH_LIBRTMP "special://xbmcbin/system/players/dvdplayer/librtmp.dll" - - /* ffmpeg */ --#define DLL_PATH_LIBAVCODEC "special://xbmcbin/system/players/dvdplayer/avcodec-52.dll" --#define DLL_PATH_LIBAVCORE "special://xbmcbin/system/players/dvdplayer/avcore-0.dll" --#define DLL_PATH_LIBAVFORMAT "special://xbmcbin/system/players/dvdplayer/avformat-52.dll" --#define DLL_PATH_LIBAVUTIL "special://xbmcbin/system/players/dvdplayer/avutil-50.dll" --#define DLL_PATH_LIBAVFILTER "special://xbmcbin/system/players/dvdplayer/avfilter-1.dll" --#define DLL_PATH_LIBPOSTPROC "special://xbmcbin/system/players/dvdplayer/postproc-51.dll" --#define DLL_PATH_LIBSWSCALE "special://xbmcbin/system/players/dvdplayer/swscale-0.dll" -+#define DLL_PATH_LIBAVCODEC "special://xbmcbin/system/players/dvdplayer/avcodec-53.dll" -+#define DLL_PATH_LIBAVFORMAT "special://xbmcbin/system/players/dvdplayer/avformat-53.dll" -+#define DLL_PATH_LIBAVUTIL "special://xbmcbin/system/players/dvdplayer/avutil-51.dll" -+#define DLL_PATH_LIBAVFILTER "special://xbmcbin/system/players/dvdplayer/avfilter-2.dll" -+#define DLL_PATH_LIBPOSTPROC "special://xbmcbin/system/players/dvdplayer/postproc-52.dll" -+#define DLL_PATH_LIBSWSCALE "special://xbmcbin/system/players/dvdplayer/swscale-2.dll" -+#define DLL_PATH_LIBSWRESAMPLE "special://xbmcbin/system/players/dvdplayer/swresample-0.dll" - - /* cdrip */ - #define DLL_PATH_LAME_ENC "special://xbmcbin/system/cdrip/lame_enc.dll" -- 2.44.0