| 387 | } |
| 388 | |
| 389 | static void offset_audio(AVFrame *f, int nb_samples) |
| 390 | { |
| 391 | const int planar = av_sample_fmt_is_planar(f->format); |
| 392 | const int planes = planar ? f->ch_layout.nb_channels : 1; |
| 393 | const int bps = av_get_bytes_per_sample(f->format); |
| 394 | const int offset = nb_samples * bps * (planar ? 1 : f->ch_layout.nb_channels); |
| 395 | |
| 396 | av_assert0(bps > 0); |
| 397 | av_assert0(nb_samples < f->nb_samples); |
| 398 | |
| 399 | for (int i = 0; i < planes; i++) { |
| 400 | f->extended_data[i] += offset; |
| 401 | if (i < FF_ARRAY_ELEMS(f->data)) |
| 402 | f->data[i] = f->extended_data[i]; |
| 403 | } |
| 404 | f->linesize[0] -= offset; |
| 405 | f->nb_samples -= nb_samples; |
| 406 | f->duration = av_rescale_q(f->nb_samples, (AVRational){ 1, f->sample_rate }, |
| 407 | f->time_base); |
| 408 | f->pts += av_rescale_q(nb_samples, (AVRational){ 1, f->sample_rate }, |
| 409 | f->time_base); |
| 410 | } |
| 411 | |
| 412 | static int frame_is_aligned(const SyncQueue *sq, const AVFrame *frame) |
| 413 | { |
no test coverage detected