libsndfile / libsamplerate

An audio Sample Rate Conversion library
http://libsndfile.github.io/libsamplerate/
BSD 2-Clause "Simplified" License
600 stars 167 forks source link

Inconsistent input_frames_used/output_frames_gen among the numbers of channels #206

Open ss3git opened 9 months ago

ss3git commented 9 months ago

SRC_DATA.input_frames_used/output_frames_gen are not consistent when (only) channels are different.

How to reproduce: use the simple_test here. https://github.com/ss3git/libsamplerate/blob/InconsistentOutgen/tests/simple_test.c

    Zero Order Hold interpolator :
    simple_test (SRC ratio = 1.0001) ................. ok
    produces_output (SRC ratio = 1.0001, channels = 1) ... ok
    produces_output (SRC ratio = 1.0001, channels = 2) ... ok
    produces_output (SRC ratio = 1.0001, channels = 3) ... ok
    produces_output (SRC ratio = 1.0001, channels = 4) ... ok
    produces_output (SRC ratio = 1.0001, channels = 5) ... ok
    produces_output (SRC ratio = 1.0001, channels = 6) ... ok
    produces_output (SRC ratio = 1.0001, channels = 7) ... ok
    produces_output (SRC ratio = 1.0001, channels = 8) ... ok
    produces_output (SRC ratio = 1.0001, channels = 9) ... ok
    simple_test (SRC ratio = 0.0990) ................. ok
    produces_output (SRC ratio = 0.0990, channels = 1) ... ok
    produces_output (SRC ratio = 0.0990, channels = 2) ... ok
    produces_output (SRC ratio = 0.0990, channels = 3) ... ok
    produces_output (SRC ratio = 0.0990, channels = 4) ... ok
    produces_output (SRC ratio = 0.0990, channels = 5) ... ok
    produces_output (SRC ratio = 0.0990, channels = 6) ... ok
    produces_output (SRC ratio = 0.0990, channels = 7) ... ok
    produces_output (SRC ratio = 0.0990, channels = 8) ... ok
    produces_output (SRC ratio = 0.0990, channels = 9) ... ok
    simple_test (SRC ratio = 0.1000) ................. ok
    produces_output (SRC ratio = 0.1000, channels = 1) ... ok
    produces_output (SRC ratio = 0.1000, channels = 2) ... ok
    produces_output (SRC ratio = 0.1000, channels = 3) ... ok
    produces_output (SRC ratio = 0.1000, channels = 4) ... ok
    produces_output (SRC ratio = 0.1000, channels = 5) ... ok
    produces_output (SRC ratio = 0.1000, channels = 6) ... ok
    produces_output (SRC ratio = 0.1000, channels = 7) ... ok
    produces_output (SRC ratio = 0.1000, channels = 8) ... ok
    produces_output (SRC ratio = 0.1000, channels = 9) ... ok
    simple_test (SRC ratio = 0.3333) ................. ok
    produces_output (SRC ratio = 0.3333, channels = 1) ... ok
    produces_output (SRC ratio = 0.3333, channels = 2) ... ok
    produces_output (SRC ratio = 0.3333, channels = 3) ... ok
    produces_output (SRC ratio = 0.3333, channels = 4) ... ok
    produces_output (SRC ratio = 0.3333, channels = 5) ... ok
    produces_output (SRC ratio = 0.3333, channels = 6) ... ok
    produces_output (SRC ratio = 0.3333, channels = 7) ... ok
    produces_output (SRC ratio = 0.3333, channels = 8) ... ok
    produces_output (SRC ratio = 0.3333, channels = 9) ... ok
    simple_test (SRC ratio = 0.7890) ................. ok
    produces_output (SRC ratio = 0.7890, channels = 1) ... ok
    produces_output (SRC ratio = 0.7890, channels = 2) ... ok
    produces_output (SRC ratio = 0.7890, channels = 3) ... ok
    produces_output (SRC ratio = 0.7890, channels = 4) ... ok
    produces_output (SRC ratio = 0.7890, channels = 5) ... ok
    produces_output (SRC ratio = 0.7890, channels = 6) ... ok
    produces_output (SRC ratio = 0.7890, channels = 7) ... ok
    produces_output (SRC ratio = 0.7890, channels = 8) ... ok
    produces_output (SRC ratio = 0.7890, channels = 9) ... ok
    simple_test (SRC ratio = 1.9000) ................. ok
    produces_output (SRC ratio = 1.9000, channels = 1) ... ok
    produces_output (SRC ratio = 1.9000, channels = 2) ... ok
    produces_output (SRC ratio = 1.9000, channels = 3) ... ok
    produces_output (SRC ratio = 1.9000, channels = 4) ... ok
    produces_output (SRC ratio = 1.9000, channels = 5) ... ok
    produces_output (SRC ratio = 1.9000, channels = 6) ... ok
    produces_output (SRC ratio = 1.9000, channels = 7) ... ok
    produces_output (SRC ratio = 1.9000, channels = 8) ... ok
    produces_output (SRC ratio = 1.9000, channels = 9) ... ok
    simple_test (SRC ratio = 3.1000) ................. ok
    produces_output (SRC ratio = 3.1000, channels = 1) ... ok
    produces_output (SRC ratio = 3.1000, channels = 2) ... ok
    produces_output (SRC ratio = 3.1000, channels = 3) ... ok
    produces_output (SRC ratio = 3.1000, channels = 4) ... ok
    produces_output (SRC ratio = 3.1000, channels = 5) ... ok
    produces_output (SRC ratio = 3.1000, channels = 6) ... ok
    produces_output (SRC ratio = 3.1000, channels = 7) ... ok
    produces_output (SRC ratio = 3.1000, channels = 8) ... ok
    produces_output (SRC ratio = 3.1000, channels = 9) ... ok
    simple_test (SRC ratio = 9.9000) ................. ok
    produces_output (SRC ratio = 9.9000, channels = 1) ... ok
    produces_output (SRC ratio = 9.9000, channels = 2) ... ok
    produces_output (SRC ratio = 9.9000, channels = 3) ... ok
    produces_output (SRC ratio = 9.9000, channels = 4) ... ok
    produces_output (SRC ratio = 9.9000, channels = 5) ... ok
    produces_output (SRC ratio = 9.9000, channels = 6) ... ok
    produces_output (SRC ratio = 9.9000, channels = 7) ... ok
    produces_output (SRC ratio = 9.9000, channels = 8) ... ok
    produces_output (SRC ratio = 9.9000, channels = 9) ... ok
    simple_test (SRC ratio = 256.0000) ................. ok
    produces_output (SRC ratio = 256.0000, channels = 1) ... ok
    produces_output (SRC ratio = 256.0000, channels = 2) ... ok
    produces_output (SRC ratio = 256.0000, channels = 3) ... ok
    produces_output (SRC ratio = 256.0000, channels = 4) ... ok
    produces_output (SRC ratio = 256.0000, channels = 5) ... ok
    produces_output (SRC ratio = 256.0000, channels = 6) ... ok
    produces_output (SRC ratio = 256.0000, channels = 7) ... ok
    produces_output (SRC ratio = 256.0000, channels = 8) ... ok
    produces_output (SRC ratio = 256.0000, channels = 9) ... ok
    simple_test (SRC ratio = 0.0039) ................. ok
    produces_output (SRC ratio = 0.0039, channels = 1) ... ok
    produces_output (SRC ratio = 0.0039, channels = 2) ... ok
    produces_output (SRC ratio = 0.0039, channels = 3) ... ok
    produces_output (SRC ratio = 0.0039, channels = 4) ... ok
    produces_output (SRC ratio = 0.0039, channels = 5) ... ok
    produces_output (SRC ratio = 0.0039, channels = 6) ... ok
    produces_output (SRC ratio = 0.0039, channels = 7) ... ok
    produces_output (SRC ratio = 0.0039, channels = 8) ... ok
    produces_output (SRC ratio = 0.0039, channels = 9) ... ok
    Linear interpolator :
    simple_test (SRC ratio = 1.0001) ................. ok
    produces_output (SRC ratio = 1.0001, channels = 1) ... ok
    produces_output (SRC ratio = 1.0001, channels = 2) ... ok
    produces_output (SRC ratio = 1.0001, channels = 3) ... ok
    produces_output (SRC ratio = 1.0001, channels = 4) ... ok
    produces_output (SRC ratio = 1.0001, channels = 5) ... ok
    produces_output (SRC ratio = 1.0001, channels = 6) ... ok
    produces_output (SRC ratio = 1.0001, channels = 7) ... ok
    produces_output (SRC ratio = 1.0001, channels = 8) ... ok
    produces_output (SRC ratio = 1.0001, channels = 9) ... ok
    simple_test (SRC ratio = 0.0990) ................. ok
    produces_output (SRC ratio = 0.0990, channels = 1) ... ok
    produces_output (SRC ratio = 0.0990, channels = 2) ... ok
    produces_output (SRC ratio = 0.0990, channels = 3) ... ok

