Remove some FFmpeg/Libav compatibility hacks

All of these are now in the supported FFmpeg and Libav versions.

The 3 remaining API checks are for FFmpeg-only things.
This commit is contained in:
wm4 2015-03-03 12:28:46 +01:00
parent 5808f1c408
commit c31e5da734
8 changed files with 3 additions and 139 deletions

View File

@ -60,8 +60,7 @@ static const struct mp_codec_tag mp_codec_tags[] = {
{0}
};
#define HAVE_QT_TAGS (LIBAVFORMAT_VERSION_INT >= AV_VERSION_INT(55, 25, 100) && \
LIBAVFORMAT_VERSION_MICRO >= 100)
#define HAVE_QT_TAGS (LIBAVFORMAT_VERSION_MICRO >= 100)
static const char *lookup_tag(int type, uint32_t tag)
{

View File

@ -32,12 +32,8 @@
#include <libavutil/avutil.h>
#include <libavutil/avstring.h>
#include <libavutil/mathematics.h>
#if HAVE_AVCODEC_REPLAYGAIN_SIDE_DATA
# include <libavutil/replaygain.h>
#endif
#if HAVE_AV_DISPLAYMATRIX
# include <libavutil/display.h>
#endif
#include <libavutil/replaygain.h>
#include <libavutil/display.h>
#include <libavutil/opt.h>
#include "options/options.h"
@ -427,7 +423,6 @@ static void select_tracks(struct demuxer *demuxer, int start)
static void export_replaygain(demuxer_t *demuxer, sh_audio_t *sh, AVStream *st)
{
#if HAVE_AVCODEC_REPLAYGAIN_SIDE_DATA
for (int i = 0; i < st->nb_side_data; i++) {
AVReplayGain *av_rgain;
struct replaygain_data *rgain;
@ -453,7 +448,6 @@ static void export_replaygain(demuxer_t *demuxer, sh_audio_t *sh, AVStream *st)
sh->replaygain_data = rgain;
}
#endif
}
// Return a dictionary entry as (decimal) integer.
@ -544,15 +538,9 @@ static void handle_stream(demuxer_t *demuxer, int i)
if (sh_video->bitrate == 0)
sh_video->bitrate = avfc->bit_rate;
#if HAVE_AV_DISPLAYMATRIX
uint8_t *sd = av_stream_get_side_data(st, AV_PKT_DATA_DISPLAYMATRIX, NULL);
if (sd)
sh_video->rotate = -av_display_rotation_get((uint32_t *)sd);
#else
int rot = dict_get_decimal(st->metadata, "rotate", -1);
if (rot >= 0)
sh_video->rotate = rot;
#endif
sh_video->rotate = ((sh_video->rotate % 360) + 360) % 360;
// This also applies to vfw-muxed mkv, but we can't detect these easily.
@ -648,7 +636,6 @@ static void add_new_streams(demuxer_t *demuxer)
static void update_metadata(demuxer_t *demuxer, AVPacket *pkt)
{
#if HAVE_AVFORMAT_METADATA_UPDATE_FLAG
lavf_priv_t *priv = demuxer->priv;
if (priv->avfc->event_flags & AVFMT_EVENT_FLAG_METADATA_UPDATED) {
mp_tags_copy_from_av_dictionary(demuxer->metadata, priv->avfc->metadata);
@ -665,24 +652,6 @@ static void update_metadata(demuxer_t *demuxer, AVPacket *pkt)
}
}
}
#elif HAVE_AVCODEC_METADATA_UPDATE_SIDE_DATA
lavf_priv_t *priv = demuxer->priv;
int md_size;
const uint8_t *md;
if (!pkt)
return;
md = av_packet_get_side_data(pkt, AV_PKT_DATA_METADATA_UPDATE, &md_size);
if (md && priv->merge_track_metadata) {
AVDictionary *dict = NULL;
av_packet_unpack_dictionary(md, md_size, &dict);
if (dict) {
mp_tags_clear(demuxer->metadata);
mp_tags_copy_from_av_dictionary(demuxer->metadata, dict);
av_dict_free(&dict);
demux_changed(demuxer, DEMUX_EVENT_METADATA);
}
}
#endif
}
static int interrupt_cb(void *ctx)

View File

