summary refs log tree commit diff
diff options
context:
space:
mode:
authorMark H Weaver <mhw@netris.org>2016-04-04 23:48:34 -0400
committerMark H Weaver <mhw@netris.org>2016-04-04 23:49:48 -0400
commit37b2dba1ccfff25b3beb8f50515c0ec14ed27f8e (patch)
tree2fb213f4042d1bf487e3184057fdf0c450cf0c41
parentfd7fd3c1678a63eb22995fef1d1eed09ff57efe6 (diff)
downloadguix-37b2dba1ccfff25b3beb8f50515c0ec14ed27f8e.tar.gz
gnu: libextractor: Improve ffmpeg-3 patch.
* gnu/packages/patches/libextractor-ffmpeg-3.patch: Add additional
fixes and harmonize with patches in upstream repository.
-rw-r--r--gnu/packages/patches/libextractor-ffmpeg-3.patch307
1 files changed, 260 insertions, 47 deletions
diff --git a/gnu/packages/patches/libextractor-ffmpeg-3.patch b/gnu/packages/patches/libextractor-ffmpeg-3.patch
index 7688bdc37f..d0f83f624c 100644
--- a/gnu/packages/patches/libextractor-ffmpeg-3.patch
+++ b/gnu/packages/patches/libextractor-ffmpeg-3.patch
@@ -1,11 +1,23 @@
-Fix build for ffmpeg-3.0.
-Based on a patch by Andreas Cadhalpun <Andreas.Cadhalpun@googlemail.com>
-for ffmpeg-2.9, found at <https://gnunet.org/bugs/view.php?id=4167>
-and later modified by Mark H Weaver <mhw@netris.org> for ffmpeg-3.0.
+Fix build with ffmpeg-3, based on upstream revisions r35548 and r35549 by LRN
+and r36975 by Christian Grothoff, and backported to libextractor-1.3 by
+Mark H Weaver <mhw@netris.org>
 
 --- libextractor-1.3/src/plugins/thumbnailffmpeg_extractor.c.orig	2013-12-21 11:04:41.000000000 -0500
-+++ libextractor-1.3/src/plugins/thumbnailffmpeg_extractor.c	2016-04-04 22:42:17.859001669 -0400
-@@ -153,7 +153,7 @@
++++ libextractor-1.3/src/plugins/thumbnailffmpeg_extractor.c	2016-04-04 23:38:46.429041081 -0400
+@@ -59,6 +59,12 @@
+ #include <ffmpeg/swscale.h>
+ #endif
+ 
++#ifdef PIX_FMT_RGB24
++#define PIX_OUTPUT_FORMAT PIX_FMT_RGB24
++#else
++#define PIX_OUTPUT_FORMAT AV_PIX_FMT_RGB24
++#endif
++
+ /**
+  * Set to 1 to enable debug output.
+  */ 
+@@ -153,7 +159,7 @@
  static size_t 
  create_thumbnail (int src_width, int src_height, 
  		  int src_stride[],
@@ -14,134 +26,335 @@ and later modified by Mark H Weaver <mhw@netris.org> for ffmpeg-3.0.
  		  const uint8_t * const src_data[],
  		  int dst_width, int dst_height,
  		  uint8_t **output_data, 
-@@ -189,7 +189,7 @@
+@@ -189,7 +195,8 @@
    if (NULL == 
        (scaler_ctx =
         sws_getContext (src_width, src_height, src_pixfmt,
 -		       dst_width, dst_height, PIX_FMT_RGB24, 
-+		       dst_width, dst_height, AV_PIX_FMT_RGB24,
++		       dst_width, dst_height,
++		       PIX_OUTPUT_FORMAT,
  		       SWS_BILINEAR, NULL, NULL, NULL)))
      {
  #if DEBUG
-@@ -199,7 +199,7 @@
+@@ -199,7 +206,12 @@
        return 0;
      }
  
 -  if (NULL == (dst_frame = avcodec_alloc_frame ()))
-+  if (NULL == (dst_frame = av_frame_alloc ()))
++#if LIBAVCODEC_VERSION_INT >= AV_VERSION_INT(55,28,1)
++  dst_frame = av_frame_alloc ();
++#else
++  dst_frame = avcodec_alloc_frame();
++#endif
++  if (NULL == dst_frame)
      {
  #if DEBUG
        fprintf (stderr,
-@@ -209,7 +209,7 @@
+@@ -209,18 +221,24 @@
        return 0;
      }
    if (NULL == (dst_buffer =
 -	       av_malloc (avpicture_get_size (PIX_FMT_RGB24, dst_width, dst_height))))
-+	       av_malloc (avpicture_get_size (AV_PIX_FMT_RGB24, dst_width, dst_height))))
++	       av_malloc (avpicture_get_size (PIX_OUTPUT_FORMAT,
++					      dst_width, dst_height))))
      {
  #if DEBUG
        fprintf (stderr,
-@@ -220,7 +220,7 @@
+                "Failed to allocate the destination image buffer\n");
+ #endif
+-      av_free (dst_frame);
++#if LIBAVCODEC_VERSION_INT >= AV_VERSION_INT(55,28,1)
++      av_frame_free (&dst_frame);
++#else
++      avcodec_free_frame (&dst_frame);
++#endif
+       sws_freeContext (scaler_ctx);
        return 0;
      }
    avpicture_fill ((AVPicture *) dst_frame, dst_buffer,
 -                  PIX_FMT_RGB24, dst_width, dst_height);