Line 80 : input_frames_used does not match (ch3:999, ch1:1000).

Line 86 : output_frames_gen does not match (ch3:99, ch1:100).

    produces_output (SRC ratio = 0.0990, channels = 4) ... ok
    produces_output (SRC ratio = 0.0990, channels = 5) ... ok

Line 80 : input_frames_used does not match (ch5:999, ch1:1000).

Line 86 : output_frames_gen does not match (ch5:99, ch1:100).

    produces_output (SRC ratio = 0.0990, channels = 6) ... ok

Line 80 : input_frames_used does not match (ch6:999, ch1:1000).

Line 86 : output_frames_gen does not match (ch6:99, ch1:100).

    produces_output (SRC ratio = 0.0990, channels = 7) ... ok
    produces_output (SRC ratio = 0.0990, channels = 8) ... ok
    produces_output (SRC ratio = 0.0990, channels = 9) ... ok

Line 80 : input_frames_used does not match (ch9:999, ch1:1000).

Line 86 : output_frames_gen does not match (ch9:99, ch1:100).

    simple_test (SRC ratio = 0.1000) ................. ok
    produces_output (SRC ratio = 0.1000, channels = 1) ... ok
    produces_output (SRC ratio = 0.1000, channels = 2) ... ok
    produces_output (SRC ratio = 0.1000, channels = 3) ... ok
    produces_output (SRC ratio = 0.1000, channels = 4) ... ok
    produces_output (SRC ratio = 0.1000, channels = 5) ... ok
    produces_output (SRC ratio = 0.1000, channels = 6) ... ok
    produces_output (SRC ratio = 0.1000, channels = 7) ... ok
    produces_output (SRC ratio = 0.1000, channels = 8) ... ok
    produces_output (SRC ratio = 0.1000, channels = 9) ... ok
    simple_test (SRC ratio = 0.3333) ................. ok
    produces_output (SRC ratio = 0.3333, channels = 1) ... ok
    produces_output (SRC ratio = 0.3333, channels = 2) ... ok
    produces_output (SRC ratio = 0.3333, channels = 3) ... ok
    produces_output (SRC ratio = 0.3333, channels = 4) ... ok
    produces_output (SRC ratio = 0.3333, channels = 5) ... ok
    produces_output (SRC ratio = 0.3333, channels = 6) ... ok
    produces_output (SRC ratio = 0.3333, channels = 7) ... ok
    produces_output (SRC ratio = 0.3333, channels = 8) ... ok
    produces_output (SRC ratio = 0.3333, channels = 9) ... ok
    simple_test (SRC ratio = 0.7890) ................. ok
    produces_output (SRC ratio = 0.7890, channels = 1) ... ok
    produces_output (SRC ratio = 0.7890, channels = 2) ... ok
    produces_output (SRC ratio = 0.7890, channels = 3) ... ok
    produces_output (SRC ratio = 0.7890, channels = 4) ... ok
    produces_output (SRC ratio = 0.7890, channels = 5) ... ok
    produces_output (SRC ratio = 0.7890, channels = 6) ... ok
    produces_output (SRC ratio = 0.7890, channels = 7) ... ok
    produces_output (SRC ratio = 0.7890, channels = 8) ... ok
    produces_output (SRC ratio = 0.7890, channels = 9) ... ok

