From 361bc34f93cc53fbc63a78d99e89f64de1e71a07 Mon Sep 17 00:00:00 2001 From: Justin Maggard Date: Wed, 14 May 2014 15:44:15 -0700 Subject: [PATCH] metadata: add libavcodec > 54 compatibility libavcodec55 brings some API changes, including CodecID => AVCodecID. Add a compatibility wrapper so we can build with libavcodec >= 55. --- libav.h | 21 +++++++++++++++++++++ metadata.c | 38 +++++++++++++++++++------------------- 2 files changed, 40 insertions(+), 19 deletions(-) diff --git a/libav.h b/libav.h index 4e53164..4ef7f18 100644 --- a/libav.h +++ b/libav.h @@ -78,6 +78,27 @@ #define AVMEDIA_TYPE_VIDEO CODEC_TYPE_VIDEO #endif +#if LIBAVCODEC_VERSION_MAJOR < 55 +#define AV_CODEC_ID_AAC CODEC_ID_AAC +#define AV_CODEC_ID_AC3 CODEC_ID_AC3 +#define AV_CODEC_ID_ADPCM_IMA_QT CODEC_ID_ADPCM_IMA_QT +#define AV_CODEC_ID_AMR_NB CODEC_ID_AMR_NB +#define AV_CODEC_ID_DTS CODEC_ID_DTS +#define AV_CODEC_ID_H264 CODEC_ID_H264 +#define AV_CODEC_ID_MP2 CODEC_ID_MP2 +#define AV_CODEC_ID_MP3 CODEC_ID_MP3 +#define AV_CODEC_ID_MPEG1VIDEO CODEC_ID_MPEG1VIDEO +#define AV_CODEC_ID_MPEG2VIDEO CODEC_ID_MPEG2VIDEO +#define AV_CODEC_ID_MPEG4 CODEC_ID_MPEG4 +#define AV_CODEC_ID_MSMPEG4V3 CODEC_ID_MSMPEG4V3 +#define AV_CODEC_ID_PCM_S16LE CODEC_ID_PCM_S16LE +#define AV_CODEC_ID_VC1 CODEC_ID_VC1 +#define AV_CODEC_ID_WMAPRO CODEC_ID_WMAPRO +#define AV_CODEC_ID_WMAV1 CODEC_ID_WMAV1 +#define AV_CODEC_ID_WMAV2 CODEC_ID_WMAV2 +#define AV_CODEC_ID_WMV3 CODEC_ID_WMV3 +#endif + #if LIBAVUTIL_VERSION_INT < ((50<<16)+(13<<8)+0) #define av_strerror(x, y, z) snprintf(y, z, "%d", x) #endif diff --git a/metadata.c b/metadata.c index 645997a..2ed36f7 100644 --- a/metadata.c +++ b/metadata.c @@ -773,10 +773,10 @@ GetVideoMetadata(const char *path, char *name) aac_object_type_t aac_type = AAC_INVALID; switch( ac->codec_id ) { - case CODEC_ID_MP3: + case AV_CODEC_ID_MP3: audio_profile = PROFILE_AUDIO_MP3; break; - case CODEC_ID_AAC: + case AV_CODEC_ID_AAC: if( !ac->extradata_size || !ac->extradata ) { @@ -817,12 +817,12 @@ GetVideoMetadata(const char *path, char *name) break; } break; - case CODEC_ID_AC3: - case CODEC_ID_DTS: + case AV_CODEC_ID_AC3: + case AV_CODEC_ID_DTS: audio_profile = PROFILE_AUDIO_AC3; break; - case CODEC_ID_WMAV1: - case CODEC_ID_WMAV2: + case AV_CODEC_ID_WMAV1: + case AV_CODEC_ID_WMAV2: /* WMA Baseline: stereo, up to 48 KHz, up to 192,999 bps */ if ( ac->bit_rate <= 193000 ) audio_profile = PROFILE_AUDIO_WMA_BASE; @@ -831,19 +831,19 @@ GetVideoMetadata(const char *path, char *name) audio_profile = PROFILE_AUDIO_WMA_FULL; break; #if LIBAVCODEC_VERSION_INT > ((51<<16)+(50<<8)+1) - case CODEC_ID_WMAPRO: + case AV_CODEC_ID_WMAPRO: audio_profile = PROFILE_AUDIO_WMA_PRO; break; #endif - case CODEC_ID_MP2: + case AV_CODEC_ID_MP2: audio_profile = PROFILE_AUDIO_MP2; break; - case CODEC_ID_AMR_NB: + case AV_CODEC_ID_AMR_NB: audio_profile = PROFILE_AUDIO_AMR; break; default: - if( (ac->codec_id >= CODEC_ID_PCM_S16LE) && - (ac->codec_id < CODEC_ID_ADPCM_IMA_QT) ) + if( (ac->codec_id >= AV_CODEC_ID_PCM_S16LE) && + (ac->codec_id < AV_CODEC_ID_ADPCM_IMA_QT) ) audio_profile = PROFILE_AUDIO_PCM; else DPRINTF(E_DEBUG, L_METADATA, "Unhandled audio codec [0x%X]\n", ac->codec_id); @@ -880,7 +880,7 @@ GetVideoMetadata(const char *path, char *name) if( strcmp(ctx->iformat->name, "avi") == 0 ) { xasprintf(&m.mime, "video/x-msvideo"); - if( vc->codec_id == CODEC_ID_MPEG4 ) + if( vc->codec_id == AV_CODEC_ID_MPEG4 ) { fourcc[0] = vc->codec_tag & 0xff; fourcc[1] = vc->codec_tag>>8 & 0xff; @@ -904,7 +904,7 @@ GetVideoMetadata(const char *path, char *name) switch( vc->codec_id ) { - case CODEC_ID_MPEG1VIDEO: + case AV_CODEC_ID_MPEG1VIDEO: if( strcmp(ctx->iformat->name, "mpeg") == 0 ) { if( (vc->width == 352) && @@ -915,7 +915,7 @@ GetVideoMetadata(const char *path, char *name) xasprintf(&m.mime, "video/mpeg"); } break; - case CODEC_ID_MPEG2VIDEO: + case AV_CODEC_ID_MPEG2VIDEO: m.dlna_pn = malloc(64); off = sprintf(m.dlna_pn, "MPEG_"); if( strcmp(ctx->iformat->name, "mpegts") == 0 ) @@ -988,7 +988,7 @@ GetVideoMetadata(const char *path, char *name) m.dlna_pn = NULL; } break; - case CODEC_ID_H264: + case AV_CODEC_ID_H264: m.dlna_pn = malloc(128); off = sprintf(m.dlna_pn, "AVC_"); @@ -1299,7 +1299,7 @@ GetVideoMetadata(const char *path, char *name) } DPRINTF(E_DEBUG, L_METADATA, "Stream %d of %s is h.264\n", video_stream, basepath); break; - case CODEC_ID_MPEG4: + case AV_CODEC_ID_MPEG4: fourcc[0] = vc->codec_tag & 0xff; fourcc[1] = vc->codec_tag>>8 & 0xff; fourcc[2] = vc->codec_tag>>16 & 0xff; @@ -1362,7 +1362,7 @@ GetVideoMetadata(const char *path, char *name) } } break; - case CODEC_ID_WMV3: + case AV_CODEC_ID_WMV3: /* I'm not 100% sure this is correct, but it works on everything I could get my hands on */ if( vc->extradata_size > 0 ) { @@ -1371,7 +1371,7 @@ GetVideoMetadata(const char *path, char *name) if( !((vc->extradata[0] >> 6) & 1) ) vc->profile = 0; } - case CODEC_ID_VC1: + case AV_CODEC_ID_VC1: if( strcmp(ctx->iformat->name, "asf") != 0 ) { DPRINTF(E_DEBUG, L_METADATA, "Skipping DLNA parsing for non-ASF VC1 file %s\n", path); @@ -1470,7 +1470,7 @@ GetVideoMetadata(const char *path, char *name) } } break; - case CODEC_ID_MSMPEG4V3: + case AV_CODEC_ID_MSMPEG4V3: xasprintf(&m.mime, "video/x-msvideo"); default: DPRINTF(E_DEBUG, L_METADATA, "Stream %d of %s is %s [type %d]\n",