553 lines
28 KiB
Diff
553 lines
28 KiB
Diff
commit bddad011d457ed59ab856d35a63efa390d9c2e73
|
|
Author: elupus <elupus@xbmc.org>
|
|
Date: Tue Nov 1 21:46:36 2011 +0100
|
|
|
|
Drop support for ffmpeg version older than our built in version
|
|
|
|
diff --git a/lib/DllAvCodec.h b/lib/DllAvCodec.h
|
|
index 355b8b2..7993408 100644
|
|
--- a/lib/DllAvCodec.h
|
|
+++ b/lib/DllAvCodec.h
|
|
@@ -76,28 +76,6 @@ extern "C" {
|
|
#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
|
|
@@ -181,16 +159,9 @@ public:
|
|
}
|
|
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_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_context3(AVCodec *codec) { return ::avcodec_alloc_context3(codec); }
|
|
@@ -202,12 +173,7 @@ public:
|
|
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); }
|
|
|
|
diff --git a/lib/DllAvFilter.h b/lib/DllAvFilter.h
|
|
index 1e308ac..ea012e8 100644
|
|
--- a/lib/DllAvFilter.h
|
|
+++ b/lib/DllAvFilter.h
|
|
@@ -46,22 +46,8 @@ extern "C" {
|
|
#elif (defined HAVE_FFMPEG_AVFILTER_H)
|
|
#include <ffmpeg/avfiltergraph.h>
|
|
#endif
|
|
- /* for av_vsrc_buffer_add_frame */
|
|
- #if LIBAVFILTER_VERSION_INT >= AV_VERSION_INT(2,8,0)
|
|
- #include <libavfilter/avcodec.h>
|
|
- #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);
|
|
- #endif
|
|
#else
|
|
#include "libavfilter/avfiltergraph.h"
|
|
-#define HAVE_AVFILTERBUFFERREFVIDEOPROPS_SAMPLE_ASPECT_RATIO
|
|
#endif
|
|
}
|
|
|
|
@@ -83,15 +69,7 @@ public:
|
|
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)
|
|
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;
|
|
-#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;
|
|
@@ -116,12 +94,7 @@ public:
|
|
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()
|
|
{
|
|
@@ -134,53 +107,25 @@ public:
|
|
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)
|
|
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); }
|
|
-#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); }
|
|
@@ -201,42 +146,18 @@ class DllAvFilter : public DllDynamic, DllAvFilterInterface
|
|
|
|
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_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))
|
|
-#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))
|
|
@@ -249,10 +170,8 @@ class DllAvFilter : public DllDynamic, DllAvFilterInterface
|
|
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)
|
|
@@ -281,12 +200,7 @@ public:
|
|
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()
|
|
{
|
|
@@ -296,40 +210,22 @@ public:
|
|
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()
|
|
{
|
|
diff --git a/lib/DllAvFormat.h b/lib/DllAvFormat.h
|
|
index 9b38c9c..d6753ae 100644
|
|
--- a/lib/DllAvFormat.h
|
|
+++ b/lib/DllAvFormat.h
|
|
@@ -126,12 +126,7 @@ public:
|
|
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(AVIOContext *s) { return ::url_feof(s); }
|
|
-#if LIBAVFORMAT_VERSION_INT >= AV_VERSION_INT(52,31,0)
|
|
- // API added on: 2009-03-01
|
|
virtual AVDictionaryEntry *av_metadata_get(AVDictionary *m, const char *key, const AVDictionaryEntry *prev, int flags){ return ::av_metadata_get(m, key, prev, flags); }
|
|
-#else
|
|
- virtual AVDictionaryEntry *av_metadata_get(AVDictionary *m, const char *key, const AVDictionaryEntry *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 av_read_frame(AVFormatContext *s, AVPacket *pkt) { return ::av_read_frame(s, pkt); }
|
|
@@ -153,12 +148,7 @@ public:
|
|
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); }
|
|
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(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); }
|
|
-#else
|
|
- virtual int av_probe_input_buffer(AVIOContext *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(AVIOContext **s, URLContext *h) { return ::url_fdopen(s, h); }
|
|
virtual int url_fopen(AVIOContext **s, const char *filename, int flags) { return ::url_fopen(s, filename, flags); }
|
|
@@ -175,11 +165,7 @@ public:
|
|
virtual void put_be16(AVIOContext *s, unsigned int val) { ::put_be16(s, val); }
|
|
virtual AVFormatContext *avformat_alloc_context() { return ::avformat_alloc_context(); }
|
|
virtual AVStream *avformat_new_stream(AVFormatContext *s, AVCodec *c) { return ::avformat_new_stream(s, c); }
|
|
-#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 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 AVIOContext *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),
|
|
@@ -188,15 +174,7 @@ public:
|
|
virtual int av_write_header (AVFormatContext *s) { return ::av_write_header (s); }
|
|
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(AVDictionary **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(AVDictionary **pm, const char *key, const char *value, int flags) { return ::av_metadata_set(pm, key, value); }
|
|
-#else
|
|
- virtual int av_metadata_set2(AVDictionary **pm, const char *key, const char *value, int flags) { return -1; }
|
|
-#endif
|
|
|
|
// DLL faking.
|
|
virtual bool ResolveExports() { return true; }
|
|
@@ -252,11 +230,7 @@ class DllAvFormat : public DllDynamic, DllAvFormatInterface
|
|
DEFINE_METHOD3(offset_t, url_fseek, (AVIOContext *p1, offset_t p2, int p3))
|
|
DEFINE_METHOD0(AVFormatContext *, avformat_alloc_context)
|
|
DEFINE_METHOD2(AVStream *, avformat_new_stream, (AVFormatContext *p1, AVCodec *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_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(AVIOContext *, av_alloc_put_byte, (unsigned char *p1, int p2, int p3, void *p4,
|
|
int(*p5)(void *opaque, uint8_t *buf, int buf_size),
|
|
@@ -301,11 +275,7 @@ class DllAvFormat : public DllDynamic, DllAvFormatInterface
|
|
RESOLVE_METHOD(put_be16)
|
|
RESOLVE_METHOD(avformat_alloc_context)
|
|
RESOLVE_METHOD(avformat_new_stream)
|
|
-#if LIBAVFORMAT_VERSION_INT < (52<<16 | 45<<8)
|
|
- RESOLVE_METHOD(guess_format)
|
|
-#else
|
|
RESOLVE_METHOD(av_guess_format)
|
|
-#endif
|
|
RESOLVE_METHOD(av_set_parameters)
|
|
RESOLVE_METHOD(av_alloc_put_byte)
|
|
RESOLVE_METHOD(av_write_header)
|
|
diff --git a/xbmc/cdrip/EncoderFFmpeg.cpp b/xbmc/cdrip/EncoderFFmpeg.cpp
|
|
index 0b3ef76..220fe21 100644
|
|
--- a/xbmc/cdrip/EncoderFFmpeg.cpp
|
|
+++ b/xbmc/cdrip/EncoderFFmpeg.cpp
|
|
@@ -59,11 +59,7 @@ bool CEncoderFFmpeg::Init(const char* strFile, int iInChannels, int iInRate, int
|
|
|
|
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());
|
|
diff --git a/xbmc/cores/dvdplayer/DVDCodecs/Audio/DVDAudioCodecPassthroughFFmpeg.cpp b/xbmc/cores/dvdplayer/DVDCodecs/Audio/DVDAudioCodecPassthroughFFmpeg.cpp
|
|
index 440b04b..8fae8bf 100644
|
|
--- a/xbmc/cores/dvdplayer/DVDCodecs/Audio/DVDAudioCodecPassthroughFFmpeg.cpp
|
|
+++ b/xbmc/cores/dvdplayer/DVDCodecs/Audio/DVDAudioCodecPassthroughFFmpeg.cpp
|
|
@@ -79,11 +79,7 @@ bool CDVDAudioCodecPassthroughFFmpeg::SetupMuxer(CDVDStreamInfo &hints, CStdStri
|
|
/* 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());
|
|
@@ -124,8 +120,6 @@ bool CDVDAudioCodecPassthroughFFmpeg::SetupMuxer(CDVDStreamInfo &hints, CStdStri
|
|
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.
|
|
@@ -139,7 +133,6 @@ bool CDVDAudioCodecPassthroughFFmpeg::SetupMuxer(CDVDStreamInfo &hints, CStdStri
|
|
|
|
/* 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 defined(WORDS_BIGENDIAN) && !defined(__APPLE__)
|
|
CLog::Log(LOGERROR, "CDVDAudioCodecPassthroughFFmpeg::SetupMuxer - Unable to set big-endian stream mode (FFmpeg too old?), disabling passthrough");
|
|
diff --git a/xbmc/cores/dvdplayer/DVDCodecs/Overlay/DVDOverlayCodecFFmpeg.cpp b/xbmc/cores/dvdplayer/DVDCodecs/Overlay/DVDOverlayCodecFFmpeg.cpp
|
|
index 754169e..238c855 100644
|
|
--- a/xbmc/cores/dvdplayer/DVDCodecs/Overlay/DVDOverlayCodecFFmpeg.cpp
|
|
+++ b/xbmc/cores/dvdplayer/DVDCodecs/Overlay/DVDOverlayCodecFFmpeg.cpp
|
|
@@ -134,19 +134,12 @@ void CDVDOverlayCodecFFmpeg::FreeSubtitle(AVSubtitle& sub)
|
|
{
|
|
for(unsigned i=0;i<sub.num_rects;i++)
|
|
{
|
|
-#if LIBAVCODEC_VERSION_INT >= (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 @@ CDVDOverlay* CDVDOverlayCodecFFmpeg::GetOverlay()
|
|
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;i<rect.h;i++)
|
|
@@ -310,21 +302,6 @@ CDVDOverlay* CDVDOverlayCodecFFmpeg::GetOverlay()
|
|
m_dllAvUtil.av_free(rect.pict.data[0]);
|
|
m_dllAvUtil.av_free(rect.pict.data[1]);
|
|
m_dllAvUtil.av_freep(&m_Subtitle.rects[m_SubtitleIndex]);
|
|
-#else
|
|
- BYTE* s = rect.bitmap;
|
|
- BYTE* t = overlay->data;
|
|
- for(int i=0;i<rect.h;i++)
|
|
- {
|
|
- memcpy(t, s, rect.w);
|
|
- s += rect.linesize;
|
|
- t += overlay->linesize;
|
|
- }
|
|
-
|
|
- 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 --git a/xbmc/cores/dvdplayer/DVDCodecs/Video/DVDVideoCodecFFmpeg.cpp b/xbmc/cores/dvdplayer/DVDCodecs/Video/DVDVideoCodecFFmpeg.cpp
|
|
index c792cfd..74f2431 100644
|
|
--- a/xbmc/cores/dvdplayer/DVDCodecs/Video/DVDVideoCodecFFmpeg.cpp
|
|
+++ b/xbmc/cores/dvdplayer/DVDCodecs/Video/DVDVideoCodecFFmpeg.cpp
|
|
@@ -242,9 +242,7 @@ bool CDVDVideoCodecFFmpeg::Open(CDVDStreamInfo &hints, CDVDCodecOptions &options
|
|
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
|
|
@@ -600,11 +598,7 @@ bool CDVDVideoCodecFFmpeg::GetPictureCommon(DVDVideoPicture* pDvdVideoPicture)
|
|
/* 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 (pixel_aspect.num == 0)
|
|
aspect_ratio = 0;
|
|
@@ -814,16 +808,7 @@ int CDVDVideoCodecFFmpeg::FilterProcess(AVFrame* frame)
|
|
|
|
if (frame)
|
|
{
|
|
-#if LIBAVFILTER_VERSION_INT >= AV_VERSION_INT(2,13,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);
|
|
-#endif
|
|
-
|
|
if (result < 0)
|
|
{
|
|
CLog::Log(LOGERROR, "CDVDVideoCodecFFmpeg::FilterProcess - av_vsrc_buffer_add_frame");
|
|
diff --git a/xbmc/cores/dvdplayer/DVDDemuxers/DVDDemuxFFmpeg.cpp b/xbmc/cores/dvdplayer/DVDDemuxers/DVDDemuxFFmpeg.cpp
|
|
index 68f4358..f1b0119 100644
|
|
--- a/xbmc/cores/dvdplayer/DVDDemuxers/DVDDemuxFFmpeg.cpp
|
|
+++ b/xbmc/cores/dvdplayer/DVDDemuxers/DVDDemuxFFmpeg.cpp
|
|
@@ -311,14 +311,6 @@ bool CDVDDemuxFFmpeg::Open(CDVDInputStream* pInput)
|
|
|
|
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 +323,7 @@ bool CDVDDemuxFFmpeg::Open(CDVDInputStream* pInput)
|
|
// 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];
|
|
@@ -352,9 +344,6 @@ bool CDVDDemuxFFmpeg::Open(CDVDInputStream* pInput)
|
|
// restore position again
|
|
m_dllAvFormat.url_fseek(m_ioContext , 0, SEEK_SET);
|
|
|
|
- if (legacyProbing && !trySPDIFonly)
|
|
- iformat = m_dllAvFormat.av_probe_input_format(&pd, 1);
|
|
-
|
|
// 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
|
|
// it (this is temporary until we handle 44.1 kHz passthrough properly)
|