Line 80 : input_frames_used does not match (ch9:999, ch1:1000).

Line 86 : output_frames_gen does not match (ch9:789, ch1:790).

    simple_test (SRC ratio = 1.9000) ................. ok
    produces_output (SRC ratio = 1.9000, channels = 1) ... ok
    produces_output (SRC ratio = 1.9000, channels = 2) ... ok
    produces_output (SRC ratio = 1.9000, channels = 3) ... ok
    produces_output (SRC ratio = 1.9000, channels = 4) ... ok
    produces_output (SRC ratio = 1.9000, channels = 5) ... ok
    produces_output (SRC ratio = 1.9000, channels = 6) ... ok
    produces_output (SRC ratio = 1.9000, channels = 7) ... ok
    produces_output (SRC ratio = 1.9000, channels = 8) ... ok
    produces_output (SRC ratio = 1.9000, channels = 9) ... ok
    simple_test (SRC ratio = 3.1000) ................. ok
    produces_output (SRC ratio = 3.1000, channels = 1) ... ok
    produces_output (SRC ratio = 3.1000, channels = 2) ... ok
    produces_output (SRC ratio = 3.1000, channels = 3) ... ok
    produces_output (SRC ratio = 3.1000, channels = 4) ... ok
    produces_output (SRC ratio = 3.1000, channels = 5) ... ok
    produces_output (SRC ratio = 3.1000, channels = 6) ... ok
    produces_output (SRC ratio = 3.1000, channels = 7) ... ok
    produces_output (SRC ratio = 3.1000, channels = 8) ... ok
    produces_output (SRC ratio = 3.1000, channels = 9) ... ok
    simple_test (SRC ratio = 9.9000) ................. ok
    produces_output (SRC ratio = 9.9000, channels = 1) ... ok
    produces_output (SRC ratio = 9.9000, channels = 2) ... ok
    produces_output (SRC ratio = 9.9000, channels = 3) ... ok
    produces_output (SRC ratio = 9.9000, channels = 4) ... ok
    produces_output (SRC ratio = 9.9000, channels = 5) ... ok
    produces_output (SRC ratio = 9.9000, channels = 6) ... ok
    produces_output (SRC ratio = 9.9000, channels = 7) ... ok
    produces_output (SRC ratio = 9.9000, channels = 8) ... ok
    produces_output (SRC ratio = 9.9000, channels = 9) ... ok
    simple_test (SRC ratio = 256.0000) ................. ok
    produces_output (SRC ratio = 256.0000, channels = 1) ... ok
    produces_output (SRC ratio = 256.0000, channels = 2) ... ok
    produces_output (SRC ratio = 256.0000, channels = 3) ... ok
    produces_output (SRC ratio = 256.0000, channels = 4) ... ok
    produces_output (SRC ratio = 256.0000, channels = 5) ... ok
    produces_output (SRC ratio = 256.0000, channels = 6) ... ok
    produces_output (SRC ratio = 256.0000, channels = 7) ... ok
    produces_output (SRC ratio = 256.0000, channels = 8) ... ok
    produces_output (SRC ratio = 256.0000, channels = 9) ... ok
    simple_test (SRC ratio = 0.0039) ................. ok
    produces_output (SRC ratio = 0.0039, channels = 1) ... ok
    produces_output (SRC ratio = 0.0039, channels = 2) ... ok
    produces_output (SRC ratio = 0.0039, channels = 3) ... ok
    produces_output (SRC ratio = 0.0039, channels = 4) ... ok
    produces_output (SRC ratio = 0.0039, channels = 5) ... ok
    produces_output (SRC ratio = 0.0039, channels = 6) ... ok
    produces_output (SRC ratio = 0.0039, channels = 7) ... ok
    produces_output (SRC ratio = 0.0039, channels = 8) ... ok
    produces_output (SRC ratio = 0.0039, channels = 9) ... ok
    Sinc interpolator :
    simple_test (SRC ratio = 1.0001) ................. ok
    produces_output (SRC ratio = 1.0001, channels = 1) ... ok
    produces_output (SRC ratio = 1.0001, channels = 2) ... ok
    produces_output (SRC ratio = 1.0001, channels = 3) ... ok
    produces_output (SRC ratio = 1.0001, channels = 4) ... ok
    produces_output (SRC ratio = 1.0001, channels = 5) ... ok
    produces_output (SRC ratio = 1.0001, channels = 6) ... ok
    produces_output (SRC ratio = 1.0001, channels = 7) ... ok
    produces_output (SRC ratio = 1.0001, channels = 8) ... ok
    produces_output (SRC ratio = 1.0001, channels = 9) ... ok
    simple_test (SRC ratio = 0.0990) ................. ok
    produces_output (SRC ratio = 0.0990, channels = 1) ... ok
    produces_output (SRC ratio = 0.0990, channels = 2) ... ok
    produces_output (SRC ratio = 0.0990, channels = 3) ... ok
    produces_output (SRC ratio = 0.0990, channels = 4) ... ok
    produces_output (SRC ratio = 0.0990, channels = 5) ... ok
    produces_output (SRC ratio = 0.0990, channels = 6) ... ok
    produces_output (SRC ratio = 0.0990, channels = 7) ... ok
    produces_output (SRC ratio = 0.0990, channels = 8) ... ok
    produces_output (SRC ratio = 0.0990, channels = 9) ... ok
    simple_test (SRC ratio = 0.1000) ................. ok
    produces_output (SRC ratio = 0.1000, channels = 1) ... ok
    produces_output (SRC ratio = 0.1000, channels = 2) ... ok
    produces_output (SRC ratio = 0.1000, channels = 3) ... ok
    produces_output (SRC ratio = 0.1000, channels = 4) ... ok
    produces_output (SRC ratio = 0.1000, channels = 5) ... ok
    produces_output (SRC ratio = 0.1000, channels = 6) ... ok
    produces_output (SRC ratio = 0.1000, channels = 7) ... ok
    produces_output (SRC ratio = 0.1000, channels = 8) ... ok
    produces_output (SRC ratio = 0.1000, channels = 9) ... ok
    simple_test (SRC ratio = 0.3333) ................. ok
    produces_output (SRC ratio = 0.3333, channels = 1) ... ok
    produces_output (SRC ratio = 0.3333, channels = 2) ... ok
    produces_output (SRC ratio = 0.3333, channels = 3) ... ok
    produces_output (SRC ratio = 0.3333, channels = 4) ... ok