@ -777,60 +777,18 @@ api_statement_check \
libavcodec/avcodec.h \
'int x, y; avcodec_enum_to_chroma_pos(&x, &y, AVCHROMA_LOC_UNSPECIFIED)'
api_statement_check \
"libavcodec avcol_spc_bt2020 available" \
HAVE_AVCOL_SPC_BT2020 \
libavcodec/avcodec.h \
'int x = AVCOL_SPC_BT2020_NCL'
api_statement_check \
"libavcodec metadata update side data" \
HAVE_AVCODEC_METADATA_UPDATE_SIDE_DATA \
libavcodec/avcodec.h \
'enum AVPacketSideDataType type = AV_PKT_DATA_METADATA_UPDATE'
api_statement_check \
"libavformat metadata update flags" \
HAVE_AVFORMAT_METADATA_UPDATE_FLAG \
libavformat/avformat.h \
'int x = AVFMT_EVENT_FLAG_METADATA_UPDATED'
api_statement_check \
"libavcodec replaygain side data" \
HAVE_AVCODEC_REPLAYGAIN_SIDE_DATA \
libavcodec/avcodec.h \
'enum AVPacketSideDataType type = AV_PKT_DATA_REPLAYGAIN'
api_statement_check \
"libavutil/libavcodec display matrix side data" \
HAVE_AV_DISPLAYMATRIX \
libavutil/frame.h \
'enum AVFrameSideDataType type = AV_FRAME_DATA_DISPLAYMATRIX'
api_statement_check \
"libavutil AVFrame metadata" \
HAVE_AVFRAME_METADATA \
libavutil/frame.h \
'av_frame_get_metadata(NULL)'
api_statement_check \
"libavutil AVFrame colorspace information" \
HAVE_AVFRAME_CSP \
libavutil/frame.h \
'AVFrame frame; frame.color_primaries = frame.color_trc = 0;'
api_statement_check \
"libavutil AVFrame skip samples metadata" \
HAVE_AVFRAME_SKIP_SAMPLES \
libavutil/frame.h \
'enum AVFrameSideDataType type = AV_FRAME_DATA_SKIP_SAMPLES'
api_statement_check \
"libavcodec av_vdpau_alloc_context()" \
HAVE_AVCODEC_VDPAU_ALLOC_CONTEXT \
libavcodec/vdpau.h \
'AVVDPAUContext *x = av_vdpau_alloc_context()'
check_pkg_config "libavfilter" $_libavfilter LIBAVFILTER 'libavfilter >= 5.0.0'
check_pkg_config "libavdevice" $_libavdevice LIBAVDEVICE 'libavdevice >= 55.0.0'

View File

@ -113,10 +113,8 @@ enum mp_csp avcol_spc_to_mp_csp(int avcolorspace)
switch (avcolorspace) {
case AVCOL_SPC_BT709: return MP_CSP_BT_709;
case AVCOL_SPC_BT470BG: return MP_CSP_BT_601;
#if HAVE_AVCOL_SPC_BT2020
case AVCOL_SPC_BT2020_NCL: return MP_CSP_BT_2020_NC;
case AVCOL_SPC_BT2020_CL: return MP_CSP_BT_2020_C;
#endif
case AVCOL_SPC_SMPTE170M: return MP_CSP_BT_601;
case AVCOL_SPC_SMPTE240M: return MP_CSP_SMPTE_240M;
case AVCOL_SPC_RGB: return MP_CSP_RGB;
@ -141,9 +139,7 @@ enum mp_csp_prim avcol_pri_to_mp_csp_prim(int avpri)
case AVCOL_PRI_SMPTE170M: return MP_CSP_PRIM_BT_601_525;
case AVCOL_PRI_BT470BG: return MP_CSP_PRIM_BT_601_625;
case AVCOL_PRI_BT709: return MP_CSP_PRIM_BT_709;
#if HAVE_AVCOL_SPC_BT2020
case AVCOL_PRI_BT2020: return MP_CSP_PRIM_BT_2020;
#endif
case AVCOL_PRI_BT470M: return MP_CSP_PRIM_BT_470M;
default: return MP_CSP_PRIM_AUTO;
}
@ -169,10 +165,8 @@ int mp_csp_to_avcol_spc(enum mp_csp colorspace)
switch (colorspace) {
case MP_CSP_BT_709: return AVCOL_SPC_BT709;
case MP_CSP_BT_601: return AVCOL_SPC_BT470BG;
#if HAVE_AVCOL_SPC_BT2020
case MP_CSP_BT_2020_NC: return AVCOL_SPC_BT2020_NCL;
case MP_CSP_BT_2020_C: return AVCOL_SPC_BT2020_CL;
#endif
case MP_CSP_SMPTE_240M: return AVCOL_SPC_SMPTE240M;
case MP_CSP_RGB: return AVCOL_SPC_RGB;
case MP_CSP_YCGCO: return AVCOL_SPC_YCOCG;
@ -195,9 +189,7 @@ int mp_csp_prim_to_avcol_pri(enum mp_csp_prim prim)
case MP_CSP_PRIM_BT_601_525: return AVCOL_PRI_SMPTE170M;
case MP_CSP_PRIM_BT_601_625: return AVCOL_PRI_BT470BG;
case MP_CSP_PRIM_BT_709: return AVCOL_PRI_BT709;
#if HAVE_AVCOL_SPC_BT2020
case MP_CSP_PRIM_BT_2020: return AVCOL_PRI_BT2020;
#endif
case MP_CSP_PRIM_BT_470M: return AVCOL_PRI_BT470M;
default: return AVCOL_PRI_UNSPECIFIED;
}

