Loading tests/conftest.py +10 −8 Original line number Diff line number Diff line Loading @@ -1358,7 +1358,7 @@ class PostRendFrontend: quiet_mode: Optional[bool] = True, trajectory_file: Optional[Path] = None, prbfi_file: Optional[Path] = None, framing: Optional[int] = None, render_frame_size: Optional[int] = None, add_option_list: Optional[list] = None, run_dir: Optional[Path] = None, ) -> None: Loading @@ -1368,6 +1368,14 @@ class PostRendFrontend: if quiet_mode: command.extend(["-q"]) if render_frame_size: if render_frame_size not in [5, 10, 20]: raise ValueError(f"Incorrect render frame size specified {render_frame_size}!\n") command.extend(["-fr", str(render_frame_size)]) else: command.extend(["-fr", self.fr]) if input_file_format == "BINAURAL_SPLIT_PCM": # check if input sampling rate has been provided if not input_sampling_rate: Loading Loading @@ -1395,12 +1403,6 @@ class PostRendFrontend: command.extend(["-T", str(trajectory_file)]) if framing: if framing not in [5, 10, 20]: raise ValueError(f"Incorrect framing size specified {framing}!\n") command.extend(["-fr", str(framing)]) if add_option_list is not None: command.extend(add_option_list) Loading @@ -1413,7 +1415,7 @@ class PostRendFrontend: "-o", str(output_file), "-fs", "48", # !!!!! should be eventually removed from the mandatory cmd-line parameters "48", # !!!!! it's a mandatory argument but should be eventually removed ] cmd_str = textwrap.indent(" ".join(command), prefix="\t") Loading tests/rtp/test_rtp.py +74 −22 Original line number Diff line number Diff line Loading @@ -181,7 +181,10 @@ def test_rtp_bitstream_ivas_dtx( @pytest.mark.parametrize("bitrate", [48000]) @pytest.mark.parametrize("bandwidth", ["FB"]) @pytest.mark.parametrize("format", ["SBA"]) @pytest.mark.parametrize("framesPerPacket", [1]) @pytest.mark.parametrize("framesPerPacket", [8]) @pytest.mark.parametrize("splitRenderingCodec", ["LCLD", "LC3PLUS"]) @pytest.mark.parametrize("dof", [0, 1]) @pytest.mark.parametrize("codecFrameSize", [5, 10, 20]) @pytest.mark.parametrize("splitRendering_format", ["BINAURAL_SPLIT_CODED"]) def test_rtp_bitstream_isar( test_info, Loading @@ -193,6 +196,9 @@ def test_rtp_bitstream_isar( dut_decoder_frontend: DecoderFrontend, splitRendering_format: str, dut_postrend_frontend: PostRendFrontend, splitRenderingCodec: str, dof: int, codecFrameSize: int, ): run_rtp_bitstream_tests( CODECS.IVAS, Loading @@ -206,6 +212,9 @@ def test_rtp_bitstream_isar( dut_decoder_frontend, splitRendering_format, dut_postrend_frontend, splitRenderingCodec, dof, codecFrameSize, ) def generateRequests(startTs: int, endTs: int) -> dict: Loading Loading @@ -596,6 +605,9 @@ class TVARGS: self.postRendHeadRotFile = ( Path(ROOT_DIR).joinpath("scripts/trajectories/rotate_euler_quaternion_30s.csv").absolute() ) # self.renderConfigFile = ( # Path(ROOT_DIR).joinpath("tests/split_rendering/renderer_configs/framing/framing_lcld_0dof_20ms.txt").absolute() # ) def add(self, fmt: str, inputFile: str, args: list[str] = []): Loading @@ -618,6 +630,11 @@ class TVARGS: ] return args def renderConfigFile(self, sr_codec: str, dof: int, frame_size: int): return ( Path(ROOT_DIR).joinpath(f"tests/split_rendering/renderer_configs/framing/framing_{sr_codec}_{dof}dof_{frame_size}ms.txt").absolute() ) def piFiles(self) -> tuple[Path]: return (self.sceneFile, self.deviceFile) Loading @@ -634,6 +651,9 @@ def run_rtp_bitstream_tests( dut_decoder_frontend: DecoderFrontend, splitRendering_format: Optional[str] = None, dut_postrend_frontend: Optional[PostRendFrontend] = None, splitRenderingCodec: Optional[str] = None, dof: Optional[int] = None, codecFrameSize: Optional[int] = None, ): tvArgs = TVARGS() tvArgs.add("MONO", "stv48n.wav") Loading @@ -652,6 +672,16 @@ def run_rtp_bitstream_tests( ): pytest.skip() if dof == 0: dut_decoder_frontend.fr = codecFrameSize else: dut_decoder_frontend.fr = 20 renderConfigFile = tvArgs.renderConfigFile(splitRenderingCodec, dof, codecFrameSize) if not renderConfigFile.exists(): # skip, if the corresponding render config file does not exist pytest.skip() print( "Test: dut_encoder_frontend={}, dtx={}, codec:={}, bitrate={}, bandwidth={}, caMode={}, format={},".format( dut_encoder_frontend._path, dtx, codec, bitrate, bandwidth, caMode, format Loading @@ -678,6 +708,11 @@ def run_rtp_bitstream_tests( .joinpath(f"input-{codec}-{bitrate}-{caMode}-{format}-{dtx}.rtpdump") .absolute() ) rtpdumpSplitOut = ( Path(tmp_dir) .joinpath(f"split-{codec}-{bitrate}-{caMode}-{format}-{dtx}.rtpdump") .absolute() ) splitOut = ( Path(tmp_dir) .joinpath(f"split-{codec}-{bitrate}-{caMode}-{format}-{dtx}.cod") Loading @@ -700,6 +735,7 @@ def run_rtp_bitstream_tests( ) # Run WITHOUT rtpdump first to generate reference bitstream # ./IVAS_cod -sba +1 -dtx -rtpdump 8 48000 48 scripts/testv/WYZX_Harvard_Sentences_1-13s_48khz.wav sba.rtp dut_encoder_frontend.run( bitrate=bitrate, input_sampling_rate=48, Loading @@ -722,18 +758,21 @@ def run_rtp_bitstream_tests( else: outMode = "STEREO" if format == "STEREO" else "BINAURAL" generatedPIData = generatePiData(0, 16000) generatedRequests = generateRequests(0, 1600) else: outMode = "" generatedPIData = dict() generatedRequests = dict() packer.packG192File( g192File=g192Out, rtpDumpOut=rtpdumpIn, piData=generatedPIData, requestsData=generateRequests(0, 1600), requestsData=generatedRequests, ) if not split_rendering: # run with G.192 bitstream dut_decoder_frontend.run( output_config=outMode, output_sampling_rate=48, Loading @@ -742,50 +781,63 @@ def run_rtp_bitstream_tests( add_option_list=[], ) # run with RTP dump dut_decoder_frontend.run( output_config=outMode, output_sampling_rate=48, input_bitstream_path=rtpdumpIn, output_path=pcmOut, add_option_list=["-VOIP_HF_ONLY=1", "-PiDataFile", str(piDataOutJson)], ) else: # run with G.192 bitstream # ./IVAS_dec -fr 20 -no_delay_cmp -render_config tests/split_rendering/renderer_configs/framing/framing_lcld_0dof_20ms.txt BINAURAL_SPLIT_CODED 48 sba.g192 outSR_0dof_20ms.cod dut_decoder_frontend.run( output_config=outMode, output_sampling_rate=48, input_bitstream_path=g192Out, output_path=splitOut, add_option_list=["-T", str(tvArgs.preRendHeadRotFile)], add_option_list=["-no_delay_cmp", "-render_config", str(renderConfigFile)], ) # ./ISAR_post_rend -fr 20 -no_delay_cmp -fs 48 -i outSR_0dof_20ms.cod -if BINAURAL_SPLIT_CODED -o output_SR_0dof_20ms.g192.wav -T scripts/trajectories/rotate_euler_quaternion_30s.csv dut_postrend_frontend.run( input_file=splitOut, input_file_format=outMode, output_file=pcmOutG192, add_option_list=["-T", str(tvArgs.postRendHeadRotFile)], render_frame_size=dut_decoder_frontend.fr, add_option_list=["-no_delay_cmp", "-T", str(tvArgs.postRendHeadRotFile)], ) if not split_rendering: dut_decoder_frontend.run( output_config=outMode, output_sampling_rate=48, input_bitstream_path=rtpdumpIn, output_path=pcmOut, add_option_list=["-VOIP_HF_ONLY=1", "-PiDataFile", str(piDataOutJson)], ) else: import pdb pdb.set_trace() # run with RTP dump # ./IVAS_dec -rtpOutSR -VOIP_HF_ONLY=1 -no_delay_cmp -render_config tests/split_rendering/renderer_configs/framing/framing_lcld_0dof_20ms.txt BINAURAL_SPLIT_CODED 48 sba.rtp outSR_0dof_20ms.rtp dut_decoder_frontend.run( output_config=outMode, output_sampling_rate=48, input_bitstream_path=rtpdumpIn, output_path=splitOut, add_option_list=["-VOIP_HF_ONLY=1", "-PiDataFile", str(piDataOutJson), "-T", str(tvArgs.preRendHeadRotFile)], output_path=rtpdumpSplitOut, add_option_list=["-rtpOutSR", "-VOIP_HF_ONLY=1", "-no_delay_cmp", "-render_config", str(renderConfigFile), "-PiDataFile", str(piDataOutJson)], ) # ./ISAR_post_rend -fr 20 -no_delay_cmp -fs 48 -s outSR_0dof_20ms.rtp.sr.txt -i outSR_0dof_20ms.rtp -if RTPDUMP -o output_SR_0dof_20ms.wav -T scripts/trajectories/rotate_euler_quaternion_30s.csv dut_postrend_frontend.run( input_file=splitOut, input_file_format=outMode, input_file=rtpdumpSplitOut, input_file_format="RTPDUMP", output_file=pcmOut, add_option_list=["-T", str(tvArgs.postRendHeadRotFile)], render_frame_size=dut_decoder_frontend.fr, add_option_list=["-no_delay_cmp", "-s", str(rtpdumpSplitOut.with_name(rtpdumpSplitOut.name + '.sr.txt')) , "-T", str(tvArgs.postRendHeadRotFile)], ) decAudio, fs = readfile(pcmOut) g192Audio, Fs = readfile(pcmOutG192) decAudio /= 32768.0 # readfile reuturns 16 bit int g192Audio /= 32768.0 # readfile reuturns 16 bit int if not split_rendering: decAudio = decAudio[4 * 960 :] assert abs(decAudio.shape[0] - g192Audio.shape[0]) <= ( 4 * 960 Loading Loading
tests/conftest.py +10 −8 Original line number Diff line number Diff line Loading @@ -1358,7 +1358,7 @@ class PostRendFrontend: quiet_mode: Optional[bool] = True, trajectory_file: Optional[Path] = None, prbfi_file: Optional[Path] = None, framing: Optional[int] = None, render_frame_size: Optional[int] = None, add_option_list: Optional[list] = None, run_dir: Optional[Path] = None, ) -> None: Loading @@ -1368,6 +1368,14 @@ class PostRendFrontend: if quiet_mode: command.extend(["-q"]) if render_frame_size: if render_frame_size not in [5, 10, 20]: raise ValueError(f"Incorrect render frame size specified {render_frame_size}!\n") command.extend(["-fr", str(render_frame_size)]) else: command.extend(["-fr", self.fr]) if input_file_format == "BINAURAL_SPLIT_PCM": # check if input sampling rate has been provided if not input_sampling_rate: Loading Loading @@ -1395,12 +1403,6 @@ class PostRendFrontend: command.extend(["-T", str(trajectory_file)]) if framing: if framing not in [5, 10, 20]: raise ValueError(f"Incorrect framing size specified {framing}!\n") command.extend(["-fr", str(framing)]) if add_option_list is not None: command.extend(add_option_list) Loading @@ -1413,7 +1415,7 @@ class PostRendFrontend: "-o", str(output_file), "-fs", "48", # !!!!! should be eventually removed from the mandatory cmd-line parameters "48", # !!!!! it's a mandatory argument but should be eventually removed ] cmd_str = textwrap.indent(" ".join(command), prefix="\t") Loading
tests/rtp/test_rtp.py +74 −22 Original line number Diff line number Diff line Loading @@ -181,7 +181,10 @@ def test_rtp_bitstream_ivas_dtx( @pytest.mark.parametrize("bitrate", [48000]) @pytest.mark.parametrize("bandwidth", ["FB"]) @pytest.mark.parametrize("format", ["SBA"]) @pytest.mark.parametrize("framesPerPacket", [1]) @pytest.mark.parametrize("framesPerPacket", [8]) @pytest.mark.parametrize("splitRenderingCodec", ["LCLD", "LC3PLUS"]) @pytest.mark.parametrize("dof", [0, 1]) @pytest.mark.parametrize("codecFrameSize", [5, 10, 20]) @pytest.mark.parametrize("splitRendering_format", ["BINAURAL_SPLIT_CODED"]) def test_rtp_bitstream_isar( test_info, Loading @@ -193,6 +196,9 @@ def test_rtp_bitstream_isar( dut_decoder_frontend: DecoderFrontend, splitRendering_format: str, dut_postrend_frontend: PostRendFrontend, splitRenderingCodec: str, dof: int, codecFrameSize: int, ): run_rtp_bitstream_tests( CODECS.IVAS, Loading @@ -206,6 +212,9 @@ def test_rtp_bitstream_isar( dut_decoder_frontend, splitRendering_format, dut_postrend_frontend, splitRenderingCodec, dof, codecFrameSize, ) def generateRequests(startTs: int, endTs: int) -> dict: Loading Loading @@ -596,6 +605,9 @@ class TVARGS: self.postRendHeadRotFile = ( Path(ROOT_DIR).joinpath("scripts/trajectories/rotate_euler_quaternion_30s.csv").absolute() ) # self.renderConfigFile = ( # Path(ROOT_DIR).joinpath("tests/split_rendering/renderer_configs/framing/framing_lcld_0dof_20ms.txt").absolute() # ) def add(self, fmt: str, inputFile: str, args: list[str] = []): Loading @@ -618,6 +630,11 @@ class TVARGS: ] return args def renderConfigFile(self, sr_codec: str, dof: int, frame_size: int): return ( Path(ROOT_DIR).joinpath(f"tests/split_rendering/renderer_configs/framing/framing_{sr_codec}_{dof}dof_{frame_size}ms.txt").absolute() ) def piFiles(self) -> tuple[Path]: return (self.sceneFile, self.deviceFile) Loading @@ -634,6 +651,9 @@ def run_rtp_bitstream_tests( dut_decoder_frontend: DecoderFrontend, splitRendering_format: Optional[str] = None, dut_postrend_frontend: Optional[PostRendFrontend] = None, splitRenderingCodec: Optional[str] = None, dof: Optional[int] = None, codecFrameSize: Optional[int] = None, ): tvArgs = TVARGS() tvArgs.add("MONO", "stv48n.wav") Loading @@ -652,6 +672,16 @@ def run_rtp_bitstream_tests( ): pytest.skip() if dof == 0: dut_decoder_frontend.fr = codecFrameSize else: dut_decoder_frontend.fr = 20 renderConfigFile = tvArgs.renderConfigFile(splitRenderingCodec, dof, codecFrameSize) if not renderConfigFile.exists(): # skip, if the corresponding render config file does not exist pytest.skip() print( "Test: dut_encoder_frontend={}, dtx={}, codec:={}, bitrate={}, bandwidth={}, caMode={}, format={},".format( dut_encoder_frontend._path, dtx, codec, bitrate, bandwidth, caMode, format Loading @@ -678,6 +708,11 @@ def run_rtp_bitstream_tests( .joinpath(f"input-{codec}-{bitrate}-{caMode}-{format}-{dtx}.rtpdump") .absolute() ) rtpdumpSplitOut = ( Path(tmp_dir) .joinpath(f"split-{codec}-{bitrate}-{caMode}-{format}-{dtx}.rtpdump") .absolute() ) splitOut = ( Path(tmp_dir) .joinpath(f"split-{codec}-{bitrate}-{caMode}-{format}-{dtx}.cod") Loading @@ -700,6 +735,7 @@ def run_rtp_bitstream_tests( ) # Run WITHOUT rtpdump first to generate reference bitstream # ./IVAS_cod -sba +1 -dtx -rtpdump 8 48000 48 scripts/testv/WYZX_Harvard_Sentences_1-13s_48khz.wav sba.rtp dut_encoder_frontend.run( bitrate=bitrate, input_sampling_rate=48, Loading @@ -722,18 +758,21 @@ def run_rtp_bitstream_tests( else: outMode = "STEREO" if format == "STEREO" else "BINAURAL" generatedPIData = generatePiData(0, 16000) generatedRequests = generateRequests(0, 1600) else: outMode = "" generatedPIData = dict() generatedRequests = dict() packer.packG192File( g192File=g192Out, rtpDumpOut=rtpdumpIn, piData=generatedPIData, requestsData=generateRequests(0, 1600), requestsData=generatedRequests, ) if not split_rendering: # run with G.192 bitstream dut_decoder_frontend.run( output_config=outMode, output_sampling_rate=48, Loading @@ -742,50 +781,63 @@ def run_rtp_bitstream_tests( add_option_list=[], ) # run with RTP dump dut_decoder_frontend.run( output_config=outMode, output_sampling_rate=48, input_bitstream_path=rtpdumpIn, output_path=pcmOut, add_option_list=["-VOIP_HF_ONLY=1", "-PiDataFile", str(piDataOutJson)], ) else: # run with G.192 bitstream # ./IVAS_dec -fr 20 -no_delay_cmp -render_config tests/split_rendering/renderer_configs/framing/framing_lcld_0dof_20ms.txt BINAURAL_SPLIT_CODED 48 sba.g192 outSR_0dof_20ms.cod dut_decoder_frontend.run( output_config=outMode, output_sampling_rate=48, input_bitstream_path=g192Out, output_path=splitOut, add_option_list=["-T", str(tvArgs.preRendHeadRotFile)], add_option_list=["-no_delay_cmp", "-render_config", str(renderConfigFile)], ) # ./ISAR_post_rend -fr 20 -no_delay_cmp -fs 48 -i outSR_0dof_20ms.cod -if BINAURAL_SPLIT_CODED -o output_SR_0dof_20ms.g192.wav -T scripts/trajectories/rotate_euler_quaternion_30s.csv dut_postrend_frontend.run( input_file=splitOut, input_file_format=outMode, output_file=pcmOutG192, add_option_list=["-T", str(tvArgs.postRendHeadRotFile)], render_frame_size=dut_decoder_frontend.fr, add_option_list=["-no_delay_cmp", "-T", str(tvArgs.postRendHeadRotFile)], ) if not split_rendering: dut_decoder_frontend.run( output_config=outMode, output_sampling_rate=48, input_bitstream_path=rtpdumpIn, output_path=pcmOut, add_option_list=["-VOIP_HF_ONLY=1", "-PiDataFile", str(piDataOutJson)], ) else: import pdb pdb.set_trace() # run with RTP dump # ./IVAS_dec -rtpOutSR -VOIP_HF_ONLY=1 -no_delay_cmp -render_config tests/split_rendering/renderer_configs/framing/framing_lcld_0dof_20ms.txt BINAURAL_SPLIT_CODED 48 sba.rtp outSR_0dof_20ms.rtp dut_decoder_frontend.run( output_config=outMode, output_sampling_rate=48, input_bitstream_path=rtpdumpIn, output_path=splitOut, add_option_list=["-VOIP_HF_ONLY=1", "-PiDataFile", str(piDataOutJson), "-T", str(tvArgs.preRendHeadRotFile)], output_path=rtpdumpSplitOut, add_option_list=["-rtpOutSR", "-VOIP_HF_ONLY=1", "-no_delay_cmp", "-render_config", str(renderConfigFile), "-PiDataFile", str(piDataOutJson)], ) # ./ISAR_post_rend -fr 20 -no_delay_cmp -fs 48 -s outSR_0dof_20ms.rtp.sr.txt -i outSR_0dof_20ms.rtp -if RTPDUMP -o output_SR_0dof_20ms.wav -T scripts/trajectories/rotate_euler_quaternion_30s.csv dut_postrend_frontend.run( input_file=splitOut, input_file_format=outMode, input_file=rtpdumpSplitOut, input_file_format="RTPDUMP", output_file=pcmOut, add_option_list=["-T", str(tvArgs.postRendHeadRotFile)], render_frame_size=dut_decoder_frontend.fr, add_option_list=["-no_delay_cmp", "-s", str(rtpdumpSplitOut.with_name(rtpdumpSplitOut.name + '.sr.txt')) , "-T", str(tvArgs.postRendHeadRotFile)], ) decAudio, fs = readfile(pcmOut) g192Audio, Fs = readfile(pcmOutG192) decAudio /= 32768.0 # readfile reuturns 16 bit int g192Audio /= 32768.0 # readfile reuturns 16 bit int if not split_rendering: decAudio = decAudio[4 * 960 :] assert abs(decAudio.shape[0] - g192Audio.shape[0]) <= ( 4 * 960 Loading