GNOME Bugzilla – Bug 655245
[basevideodecoder] stop processing dropped or invisible frames earlier
Last modified: 2012-01-10 07:50:45 UTC
Created attachment 192601 [details] [review] patch v1 Current basevideodecoder update last timestamp for dropped and invisible frames. This force next visible frame to have a new timestamp, what make video playback no smooth. This patch stop processing of dropped/invisible frames earlier to prevent updating of last timestmap.
That's not correct, frames could also be dropped because of QoS for example and then you really want to update the last timestamp and everything. What's the problem with updating the timestamp for altref frames in VP8?
Videos with altref frame displayed not smooth. If there is a camera move or lots of action you can see sort of jumps. The reason is timestamp problem: ^- here is altref time : 1 2 3 4 5 6 7 8 9 mkv ts : 1 3 5 5 7 9 vp8dec ts: 1 3 7 7 9 After altref frame was processed, depending frame will get new timestamp according to frame rate: last-timestamp+duration. Next frame will have same ts as depending frame.
Created attachment 192624 [details] [review] patch v2 How about some thing like this?
Yes, that's better but the name not_frame is not perfect IMHO. I don't have a better suggestion though
Created attachment 192649 [details] [review] patch_1_v3 Changes: - rename not_frame to is_alt_data - spilt patch to basevideodecoder and vp8dec parts.
Created attachment 192650 [details] [review] patch_2_v1 (vp8dec)
Created attachment 204553 [details] [review] 001 - basevideodecoder: add option to hande alt frame data
Created attachment 204554 [details] [review] 002 - vp8dec: use is_alt_data option to prevent timestamp collisions
Created attachment 204730 [details] [review] 002 - vp8dec: use is_alt_data option to prevent timestamp collisions
Created attachment 204731 [details] [review] 001 - basevideodecoder: add option to hande alt frame data change log: - rename is_no_data to decode_only
Created attachment 204732 [details] [review] 001 - basevideodecoder: add option to hande alt frame data changes: check decode_only in gst_base_video_decoder_prepare_finish_frame too
commit 3d34779e2401598ac7f49fedda75d852e98c7bd6 Author: Oleksij Rempel (Alexey Fisher) <bug-track@fisher-privat.net> Date: Wed Jan 4 11:05:48 2012 +0100 vp8dec: use is_alt_data option to prevent timestamp collisions altref/invisible frames usually stored in container with same timestamp as dependet frame. This make basevideodecoder to update timestamp for dependet frame and couse TS colision on next frame: ^- here is altref time : 1 2 3 4 5 6 7 8 9 webm ts : 1 3 5 5 7 9 vp8dec ts: 1 3 7 7 9 Fix bug: https://bugzilla.gnome.org/show_bug.cgi?id=655245 Signed-off-by: Oleksij Rempel (Alexey Fisher) <bug-track@fisher-privat.net> commit 1d0507af896ca76d4629ce1a83ae8da356d4808a Author: Oleksij Rempel (Alexey Fisher) <bug-track@fisher-privat.net> Date: Wed Jan 4 11:09:23 2012 +0100 basevideodecoder: add option to hande alt frame data altref/invisible 'frame' do not describe some frame directly, so it can't be displayed and timestamps should not be updated. Fix bug: https://bugzilla.gnome.org/show_bug.cgi?id=655245 Signed-off-by: Oleksij Rempel (Alexey Fisher) <bug-track@fisher-privat.net>