diff options
Diffstat (limited to 'gnu/packages/patches/libextractor-ffmpeg-3.patch')
-rw-r--r-- | gnu/packages/patches/libextractor-ffmpeg-3.patch | 360 |
1 files changed, 360 insertions, 0 deletions
diff --git a/gnu/packages/patches/libextractor-ffmpeg-3.patch b/gnu/packages/patches/libextractor-ffmpeg-3.patch new file mode 100644 index 0000000000..d0f83f624c --- /dev/null +++ b/gnu/packages/patches/libextractor-ffmpeg-3.patch @@ -0,0 +1,360 @@ +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 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[], +- enum PixelFormat src_pixfmt, ++ enum AVPixelFormat src_pixfmt, + const uint8_t * const src_data[], + int dst_width, int dst_height, + uint8_t **output_data, +@@ -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, ++ PIX_OUTPUT_FORMAT, + SWS_BILINEAR, NULL, NULL, NULL))) + { + #if DEBUG +@@ -199,7 +206,12 @@ + return 0; + } + +- if (NULL == (dst_frame = avcodec_alloc_frame ())) ++#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,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 (PIX_OUTPUT_FORMAT, ++ dst_width, dst_height)))) + { + #if DEBUG + fprintf (stderr, + "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); ++ PIX_OUTPUT_FORMAT, ++ dst_width, dst_height); + sws_scale (scaler_ctx, + src_data, + src_stride, +@@ -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 = PIX_OUTPUT_FORMAT; + opts = NULL; + if (avcodec_open2 (encoder_codec_ctx, encoder_codec, &opts) < 0) + { +@@ -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 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, + "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 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 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 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 + return AVERROR(ENOMEM); +@@ -655,7 +660,11 @@ + av_freep(&converted_input_samples[0]); + free(converted_input_samples); + } ++#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,10 +680,15 @@ + int error; + + /** Create a new frame to store the audio samples. */ +- if (!(*frame = avcodec_alloc_frame())) { +- #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 ++#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 ++#endif ++#if LIBAVCODEC_VERSION_INT >= AV_VERSION_INT(55,28,1) ++ av_frame_free (frame); ++#else + avcodec_free_frame(frame); ++#endif + return error; + } + +@@ -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 ++#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)) { ++#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; + } ++#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 +937,12 @@ + return; + } + +- if (NULL == (frame = avcodec_alloc_frame ())) ++#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, |