gnu: libextractor: Improve ffmpeg-3 patch.
* gnu/packages/patches/libextractor-ffmpeg-3.patch: Add additional fixes and harmonize with patches in upstream repository.
This commit is contained in:
parent
fd7fd3c167
commit
37b2dba1cc
|
@ -1,11 +1,23 @@
|
||||||
Fix build for ffmpeg-3.0.
|
Fix build with ffmpeg-3, based on upstream revisions r35548 and r35549 by LRN
|
||||||
Based on a patch by Andreas Cadhalpun <Andreas.Cadhalpun@googlemail.com>
|
and r36975 by Christian Grothoff, and backported to libextractor-1.3 by
|
||||||
for ffmpeg-2.9, found at <https://gnunet.org/bugs/view.php?id=4167>
|
Mark H Weaver <mhw@netris.org>
|
||||||
and later modified by Mark H Weaver <mhw@netris.org> for ffmpeg-3.0.
|
|
||||||
|
|
||||||
--- 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.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
|
+++ libextractor-1.3/src/plugins/thumbnailffmpeg_extractor.c 2016-04-04 23:38:46.429041081 -0400
|
||||||
@@ -153,7 +153,7 @@
|
@@ -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
|
static size_t
|
||||||
create_thumbnail (int src_width, int src_height,
|
create_thumbnail (int src_width, int src_height,
|
||||||
int src_stride[],
|
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[],
|
const uint8_t * const src_data[],
|
||||||
int dst_width, int dst_height,
|
int dst_width, int dst_height,
|
||||||
uint8_t **output_data,
|
uint8_t **output_data,
|
||||||
@@ -189,7 +189,7 @@
|
@@ -189,7 +195,8 @@
|
||||||
if (NULL ==
|
if (NULL ==
|
||||||
(scaler_ctx =
|
(scaler_ctx =
|
||||||
sws_getContext (src_width, src_height, src_pixfmt,
|
sws_getContext (src_width, src_height, src_pixfmt,
|
||||||
- dst_width, dst_height, PIX_FMT_RGB24,
|
- 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)))
|
SWS_BILINEAR, NULL, NULL, NULL)))
|
||||||
{
|
{
|
||||||
#if DEBUG
|
#if DEBUG
|
||||||
@@ -199,7 +199,7 @@
|
@@ -199,7 +206,12 @@
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
- if (NULL == (dst_frame = avcodec_alloc_frame ()))
|
- 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
|
#if DEBUG
|
||||||
fprintf (stderr,
|
fprintf (stderr,
|
||||||
@@ -209,7 +209,7 @@
|
@@ -209,18 +221,24 @@
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
if (NULL == (dst_buffer =
|
if (NULL == (dst_buffer =
|
||||||
- av_malloc (avpicture_get_size (PIX_FMT_RGB24, dst_width, dst_height))))
|
- 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
|
#if DEBUG
|
||||||
fprintf (stderr,
|
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;
|
return 0;
|
||||||
}
|
}
|
||||||
avpicture_fill ((AVPicture *) dst_frame, dst_buffer,
|
avpicture_fill ((AVPicture *) dst_frame, dst_buffer,
|
||||||
- PIX_FMT_RGB24, dst_width, dst_height);
|
- 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,
|
sws_scale (scaler_ctx,
|
||||||
src_data,
|
src_data,
|
||||||
src_stride,
|
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->width = dst_width;
|
||||||
encoder_codec_ctx->height = dst_height;
|
encoder_codec_ctx->height = dst_height;
|
||||||
- encoder_codec_ctx->pix_fmt = PIX_FMT_RGB24;
|
- 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;
|
opts = NULL;
|
||||||
if (avcodec_open2 (encoder_codec_ctx, encoder_codec, &opts) < 0)
|
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;
|
return;
|
||||||
}
|
}
|
||||||
av_dict_free (&opts);
|
av_dict_free (&opts);
|
||||||
- if (NULL == (frame = avcodec_alloc_frame ()))
|
- 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
|
#if DEBUG
|
||||||
fprintf (stderr,
|
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;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
- if (NULL == (frame = avcodec_alloc_frame ()))
|
- 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
|
#if DEBUG
|
||||||
fprintf (stderr,
|
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.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
|
+++ libextractor-1.3/src/plugins/previewopus_extractor.c 2016-04-04 23:39:41.377720710 -0400
|
||||||
@@ -296,7 +296,7 @@
|
@@ -296,8 +296,13 @@
|
||||||
/** Initialize one audio frame for reading from the input file */
|
/** Initialize one audio frame for reading from the input file */
|
||||||
static int init_input_frame(AVFrame **frame)
|
static int init_input_frame(AVFrame **frame)
|
||||||
{
|
{
|
||||||
- if (!(*frame = avcodec_alloc_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");
|
fprintf(stderr, "Could not allocate input frame\n");
|
||||||
#endif
|
#endif
|
||||||
@@ -655,7 +655,7 @@
|
return AVERROR(ENOMEM);
|
||||||
|
@@ -655,7 +660,11 @@
|
||||||
av_freep(&converted_input_samples[0]);
|
av_freep(&converted_input_samples[0]);
|
||||||
free(converted_input_samples);
|
free(converted_input_samples);
|
||||||
}
|
}
|
||||||
- avcodec_free_frame(&input_frame);
|
+#if LIBAVCODEC_VERSION_INT >= AV_VERSION_INT(55,28,1)
|
||||||
+ av_frame_free(&input_frame);
|
+ av_frame_free (&input_frame);
|
||||||
|
+#else
|
||||||
|
avcodec_free_frame(&input_frame);
|
||||||
|
+#endif
|
||||||
|
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
@@ -671,7 +671,7 @@
|
@@ -671,10 +680,15 @@
|
||||||
int error;
|
int error;
|
||||||
|
|
||||||
/** Create a new frame to store the audio samples. */
|
/** Create a new frame to store the audio samples. */
|
||||||
- if (!(*frame = avcodec_alloc_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 output frame\n");
|
fprintf(stderr, "Could not allocate output frame\n");
|
||||||
#endif
|
- #endif
|
||||||
@@ -702,7 +702,7 @@
|
+#endif
|
||||||
#if DEBUG
|
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));
|
fprintf(stderr, "Could allocate output frame samples (error '%s')\n", get_error_text(error));
|
||||||
#endif
|
- #endif
|
||||||
- avcodec_free_frame(frame);
|
+#endif
|
||||||
+ av_frame_free(frame);
|
+#if LIBAVCODEC_VERSION_INT >= AV_VERSION_INT(55,28,1)
|
||||||
|
+ av_frame_free (frame);
|
||||||
|
+#else
|
||||||
|
avcodec_free_frame(frame);
|
||||||
|
+#endif
|
||||||
return error;
|
return error;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -783,17 +783,17 @@
|
@@ -780,20 +798,32 @@
|
||||||
#if DEBUG
|
* 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");
|
fprintf(stderr, "Could not read data from FIFO\n");
|
||||||
#endif
|
- #endif
|
||||||
- avcodec_free_frame(&output_frame);
|
+#endif
|
||||||
+ 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;
|
return AVERROR_EXIT;
|
||||||
}
|
}
|
||||||
|
|
||||||
/** Encode one frame worth of audio samples. */
|
/** Encode one frame worth of audio samples. */
|
||||||
if (encode_audio_frame(output_frame, output_format_context,
|
if (encode_audio_frame(output_frame, output_format_context,
|
||||||
output_codec_context, &data_written)) {
|
output_codec_context, &data_written)) {
|
||||||
- avcodec_free_frame(&output_frame);
|
+#if LIBAVCODEC_VERSION_INT >= AV_VERSION_INT(55,28,1)
|
||||||
+ av_frame_free(&output_frame);
|
+ av_frame_free (&output_frame);
|
||||||
|
+#else
|
||||||
|
avcodec_free_frame(&output_frame);
|
||||||
|
+#endif
|
||||||
return AVERROR_EXIT;
|
return AVERROR_EXIT;
|
||||||
}
|
}
|
||||||
- avcodec_free_frame(&output_frame);
|
+#if LIBAVCODEC_VERSION_INT >= AV_VERSION_INT(55,28,1)
|
||||||
+ av_frame_free(&output_frame);
|
+ av_frame_free (&output_frame);
|
||||||
|
+#else
|
||||||
|
avcodec_free_frame(&output_frame);
|
||||||
|
+#endif
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
/** Write the trailer of the output file container. */
|
/** Write the trailer of the output file container. */
|
||||||
@@ -907,7 +907,7 @@
|
@@ -907,7 +937,12 @@
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
- if (NULL == (frame = avcodec_alloc_frame ()))
|
- 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
|
#if DEBUG
|
||||||
fprintf (stderr,
|
fprintf (stderr,
|
||||||
|
|
Loading…
Reference in New Issue