View File

@ -157,11 +157,7 @@ static int init(struct lavc_ctx *ctx)
};
ctx->hwdec_priv = p;
#if HAVE_AVCODEC_VDPAU_ALLOC_CONTEXT
p->context = av_vdpau_alloc_context();
#else
p->context = av_mallocz(sizeof(AVVDPAUContext));
#endif
if (!p->context)
goto error;

View File

@ -133,12 +133,10 @@ static int write_lavc(struct image_writer_ctx *ctx, mp_image_t *image, FILE *fp)
pic->format = avctx->pix_fmt;
pic->width = avctx->width;
pic->height = avctx->height;
#if HAVE_AVFRAME_CSP
if (ctx->opts->tag_csp) {
pic->color_primaries = mp_csp_prim_to_avcol_pri(image->params.primaries);
pic->color_trc = mp_csp_trc_to_avcol_trc(image->params.gamma);
}
#endif
int ret = avcodec_encode_video2(avctx, &pkt, pic, &got_output);
if (ret < 0)
goto error_exit;

View File

@ -645,9 +645,6 @@ void mp_image_copy_fields_from_av_frame(struct mp_image *dst,
}
// Not strictly related, but was added in a similar timeframe.
#define HAVE_AVFRAME_COLORSPACE HAVE_AVCODEC_CHROMA_POS_API
// Copy properties and data of the mp_image into the AVFrame, without taking
// care of memory management issues.
void mp_image_copy_fields_to_av_frame(struct AVFrame *dst,
@ -671,10 +668,8 @@ void mp_image_copy_fields_to_av_frame(struct AVFrame *dst,
if (src->fields & MP_IMGFIELD_REPEAT_FIRST)
dst->repeat_pict = 1;
#if HAVE_AVFRAME_COLORSPACE
dst->colorspace = mp_csp_to_avcol_spc(src->params.colorspace);
dst->color_range = mp_csp_levels_to_avcol_range(src->params.colorlevels);
#endif
}
static void frame_free(void *p)

43
wscript
View File

@ -416,42 +416,6 @@ FFmpeg/Libav libraries. You need at least {0}. Aborting.".format(libav_versions_
avcodec_enum_to_chroma_pos(&x, &y, AVCHROMA_LOC_UNSPECIFIED)""",
use='libav')
}, {
'name': 'avcol-spc-bt2020',
'desc': 'libavcodec avcol_spc_bt2020 available',
'func': check_statement('libavcodec/avcodec.h',
'int x = AVCOL_SPC_BT2020_NCL',
use='libav')
}, {
'name': 'avcodec-vdpau-alloc-context',
'desc': 'libavcodec vdpau non-sense',
'func': check_statement('libavcodec/vdpau.h',
'AVVDPAUContext *x = av_vdpau_alloc_context()',
use='libav')
}, {
'name': 'avcodec-metadata-update-side-data',
'desc': 'libavcodec AV_PKT_DATA_METADATA_UPDATE side data type',
'func': check_statement('libavcodec/avcodec.h',
'enum AVPacketSideDataType type = AV_PKT_DATA_METADATA_UPDATE',
use='libav')
}, {
'name': 'avformat-metadata-update-flag',
'desc': "libavformat metadata update flags",
'func': check_statement('libavformat/avformat.h',
'int x = AVFMT_EVENT_FLAG_METADATA_UPDATED',
use='libav')
}, {
'name': 'avcodec-replaygain-side-data',
'desc': 'libavcodec AV_PKT_DATA_REPLAYGAIN side data type',
'func': check_statement('libavcodec/avcodec.h',
'enum AVPacketSideDataType type = AV_PKT_DATA_REPLAYGAIN',
use='libav')
}, {
'name': 'av-displaymatrix',
'desc': 'libavutil/libavcodec display matrix side data',
'func': check_statement('libavutil/frame.h',
'enum AVFrameSideDataType type = AV_FRAME_DATA_DISPLAYMATRIX',
use='libav')
},{
'name': 'avframe-metadata',
'desc': 'libavutil AVFrame metadata',
'func': check_statement('libavutil/frame.h',
@ -463,13 +427,6 @@ FFmpeg/Libav libraries. You need at least {0}. Aborting.".format(libav_versions_
'func': check_statement('libavutil/frame.h',
'enum AVFrameSideDataType type = AV_FRAME_DATA_SKIP_SAMPLES',
use='libav')
}, {
'name': 'avframe-csp',
'desc': 'libavutil AVFrame colorspace information',
'func': check_statement('libavutil/frame.h',
'AVFrame frame;'
'frame.color_primaries = frame.color_trc = 0;',
use='libav')
}
]