Wrong seeking to a key unit in certain (encoded by Adobe products) ProRes movies (macOS x86_64 & arm64, Windows x86_64, …)
Reproduce: (for macOS)
- Build the attached
do.cpp
source file byclang++
with GStreamer v1.20.5 as noted in the file's top comment (nothing special, just substitute the real path to theGStreamer.framework
— the output binary will be./a.out
). - Put the
bridge_timecode_framenumbers_25fps_ME-ProRes422.mov
video file to the current directory. - Launch the built program as follows:
./a.out bridge_timecode_framenumbers_25fps_ME-ProRes422.mov ; echo $?
— it will output how many frames a seek to the nearest key unit spanned.
Expected: the output is 1
as ProRes is an I-frame-only format.
Actual: the output is 25
which corresponds to a 1-second GOP.
Note 1: the issue reproduces both in Windows (within our software, causing skipping/duplicating some frames) and on macOS: on x86_64 (tested in macOS 11.7.2) and on arm64 (tested on M1 Mini 2020 in macOS 12.6.2).
Note 2: the issue is not new to v1.20, it reproduces with our custom build of v1.18.5 in Windows (with AVFoundation-based ProRes support added to vtenc
by Nirbheek Chauhan).
Edited by Ruslan Khamidullin