Unified · Split
| @@ -32,7 +32,7 @@ · 31 unmodified lines | ||
| 32 | 32 | #include "samplefmt.h" |
| 33 | 33 | |
| 34 | 34 | struct AVAudioFifo { |
| 35 | − AVFifoBuffer **buf; /**< single buffer for interleaved, per-channel buffers for planar */ | |
| 35 | + AVFifo **buf; /**< single buffer for interleaved, per-channel buffers for planar */ | |
| 36 | 36 | int nb_buffers; /**< number of buffers */ |
| 37 | 37 | int nb_samples; /**< number of samples currently in the FIFO */ |
| 38 | 38 | int allocated_samples; /**< current allocated size, in samples */ |
| @@ -48,7 +48,7 @@ void av_audio_fifo_free(AVAudioFifo *af) · 9 unmodified lines | ||
| 48 | 48 | if (af->buf) { |
| 49 | 49 | int i; |
| 50 | 50 | for (i = 0; i < af->nb_buffers; i++) { |
| 51 | − av_fifo_freep(&af->buf[i]); | |
| 51 | + av_fifo_freep2(&af->buf[i]); | |
| 52 | 52 | } |
| 53 | 53 | av_freep(&af->buf); |
| 54 | 54 | } |
| @@ -80,7 +80,7 @@ AVAudioFifo *av_audio_fifo_alloc(enum AVSampleFormat sample_fmt, int channels, · 25 unmodified lines | ||
| 80 | 80 | goto error; |
| 81 | 81 | |
| 82 | 82 | for (i = 0; i < af->nb_buffers; i++) { |
| 83 | − af->buf[i] = av_fifo_alloc(buf_size); | |
| 83 | + af->buf[i] = av_fifo_alloc2(buf_size, 1, 0); | |
| 84 | 84 | if (!af->buf[i]) |
| 85 | 85 | goto error; |
| 86 | 86 | } |
| @@ -95,15 +95,19 @@ error: · 8 unmodified lines | ||
| 95 | 95 | |
| 96 | 96 | int av_audio_fifo_realloc(AVAudioFifo *af, int nb_samples) |
| 97 | 97 | { |
| 98 | + const size_t cur_size = av_fifo_can_read (af->buf[0]) + | |
| 99 | + av_fifo_can_write(af->buf[0]); | |
| 98 | 100 | int i, ret, buf_size; |
| 99 | 101 | |
| 100 | 102 | if ((ret = av_samples_get_buffer_size(&buf_size, af->channels, nb_samples, |
| 101 | 103 | af->sample_fmt, 1)) < 0) |
| 102 | 104 | return ret; |
| 103 | 105 | |
| 104 | − for (i = 0; i < af->nb_buffers; i++) { | |
| 105 | − if ((ret = av_fifo_realloc2(af->buf[i], buf_size)) < 0) | |
| 106 | − return ret; | |
| 106 | + if (buf_size > cur_size) { | |
| 107 | + for (i = 0; i < af->nb_buffers; i++) { | |
| 108 | + if ((ret = av_fifo_grow2(af->buf[i], buf_size - cur_size)) < 0) | |
| 109 | + return ret; | |
| 110 | + } | |
| 107 | 111 | } |
| 108 | 112 | af->allocated_samples = nb_samples; |
| 109 | 113 | return 0; |
| @@ -126,8 +130,8 @@ int av_audio_fifo_write(AVAudioFifo *af, void **data, int nb_samples) · 16 unmodified lines | ||
| 126 | 130 | |
| 127 | 131 | size = nb_samples * af->sample_size; |
| 128 | 132 | for (i = 0; i < af->nb_buffers; i++) { |
| 129 | − ret = av_fifo_generic_write(af->buf[i], data[i], size, NULL); | |
| 130 | − if (ret != size) | |
| 133 | + ret = av_fifo_write(af->buf[i], data[i], size); | |
| 134 | + if (ret < 0) | |
| 131 | 135 | return AVERROR_BUG; |
| 132 | 136 | } |
| 133 | 137 | af->nb_samples += nb_samples; |
| @@ -137,21 +141,7 @@ int av_audio_fifo_write(AVAudioFifo *af, void **data, int nb_samples) · 3 unmodified lines | ||
| 137 | 141 | |
| 138 | 142 | int av_audio_fifo_peek(AVAudioFifo *af, void **data, int nb_samples) |
| 139 | 143 | { |
| 140 | − int i, ret, size; | |
| 141 | − | |
| 142 | − if (nb_samples < 0) | |
| 143 | − return AVERROR(EINVAL); | |
| 144 | − nb_samples = FFMIN(nb_samples, af->nb_samples); | |
| 145 | − if (!nb_samples) | |
| 146 | − return 0; | |
| 147 | − | |
| 148 | − size = nb_samples * af->sample_size; | |
| 149 | − for (i = 0; i < af->nb_buffers; i++) { | |
| 150 | − if ((ret = av_fifo_generic_peek(af->buf[i], data[i], size, NULL)) < 0) | |
| 151 | − return AVERROR_BUG; | |
| 152 | − } | |
| 153 | − | |
| 154 | − return nb_samples; | |
| 144 | + return av_audio_fifo_peek_at(af, data, nb_samples, 0); | |
| 155 | 145 | } |
| 156 | 146 | |
| 157 | 147 | int av_audio_fifo_peek_at(AVAudioFifo *af, void **data, int nb_samples, int offset) |
| @@ -171,7 +161,7 @@ int av_audio_fifo_peek_at(AVAudioFifo *af, void **data, int nb_samples, int offs · 13 unmodified lines | ||
| 171 | 161 | offset *= af->sample_size; |
| 172 | 162 | size = nb_samples * af->sample_size; |
| 173 | 163 | for (i = 0; i < af->nb_buffers; i++) { |
| 174 | − if ((ret = av_fifo_generic_peek_at(af->buf[i], data[i], offset, size, NULL)) < 0) | |
| 164 | + if ((ret = av_fifo_peek(af->buf[i], data[i], size, offset)) < 0) | |
| 175 | 165 | return AVERROR_BUG; |
| 176 | 166 | } |
| 177 | 167 | |
| @@ -190,7 +180,7 @@ int av_audio_fifo_read(AVAudioFifo *af, void **data, int nb_samples) · 12 unmodified lines | ||
| 190 | 180 | |
| 191 | 181 | size = nb_samples * af->sample_size; |
| 192 | 182 | for (i = 0; i < af->nb_buffers; i++) { |
| 193 | − if (av_fifo_generic_read(af->buf[i], data[i], size, NULL) < 0) | |
| 183 | + if (av_fifo_read(af->buf[i], data[i], size) < 0) | |
| 194 | 184 | return AVERROR_BUG; |
| 195 | 185 | } |
| 196 | 186 | af->nb_samples -= nb_samples; |
| @@ -209,7 +199,7 @@ int av_audio_fifo_drain(AVAudioFifo *af, int nb_samples) · 12 unmodified lines | ||
| 209 | 199 | if (nb_samples) { |
| 210 | 200 | size = nb_samples * af->sample_size; |
| 211 | 201 | for (i = 0; i < af->nb_buffers; i++) |
| 212 | − av_fifo_drain(af->buf[i], size); | |
| 202 | + av_fifo_drain2(af->buf[i], size); | |
| 213 | 203 | af->nb_samples -= nb_samples; |
| 214 | 204 | } |
| 215 | 205 | return 0; |
| @@ -220,7 +210,7 @@ void av_audio_fifo_reset(AVAudioFifo *af) · 4 unmodified lines | ||
| 220 | 210 | int i; |
| 221 | 211 | |
| 222 | 212 | for (i = 0; i < af->nb_buffers; i++) |
| 223 | − av_fifo_reset(af->buf[i]); | |
| 213 | + av_fifo_reset2(af->buf[i]); | |
| 224 | 214 | |
| 225 | 215 | af->nb_samples = 0; |
| 226 | 216 | } |