from __future__ import annotations from pathlib import Path import sys import unittest SRC_ROOT = Path(__file__).resolve().parents[2] / "src" if str(SRC_ROOT) not in sys.path: sys.path.insert(0, str(SRC_ROOT)) from ffx import cli # noqa: E402 from ffx.track_codec import TrackCodec # noqa: E402 from ffx.track_descriptor import TrackDescriptor # noqa: E402 from ffx.track_type import TrackType # noqa: E402 class UnmuxSequenceTests(unittest.TestCase): def test_h265_video_unmux_uses_annex_b_bitstream_filter_without_forced_format(self): track_descriptor = TrackDescriptor( index=0, sub_index=0, track_type=TrackType.VIDEO, codec_name=TrackCodec.H265, tags={}, disposition_set=set(), ) sequence = cli.getUnmuxSequence( track_descriptor, "input.mp4", "episode_0_eng", ) self.assertEqual( [ "ffmpeg", "-y", "-i", "input.mp4", "-map", "0:v:0", "-c:v", "copy", "-bsf:v", "hevc_mp4toannexb", "episode_0_eng.h265", ], sequence, ) def test_non_h265_unmux_keeps_generic_copy_behavior(self): track_descriptor = TrackDescriptor( index=1, sub_index=0, track_type=TrackType.SUBTITLE, codec_name=TrackCodec.SRT, tags={}, disposition_set=set(), ) sequence = cli.getUnmuxSequence( track_descriptor, "input.mkv", "episode_1_eng", ) self.assertEqual( [ "ffmpeg", "-y", "-i", "input.mkv", "-map", "0:s:0", "-c", "copy", "-f", "srt", "episode_1_eng.srt", ], sequence, ) if __name__ == "__main__": unittest.main()