From 58ced36c508476b5dbce4c41b0b34fc90cb6e68f Mon Sep 17 00:00:00 2001 From: yexiaochuan Date: Sun, 4 May 2025 23:32:35 +0800 Subject: [PATCH 1/2] test(video): add test cases for variable framerate videos Signed-off-by: yexiaochuan --- test/generate_reference_resources.sh | 19 + test/resources/var_fps_video.mp4 | Bin 0 -> 36114 bytes ...fps_video.mp4.stream0.all_frames_info.json | 1202 +++++++++++++++++ .../var_fps_video.mp4.stream0.frame000000.pt | Bin 0 -> 51067 bytes .../var_fps_video.mp4.stream0.frame000001.pt | Bin 0 -> 51067 bytes .../var_fps_video.mp4.stream0.frame000002.pt | Bin 0 -> 51067 bytes .../var_fps_video.mp4.stream0.frame000003.pt | Bin 0 -> 51067 bytes .../var_fps_video.mp4.stream0.frame000004.pt | Bin 0 -> 51067 bytes .../var_fps_video.mp4.stream0.frame000005.pt | Bin 0 -> 51067 bytes .../var_fps_video.mp4.stream0.frame000010.pt | Bin 0 -> 51067 bytes .../var_fps_video.mp4.stream0.frame000015.pt | Bin 0 -> 51067 bytes .../var_fps_video.mp4.stream0.frame000020.pt | Bin 0 -> 51067 bytes .../var_fps_video.mp4.stream0.frame000025.pt | Bin 0 -> 51067 bytes .../var_fps_video.mp4.stream0.frame000030.pt | Bin 0 -> 51067 bytes .../var_fps_video.mp4.stream0.frame000035.pt | Bin 0 -> 51067 bytes .../var_fps_video.mp4.stream0.frame000040.pt | Bin 0 -> 51067 bytes .../var_fps_video.mp4.stream0.frame000045.pt | Bin 0 -> 51067 bytes .../var_fps_video.mp4.stream0.frame000050.pt | Bin 0 -> 51067 bytes .../var_fps_video.mp4.stream0.frame000055.pt | Bin 0 -> 51067 bytes .../var_fps_video.mp4.stream0.frame000060.pt | Bin 0 -> 51067 bytes test/test_variable_fps_video.py | 214 +++ test/utils.py | 11 + 22 files changed, 1446 insertions(+) create mode 100644 test/resources/var_fps_video.mp4 create mode 100644 test/resources/var_fps_video.mp4.stream0.all_frames_info.json create mode 100644 test/resources/var_fps_video.mp4.stream0.frame000000.pt create mode 100644 test/resources/var_fps_video.mp4.stream0.frame000001.pt create mode 100644 test/resources/var_fps_video.mp4.stream0.frame000002.pt create mode 100644 test/resources/var_fps_video.mp4.stream0.frame000003.pt create mode 100644 test/resources/var_fps_video.mp4.stream0.frame000004.pt create mode 100644 test/resources/var_fps_video.mp4.stream0.frame000005.pt create mode 100644 test/resources/var_fps_video.mp4.stream0.frame000010.pt create mode 100644 test/resources/var_fps_video.mp4.stream0.frame000015.pt create mode 100644 test/resources/var_fps_video.mp4.stream0.frame000020.pt create mode 100644 test/resources/var_fps_video.mp4.stream0.frame000025.pt create mode 100644 test/resources/var_fps_video.mp4.stream0.frame000030.pt create mode 100644 test/resources/var_fps_video.mp4.stream0.frame000035.pt create mode 100644 test/resources/var_fps_video.mp4.stream0.frame000040.pt create mode 100644 test/resources/var_fps_video.mp4.stream0.frame000045.pt create mode 100644 test/resources/var_fps_video.mp4.stream0.frame000050.pt create mode 100644 test/resources/var_fps_video.mp4.stream0.frame000055.pt create mode 100644 test/resources/var_fps_video.mp4.stream0.frame000060.pt create mode 100644 test/test_variable_fps_video.py diff --git a/test/generate_reference_resources.sh b/test/generate_reference_resources.sh index fba098a7..7428edf8 100755 --- a/test/generate_reference_resources.sh +++ b/test/generate_reference_resources.sh @@ -77,3 +77,22 @@ do python3 "$TORCHCODEC_PATH/test/convert_image_to_tensor.py" "$bmp" rm -f "$bmp" done + +# This video was generated by running the following: +# ffmpeg -f lavfi -i testsrc=duration=10:size=128x128:rate=30 -vf "setpts=PTS*if(gt(N\,30)\,1.5\,1)" -c:v libx264 -bf 0 var_fps_video.mp4 +VIDEO_PATH=$RESOURCES_DIR/var_fps_video.mp4 +STREAMS=(0) + +FRAMES=(0 1 2 3 4 5 10 15 20 25 30 35 40 45 50 55 60) +for stream in "${STREAMS[@]}"; do + for frame in "${FRAMES[@]}"; do + frame_name=$(printf "%06d" "$frame") + ffmpeg -y -i "$VIDEO_PATH" -map 0:"$stream" -vf select="eq(n\,$frame)" -vsync vfr -q:v 2 "$VIDEO_PATH.stream$stream.frame$frame_name.bmp" + done +done + +for bmp in "$RESOURCES_DIR"/*.bmp +do + python3 "$TORCHCODEC_PATH/test/convert_image_to_tensor.py" "$bmp" + rm -f "$bmp" +done \ No newline at end of file diff --git a/test/resources/var_fps_video.mp4 b/test/resources/var_fps_video.mp4 new file mode 100644 index 0000000000000000000000000000000000000000..529b04079c429a5006c815a559f02810c457d821 GIT binary patch literal 36114 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 literal 0 HcmV?d00001 diff --git a/test/resources/var_fps_video.mp4.stream0.all_frames_info.json b/test/resources/var_fps_video.mp4.stream0.all_frames_info.json new file mode 100644 index 00000000..502477a9 --- /dev/null +++ b/test/resources/var_fps_video.mp4.stream0.all_frames_info.json @@ -0,0 +1,1202 @@ +[ + { + "pts_time": "0.000000", + "duration_time": "0.033333" + }, + { + "pts_time": "0.033333", + "duration_time": "0.033333" + }, + { + "pts_time": "0.066667", + "duration_time": "0.033333" + }, + { + "pts_time": "0.100000", + "duration_time": "0.033333" + }, + { + "pts_time": "0.133333", + "duration_time": "0.033333" + }, + { + "pts_time": "0.166667", + "duration_time": "0.033333" + }, + { + "pts_time": "0.200000", + "duration_time": "0.033333" + }, + { + "pts_time": "0.233333", + "duration_time": "0.033333" + }, + { + "pts_time": "0.266667", + "duration_time": "0.033333" + }, + { + "pts_time": "0.300000", + "duration_time": "0.033333" + }, + { + "pts_time": "0.333333", + "duration_time": "0.033333" + }, + { + "pts_time": "0.366667", + "duration_time": "0.033333" + }, + { + "pts_time": "0.400000", + "duration_time": "0.033333" + }, + { + "pts_time": "0.433333", + "duration_time": "0.033333" + }, + { + "pts_time": "0.466667", + "duration_time": "0.033333" + }, + { + "pts_time": "0.500000", + "duration_time": "0.033333" + }, + { + "pts_time": "0.533333", + "duration_time": "0.033333" + }, + { + "pts_time": "0.566667", + "duration_time": "0.033333" + }, + { + "pts_time": "0.600000", + "duration_time": "0.033333" + }, + { + "pts_time": "0.633333", + "duration_time": "0.033333" + }, + { + "pts_time": "0.666667", + "duration_time": "0.033333" + }, + { + "pts_time": "0.700000", + "duration_time": "0.033333" + }, + { + "pts_time": "0.733333", + "duration_time": "0.033333" + }, + { + "pts_time": "0.766667", + "duration_time": "0.033333" + }, + { + "pts_time": "0.800000", + "duration_time": "0.033333" + }, + { + "pts_time": "0.833333", + "duration_time": "0.033333" + }, + { + "pts_time": "0.866667", + "duration_time": "0.033333" + }, + { + "pts_time": "0.900000", + "duration_time": "0.033333" + }, + { + "pts_time": "0.933333", + "duration_time": "0.033333" + }, + { + "pts_time": "0.966667", + "duration_time": "0.033333" + }, + { + "pts_time": "1.000000", + "duration_time": "0.533333" + }, + { + "pts_time": "1.533333", + "duration_time": "0.066667" + }, + { + "pts_time": "1.600000", + "duration_time": "0.033333" + }, + { + "pts_time": "1.633333", + "duration_time": "0.066667" + }, + { + "pts_time": "1.700000", + "duration_time": "0.033333" + }, + { + "pts_time": "1.733333", + "duration_time": "0.066667" + }, + { + "pts_time": "1.800000", + "duration_time": "0.033333" + }, + { + "pts_time": "1.833333", + "duration_time": "0.066667" + }, + { + "pts_time": "1.900000", + "duration_time": "0.033333" + }, + { + "pts_time": "1.933333", + "duration_time": "0.066667" + }, + { + "pts_time": "2.000000", + "duration_time": "0.033333" + }, + { + "pts_time": "2.033333", + "duration_time": "0.066667" + }, + { + "pts_time": "2.100000", + "duration_time": "0.033333" + }, + { + "pts_time": "2.133333", + "duration_time": "0.066667" + }, + { + "pts_time": "2.200000", + "duration_time": "0.033333" + }, + { + "pts_time": "2.233333", + "duration_time": "0.066667" + }, + { + "pts_time": "2.300000", + "duration_time": "0.033333" + }, + { + "pts_time": "2.333333", + "duration_time": "0.066667" + }, + { + "pts_time": "2.400000", + "duration_time": "0.033333" + }, + { + "pts_time": "2.433333", + "duration_time": "0.066667" + }, + { + "pts_time": "2.500000", + "duration_time": "0.033333" + }, + { + "pts_time": "2.533333", + "duration_time": "0.066667" + }, + { + "pts_time": "2.600000", + "duration_time": "0.033333" + }, + { + "pts_time": "2.633333", + "duration_time": "0.066667" + }, + { + "pts_time": "2.700000", + "duration_time": "0.033333" + }, + { + "pts_time": "2.733333", + "duration_time": "0.066667" + }, + { + "pts_time": "2.800000", + "duration_time": "0.033333" + }, + { + "pts_time": "2.833333", + "duration_time": "0.066667" + }, + { + "pts_time": "2.900000", + "duration_time": "0.033333" + }, + { + "pts_time": "2.933333", + "duration_time": "0.066667" + }, + { + "pts_time": "3.000000", + "duration_time": "0.033333" + }, + { + "pts_time": "3.033333", + "duration_time": "0.066667" + }, + { + "pts_time": "3.100000", + "duration_time": "0.033333" + }, + { + "pts_time": "3.133333", + "duration_time": "0.066667" + }, + { + "pts_time": "3.200000", + "duration_time": "0.033333" + }, + { + "pts_time": "3.233333", + "duration_time": "0.066667" + }, + { + "pts_time": "3.300000", + "duration_time": "0.033333" + }, + { + "pts_time": "3.333333", + "duration_time": "0.066667" + }, + { + "pts_time": "3.400000", + "duration_time": "0.033333" + }, + { + "pts_time": "3.433333", + "duration_time": "0.066667" + }, + { + "pts_time": "3.500000", + "duration_time": "0.033333" + }, + { + "pts_time": "3.533333", + "duration_time": "0.066667" + }, + { + "pts_time": "3.600000", + "duration_time": "0.033333" + }, + { + "pts_time": "3.633333", + "duration_time": "0.066667" + }, + { + "pts_time": "3.700000", + "duration_time": "0.033333" + }, + { + "pts_time": "3.733333", + "duration_time": "0.066667" + }, + { + "pts_time": "3.800000", + "duration_time": "0.033333" + }, + { + "pts_time": "3.833333", + "duration_time": "0.066667" + }, + { + "pts_time": "3.900000", + "duration_time": "0.033333" + }, + { + "pts_time": "3.933333", + "duration_time": "0.066667" + }, + { + "pts_time": "4.000000", + "duration_time": "0.033333" + }, + { + "pts_time": "4.033333", + "duration_time": "0.066667" + }, + { + "pts_time": "4.100000", + "duration_time": "0.033333" + }, + { + "pts_time": "4.133333", + "duration_time": "0.066667" + }, + { + "pts_time": "4.200000", + "duration_time": "0.033333" + }, + { + "pts_time": "4.233333", + "duration_time": "0.066667" + }, + { + "pts_time": "4.300000", + "duration_time": "0.033333" + }, + { + "pts_time": "4.333333", + "duration_time": "0.066667" + }, + { + "pts_time": "4.400000", + "duration_time": "0.033333" + }, + { + "pts_time": "4.433333", + "duration_time": "0.066667" + }, + { + "pts_time": "4.500000", + "duration_time": "0.033333" + }, + { + "pts_time": "4.533333", + "duration_time": "0.066667" + }, + { + "pts_time": "4.600000", + "duration_time": "0.033333" + }, + { + "pts_time": "4.633333", + "duration_time": "0.066667" + }, + { + "pts_time": "4.700000", + "duration_time": "0.033333" + }, + { + "pts_time": "4.733333", + "duration_time": "0.066667" + }, + { + "pts_time": "4.800000", + "duration_time": "0.033333" + }, + { + "pts_time": "4.833333", + "duration_time": "0.066667" + }, + { + "pts_time": "4.900000", + "duration_time": "0.033333" + }, + { + "pts_time": "4.933333", + "duration_time": "0.066667" + }, + { + "pts_time": "5.000000", + "duration_time": "0.033333" + }, + { + "pts_time": "5.033333", + "duration_time": "0.066667" + }, + { + "pts_time": "5.100000", + "duration_time": "0.033333" + }, + { + "pts_time": "5.133333", + "duration_time": "0.066667" + }, + { + "pts_time": "5.200000", + "duration_time": "0.033333" + }, + { + "pts_time": "5.233333", + "duration_time": "0.066667" + }, + { + "pts_time": "5.300000", + "duration_time": "0.033333" + }, + { + "pts_time": "5.333333", + "duration_time": "0.066667" + }, + { + "pts_time": "5.400000", + "duration_time": "0.033333" + }, + { + "pts_time": "5.433333", + "duration_time": "0.066667" + }, + { + "pts_time": "5.500000", + "duration_time": "0.033333" + }, + { + "pts_time": "5.533333", + "duration_time": "0.066667" + }, + { + "pts_time": "5.600000", + "duration_time": "0.033333" + }, + { + "pts_time": "5.633333", + "duration_time": "0.066667" + }, + { + "pts_time": "5.700000", + "duration_time": "0.033333" + }, + { + "pts_time": "5.733333", + "duration_time": "0.066667" + }, + { + "pts_time": "5.800000", + "duration_time": "0.033333" + }, + { + "pts_time": "5.833333", + "duration_time": "0.066667" + }, + { + "pts_time": "5.900000", + "duration_time": "0.033333" + }, + { + "pts_time": "5.933333", + "duration_time": "0.066667" + }, + { + "pts_time": "6.000000", + "duration_time": "0.033333" + }, + { + "pts_time": "6.033333", + "duration_time": "0.066667" + }, + { + "pts_time": "6.100000", + "duration_time": "0.033333" + }, + { + "pts_time": "6.133333", + "duration_time": "0.066667" + }, + { + "pts_time": "6.200000", + "duration_time": "0.033333" + }, + { + "pts_time": "6.233333", + "duration_time": "0.066667" + }, + { + "pts_time": "6.300000", + "duration_time": "0.033333" + }, + { + "pts_time": "6.333333", + "duration_time": "0.066667" + }, + { + "pts_time": "6.400000", + "duration_time": "0.033333" + }, + { + "pts_time": "6.433333", + "duration_time": "0.066667" + }, + { + "pts_time": "6.500000", + "duration_time": "0.033333" + }, + { + "pts_time": "6.533333", + "duration_time": "0.066667" + }, + { + "pts_time": "6.600000", + "duration_time": "0.033333" + }, + { + "pts_time": "6.633333", + "duration_time": "0.066667" + }, + { + "pts_time": "6.700000", + "duration_time": "0.033333" + }, + { + "pts_time": "6.733333", + "duration_time": "0.066667" + }, + { + "pts_time": "6.800000", + "duration_time": "0.033333" + }, + { + "pts_time": "6.833333", + "duration_time": "0.066667" + }, + { + "pts_time": "6.900000", + "duration_time": "0.033333" + }, + { + "pts_time": "6.933333", + "duration_time": "0.066667" + }, + { + "pts_time": "7.000000", + "duration_time": "0.033333" + }, + { + "pts_time": "7.033333", + "duration_time": "0.066667" + }, + { + "pts_time": "7.100000", + "duration_time": "0.033333" + }, + { + "pts_time": "7.133333", + "duration_time": "0.066667" + }, + { + "pts_time": "7.200000", + "duration_time": "0.033333" + }, + { + "pts_time": "7.233333", + "duration_time": "0.066667" + }, + { + "pts_time": "7.300000", + "duration_time": "0.033333" + }, + { + "pts_time": "7.333333", + "duration_time": "0.066667" + }, + { + "pts_time": "7.400000", + "duration_time": "0.033333" + }, + { + "pts_time": "7.433333", + "duration_time": "0.066667" + }, + { + "pts_time": "7.500000", + "duration_time": "0.033333" + }, + { + "pts_time": "7.533333", + "duration_time": "0.066667" + }, + { + "pts_time": "7.600000", + "duration_time": "0.033333" + }, + { + "pts_time": "7.633333", + "duration_time": "0.066667" + }, + { + "pts_time": "7.700000", + "duration_time": "0.033333" + }, + { + "pts_time": "7.733333", + "duration_time": "0.066667" + }, + { + "pts_time": "7.800000", + "duration_time": "0.033333" + }, + { + "pts_time": "7.833333", + "duration_time": "0.066667" + }, + { + "pts_time": "7.900000", + "duration_time": "0.033333" + }, + { + "pts_time": "7.933333", + "duration_time": "0.066667" + }, + { + "pts_time": "8.000000", + "duration_time": "0.033333" + }, + { + "pts_time": "8.033333", + "duration_time": "0.066667" + }, + { + "pts_time": "8.100000", + "duration_time": "0.033333" + }, + { + "pts_time": "8.133333", + "duration_time": "0.066667" + }, + { + "pts_time": "8.200000", + "duration_time": "0.033333" + }, + { + "pts_time": "8.233333", + "duration_time": "0.066667" + }, + { + "pts_time": "8.300000", + "duration_time": "0.033333" + }, + { + "pts_time": "8.333333", + "duration_time": "0.066667" + }, + { + "pts_time": "8.400000", + "duration_time": "0.033333" + }, + { + "pts_time": "8.433333", + "duration_time": "0.066667" + }, + { + "pts_time": "8.500000", + "duration_time": "0.033333" + }, + { + "pts_time": "8.533333", + "duration_time": "0.066667" + }, + { + "pts_time": "8.600000", + "duration_time": "0.033333" + }, + { + "pts_time": "8.633333", + "duration_time": "0.066667" + }, + { + "pts_time": "8.700000", + "duration_time": "0.033333" + }, + { + "pts_time": "8.733333", + "duration_time": "0.066667" + }, + { + "pts_time": "8.800000", + "duration_time": "0.033333" + }, + { + "pts_time": "8.833333", + "duration_time": "0.066667" + }, + { + "pts_time": "8.900000", + "duration_time": "0.033333" + }, + { + "pts_time": "8.933333", + "duration_time": "0.066667" + }, + { + "pts_time": "9.000000", + "duration_time": "0.033333" + }, + { + "pts_time": "9.033333", + "duration_time": "0.066667" + }, + { + "pts_time": "9.100000", + "duration_time": "0.033333" + }, + { + "pts_time": "9.133333", + "duration_time": "0.066667" + }, + { + "pts_time": "9.200000", + "duration_time": "0.033333" + }, + { + "pts_time": "9.233333", + "duration_time": "0.066667" + }, + { + "pts_time": "9.300000", + "duration_time": "0.033333" + }, + { + "pts_time": "9.333333", + "duration_time": "0.066667" + }, + { + "pts_time": "9.400000", + "duration_time": "0.033333" + }, + { + "pts_time": "9.433333", + "duration_time": "0.066667" + }, + { + "pts_time": "9.500000", + "duration_time": "0.033333" + }, + { + "pts_time": "9.533333", + "duration_time": "0.066667" + }, + { + "pts_time": "9.600000", + "duration_time": "0.033333" + }, + { + "pts_time": "9.633333", + "duration_time": "0.066667" + }, + { + "pts_time": "9.700000", + "duration_time": "0.033333" + }, + { + "pts_time": "9.733333", + "duration_time": "0.066667" + }, + { + "pts_time": "9.800000", + "duration_time": "0.033333" + }, + { + "pts_time": "9.833333", + "duration_time": "0.066667" + }, + { + "pts_time": "9.900000", + "duration_time": "0.033333" + }, + { + "pts_time": "9.933333", + "duration_time": "0.066667" + }, + { + "pts_time": "10.000000", + "duration_time": "0.033333" + }, + { + "pts_time": "10.033333", + "duration_time": "0.066667" + }, + { + "pts_time": "10.100000", + "duration_time": "0.033333" + }, + { + "pts_time": "10.133333", + "duration_time": "0.066667" + }, + { + "pts_time": "10.200000", + "duration_time": "0.033333" + }, + { + "pts_time": "10.233333", + "duration_time": "0.066667" + }, + { + "pts_time": "10.300000", + "duration_time": "0.033333" + }, + { + "pts_time": "10.333333", + "duration_time": "0.066667" + }, + { + "pts_time": "10.400000", + "duration_time": "0.033333" + }, + { + "pts_time": "10.433333", + "duration_time": "0.066667" + }, + { + "pts_time": "10.500000", + "duration_time": "0.033333" + }, + { + "pts_time": "10.533333", + "duration_time": "0.066667" + }, + { + "pts_time": "10.600000", + "duration_time": "0.033333" + }, + { + "pts_time": "10.633333", + "duration_time": "0.066667" + }, + { + "pts_time": "10.700000", + "duration_time": "0.033333" + }, + { + "pts_time": "10.733333", + "duration_time": "0.066667" + }, + { + "pts_time": "10.800000", + "duration_time": "0.033333" + }, + { + "pts_time": "10.833333", + "duration_time": "0.066667" + }, + { + "pts_time": "10.900000", + "duration_time": "0.033333" + }, + { + "pts_time": "10.933333", + "duration_time": "0.066667" + }, + { + "pts_time": "11.000000", + "duration_time": "0.033333" + }, + { + "pts_time": "11.033333", + "duration_time": "0.066667" + }, + { + "pts_time": "11.100000", + "duration_time": "0.033333" + }, + { + "pts_time": "11.133333", + "duration_time": "0.066667" + }, + { + "pts_time": "11.200000", + "duration_time": "0.033333" + }, + { + "pts_time": "11.233333", + "duration_time": "0.066667" + }, + { + "pts_time": "11.300000", + "duration_time": "0.033333" + }, + { + "pts_time": "11.333333", + "duration_time": "0.066667" + }, + { + "pts_time": "11.400000", + "duration_time": "0.033333" + }, + { + "pts_time": "11.433333", + "duration_time": "0.066667" + }, + { + "pts_time": "11.500000", + "duration_time": "0.033333" + }, + { + "pts_time": "11.533333", + "duration_time": "0.066667" + }, + { + "pts_time": "11.600000", + "duration_time": "0.033333" + }, + { + "pts_time": "11.633333", + "duration_time": "0.066667" + }, + { + "pts_time": "11.700000", + "duration_time": "0.033333" + }, + { + "pts_time": "11.733333", + "duration_time": "0.066667" + }, + { + "pts_time": "11.800000", + "duration_time": "0.033333" + }, + { + "pts_time": "11.833333", + "duration_time": "0.066667" + }, + { + "pts_time": "11.900000", + "duration_time": "0.033333" + }, + { + "pts_time": "11.933333", + "duration_time": "0.066667" + }, + { + "pts_time": "12.000000", + "duration_time": "0.033333" + }, + { + "pts_time": "12.033333", + "duration_time": "0.066667" + }, + { + "pts_time": "12.100000", + "duration_time": "0.033333" + }, + { + "pts_time": "12.133333", + "duration_time": "0.066667" + }, + { + "pts_time": "12.200000", + "duration_time": "0.033333" + }, + { + "pts_time": "12.233333", + "duration_time": "0.066667" + }, + { + "pts_time": "12.300000", + "duration_time": "0.033333" + }, + { + "pts_time": "12.333333", + "duration_time": "0.066667" + }, + { + "pts_time": "12.400000", + "duration_time": "0.033333" + }, + { + "pts_time": "12.433333", + "duration_time": "0.066667" + }, + { + "pts_time": "12.500000", + "duration_time": "0.033333" + }, + { + "pts_time": "12.533333", + "duration_time": "0.066667" + }, + { + "pts_time": "12.600000", + "duration_time": "0.033333" + }, + { + "pts_time": "12.633333", + "duration_time": "0.066667" + }, + { + "pts_time": "12.700000", + "duration_time": "0.033333" + }, + { + "pts_time": "12.733333", + "duration_time": "0.066667" + }, + { + "pts_time": "12.800000", + "duration_time": "0.033333" + }, + { + "pts_time": "12.833333", + "duration_time": "0.066667" + }, + { + "pts_time": "12.900000", + "duration_time": "0.033333" + }, + { + "pts_time": "12.933333", + "duration_time": "0.066667" + }, + { + "pts_time": "13.000000", + "duration_time": "0.033333" + }, + { + "pts_time": "13.033333", + "duration_time": "0.066667" + }, + { + "pts_time": "13.100000", + "duration_time": "0.033333" + }, + { + "pts_time": "13.133333", + "duration_time": "0.066667" + }, + { + "pts_time": "13.200000", + "duration_time": "0.033333" + }, + { + "pts_time": "13.233333", + "duration_time": "0.066667" + }, + { + "pts_time": "13.300000", + "duration_time": "0.033333" + }, + { + "pts_time": "13.333333", + "duration_time": "0.066667" + }, + { + "pts_time": "13.400000", + "duration_time": "0.033333" + }, + { + "pts_time": "13.433333", + "duration_time": "0.066667" + }, + { + "pts_time": "13.500000", + "duration_time": "0.033333" + }, + { + "pts_time": "13.533333", + "duration_time": "0.066667" + }, + { + "pts_time": "13.600000", + "duration_time": "0.033333" + }, + { + "pts_time": "13.633333", + "duration_time": "0.066667" + }, + { + "pts_time": "13.700000", + "duration_time": "0.033333" + }, + { + "pts_time": "13.733333", + "duration_time": "0.066667" + }, + { + "pts_time": "13.800000", + "duration_time": "0.033333" + }, + { + "pts_time": "13.833333", + "duration_time": "0.066667" + }, + { + "pts_time": "13.900000", + "duration_time": "0.033333" + }, + { + "pts_time": "13.933333", + "duration_time": "0.066667" + }, + { + "pts_time": "14.000000", + "duration_time": "0.033333" + }, + { + "pts_time": "14.033333", + "duration_time": "0.066667" + }, + { + "pts_time": "14.100000", + "duration_time": "0.033333" + }, + { + "pts_time": "14.133333", + "duration_time": "0.066667" + }, + { + "pts_time": "14.200000", + "duration_time": "0.033333" + }, + { + "pts_time": "14.233333", + "duration_time": "0.066667" + }, + { + "pts_time": "14.300000", + "duration_time": "0.033333" + }, + { + "pts_time": "14.333333", + "duration_time": "0.066667" + }, + { + "pts_time": "14.400000", + "duration_time": "0.033333" + }, + { + "pts_time": "14.433333", + "duration_time": "0.066667" + }, + { + "pts_time": "14.500000", + "duration_time": "0.033333" + }, + { + "pts_time": "14.533333", + "duration_time": "0.066667" + }, + { + "pts_time": "14.600000", + "duration_time": "0.033333" + }, + { + "pts_time": "14.633333", + "duration_time": "0.066667" + }, + { + "pts_time": "14.700000", + "duration_time": "0.033333" + }, + { + "pts_time": "14.733333", + "duration_time": "0.066667" + }, + { + "pts_time": "14.800000", + "duration_time": "0.033333" + }, + { + "pts_time": "14.833333", + "duration_time": "0.066667" + }, + { + "pts_time": "14.900000", + "duration_time": "0.033333" + }, + { + "pts_time": "14.933333", + "duration_time": "0.033333" + } +] diff --git a/test/resources/var_fps_video.mp4.stream0.frame000000.pt b/test/resources/var_fps_video.mp4.stream0.frame000000.pt new file mode 100644 index 0000000000000000000000000000000000000000..a7a834a005037ed5f4b9263ad243769629577800 GIT binary patch literal 51067 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 K7fJTF`~E**y?}@S literal 0 HcmV?d00001 diff --git a/test/resources/var_fps_video.mp4.stream0.frame000002.pt b/test/resources/var_fps_video.mp4.stream0.frame000002.pt new file mode 100644 index 0000000000000000000000000000000000000000..301c260e8b2a4da1277e3a9043da64c807183ad7 GIT binary patch literal 51067 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 literal 0 HcmV?d00001 diff --git a/test/resources/var_fps_video.mp4.stream0.frame000003.pt b/test/resources/var_fps_video.mp4.stream0.frame000003.pt new file mode 100644 index 0000000000000000000000000000000000000000..7bcd549a2d095bb0d1691597e333317132c6f209 GIT binary patch literal 51067 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 literal 0 HcmV?d00001 diff --git a/test/resources/var_fps_video.mp4.stream0.frame000004.pt b/test/resources/var_fps_video.mp4.stream0.frame000004.pt new file mode 100644 index 0000000000000000000000000000000000000000..e064927744542cbb8074eb29761658f77b3706e8 GIT binary patch literal 51067 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 ScJ44wFXCENg=BlX?f(ZC(|7Rz literal 0 HcmV?d00001 diff --git a/test/resources/var_fps_video.mp4.stream0.frame000020.pt b/test/resources/var_fps_video.mp4.stream0.frame000020.pt new file mode 100644 index 0000000000000000000000000000000000000000..75d1714ba3c156d5c6c48cc6610a4a02f146d9eb GIT binary patch literal 51067 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 WOZKxE-QGRs=|zl2RY>-?`~H6ti+F+n literal 0 HcmV?d00001 diff --git a/test/resources/var_fps_video.mp4.stream0.frame000025.pt b/test/resources/var_fps_video.mp4.stream0.frame000025.pt new file mode 100644 index 0000000000000000000000000000000000000000..989f636e2b9a170939edb3f3fff03d4aeb0817fb GIT binary patch literal 51067 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 literal 0 HcmV?d00001 diff --git a/test/resources/var_fps_video.mp4.stream0.frame000035.pt b/test/resources/var_fps_video.mp4.stream0.frame000035.pt new file mode 100644 index 0000000000000000000000000000000000000000..442c4b4abe2b5642075fa4bf55fa998ab92a6afa GIT binary patch literal 51067 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 literal 0 HcmV?d00001 diff --git a/test/resources/var_fps_video.mp4.stream0.frame000040.pt b/test/resources/var_fps_video.mp4.stream0.frame000040.pt new file mode 100644 index 0000000000000000000000000000000000000000..62acd5c4267d803ac120206d76cd704e386617ac GIT binary patch literal 51067 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