Line 86 : output_frames_gen does not match (ch4:334, ch1:333).

    produces_output (SRC ratio = 0.3333, channels = 5) ... ok

Line 86 : output_frames_gen does not match (ch5:334, ch1:333).

    produces_output (SRC ratio = 0.3333, channels = 6) ... ok

Line 86 : output_frames_gen does not match (ch6:334, ch1:333).

    produces_output (SRC ratio = 0.3333, channels = 7) ... ok

Line 86 : output_frames_gen does not match (ch7:334, ch1:333).

    produces_output (SRC ratio = 0.3333, channels = 8) ... ok

Line 86 : output_frames_gen does not match (ch8:334, ch1:333).

    produces_output (SRC ratio = 0.3333, channels = 9) ... ok

Line 86 : output_frames_gen does not match (ch9:334, ch1:333).

    simple_test (SRC ratio = 0.7890) ................. ok
    produces_output (SRC ratio = 0.7890, channels = 1) ... ok
    produces_output (SRC ratio = 0.7890, channels = 2) ... ok
    produces_output (SRC ratio = 0.7890, channels = 3) ... ok

Line 86 : output_frames_gen does not match (ch3:790, ch1:789).

    produces_output (SRC ratio = 0.7890, channels = 4) ... ok

Line 86 : output_frames_gen does not match (ch4:790, ch1:789).

    produces_output (SRC ratio = 0.7890, channels = 5) ... ok

