| 220 | } |
| 221 | |
| 222 | int av_samples_copy(uint8_t * const *dst, uint8_t * const *src, int dst_offset, |
| 223 | int src_offset, int nb_samples, int nb_channels, |
| 224 | enum AVSampleFormat sample_fmt) |
| 225 | { |
| 226 | int planar = av_sample_fmt_is_planar(sample_fmt); |
| 227 | int planes = planar ? nb_channels : 1; |
| 228 | int block_align = av_get_bytes_per_sample(sample_fmt) * (planar ? 1 : nb_channels); |
| 229 | int data_size = nb_samples * block_align; |
| 230 | int i; |
| 231 | |
| 232 | dst_offset *= block_align; |
| 233 | src_offset *= block_align; |
| 234 | |
| 235 | if((dst[0] < src[0] ? src[0] - dst[0] : dst[0] - src[0]) >= data_size) { |
| 236 | for (i = 0; i < planes; i++) |
| 237 | memcpy(dst[i] + dst_offset, src[i] + src_offset, data_size); |
| 238 | } else { |
| 239 | for (i = 0; i < planes; i++) |
| 240 | memmove(dst[i] + dst_offset, src[i] + src_offset, data_size); |
| 241 | } |
| 242 | |
| 243 | return 0; |
| 244 | } |
| 245 | |
| 246 | int av_samples_set_silence(uint8_t * const *audio_data, int offset, int nb_samples, |
| 247 | int nb_channels, enum AVSampleFormat sample_fmt) |