File libmediascan-0.1-new-ffmpeg.patch of Package libmediascan
Fix building with new ffmpeg versions
New ffmpeg versions no longer allow registering some url handlers, instead
av_register_all() must be used.
diff -up libmediascan-0.1/src/mediascan.c~ libmediascan-0.1/src/mediascan.c
--- libmediascan-0.1/src/mediascan.c~ 2011-11-21 14:45:04.000000000 +0100
+++ libmediascan-0.1/src/mediascan.c 2014-08-08 16:30:00.851518447 +0200
@@ -92,116 +92,6 @@ static const char *VideoExts =
static const char *ImageExts = ",jpg,png,gif,bmp,jpeg,jpe,";
static const char *LnkExts = ",lnk,";
-#define REGISTER_DECODER(X,x) { \
- extern AVCodec ff_##x##_decoder; \
- avcodec_register(&ff_##x##_decoder); }
-
-#define REGISTER_PARSER(X,x) { \
- extern AVCodecParser ff_##x##_parser; \
- av_register_codec_parser(&ff_##x##_parser); }
-
-///-------------------------------------------------------------------------------------------------
-/// Register codecs to be used with ffmpeg.
-///
-/// @author Andy Grundman
-/// @date 03/15/2011
-///
-/// ### remarks .
-///-------------------------------------------------------------------------------------------------
-
-static void register_codecs(void) {
- // Video codecs
- REGISTER_DECODER(H263, h263);
- REGISTER_DECODER(H264, h264);
- REGISTER_DECODER(MPEG1VIDEO, mpeg1video);
- REGISTER_DECODER(MPEG2VIDEO, mpeg2video);
- REGISTER_DECODER(MPEG4, mpeg4);
- REGISTER_DECODER(MSMPEG4V1, msmpeg4v1);
- REGISTER_DECODER(MSMPEG4V2, msmpeg4v2);
- REGISTER_DECODER(MSMPEG4V3, msmpeg4v3);
- REGISTER_DECODER(VP6, vp6);
- REGISTER_DECODER(VP6F, vp6f);
- REGISTER_DECODER(VP8, vp8);
- REGISTER_DECODER(WMV1, wmv1);
- REGISTER_DECODER(WMV2, wmv2);
- REGISTER_DECODER(WMV3, wmv3);
- REGISTER_DECODER(MJPEG, mjpeg);
- REGISTER_DECODER(MJPEGB, mjpegb);
- REGISTER_DECODER(VC1, vc1);
- REGISTER_DECODER(FLV, flv);
-
-
- // Audio codecs, needed to get details of audio tracks in videos
- REGISTER_DECODER(AAC, aac);
- REGISTER_DECODER(AC3, ac3);
- REGISTER_DECODER(DCA, dca); // DTS
- REGISTER_DECODER(MP2, mp2);
- REGISTER_DECODER(MP3, mp3);
- REGISTER_DECODER(VORBIS, vorbis);
- REGISTER_DECODER(WMAPRO, wmapro);
- REGISTER_DECODER(WMAV1, wmav1);
- REGISTER_DECODER(WMAV2, wmav2);
- REGISTER_DECODER(WMAVOICE, wmavoice);
-
- // Not sure which PCM codecs we need
- REGISTER_DECODER(PCM_DVD, pcm_dvd);
- REGISTER_DECODER(PCM_S16BE, pcm_s16be);
- REGISTER_DECODER(PCM_S16LE, pcm_s16le);
- REGISTER_DECODER(PCM_S24BE, pcm_s24be);
- REGISTER_DECODER(PCM_S24LE, pcm_s24le);
-
- // Subtitles
- REGISTER_DECODER(ASS, ass);
- REGISTER_DECODER(DVBSUB, dvbsub);
- REGISTER_DECODER(DVDSUB, dvdsub);
- REGISTER_DECODER(PGSSUB, pgssub);
- REGISTER_DECODER(XSUB, xsub);
-
- // Parsers
- REGISTER_PARSER(AAC, aac);
- REGISTER_PARSER(AC3, ac3);
- REGISTER_PARSER(DCA, dca); // DTS
- REGISTER_PARSER(H263, h263);
- REGISTER_PARSER(H264, h264);
- REGISTER_PARSER(MPEG4VIDEO, mpeg4video);
- REGISTER_PARSER(MPEGAUDIO, mpegaudio);
- REGISTER_PARSER(MPEGVIDEO, mpegvideo);
- REGISTER_PARSER(MJPEG, mjpeg);
- REGISTER_PARSER(VC1, vc1);
-} /* register_codecs() */
-
-#define REGISTER_DEMUXER(X,x) { \
- extern AVInputFormat ff_##x##_demuxer; \
- av_register_input_format(&ff_##x##_demuxer); }
-#define REGISTER_PROTOCOL(X,x) { \
- extern URLProtocol ff_##x##_protocol; \
- av_register_protocol2(&ff_##x##_protocol, sizeof(ff_##x##_protocol)); }
-
-///-------------------------------------------------------------------------------------------------
-/// Registers the formats for FFmpeg.
-///
-/// @author Andy Grundman
-/// @date 03/15/2011
-///
-/// ### remarks .
-///-------------------------------------------------------------------------------------------------
-
-static void register_formats(void) {
- // demuxers
- REGISTER_DEMUXER(ASF, asf);
- REGISTER_DEMUXER(AVI, avi);
- REGISTER_DEMUXER(FLV, flv);
- REGISTER_DEMUXER(H264, h264);
- REGISTER_DEMUXER(MATROSKA, matroska);
- REGISTER_DEMUXER(MOV, mov);
- REGISTER_DEMUXER(MPEGPS, mpegps); // VOB files
- REGISTER_DEMUXER(MPEGTS, mpegts);
- REGISTER_DEMUXER(MPEGVIDEO, mpegvideo);
-
- // protocols
- REGISTER_PROTOCOL(FILE, file);
-} /* register_formats() */
-
///-------------------------------------------------------------------------------------------------
/// Initialises ffmpeg.
///
@@ -219,8 +109,7 @@ static void _init(void) {
if (Initialized)
return;
- register_codecs();
- register_formats();
+ av_register_all();
#ifdef WIN32
pthread_win32_process_attach_np();
pthread_win32_thread_attach_np();
diff -up libmediascan-0.1/src/video.c~ libmediascan-0.1/src/video.c
--- libmediascan-0.1/src/video.c~ 2011-11-21 00:37:19.000000000 +0100
+++ libmediascan-0.1/src/video.c 2014-08-08 17:55:54.770691566 +0200
@@ -64,7 +64,7 @@ MediaScanImage *video_create_image_from_
int no_keyframe_found = 0;
int skipped_frames = 0;
- if ((avcodec_open(codecs->vc, codec)) < 0) {
+ if ((avcodec_open2(codecs->vc, codec, NULL)) < 0) {
LOG_ERROR("Couldn't open video codec %s for thumbnail creation\n", codec->name);
goto err;
}