Line 86 : output_frames_gen does not match (ch5:790, ch1:789).

    produces_output (SRC ratio = 0.7890, channels = 6) ... ok

Line 86 : output_frames_gen does not match (ch6:790, ch1:789).

    produces_output (SRC ratio = 0.7890, channels = 7) ... ok

Line 86 : output_frames_gen does not match (ch7:790, ch1:789).

    produces_output (SRC ratio = 0.7890, channels = 8) ... ok

Line 86 : output_frames_gen does not match (ch8:790, ch1:789).

    produces_output (SRC ratio = 0.7890, channels = 9) ... ok

Line 86 : output_frames_gen does not match (ch9:790, ch1:789).

    simple_test (SRC ratio = 1.9000) ................. ok
    produces_output (SRC ratio = 1.9000, channels = 1) ... ok
    produces_output (SRC ratio = 1.9000, channels = 2) ... ok
    produces_output (SRC ratio = 1.9000, channels = 3) ... ok
    produces_output (SRC ratio = 1.9000, channels = 4) ... ok
    produces_output (SRC ratio = 1.9000, channels = 5) ... ok
    produces_output (SRC ratio = 1.9000, channels = 6) ... ok
    produces_output (SRC ratio = 1.9000, channels = 7) ... ok
    produces_output (SRC ratio = 1.9000, channels = 8) ... ok
    produces_output (SRC ratio = 1.9000, channels = 9) ... ok
    simple_test (SRC ratio = 3.1000) ................. ok
    produces_output (SRC ratio = 3.1000, channels = 1) ... ok
    produces_output (SRC ratio = 3.1000, channels = 2) ... ok
    produces_output (SRC ratio = 3.1000, channels = 3) ... ok
    produces_output (SRC ratio = 3.1000, channels = 4) ... ok
    produces_output (SRC ratio = 3.1000, channels = 5) ... ok
    produces_output (SRC ratio = 3.1000, channels = 6) ... ok
    produces_output (SRC ratio = 3.1000, channels = 7) ... ok
    produces_output (SRC ratio = 3.1000, channels = 8) ... ok
    produces_output (SRC ratio = 3.1000, channels = 9) ... ok
    simple_test (SRC ratio = 9.9000) ................. ok
    produces_output (SRC ratio = 9.9000, channels = 1) ... ok
    produces_output (SRC ratio = 9.9000, channels = 2) ... ok
    produces_output (SRC ratio = 9.9000, channels = 3) ... ok
    produces_output (SRC ratio = 9.9000, channels = 4) ... ok
    produces_output (SRC ratio = 9.9000, channels = 5) ... ok
    produces_output (SRC ratio = 9.9000, channels = 6) ... ok
    produces_output (SRC ratio = 9.9000, channels = 7) ... ok
    produces_output (SRC ratio = 9.9000, channels = 8) ... ok
    produces_output (SRC ratio = 9.9000, channels = 9) ... ok
    simple_test (SRC ratio = 256.0000) ................. ok
    produces_output (SRC ratio = 256.0000, channels = 1) ... ok
    produces_output (SRC ratio = 256.0000, channels = 2) ... ok
    produces_output (SRC ratio = 256.0000, channels = 3) ... ok
    produces_output (SRC ratio = 256.0000, channels = 4) ... ok
    produces_output (SRC ratio = 256.0000, channels = 5) ... ok
    produces_output (SRC ratio = 256.0000, channels = 6) ... ok
    produces_output (SRC ratio = 256.0000, channels = 7) ... ok
    produces_output (SRC ratio = 256.0000, channels = 8) ... ok
    produces_output (SRC ratio = 256.0000, channels = 9) ... ok
    simple_test (SRC ratio = 0.0039) ................. ok
    produces_output (SRC ratio = 0.0039, channels = 1) ... ok
    produces_output (SRC ratio = 0.0039, channels = 2) ... ok

Line 86 : output_frames_gen does not match (ch2:4, ch1:3).

    produces_output (SRC ratio = 0.0039, channels = 3) ... ok

Line 86 : output_frames_gen does not match (ch3:4, ch1:3).

    produces_output (SRC ratio = 0.0039, channels = 4) ... ok

Line 86 : output_frames_gen does not match (ch4:4, ch1:3).

    produces_output (SRC ratio = 0.0039, channels = 5) ... ok

Line 86 : output_frames_gen does not match (ch5:4, ch1:3).

    produces_output (SRC ratio = 0.0039, channels = 6) ... ok

Line 86 : output_frames_gen does not match (ch6:4, ch1:3).

    produces_output (SRC ratio = 0.0039, channels = 7) ... ok

Line 86 : output_frames_gen does not match (ch7:4, ch1:3).

    produces_output (SRC ratio = 0.0039, channels = 8) ... ok

Line 86 : output_frames_gen does not match (ch8:4, ch1:3).

    produces_output (SRC ratio = 0.0039, channels = 9) ... ok

Line 86 : output_frames_gen does not match (ch9:4, ch1:3).