diff options
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.patch | 103 |
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(¶ms, 0, sizeof(params)); +- if ((ret = av_open_input_file(&ffmpeg->ctxt, ft->filename, NULL, 0, ¶ms)) < 0) { ++ if ((ret = avformat_open_input(&ffmpeg->ctxt, ft->filename, NULL, ¶ms)) < 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 */ |