-+                  AV_PIX_FMT_RGB24, dst_width, dst_height);
++                  PIX_OUTPUT_FORMAT,
++                  dst_width, dst_height);
    sws_scale (scaler_ctx,
               src_data, 
               src_stride,
-@@ -255,7 +255,7 @@
+@@ -236,7 +254,11 @@
+                "Failed to allocate the encoder output buffer\n");
+ #endif
+       av_free (dst_buffer);
+-      av_free (dst_frame);
++#if LIBAVCODEC_VERSION_INT >= AV_VERSION_INT(55,28,1)
++      av_frame_free (&dst_frame);
++#else
++      avcodec_free_frame (&dst_frame);
++#endif
+       sws_freeContext (scaler_ctx);
+       return 0;
+     }
+@@ -249,13 +271,17 @@
+ #endif
+       av_free (encoder_output_buffer);
+       av_free (dst_buffer);
+-      av_free (dst_frame);
++#if LIBAVCODEC_VERSION_INT >= AV_VERSION_INT(55,28,1)
++      av_frame_free (&dst_frame);
++#else
++      avcodec_free_frame (&dst_frame);
++#endif
+       sws_freeContext (scaler_ctx);
+       return 0;
      }
    encoder_codec_ctx->width = dst_width;
    encoder_codec_ctx->height = dst_height;
 -  encoder_codec_ctx->pix_fmt = PIX_FMT_RGB24;
-+  encoder_codec_ctx->pix_fmt = AV_PIX_FMT_RGB24;
++  encoder_codec_ctx->pix_fmt = PIX_OUTPUT_FORMAT;
    opts = NULL;
    if (avcodec_open2 (encoder_codec_ctx, encoder_codec, &opts) < 0)
      {
-@@ -410,7 +410,7 @@
+@@ -263,10 +289,14 @@
+       fprintf (stderr,
+                "Failed to open the encoder\n");
+ #endif
+-      av_free (encoder_codec_ctx);
++      avcodec_free_context (&encoder_codec_ctx);
+       av_free (encoder_output_buffer);
+       av_free (dst_buffer);
+-      av_free (dst_frame);
++#if LIBAVCODEC_VERSION_INT >= AV_VERSION_INT(55,28,1)
++      av_frame_free (&dst_frame);
++#else
++      avcodec_free_frame (&dst_frame);
++#endif
+       sws_freeContext  (scaler_ctx);
+       return 0;
+     }
+@@ -295,9 +325,13 @@
+ cleanup:
+   av_dict_free (&opts);
+   avcodec_close (encoder_codec_ctx);
+-  av_free (encoder_codec_ctx);
++  avcodec_free_context (&encoder_codec_ctx);
+   av_free (dst_buffer);
+-  av_free (dst_frame);
++#if LIBAVCODEC_VERSION_INT >= AV_VERSION_INT(55,28,1)
++  av_frame_free (&dst_frame);
++#else
++  avcodec_free_frame (&dst_frame);
++#endif
+   sws_freeContext (scaler_ctx);
+   *output_data = encoder_output_buffer;
+ 
+@@ -406,18 +440,23 @@
+       fprintf (stderr,
+ 	       "Failed to open image codec\n");
+ #endif
+-      av_free (codec_ctx);
++      avcodec_free_context (&codec_ctx);
        return;
      }
    av_dict_free (&opts);
 -  if (NULL == (frame = avcodec_alloc_frame ()))
