| 1 |
Fix build with ffmpeg 0.11.
|
| 2 |
https://bugs.gentoo.org/show_bug.cgi?id=407621
|
| 3 |
|
| 4 |
Index: sox-14.4.0/m4/ffmpeg.m4
|
| 5 |
===================================================================
|
| 6 |
--- sox-14.4.0.orig/m4/ffmpeg.m4
|
| 7 |
+++ sox-14.4.0/m4/ffmpeg.m4
|
| 8 |
@@ -49,7 +49,7 @@ then
|
| 9 |
LIBS="$LIBS $FFMPEG_LIBS"
|
| 10 |
have_ffmpeg="no"
|
| 11 |
AC_CHECK_HEADERS([libavformat/avformat.h ffmpeg/avformat.h],
|
| 12 |
- [AC_CHECK_LIB(avformat, av_open_input_file,
|
| 13 |
+ [AC_CHECK_LIB(avformat, avformat_open_input,
|
| 14 |
[AC_CHECK_HEADERS([libavcodec/avcodec.h ffmpeg/avcodec.h],
|
| 15 |
[AC_CHECK_LIB(avcodec, avcodec_decode_audio3, have_ffmpeg=yes)])])
|
| 16 |
break])
|
| 17 |
Index: sox-14.4.0/src/ffmpeg.c
|
| 18 |
===================================================================
|
| 19 |
--- sox-14.4.0.orig/src/ffmpeg.c
|
| 20 |
+++ sox-14.4.0/src/ffmpeg.c
|
| 21 |
@@ -92,8 +92,10 @@ static int stream_component_open(priv_t
|
| 22 |
enc->workaround_bugs = 1;
|
| 23 |
#if LIBAVCODEC_VERSION_INT < ((52<<16)+(0<<8)+0)
|
| 24 |
enc->error_resilience = 1;
|
| 25 |
-#else
|
| 26 |
+#elif LIBAVCODEC_VERSION_INT < ((54<<16)+(0<<8)+0)
|
| 27 |
enc->error_recognition = 1;
|
| 28 |
+#else
|
| 29 |
+ ic->error_recognition = 1;
|
| 30 |
#endif
|
| 31 |
|
| 32 |
if (!codec || avcodec_open(enc, codec) < 0)
|
| 33 |
@@ -157,7 +159,7 @@ static int audio_decode_frame(priv_t * f
|
| 34 |
static int startread(sox_format_t * ft)
|
| 35 |
{
|
| 36 |
priv_t * ffmpeg = (priv_t *)ft->priv;
|
| 37 |
- AVFormatParameters params;
|
| 38 |
+ AVDictionary *params;
|
| 39 |
int ret;
|
| 40 |
int i;
|
| 41 |
|
| 42 |
@@ -172,7 +174,7 @@ static int startread(sox_format_t * ft)
|
| 43 |
|
| 44 |
/* Open file and get format */
|
| 45 |
memset(¶ms, 0, sizeof(params));
|
| 46 |
- if ((ret = av_open_input_file(&ffmpeg->ctxt, ft->filename, NULL, 0, ¶ms)) < 0) {
|
| 47 |
+ if ((ret = avformat_open_input(&ffmpeg->ctxt, ft->filename, NULL, ¶ms)) < 0) {
|
| 48 |
lsx_fail("ffmpeg cannot open file for reading: %s (code %d)", ft->filename, ret);
|
| 49 |
return SOX_EOF;
|
| 50 |
}
|
| 51 |
@@ -231,7 +233,7 @@ static size_t read_samples(sox_format_t
|
| 52 |
/* If input buffer empty, read more data */
|
| 53 |
if (ffmpeg->audio_buf_index * 2 >= ffmpeg->audio_buf_size) {
|
| 54 |
if ((ret = av_read_frame(ffmpeg->ctxt, pkt)) < 0 &&
|
| 55 |
- (ret == AVERROR_EOF || url_ferror(ffmpeg->ctxt->pb)))
|
| 56 |
+ (ret == AVERROR_EOF || ( ffmpeg->ctxt->pb && ffmpeg->ctxt->pb->error)))
|
| 57 |
break;
|
| 58 |
ffmpeg->audio_buf_size = audio_decode_frame(ffmpeg, ffmpeg->audio_buf_aligned, AVCODEC_MAX_AUDIO_FRAME_SIZE);
|
| 59 |
ffmpeg->audio_buf_index = 0;
|
| 60 |
@@ -373,13 +375,6 @@ static int startwrite(sox_format_t * ft)
|
| 61 |
return SOX_EOF;
|
| 62 |
}
|
| 63 |
|
| 64 |
- /* set the output parameters (must be done even if no
|
| 65 |
- parameters). */
|
| 66 |
- if (av_set_parameters(ffmpeg->ctxt, NULL) < 0) {
|
| 67 |
- lsx_fail("ffmpeg invalid output format parameters");
|
| 68 |
- return SOX_EOF;
|
| 69 |
- }
|
| 70 |
-
|
| 71 |
/* Next line for debugging */
|
| 72 |
/* dump_format(ffmpeg->ctxt, 0, ft->filename, 1); */
|
| 73 |
|
| 74 |
@@ -391,14 +386,14 @@ static int startwrite(sox_format_t * ft)
|
| 75 |
|
| 76 |
/* open the output file, if needed */
|
| 77 |
if (!(ffmpeg->fmt->flags & AVFMT_NOFILE)) {
|
| 78 |
- if (url_fopen(&ffmpeg->ctxt->pb, ft->filename, URL_WRONLY) < 0) {
|
| 79 |
+ if (avio_open(&ffmpeg->ctxt->pb, ft->filename, AVIO_FLAG_WRITE) < 0) {
|
| 80 |
lsx_fail("ffmpeg could not open `%s'", ft->filename);
|
| 81 |
return SOX_EOF;
|
| 82 |
}
|
| 83 |
}
|
| 84 |
|
| 85 |
/* write the stream header, if any */
|
| 86 |
- av_write_header(ffmpeg->ctxt);
|
| 87 |
+ avformat_write_header(ffmpeg->ctxt, NULL);
|
| 88 |
|
| 89 |
return SOX_SUCCESS;
|
| 90 |
}
|
| 91 |
@@ -475,11 +470,7 @@ static int stopwrite(sox_format_t * ft)
|
| 92 |
|
| 93 |
if (!(ffmpeg->fmt->flags & AVFMT_NOFILE)) {
|
| 94 |
/* close the output file */
|
| 95 |
-#if (LIBAVFORMAT_VERSION_INT < 0x340000)
|
| 96 |
- url_fclose(&ffmpeg->ctxt->pb);
|
| 97 |
-#else
|
| 98 |
- url_fclose(ffmpeg->ctxt->pb);
|
| 99 |
-#endif
|
| 100 |
+ avio_close(ffmpeg->ctxt->pb);
|
| 101 |
}
|
| 102 |
|
| 103 |
/* Free the output context */
|