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;
   }
openSUSE Build Service is sponsored by