-+  if (NULL == (frame = av_frame_alloc ()))
++#if LIBAVCODEC_VERSION_INT >= AV_VERSION_INT(55,28,1)
++  frame = av_frame_alloc ();
++#else
++  frame = avcodec_alloc_frame();
++#endif
++  if (NULL == frame)
      {
  #if DEBUG
        fprintf (stderr,
-@@ -563,7 +563,7 @@
+                "Failed to allocate frame\n");
+ #endif
+       avcodec_close (codec_ctx);
+-      av_free (codec_ctx);
++      avcodec_free_context (&codec_ctx);
+       return;
+     }
+ 
+@@ -441,9 +480,13 @@
+       fprintf (stderr,
+ 	       "Failed to decode a complete frame\n");
+ #endif
+-      av_free (frame);
++#if LIBAVCODEC_VERSION_INT >= AV_VERSION_INT(55,28,1)
++      av_frame_free (&frame);
++#else
++      avcodec_free_frame (&frame);
++#endif
+       avcodec_close (codec_ctx);
+-      av_free (codec_ctx);
++      avcodec_free_context (&codec_ctx);
+       return;
+     }
+   calculate_thumbnail_dimensions (codec_ctx->width, codec_ctx->height,
+@@ -467,9 +510,13 @@
+ 		err);
+       av_free (encoded_thumbnail);
+     }
+-  av_free (frame);
++#if LIBAVCODEC_VERSION_INT >= AV_VERSION_INT(55,28,1)
++  av_frame_free (&frame);
++#else
++  avcodec_free_frame (&frame);
++#endif
+   avcodec_close (codec_ctx);
+-  av_free (codec_ctx);
++  avcodec_free_context (&codec_ctx);
+ }
+ 
+ 
+@@ -563,7 +610,12 @@
        return;
      }
  
 -  if (NULL == (frame = avcodec_alloc_frame ()))
-+  if (NULL == (frame = av_frame_alloc ()))
++#if LIBAVCODEC_VERSION_INT >= AV_VERSION_INT(55,28,1)
++  frame = av_frame_alloc ();
++#else
++  frame = avcodec_alloc_frame();
++#endif
++  if (NULL == frame)
      {
  #if DEBUG
        fprintf (stderr,
+@@ -616,7 +668,11 @@
+       fprintf (stderr,
+ 	       "Failed to decode a complete frame\n");
+ #endif
+-      av_free (frame);
++#if LIBAVCODEC_VERSION_INT >= AV_VERSION_INT(55,28,1)
++      av_frame_free (&frame);
++#else
++      avcodec_free_frame (&frame);
++#endif
+       avcodec_close (codec_ctx);
+       avformat_close_input (&format_ctx);
+       av_free (io_ctx);
+@@ -643,7 +699,11 @@
+ 		err);
+       av_free (encoded_thumbnail);
+     }
+-  av_free (frame);
++#if LIBAVCODEC_VERSION_INT >= AV_VERSION_INT(55,28,1)
++  av_frame_free (&frame);
++#else
++  avcodec_free_frame (&frame);
++#endif
+   avcodec_close (codec_ctx);
+   avformat_close_input (&format_ctx);
+   av_free (io_ctx);
 --- libextractor-1.3/src/plugins/previewopus_extractor.c.orig	2013-12-22 17:44:18.000000000 -0500
