Non-deterministic pipeline current time when seeking and stepping certain ProRes movies on macOS
Reproduce:
- Build the attached
do.cpp
source file byclang++
with GStreamer v1.20.3 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 video file to the current directory as
ProRes.mov
. - Launch the attached
loop.sh
script in the same directory (it's nothing special, it just simplifies multiple attempts and counts them). - In the running
loop.sh
script, observe the output letter (x
for the correct result,o
for an incorrect one), press,
, repeat 10-20 times, press.
to quit.
Expected: every invocation of ./a.out
results in the correct result (letter x
printed), however many times we launch it.
Actual: approx. 2/3 (two thirds) of all the invocations give an incorrect result (letter o
printed).
Note 1: the issue reproduces both on x86_64 (tested in macOS 11.7) and on arm64 (tested on M1 Mini 2020 in macOS 12.5.1).
Note 2: the issue is not new to v1.20, it reproduces with our custom build of v1.18.5 (with AVFoundation-based ProRes support added to vtenc
by Nirbheek Chauhan).