Loading tests/codec_be_to_accepted_release/constants.py +11 −0 Original line number Diff line number Diff line Loading @@ -31,6 +31,9 @@ the United Nations Convention on Contracts on the International Sales of Goods. DTX_ON = "DTXon" DTX_OFF = "DTXoff" ISM_MD_EXTENDED = "MDextended" ISM_MD_NULL = "MDnull" TESTVECTOR_FOR_INPUT_FORMAT = { "STEREO": "ltv{fs}_STEREO.wav", "MC_5_1": "ltv{fs}_MC51.wav", Loading @@ -45,6 +48,10 @@ TESTVECTOR_FOR_INPUT_FORMAT = { "ISM2": "ltv{fs}_2ISM.wav", "ISM3": "ltv{fs}_3ISM.wav", "ISM4": "ltv{fs}_4ISM.wav", "ISM1": "ltv{fs}_1ISM.wav", "ISM2": "ltv{fs}_2ISM.wav", "ISM3": "ltv{fs}_3ISM.wav", "ISM4": "ltv{fs}_4ISM.wav", # TODO: MASA, once created } METADATA_FOR_INPUT_FORMAT = { Loading Loading @@ -113,6 +120,10 @@ BITRATES_ISM1 = BITRATES_ALL[:9] BITRATES_ISM2 = BITRATES_ALL[1:10] BITRATES_ISM3 = BITRATES_ALL[2:11] BITRATES_ISM4 = BITRATES_ALL[2:] BITRATES_ISM1_EXTENDED = [b for b in BITRATES_ISM1 if b > 64000] BITRATES_ISM2_EXTENDED = [b for b in BITRATES_ISM2 if b > 64000] BITRATES_ISM3_EXTENDED = [b for b in BITRATES_ISM3 if b > 64000] BITRATES_ISM4_EXTENDED = [b for b in BITRATES_ISM4 if b > 64000] # sampling rates SAMPLING_RATES_ALL = [16, 32, 48] tests/codec_be_to_accepted_release/test_encoder.py +170 −24 Original line number Diff line number Diff line Loading @@ -34,66 +34,99 @@ from .constants import * from . import TESTV_PATH, DUT_PATH, is_be_to_ref ### --------------- Helper functions --------------- def get_testv(input_format, sampling_rate): testv = TESTVECTOR_FOR_INPUT_FORMAT[input_format].format(fs=sampling_rate) return TESTV_PATH.joinpath(testv) def get_md(input_format): def get_md(input_format, md_type=None): md_files = METADATA_FOR_INPUT_FORMAT.get(input_format, list()) return [str(TESTV_PATH.joinpath(f)) for f in md_files] if md_type == ISM_MD_NULL: md_files = ["NULL" for f in md_files] else: md_files = [str(TESTV_PATH.joinpath(f)) for f in md_files] return md_files def get_options(input_format): return list(CMDL_OPTIONS_FOR_INPUT_FORMAT[input_format]) def get_options(input_format, md_type=None): options = list(CMDL_OPTIONS_FOR_INPUT_FORMAT[input_format]) if md_type == ISM_MD_EXTENDED: assert input_format in INPUT_FORMATS_OBJECT_BASED options[1] = f"+{options[1]}" return options def run_check( input_format, bitrate, sampling_rate, dtx, encoder_frontend, is_ref_creation ): def get_encoder_inputs(input_format, sampling_rate, md_type=None): testv = get_testv(input_format, sampling_rate) options = get_options(input_format) md_files = get_md(input_format) options = get_options(input_format, md_type) md_files = get_md(input_format, md_type) options.extend(md_files) return testv, options bitstream = DUT_PATH.joinpath( f"{testv.stem}-{input_format}-{bitrate}kbps-{sampling_rate}kHz-{dtx}.192" ) def run_check( dut_bitstream, bitrate, sampling_rate, testv, options, encoder_frontend, is_ref_creation, dtx_mode=False, ): encoder_frontend.run( bitrate, sampling_rate, str(testv), str(bitstream), dtx_mode=dtx == DTX_ON, str(dut_bitstream), dtx_mode=dtx_mode, add_option_list=options, ) if not is_ref_creation: if not is_be_to_ref(bitstream): if not is_be_to_ref(dut_bitstream): pytest.fail(f"Bitstream file differs from reference") ### --------------- Actual testcase definitions --------------- # "Vanilla" encoder modes STEREO_PARAMS = list( product(["STEREO"], BITRATES_STEREO, SAMPLING_RATES_ALL, [False, True]) product(["STEREO"], BITRATES_STEREO, SAMPLING_RATES_ALL, [DTX_OFF, DTX_ON]) ) MC_PARAMS = list(product(INPUT_FORMATS_MC, BITRATES_ALL, SAMPLING_RATES_ALL, [False])) MC_PARAMS = list(product(INPUT_FORMATS_MC, BITRATES_ALL, SAMPLING_RATES_ALL, [DTX_OFF])) SBA_PARAMS = list( ( product( INPUT_FORMATS_SCENE_BASED, BITRATES_ALL[:7], SAMPLING_RATES_ALL, [False, True], [DTX_OFF, DTX_ON], ) ) ) + list( (product(INPUT_FORMATS_SCENE_BASED, BITRATES_ALL[7:], SAMPLING_RATES_ALL, [False])) ( product( INPUT_FORMATS_SCENE_BASED, BITRATES_ALL[7:], SAMPLING_RATES_ALL, [DTX_OFF] ) ) ) ISM1_PARAMS = list( product(["ISM1"], BITRATES_ISM1, SAMPLING_RATES_ALL, [DTX_OFF, DTX_ON]) ) ISM2_PARAMS = list( product(["ISM2"], BITRATES_ISM2, SAMPLING_RATES_ALL, [DTX_OFF, DTX_ON]) ) ISM3_PARAMS = list( product(["ISM3"], BITRATES_ISM3, SAMPLING_RATES_ALL, [DTX_OFF, DTX_ON]) ) ISM4_PARAMS = list( product(["ISM4"], BITRATES_ISM4, SAMPLING_RATES_ALL, [DTX_OFF, DTX_ON]) ) ISM1_PARAMS = list(product(["ISM1"], BITRATES_ISM1, SAMPLING_RATES_ALL, [False, True])) ISM2_PARAMS = list(product(["ISM2"], BITRATES_ISM2, SAMPLING_RATES_ALL, [False, True])) ISM3_PARAMS = list(product(["ISM3"], BITRATES_ISM3, SAMPLING_RATES_ALL, [False, True])) ISM4_PARAMS = list(product(["ISM4"], BITRATES_ISM4, SAMPLING_RATES_ALL, [False, True])) # TODO: MASA ENCODER_PARAMS = ( STEREO_PARAMS Loading @@ -115,6 +148,119 @@ def test_encoder( dut_encoder_frontend, update_ref, ): testv, options = get_encoder_inputs(input_format, sampling_rate) bitstream = DUT_PATH.joinpath( f"{testv.stem}-{input_format}-{bitrate}kbps-{sampling_rate}kHz-{dtx}.192" ) run_check( input_format, bitrate, sampling_rate, dtx, dut_encoder_frontend, update_ref == 1 bitstream, bitrate, sampling_rate, testv, options, dut_encoder_frontend, update_ref == 1, dtx == DTX_ON, ) # ISM "special" metadata cases: extended metadata and NULL ISM1_EXTENDED_PARAMS = list( product( ["ISM1"], BITRATES_ISM1_EXTENDED, SAMPLING_RATES_ALL, [DTX_OFF, DTX_ON], [ISM_MD_EXTENDED], ) ) ISM2_EXTENDED_PARAMS = list( product( ["ISM2"], BITRATES_ISM2_EXTENDED, SAMPLING_RATES_ALL, [DTX_OFF, DTX_ON], [ISM_MD_EXTENDED], ) ) ISM3_EXTENDED_PARAMS = list( product( ["ISM3"], BITRATES_ISM3_EXTENDED, SAMPLING_RATES_ALL, [DTX_OFF, DTX_ON], [ISM_MD_EXTENDED], ) ) ISM4_EXTENDED_PARAMS = list( product( ["ISM4"], BITRATES_ISM4_EXTENDED, SAMPLING_RATES_ALL, [DTX_OFF, DTX_ON], [ISM_MD_EXTENDED], ) ) ISM1_NULL_PARAMS = list( product( ["ISM1"], BITRATES_ISM1, SAMPLING_RATES_ALL, [DTX_OFF, DTX_ON], [ISM_MD_NULL] ) ) ISM2_NULL_PARAMS = list( product( ["ISM2"], BITRATES_ISM2, SAMPLING_RATES_ALL, [DTX_OFF, DTX_ON], [ISM_MD_NULL] ) ) ISM3_NULL_PARAMS = list( product( ["ISM3"], BITRATES_ISM3, SAMPLING_RATES_ALL, [DTX_OFF, DTX_ON], [ISM_MD_NULL] ) ) ISM4_NULL_PARAMS = list( product( ["ISM4"], BITRATES_ISM4, SAMPLING_RATES_ALL, [DTX_OFF, DTX_ON], [ISM_MD_NULL] ) ) ISM_MD_SPECIAL_PARAMS = ( ISM1_EXTENDED_PARAMS + ISM2_EXTENDED_PARAMS + ISM3_EXTENDED_PARAMS + ISM4_EXTENDED_PARAMS + ISM1_EXTENDED_PARAMS + ISM2_EXTENDED_PARAMS + ISM3_EXTENDED_PARAMS + ISM4_EXTENDED_PARAMS ) @pytest.mark.parametrize( "input_format,bitrate,sampling_rate,dtx,md_type", ISM_MD_SPECIAL_PARAMS ) def test_encoder_ism_MD_special( input_format, bitrate, sampling_rate, dtx, md_type, dut_encoder_frontend, update_ref, ): testv, options = get_encoder_inputs(input_format, sampling_rate, md_type) if md_type == ISM_MD_EXTENDED: input_format += "_ext_MD" elif md_type == ISM_MD_NULL: input_format += "_null_MD" bitstream = DUT_PATH.joinpath( f"{testv.stem}-{input_format}-{bitrate}kbps-{sampling_rate}kHz-{dtx}.192" ) run_check( bitstream, bitrate, sampling_rate, testv, options, dut_encoder_frontend, update_ref == 1, dtx == DTX_ON, ) Loading
tests/codec_be_to_accepted_release/constants.py +11 −0 Original line number Diff line number Diff line Loading @@ -31,6 +31,9 @@ the United Nations Convention on Contracts on the International Sales of Goods. DTX_ON = "DTXon" DTX_OFF = "DTXoff" ISM_MD_EXTENDED = "MDextended" ISM_MD_NULL = "MDnull" TESTVECTOR_FOR_INPUT_FORMAT = { "STEREO": "ltv{fs}_STEREO.wav", "MC_5_1": "ltv{fs}_MC51.wav", Loading @@ -45,6 +48,10 @@ TESTVECTOR_FOR_INPUT_FORMAT = { "ISM2": "ltv{fs}_2ISM.wav", "ISM3": "ltv{fs}_3ISM.wav", "ISM4": "ltv{fs}_4ISM.wav", "ISM1": "ltv{fs}_1ISM.wav", "ISM2": "ltv{fs}_2ISM.wav", "ISM3": "ltv{fs}_3ISM.wav", "ISM4": "ltv{fs}_4ISM.wav", # TODO: MASA, once created } METADATA_FOR_INPUT_FORMAT = { Loading Loading @@ -113,6 +120,10 @@ BITRATES_ISM1 = BITRATES_ALL[:9] BITRATES_ISM2 = BITRATES_ALL[1:10] BITRATES_ISM3 = BITRATES_ALL[2:11] BITRATES_ISM4 = BITRATES_ALL[2:] BITRATES_ISM1_EXTENDED = [b for b in BITRATES_ISM1 if b > 64000] BITRATES_ISM2_EXTENDED = [b for b in BITRATES_ISM2 if b > 64000] BITRATES_ISM3_EXTENDED = [b for b in BITRATES_ISM3 if b > 64000] BITRATES_ISM4_EXTENDED = [b for b in BITRATES_ISM4 if b > 64000] # sampling rates SAMPLING_RATES_ALL = [16, 32, 48]
tests/codec_be_to_accepted_release/test_encoder.py +170 −24 Original line number Diff line number Diff line Loading @@ -34,66 +34,99 @@ from .constants import * from . import TESTV_PATH, DUT_PATH, is_be_to_ref ### --------------- Helper functions --------------- def get_testv(input_format, sampling_rate): testv = TESTVECTOR_FOR_INPUT_FORMAT[input_format].format(fs=sampling_rate) return TESTV_PATH.joinpath(testv) def get_md(input_format): def get_md(input_format, md_type=None): md_files = METADATA_FOR_INPUT_FORMAT.get(input_format, list()) return [str(TESTV_PATH.joinpath(f)) for f in md_files] if md_type == ISM_MD_NULL: md_files = ["NULL" for f in md_files] else: md_files = [str(TESTV_PATH.joinpath(f)) for f in md_files] return md_files def get_options(input_format): return list(CMDL_OPTIONS_FOR_INPUT_FORMAT[input_format]) def get_options(input_format, md_type=None): options = list(CMDL_OPTIONS_FOR_INPUT_FORMAT[input_format]) if md_type == ISM_MD_EXTENDED: assert input_format in INPUT_FORMATS_OBJECT_BASED options[1] = f"+{options[1]}" return options def run_check( input_format, bitrate, sampling_rate, dtx, encoder_frontend, is_ref_creation ): def get_encoder_inputs(input_format, sampling_rate, md_type=None): testv = get_testv(input_format, sampling_rate) options = get_options(input_format) md_files = get_md(input_format) options = get_options(input_format, md_type) md_files = get_md(input_format, md_type) options.extend(md_files) return testv, options bitstream = DUT_PATH.joinpath( f"{testv.stem}-{input_format}-{bitrate}kbps-{sampling_rate}kHz-{dtx}.192" ) def run_check( dut_bitstream, bitrate, sampling_rate, testv, options, encoder_frontend, is_ref_creation, dtx_mode=False, ): encoder_frontend.run( bitrate, sampling_rate, str(testv), str(bitstream), dtx_mode=dtx == DTX_ON, str(dut_bitstream), dtx_mode=dtx_mode, add_option_list=options, ) if not is_ref_creation: if not is_be_to_ref(bitstream): if not is_be_to_ref(dut_bitstream): pytest.fail(f"Bitstream file differs from reference") ### --------------- Actual testcase definitions --------------- # "Vanilla" encoder modes STEREO_PARAMS = list( product(["STEREO"], BITRATES_STEREO, SAMPLING_RATES_ALL, [False, True]) product(["STEREO"], BITRATES_STEREO, SAMPLING_RATES_ALL, [DTX_OFF, DTX_ON]) ) MC_PARAMS = list(product(INPUT_FORMATS_MC, BITRATES_ALL, SAMPLING_RATES_ALL, [False])) MC_PARAMS = list(product(INPUT_FORMATS_MC, BITRATES_ALL, SAMPLING_RATES_ALL, [DTX_OFF])) SBA_PARAMS = list( ( product( INPUT_FORMATS_SCENE_BASED, BITRATES_ALL[:7], SAMPLING_RATES_ALL, [False, True], [DTX_OFF, DTX_ON], ) ) ) + list( (product(INPUT_FORMATS_SCENE_BASED, BITRATES_ALL[7:], SAMPLING_RATES_ALL, [False])) ( product( INPUT_FORMATS_SCENE_BASED, BITRATES_ALL[7:], SAMPLING_RATES_ALL, [DTX_OFF] ) ) ) ISM1_PARAMS = list( product(["ISM1"], BITRATES_ISM1, SAMPLING_RATES_ALL, [DTX_OFF, DTX_ON]) ) ISM2_PARAMS = list( product(["ISM2"], BITRATES_ISM2, SAMPLING_RATES_ALL, [DTX_OFF, DTX_ON]) ) ISM3_PARAMS = list( product(["ISM3"], BITRATES_ISM3, SAMPLING_RATES_ALL, [DTX_OFF, DTX_ON]) ) ISM4_PARAMS = list( product(["ISM4"], BITRATES_ISM4, SAMPLING_RATES_ALL, [DTX_OFF, DTX_ON]) ) ISM1_PARAMS = list(product(["ISM1"], BITRATES_ISM1, SAMPLING_RATES_ALL, [False, True])) ISM2_PARAMS = list(product(["ISM2"], BITRATES_ISM2, SAMPLING_RATES_ALL, [False, True])) ISM3_PARAMS = list(product(["ISM3"], BITRATES_ISM3, SAMPLING_RATES_ALL, [False, True])) ISM4_PARAMS = list(product(["ISM4"], BITRATES_ISM4, SAMPLING_RATES_ALL, [False, True])) # TODO: MASA ENCODER_PARAMS = ( STEREO_PARAMS Loading @@ -115,6 +148,119 @@ def test_encoder( dut_encoder_frontend, update_ref, ): testv, options = get_encoder_inputs(input_format, sampling_rate) bitstream = DUT_PATH.joinpath( f"{testv.stem}-{input_format}-{bitrate}kbps-{sampling_rate}kHz-{dtx}.192" ) run_check( input_format, bitrate, sampling_rate, dtx, dut_encoder_frontend, update_ref == 1 bitstream, bitrate, sampling_rate, testv, options, dut_encoder_frontend, update_ref == 1, dtx == DTX_ON, ) # ISM "special" metadata cases: extended metadata and NULL ISM1_EXTENDED_PARAMS = list( product( ["ISM1"], BITRATES_ISM1_EXTENDED, SAMPLING_RATES_ALL, [DTX_OFF, DTX_ON], [ISM_MD_EXTENDED], ) ) ISM2_EXTENDED_PARAMS = list( product( ["ISM2"], BITRATES_ISM2_EXTENDED, SAMPLING_RATES_ALL, [DTX_OFF, DTX_ON], [ISM_MD_EXTENDED], ) ) ISM3_EXTENDED_PARAMS = list( product( ["ISM3"], BITRATES_ISM3_EXTENDED, SAMPLING_RATES_ALL, [DTX_OFF, DTX_ON], [ISM_MD_EXTENDED], ) ) ISM4_EXTENDED_PARAMS = list( product( ["ISM4"], BITRATES_ISM4_EXTENDED, SAMPLING_RATES_ALL, [DTX_OFF, DTX_ON], [ISM_MD_EXTENDED], ) ) ISM1_NULL_PARAMS = list( product( ["ISM1"], BITRATES_ISM1, SAMPLING_RATES_ALL, [DTX_OFF, DTX_ON], [ISM_MD_NULL] ) ) ISM2_NULL_PARAMS = list( product( ["ISM2"], BITRATES_ISM2, SAMPLING_RATES_ALL, [DTX_OFF, DTX_ON], [ISM_MD_NULL] ) ) ISM3_NULL_PARAMS = list( product( ["ISM3"], BITRATES_ISM3, SAMPLING_RATES_ALL, [DTX_OFF, DTX_ON], [ISM_MD_NULL] ) ) ISM4_NULL_PARAMS = list( product( ["ISM4"], BITRATES_ISM4, SAMPLING_RATES_ALL, [DTX_OFF, DTX_ON], [ISM_MD_NULL] ) ) ISM_MD_SPECIAL_PARAMS = ( ISM1_EXTENDED_PARAMS + ISM2_EXTENDED_PARAMS + ISM3_EXTENDED_PARAMS + ISM4_EXTENDED_PARAMS + ISM1_EXTENDED_PARAMS + ISM2_EXTENDED_PARAMS + ISM3_EXTENDED_PARAMS + ISM4_EXTENDED_PARAMS ) @pytest.mark.parametrize( "input_format,bitrate,sampling_rate,dtx,md_type", ISM_MD_SPECIAL_PARAMS ) def test_encoder_ism_MD_special( input_format, bitrate, sampling_rate, dtx, md_type, dut_encoder_frontend, update_ref, ): testv, options = get_encoder_inputs(input_format, sampling_rate, md_type) if md_type == ISM_MD_EXTENDED: input_format += "_ext_MD" elif md_type == ISM_MD_NULL: input_format += "_null_MD" bitstream = DUT_PATH.joinpath( f"{testv.stem}-{input_format}-{bitrate}kbps-{sampling_rate}kHz-{dtx}.192" ) run_check( bitstream, bitrate, sampling_rate, testv, options, dut_encoder_frontend, update_ref == 1, dtx == DTX_ON, )