K3uc_E6jbnNh4;v5i1j#&aaoWrwYV`C+p!0$ zLy5n3OGS0${IO|AUK{0PpCY_Q@`_s_Pc_|9wMtk_$fXLhP~7prM>uE7a9}tFPOuZv zZbzuK8Y$ZUEdFy^zFVO$>@Ew_Aey1L$lsH9z{MRE_>W3c!SyR?1@R0$L3QNmIM5bz zWwMqal4Zyi6(Nnq<`aC5B6kyR!@kT@Q=7qf^4%*MsbYw<-;2$#5aey}#U||wmtq_= zc8hKmM`aiXpu@An^rb4|T30KC*f}oJbe02R_p5b5+;>(7e{Yxj+O#KyiZaJQ1=S`l zC6i=M(86>S)Jr+`oIf-YBu2V-(w{)ajaQ%Mp$|W8TWIZJe*6)OHKSi1xTMtaR~&_~ zc5K-4huS4jIkyhhQqfIhYYK@y$LLsD=1v!`>?H5zc(4Oj`oiwAaK8NU3OiVSn1X*q zX&mYpH?#!0s?x=@<49h((_7fyYSvr;BGaNImAH<686zC@5ZaR!EEQx}!AoY)!RRAm z`3Z|?0qMHB=q^IH0mc~)M~4IBC18pS5^+O92l^)Hwu3k-O$2f%oR)rFD^;(u{V*$c}e50sf{Ltc@{H^^K5J~_7UJO(Td4r$f!?}HD7)CN~sgyFF z)M@!{TL&?Jak;G=Gvvd>*wGgB(kdE)J!dp~8BJk&oEI*oDR`uEw9nzpkH3w-RW;)! zp=pQ~Eub=Gy-o7eNZru1B@gD}cD(Fw{%hBiD}TS_r;pIL;Oy~l?HUY&QUxyqZ=X)0 z3~PDY{S^(*z)b;6C1}iZM%u`Q0W96x*V%`}jPCtE>9Ocpl zZ`^qTj#B=uUE@9@n3H;J(-B910`ukHGW?r84aQ9ldf7EsZ))H6*Pi*eo28E+|5nY~ z@N&!=Y}?DO+&Zy&Y;s*oH|@JP_g&kb%oT9PtXoey>*SG;?2eCx!9@rm}07p?fjSsVY!z#F$_v!Z>=Me96i z)|S`aJ?LTg;9fMTvuADk{((2$-PqTzDV1^zFA4V@wtV73ru_eRiP|w;|4;7!_&dAk XsPDMnVsvZQ*rylqH)WFb-MarDp|Cv~ literal 0 HcmV?d00001 diff --git a/test/resources/var_fps_video.mp4.stream0.frame000050.pt b/test/resources/var_fps_video.mp4.stream0.frame000050.pt new file mode 100644 index 0000000000000000000000000000000000000000..cedb6d216579caf92dc81a75e3939ac4ee17608e GIT binary patch literal 51067 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 x6jBV&4ra0~uegvU{rhoe#zfcNic{~t)$L_Gii literal 0 HcmV?d00001 diff --git a/test/resources/var_fps_video.mp4.stream0.frame000055.pt b/test/resources/var_fps_video.mp4.stream0.frame000055.pt new file mode 100644 index 0000000000000000000000000000000000000000..a57ca9f647e6c6add1da6eee74f7d33399d0a427 GIT binary patch literal 51067 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 literal 0 HcmV?d00001 diff --git a/test/test_variable_fps_video.py b/test/test_variable_fps_video.py new file mode 100644 index 00000000..f71dcd6f --- /dev/null +++ b/test/test_variable_fps_video.py @@ -0,0 +1,214 @@ +# Copyright (c) Meta Platforms, Inc. and affiliates. +# All rights reserved. +# +# This source code is licensed under the BSD-style license found in the +# LICENSE file in the root directory of this source tree. + +import os +import json +import pathlib +import pytest +import numpy as np +import torch + +from torchcodec._core import ( + create_from_file, + add_video_stream, + get_next_frame, + get_frame_at_index, + get_frame_at_pts, + get_frames_in_range, + get_json_metadata, + seek_to_pts, +) + +from .utils import ( + assert_frames_equal, + cpu_and_cuda, + TestVideo, + TestVideoStreamInfo, + TestFrameInfo, + _get_file_path, + VAR_FPS_VIDEO, +) + +class TestVariableFPSVideoDecoder: + def _check_video_exists(self): + try: + VAR_FPS_VIDEO.path + except FileNotFoundError: + pytest.skip("Variable FPS test video not found") + + @pytest.mark.parametrize("device", cpu_and_cuda()) + def test_basic_decoding(self, device): + self._check_video_exists() + + decoder = create_from_file(str(VAR_FPS_VIDEO.path)) + add_video_stream(decoder, device=device) + + frame0, pts0, duration0 = get_next_frame(decoder) + reference_frame0 = VAR_FPS_VIDEO.get_frame_data_by_index(0) + assert_frames_equal(frame0, reference_frame0.to(device)) + + metadata = get_json_metadata(decoder) + metadata_dict = json.loads(metadata) + assert "numFrames" in metadata_dict + assert metadata_dict["numFrames"] > 30, "Test video should have at least 30 frames" + + @pytest.mark.parametrize("device", cpu_and_cuda()) + def test_exact_seeking_mode(self, device): + """Test behavior in exact seeking mode (should work properly)""" + self._check_video_exists() + + decoder = create_from_file(str(VAR_FPS_VIDEO.path), seek_mode="exact") + add_video_stream(decoder, device=device) + + metadata = get_json_metadata(decoder) + metadata_dict = json.loads(metadata) + + test_pts = [0.0, 0.5, 1.0, 1.5, 2.0] + for pts in test_pts: + if pts < metadata_dict["durationSeconds"]: + frame, actual_pts, duration = get_frame_at_pts(decoder, pts) + assert frame is not None, f"Failed to seek to {pts}s in exact mode" + assert abs(actual_pts.item() - pts) <= duration.item(), \ + f"Frame timestamp ({actual_pts.item()}) differs too much from requested time ({pts})" + + @pytest.mark.parametrize("device", cpu_and_cuda()) + def test_approximate_seeking_mode_behavior(self, device): + """Test behavior in approximate seeking mode (may fail as expected)""" + self._check_video_exists() + + # Create two decoders: one with exact mode, one with approximate mode + decoder_exact = create_from_file(str(VAR_FPS_VIDEO.path), seek_mode="exact") + add_video_stream(decoder_exact, device=device) + + decoder_approx = create_from_file(str(VAR_FPS_VIDEO.path), seek_mode="approximate") + add_video_stream(decoder_approx, device=device) + + metadata = get_json_metadata(decoder_exact) + metadata_dict = json.loads(metadata) + + # Compare seeking in both modes + test_pts = [0.0, 0.5, 1.0, 1.5, 2.0] + differences = [] + + for pts in test_pts: + if pts < metadata_dict["durationSeconds"]: + frame_exact, pts_exact, _ = get_frame_at_pts(decoder_exact, pts) + + try: + frame_approx, pts_approx, _ = get_frame_at_pts(decoder_approx, pts) + + differences.append({ + "seek_pts": pts, + "exact_pts": pts_exact.item(), + "approx_pts": pts_approx.item(), + "frames_match": torch.allclose(frame_exact, frame_approx), + "pts_difference": abs(pts_exact.item() - pts_approx.item()), + "approximate_failed": False + }) + except Exception as e: + differences.append({ + "seek_pts": pts, + "exact_pts": pts_exact.item(), + "error": str(e), + "approximate_failed": True + }) + + # Print differences (useful for debugging) + for diff in differences: + if diff["approximate_failed"]: + print(f"Seeking to {diff['seek_pts']}s failed in approximate mode: {diff['error']}") + else: + print(f"Seeking to {diff['seek_pts']}s: exact={diff['exact_pts']}, " + f"approx={diff['approx_pts']}, diff={diff['pts_difference']}, " + f"frames {'match' if diff['frames_match'] else 'differ'}") + + # No assertion as approximate mode is expected to potentially fail + + @pytest.mark.parametrize("device", cpu_and_cuda()) + def test_frame_timing_pattern(self, device): + self._check_video_exists() + + decoder = create_from_file(str(VAR_FPS_VIDEO.path)) + add_video_stream(decoder, device=device) + + frames_info = [] + frame_index = 0 + + seek_to_pts(decoder, 0.0) + + while True: + try: + frame, pts, duration = get_next_frame(decoder) + frames_info.append({ + "index": frame_index, + "pts": pts.item(), + "duration": duration.item() + }) + frame_index += 1 + except IndexError: + break + + assert len(frames_info) > 30, "Not enough frames to verify variable frame rate" + + intervals_before = [frames_info[i+1]["pts"] - frames_info[i]["pts"] + for i in range(min(30, len(frames_info)-1))] + + intervals_after = [frames_info[i+1]["pts"] - frames_info[i]["pts"] + for i in range(30, min(60, len(frames_info)-1))] + + if len(intervals_after) > 5: + avg_interval_before = sum(intervals_before) / len(intervals_before) + avg_interval_after = sum(intervals_after) / len(intervals_after) + + print(f"Average interval for first 30 frames: {avg_interval_before:.6f}s") + print(f"Average interval for subsequent frames: {avg_interval_after:.6f}s") + + expected_ratio = 0.5 + actual_ratio = avg_interval_before / avg_interval_after + + # Allow for some error + assert abs(actual_ratio - expected_ratio) < 0.2, \ + f"Interval ratio ({actual_ratio:.2f}) differs too much from expected ({expected_ratio})" + + @pytest.mark.parametrize("device", cpu_and_cuda()) + def test_sequential_decoding(self, device): + self._check_video_exists() + + decoder = create_from_file(str(VAR_FPS_VIDEO.path)) + add_video_stream(decoder, device=device) + + seek_to_pts(decoder, 0.0) + + # Decode multiple frames and verify monotonically increasing timestamps + last_pts = -1.0 + for _ in range(50): + try: + frame, pts, duration = get_next_frame(decoder) + current_pts = pts.item() + + assert current_pts > last_pts, \ + f"Frame timestamps not monotonically increasing: current={current_pts}, previous={last_pts}" + + last_pts = current_pts + except IndexError: + break + + @pytest.mark.parametrize("device", cpu_and_cuda()) + def test_frames_in_range(self, device): + self._check_video_exists() + + decoder = create_from_file(str(VAR_FPS_VIDEO.path)) + add_video_stream(decoder, device=device) + + frames, pts_list, durations = get_frames_in_range(decoder, start=0, stop=10) + + assert len(frames) == 10, f"Expected 10 frames, got {len(frames)}" + + assert len(pts_list) == len(frames), "pts list length should match frame count" + assert len(durations) == len(frames), "durations list length should match frame count" + + for i in range(1, len(pts_list)): + assert pts_list[i] > pts_list[i-1], f"pts not monotonically increasing: {pts_list}" \ No newline at end of file diff --git a/test/utils.py b/test/utils.py index e7ce12e5..3e81183e 100644 --- a/test/utils.py +++ b/test/utils.py @@ -561,3 +561,14 @@ def sample_format(self) -> str: }, }, ) + +VAR_FPS_VIDEO = TestVideo( + filename="var_fps_video.mp4", + default_stream_index=0, + # This metadata is extracted manually. + # $ ffprobe -v error -hide_banner -select_streams v:0 -show_frames -of json test/resources/av1_video.mkv > out.json + stream_infos={ + 0: TestVideoStreamInfo(width=320, height=240, num_color_channels=3), + }, + frames={}, +) \ No newline at end of file From bd9cbd712cd4522ba17745de72a1aa1e930b5039 Mon Sep 17 00:00:00 2001 From: yexiaochuan Date: Sun, 25 May 2025 16:08:13 +0800 Subject: [PATCH 2/2] Fix variable FPS video decoder tests to use public API Signed-off-by: yexiaochuan --- test/test_variable_fps_video.py | 54 ++++++++++++++------------------- 1 file changed, 22 insertions(+), 32 deletions(-) diff --git a/test/test_variable_fps_video.py b/test/test_variable_fps_video.py index f71dcd6f..1597fef4 100644 --- a/test/test_variable_fps_video.py +++ b/test/test_variable_fps_video.py @@ -22,6 +22,9 @@ seek_to_pts, ) +from torchcodec.decoders import VideoDecoder,VideoStreamMetadata +from torchcodec import Frame, FrameBatch + from .utils import ( assert_frames_equal, cpu_and_cuda, @@ -43,36 +46,27 @@ def _check_video_exists(self): def test_basic_decoding(self, device): self._check_video_exists() - decoder = create_from_file(str(VAR_FPS_VIDEO.path)) - add_video_stream(decoder, device=device) + decoder = VideoDecoder(str(VAR_FPS_VIDEO.path)) - frame0, pts0, duration0 = get_next_frame(decoder) - reference_frame0 = VAR_FPS_VIDEO.get_frame_data_by_index(0) - assert_frames_equal(frame0, reference_frame0.to(device)) + frame = decoder.get_frame_at(0) + assert isinstance(frame, Frame) - metadata = get_json_metadata(decoder) - metadata_dict = json.loads(metadata) - assert "numFrames" in metadata_dict - assert metadata_dict["numFrames"] > 30, "Test video should have at least 30 frames" + metadata = decoder.metadata + assert isinstance(metadata, VideoStreamMetadata) + assert metadata.num_frames > 30 @pytest.mark.parametrize("device", cpu_and_cuda()) def test_exact_seeking_mode(self, device): - """Test behavior in exact seeking mode (should work properly)""" self._check_video_exists() - decoder = create_from_file(str(VAR_FPS_VIDEO.path), seek_mode="exact") - add_video_stream(decoder, device=device) - - metadata = get_json_metadata(decoder) - metadata_dict = json.loads(metadata) + decoder = VideoDecoder(str(VAR_FPS_VIDEO.path), seek_mode="exact") - test_pts = [0.0, 0.5, 1.0, 1.5, 2.0] - for pts in test_pts: - if pts < metadata_dict["durationSeconds"]: - frame, actual_pts, duration = get_frame_at_pts(decoder, pts) - assert frame is not None, f"Failed to seek to {pts}s in exact mode" - assert abs(actual_pts.item() - pts) <= duration.item(), \ - f"Frame timestamp ({actual_pts.item()}) differs too much from requested time ({pts})" + test_timestamps = [0.0, 0.5, 1.0, 1.5, 2.0] + for timestamp in test_timestamps: + if timestamp < decoder.metadata.duration_seconds: + frame_batch = decoder.get_frames_played_at(seconds=[timestamp]) + assert isinstance(frame_batch, FrameBatch) + assert abs(frame_batch.pts_seconds[0] - timestamp) <= frame_batch.duration_seconds[0] @pytest.mark.parametrize("device", cpu_and_cuda()) def test_approximate_seeking_mode_behavior(self, device): @@ -200,15 +194,11 @@ def test_sequential_decoding(self, device): def test_frames_in_range(self, device): self._check_video_exists() - decoder = create_from_file(str(VAR_FPS_VIDEO.path)) - add_video_stream(decoder, device=device) - - frames, pts_list, durations = get_frames_in_range(decoder, start=0, stop=10) - - assert len(frames) == 10, f"Expected 10 frames, got {len(frames)}" + decoder = VideoDecoder(str(VAR_FPS_VIDEO.path)) - assert len(pts_list) == len(frames), "pts list length should match frame count" - assert len(durations) == len(frames), "durations list length should match frame count" + frame_batch = decoder.get_frames_in_range(0, 10) + assert isinstance(frame_batch, FrameBatch) + assert len(frame_batch) == 10 - for i in range(1, len(pts_list)): - assert pts_list[i] > pts_list[i-1], f"pts not monotonically increasing: {pts_list}" \ No newline at end of file + timestamps = frame_batch.pts_seconds.tolist() + assert all(timestamps[i] < timestamps[i+1] for i in range(len(timestamps)-1))