-+++ libextractor-1.3/src/plugins/previewopus_extractor.c	2016-04-04 22:49:05.168105265 -0400
-@@ -296,7 +296,7 @@
++++ libextractor-1.3/src/plugins/previewopus_extractor.c	2016-04-04 23:39:41.377720710 -0400
+@@ -296,8 +296,13 @@
  /** Initialize one audio frame for reading from the input file */
  static int init_input_frame(AVFrame **frame)
  {
 -    if (!(*frame = avcodec_alloc_frame())) {
-+    if (!(*frame = av_frame_alloc())) {
-  #if DEBUG
+- #if DEBUG
++#if LIBAVCODEC_VERSION_INT >= AV_VERSION_INT(55,28,1)
++    *frame = av_frame_alloc ();
++#else
++    *frame = avcodec_alloc_frame();
++#endif
++    if (NULL == *frame) {
++#if DEBUG
          fprintf(stderr, "Could not allocate input frame\n");
  #endif
-@@ -655,7 +655,7 @@
+         return AVERROR(ENOMEM);
+@@ -655,7 +660,11 @@
          av_freep(&converted_input_samples[0]);
          free(converted_input_samples);
      }
--    avcodec_free_frame(&input_frame);
-+    av_frame_free(&input_frame);
++#if LIBAVCODEC_VERSION_INT >= AV_VERSION_INT(55,28,1)
++    av_frame_free (&input_frame);
++#else
+     avcodec_free_frame(&input_frame);
++#endif
  
      return ret;
  }
-@@ -671,7 +671,7 @@
+@@ -671,10 +680,15 @@
      int error;
  
      /** Create a new frame to store the audio samples. */
 -    if (!(*frame = avcodec_alloc_frame())) {
-+    if (!(*frame = av_frame_alloc())) {
-         #if DEBUG
+-        #if DEBUG
++#if LIBAVCODEC_VERSION_INT >= AV_VERSION_INT(55,28,1)
++    *frame = av_frame_alloc ();
++#else
++    *frame = avcodec_alloc_frame();
++#endif
++    if (NULL == *frame) {
++#if DEBUG
  		fprintf(stderr, "Could not allocate output frame\n");
- 		#endif
-@@ -702,7 +702,7 @@
-         #if DEBUG
+-		#endif
++#endif
+         return AVERROR_EXIT;
+     }
+ 
+@@ -699,10 +713,14 @@
+      * sure that the audio frame can hold as many samples as specified.
+      */
+     if ((error = av_frame_get_buffer(*frame, 0)) < 0) {
+-        #if DEBUG
++#if DEBUG
  		fprintf(stderr, "Could allocate output frame samples (error '%s')\n", get_error_text(error));
- 		#endif
--        avcodec_free_frame(frame);
-+        av_frame_free(frame);
+-		#endif
++#endif
++#if LIBAVCODEC_VERSION_INT >= AV_VERSION_INT(55,28,1)
++        av_frame_free (frame);
++#else
+         avcodec_free_frame(frame);
++#endif
          return error;
      }
  
-@@ -783,17 +783,17 @@
-         #if DEBUG
+@@ -780,20 +798,32 @@
+      * The samples are stored in the frame temporarily.
+      */
+     if (av_audio_fifo_read(fifo, (void **)output_frame->data, frame_size) < frame_size) {
+-        #if DEBUG
++#if DEBUG
  		fprintf(stderr, "Could not read data from FIFO\n");
- 		#endif
--        avcodec_free_frame(&output_frame);
-+        av_frame_free(&output_frame);
+-		#endif
++#endif
++#if LIBAVCODEC_VERSION_INT >= AV_VERSION_INT(55,28,1)
++        av_frame_free (&output_frame);
++#else
+         avcodec_free_frame(&output_frame);
++#endif
          return AVERROR_EXIT;
      }
  
      /** Encode one frame worth of audio samples. */
      if (encode_audio_frame(output_frame, output_format_context,
                             output_codec_context, &data_written)) {
--        avcodec_free_frame(&output_frame);
-+        av_frame_free(&output_frame);
++#if LIBAVCODEC_VERSION_INT >= AV_VERSION_INT(55,28,1)
++        av_frame_free (&output_frame);
++#else
+         avcodec_free_frame(&output_frame);
++#endif
          return AVERROR_EXIT;
      }
--    avcodec_free_frame(&output_frame);
-+    av_frame_free(&output_frame);
++#if LIBAVCODEC_VERSION_INT >= AV_VERSION_INT(55,28,1)
++    av_frame_free (&output_frame);
++#else
+     avcodec_free_frame(&output_frame);
++#endif
      return 0;
  }
  /** Write the trailer of the output file container. */
-@@ -907,7 +907,7 @@
+@@ -907,7 +937,12 @@
        return;
      }
  
 -  if (NULL == (frame = avcodec_alloc_frame ()))
-+  if (NULL == (frame = av_frame_alloc ()))
++#if LIBAVCODEC_VERSION_INT >= AV_VERSION_INT(55,28,1)
++  frame = av_frame_alloc ();
++#else
++  frame = avcodec_alloc_frame();
++#endif
++  if (NULL == frame)
      {
  #if DEBUG
        fprintf (stderr,