[FFmpeg-cvslog] swr-test: test the new flexible buffering

Michael Niedermayer git at videolan.org
Sun Mar 25 22:17:16 CEST 2012


ffmpeg | branch: master | Michael Niedermayer <michaelni at gmx.at> | Sun Mar 25 21:50:49 2012 +0200| [8d7f2db60a9cc2b6fd87a410a69f4deafa3edff9] | committer: Michael Niedermayer

swr-test: test the new flexible buffering

Signed-off-by: Michael Niedermayer <michaelni at gmx.at>

> http://git.videolan.org/gitweb.cgi/ffmpeg.git/?a=commit;h=8d7f2db60a9cc2b6fd87a410a69f4deafa3edff9
---

 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 1feead7..b1e195f 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++){



More information about the ffmpeg-cvslog mailing list