On 08/18/2010 10:58 AM, IOhannes m zmoelnig wrote:
i tried to reproduce the problem and can confirm it (even with gmerlin backend)
i reported the problem upstream to the gmerlin developers, and we found out that the h.264 file we used was weird: while it reported a constant framerate, in reality the framerate was slightly variable (slightly being in the permille range), which was enough to let the frame accurate seeking go havoc.
Hi, thank you so much for your help.
Is there a way I can "inspect" my files to see whether they are "weird" as well? Also, I'm not sure I understand, how can the frame rate be different "in reality" than what is "reported" by the file? Isn't the framerate just something that is stated? Or you mean that the header of the file declares a constant frame rate and then, along the file, the framerate is actually changed at every frame, block or whatever...
In this case, it shouldn't be difficult to "recode" the file forcing a really-constant framerate (which shouldn't be a real recoding): can you suggest me a program to do that in Linux?
Gem uses frame accurate seeking even for "auto 1", where it simply seeks to the next frame. other applications don't have this problem, as they just play the "next frame" (without seeking).
That seems to perfectly explain why I don't have problems playing the files in other players.
Correct me if I am wrong: recoding the files with I-frames only wouldn't help, would it? But recoding them with a different codec would, wouldn't it?
if you need a quick fix and don't care about frame-accurate seeking at all (including resetting to 0 so that you can loop) and are not afraid of compiling things yourself, you could simply hack the src/Pixes/filmQT4L.cpp file: right at the beginning of the changeImage() function (around line 155) add a line "return FILM_ERROR_SUCCESS;", and recompile Gem.
Oh thank you very much. Unfortunately, I do need frame-accurate seeking. My emphasis on the 1:1 playback speed and the auto mode was just meant to narrow down the source of the problem.
Thanks a lot again cheers m.