summaryrefslogtreecommitdiff
path: root/audio/sox/files/patch-avcodec54
blob: 3136223580dc651ede1e67b01ba47ef6b35b6576 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
Index: m4/ffmpeg.m4
===================================================================
--- m4/ffmpeg.m4.orig
+++ 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: src/ffmpeg.c
===================================================================
--- src/ffmpeg.c.orig
+++ 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 */