summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
Diffstat (limited to 'media-sound/sox/files/sox-14.4.0-avcodec54.patch')
-rw-r--r--media-sound/sox/files/sox-14.4.0-avcodec54.patch103
1 files changed, 103 insertions, 0 deletions
diff --git a/media-sound/sox/files/sox-14.4.0-avcodec54.patch b/media-sound/sox/files/sox-14.4.0-avcodec54.patch
new file mode 100644
index 000000000000..a9551f8e945d
--- /dev/null
+++ b/media-sound/sox/files/sox-14.4.0-avcodec54.patch
@@ -0,0 +1,103 @@
+Fix build with ffmpeg 0.11.
+https://bugs.gentoo.org/show_bug.cgi?id=407621
+
+Index: sox-14.4.0/m4/ffmpeg.m4
+===================================================================
+--- sox-14.4.0.orig/m4/ffmpeg.m4
++++ sox-14.4.0/m4/ffmpeg.m4
+@@ -49,7 +49,7 @@ then
+ LIBS="$LIBS $FFMPEG_LIBS"
+ have_ffmpeg="no"
+ AC_CHECK_HEADERS([libavformat/avformat.h ffmpeg/avformat.h],
+- [AC_CHECK_LIB(avformat, av_open_input_file,
++ [AC_CHECK_LIB(avformat, avformat_open_input,
+ [AC_CHECK_HEADERS([libavcodec/avcodec.h ffmpeg/avcodec.h],
+ [AC_CHECK_LIB(avcodec, avcodec_decode_audio3, have_ffmpeg=yes)])])
+ break])
+Index: sox-14.4.0/src/ffmpeg.c
+===================================================================
+--- sox-14.4.0.orig/src/ffmpeg.c
++++ sox-14.4.0/src/ffmpeg.c
+@@ -92,8 +92,10 @@ static int stream_component_open(priv_t
+ enc->workaround_bugs = 1;
+ #if LIBAVCODEC_VERSION_INT < ((52<<16)+(0<<8)+0)
+ enc->error_resilience = 1;
+-#else
++#elif LIBAVCODEC_VERSION_INT < ((54<<16)+(0<<8)+0)
+ enc->error_recognition = 1;
++#else
++ ic->error_recognition = 1;
+ #endif
+
+ if (!codec || avcodec_open(enc, codec) < 0)
+@@ -157,7 +159,7 @@ static int audio_decode_frame(priv_t * f
+ static int startread(sox_format_t * ft)
+ {
+ priv_t * ffmpeg = (priv_t *)ft->priv;
+- AVFormatParameters params;
++ AVDictionary *params;
+ int ret;
+ int i;
+
+@@ -172,7 +174,7 @@ static int startread(sox_format_t * ft)
+
+ /* Open file and get format */
+ memset(&params, 0, sizeof(params));
+- if ((ret = av_open_input_file(&ffmpeg->ctxt, ft->filename, NULL, 0, &params)) < 0) {
++ if ((ret = avformat_open_input(&ffmpeg->ctxt, ft->filename, NULL, &params)) < 0) {
+ lsx_fail("ffmpeg cannot open file for reading: %s (code %d)", ft->filename, ret);
+ return SOX_EOF;
+ }
+@@ -231,7 +233,7 @@ static size_t read_samples(sox_format_t
+ /* If input buffer empty, read more data */
+ if (ffmpeg->audio_buf_index * 2 >= ffmpeg->audio_buf_size) {
+ if ((ret = av_read_frame(ffmpeg->ctxt, pkt)) < 0 &&
+- (ret == AVERROR_EOF || url_ferror(ffmpeg->ctxt->pb)))
++ (ret == AVERROR_EOF || ( ffmpeg->ctxt->pb && ffmpeg->ctxt->pb->error)))
+ break;
+ ffmpeg->audio_buf_size = audio_decode_frame(ffmpeg, ffmpeg->audio_buf_aligned, AVCODEC_MAX_AUDIO_FRAME_SIZE);
+ ffmpeg->audio_buf_index = 0;
+@@ -373,13 +375,6 @@ static int startwrite(sox_format_t * ft)
+ return SOX_EOF;
+ }
+
+- /* set the output parameters (must be done even if no
+- parameters). */
+- if (av_set_parameters(ffmpeg->ctxt, NULL) < 0) {
+- lsx_fail("ffmpeg invalid output format parameters");
+- return SOX_EOF;
+- }
+-
+ /* Next line for debugging */
+ /* dump_format(ffmpeg->ctxt, 0, ft->filename, 1); */
+
+@@ -391,14 +386,14 @@ static int startwrite(sox_format_t * ft)
+
+ /* open the output file, if needed */
+ if (!(ffmpeg->fmt->flags & AVFMT_NOFILE)) {
+- if (url_fopen(&ffmpeg->ctxt->pb, ft->filename, URL_WRONLY) < 0) {
++ if (avio_open(&ffmpeg->ctxt->pb, ft->filename, AVIO_FLAG_WRITE) < 0) {
+ lsx_fail("ffmpeg could not open `%s'", ft->filename);
+ return SOX_EOF;
+ }
+ }
+
+ /* write the stream header, if any */
+- av_write_header(ffmpeg->ctxt);
++ avformat_write_header(ffmpeg->ctxt, NULL);
+
+ return SOX_SUCCESS;
+ }
+@@ -475,11 +470,7 @@ static int stopwrite(sox_format_t * ft)
+
+ if (!(ffmpeg->fmt->flags & AVFMT_NOFILE)) {
+ /* close the output file */
+-#if (LIBAVFORMAT_VERSION_INT < 0x340000)
+- url_fclose(&ffmpeg->ctxt->pb);
+-#else
+- url_fclose(ffmpeg->ctxt->pb);
+-#endif
++ avio_close(ffmpeg->ctxt->pb);
+ }
+
+ /* Free the output context */