Commit a27bf04c authored by sagnowski's avatar sagnowski
Browse files

Fix ISAR transport codec logic

parent 2e3f4585
Loading
Loading
Loading
Loading
+16 −12
Original line number Diff line number Diff line
@@ -62,7 +62,7 @@ def lc3plus_used(test_info, in_fmt, render_config):

FRAME_SIZE_RE = re.compile(r"(\d+)ms")

def isar_frame_size_ms(test_info, in_fmt, render_config, pre_rend_fr):
def transport_codec_frame_size_ms(test_info, in_fmt, render_config, pre_rend_fr):
    explicit_frame_size_ms = FRAME_SIZE_RE.search(render_config)

    # If explicit frame size set in config file, return that
@@ -81,6 +81,9 @@ def isar_frame_size_ms(test_info, in_fmt, render_config, pre_rend_fr):
def check_xfail(
    test_info, in_fmt, render_config, pre_rend_fr, post_rend_fr, ivas_bitrate=None
):
    pre_rend_fr = int(pre_rend_fr)
    post_rend_fr = int(post_rend_fr)

    lc3plus_in_use = lc3plus_used(test_info, in_fmt, render_config)

    if (
@@ -102,7 +105,7 @@ def check_xfail(
    ):
        pytest.skip(f"Unsupported configuration with {in_fmt} at IVAS bitrate {ivas_bitrate}bps")

    if not "0dof" in render_config and pre_rend_fr != "20":
    if not "0dof" in render_config and pre_rend_fr != 20:
        pytest.xfail("pose correction (== !0dof) is expected to use 20ms")

    if (
@@ -111,34 +114,35 @@ def check_xfail(
        # ...and LC3plus codec used
        and lc3plus_in_use
        # ...and split prerendering at frame size 20ms
        and pre_rend_fr == "20"
        and pre_rend_fr == 20
    ):
        pytest.xfail("lc3plus at 0dof must use a native lc3plus frame size (5 or 10ms)")

    if "1dof" in render_config and pre_rend_fr != "20":
    if (
        "1dof" in render_config or "2dof" in render_config or "3dof" in render_config
    ) and pre_rend_fr != 20:
        pytest.xfail(
            "unsupported framing: for 1+dof pre_rend_fr framing shall always be 20ms"
        )

    isar_frame_size = isar_frame_size_ms(test_info, in_fmt, render_config, pre_rend_fr)
    if int(pre_rend_fr) < isar_frame_size:
    if pre_rend_fr < post_rend_fr:
        pytest.xfail(
            "unsupported framing: ISAR codec frame must fit in one output frame"
            # This would require decoding multiple ISAR frames for one post renderer output frame, which is not supported.
            "unsupported framing: Post-renderer frame size must be equal or smaller than ISAR codec frame size"
        )

    if isar_frame_size < int(post_rend_fr):
    transport_codec_frame_size = transport_codec_frame_size_ms(test_info, in_fmt, render_config, pre_rend_fr)
    if pre_rend_fr < transport_codec_frame_size:
        pytest.xfail(
            "unsupported framing: Post-renderer frame size must be equal or smaller than ISAR codec frame size"
            "unsupported framing: ISAR codec frame must fit in one output frame"
        )

    if not lc3plus_in_use and isar_frame_size != int(pre_rend_fr):
    if not lc3plus_in_use and transport_codec_frame_size != pre_rend_fr:
        pytest.xfail(
            "unsupported framing: LCLD codec doesn't support aggregation. ISAR frame size must match split pre-renderer frame size."
        )




def truncate_signal(
    in_file: Path,
    out_file: Path,