diff options
author | Michael Niedermayer <michaelni@gmx.at> | 2012-03-25 21:50:49 +0200 |
---|---|---|
committer | Michael Niedermayer <michaelni@gmx.at> | 2012-03-25 21:50:49 +0200 |
commit | 8d7f2db60a9cc2b6fd87a410a69f4deafa3edff9 (patch) | |
tree | fd20e721920edd9bfe00e9ef48118531ce53e6f0 | |
parent | 59b038b4a4e7addf3c9089b588d9106b14a5f1bf (diff) | |
download | ffmpeg-8d7f2db60a9cc2b6fd87a410a69f4deafa3edff9.tar.gz |
swr-test: test the new flexible buffering
Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
-rw-r--r-- | libswresample/swresample_test.c | 25 |
1 files changed, 24 insertions, 1 deletions
diff --git a/libswresample/swresample_test.c b/libswresample/swresample_test.c index 1feead7bdd..b1e195fd04 100644 --- a/libswresample/swresample_test.c +++ b/libswresample/swresample_test.c @@ -122,6 +122,7 @@ int main(int argc, char **argv){ uint8_t *aout[SWR_CH_MAX]; uint8_t *amid[SWR_CH_MAX]; int flush_i=0; + int mode = 0; struct SwrContext * forw_ctx= NULL; struct SwrContext *backw_ctx= NULL; @@ -165,7 +166,29 @@ int main(int argc, char **argv){ for(i=0; i<SAMPLES; i++) set(ain, ch, i, in_ch_count, av_get_alt_sample_fmt(in_sample_fmt, 1), sin(i*i*3/SAMPLES)); } - mid_count= swr_convert(forw_ctx, amid, 3*SAMPLES, ain, SAMPLES); + mode++; + mode%=3; + if(mode==0 /*|| out_sample_rate == in_sample_rate*/) { + mid_count= swr_convert(forw_ctx, amid, 3*SAMPLES, ain, SAMPLES); + } else if(mode==1){ + mid_count= swr_convert(forw_ctx, amid, 0, ain, SAMPLES); + mid_count+=swr_convert(forw_ctx, amid, 3*SAMPLES, ain, 0); + } else { + int tmp_count; + mid_count= swr_convert(forw_ctx, amid, 0, ain, 1); + av_assert0(mid_count==0); + shift(ain, 1, in_ch_count, av_get_alt_sample_fmt(in_sample_fmt, 1)); + mid_count+=swr_convert(forw_ctx, amid, 3*SAMPLES, ain, 0); + shift(amid, mid_count, out_ch_count, av_get_alt_sample_fmt(out_sample_fmt, 1)); tmp_count = mid_count; + mid_count+=swr_convert(forw_ctx, amid, 2, ain, 2); + shift(amid, mid_count-tmp_count, out_ch_count, av_get_alt_sample_fmt(out_sample_fmt, 1)); tmp_count = mid_count; + shift(ain, 2, in_ch_count, av_get_alt_sample_fmt(in_sample_fmt, 1)); + mid_count+=swr_convert(forw_ctx, amid, 1, ain, SAMPLES-3); + shift(amid, mid_count-tmp_count, out_ch_count, av_get_alt_sample_fmt(out_sample_fmt, 1)); tmp_count = mid_count; + shift(ain, -3, in_ch_count, av_get_alt_sample_fmt(in_sample_fmt, 1)); + mid_count+=swr_convert(forw_ctx, amid, 3*SAMPLES, ain, 0); + shift(amid, -tmp_count, out_ch_count, av_get_alt_sample_fmt(out_sample_fmt, 1)); + } out_count= swr_convert(backw_ctx,aout, SAMPLES, amid, mid_count); for(ch=0; ch<in_ch_count; ch++){ |