summaryrefslogtreecommitdiff
path: root/libavfilter/af_asyncts.c
diff options
context:
space:
mode:
authorMichael Niedermayer <michaelni@gmx.at>2013-05-10 22:56:27 +0200
committerMichael Niedermayer <michaelni@gmx.at>2013-05-10 23:03:50 +0200
commit2a7d71984805d727e9361be4a61132d95c6796b4 (patch)
tree1d5763d4fd6fc08725c69693d41c975887fbdbe0 /libavfilter/af_asyncts.c
parentfc94b68eb53f02c596f7e9bc129162fe280e9008 (diff)
parent16a4a18db089af8c432f1cdec62155000585b72c (diff)
Merge commit '16a4a18db089af8c432f1cdec62155000585b72c'
* commit '16a4a18db089af8c432f1cdec62155000585b72c': af_asyncts: fix offset calculation Merged-by: Michael Niedermayer <michaelni@gmx.at>
Diffstat (limited to 'libavfilter/af_asyncts.c')
-rw-r--r--libavfilter/af_asyncts.c13
1 files changed, 9 insertions, 4 deletions
diff --git a/libavfilter/af_asyncts.c b/libavfilter/af_asyncts.c
index 43dbab2bbf..a30ce3d463 100644
--- a/libavfilter/af_asyncts.c
+++ b/libavfilter/af_asyncts.c
@@ -233,18 +233,23 @@ static int filter_frame(AVFilterLink *inlink, AVFrame *buf)
}
if (s->first_frame && delta > 0) {
+ int planar = av_sample_fmt_is_planar(buf_out->format);
+ int planes = planar ? nb_channels : 1;
+ int block_size = av_get_bytes_per_sample(buf_out->format) *
+ (planar ? 1 : nb_channels);
+
int ch;
av_samples_set_silence(buf_out->extended_data, 0, delta,
nb_channels, buf->format);
- for (ch = 0; ch < nb_channels; ch++)
- buf_out->extended_data[ch] += delta;
+ for (ch = 0; ch < planes; ch++)
+ buf_out->extended_data[ch] += delta * block_size;
avresample_read(s->avr, buf_out->extended_data, out_size);
- for (ch = 0; ch < nb_channels; ch++)
- buf_out->extended_data[ch] -= delta;
+ for (ch = 0; ch < planes; ch++)
+ buf_out->extended_data[ch] -= delta * block_size;
} else {
avresample_read(s->avr, buf_out->extended_data, out_size);