After an evaluation, GNOME has moved from Bugzilla to GitLab. Learn more about GitLab.
No new issues can be reported in GNOME Bugzilla anymore.
To report an issue in a GNOME project, go to GNOME GitLab.
Do not go to GNOME Gitlab for: Bluefish, Doxygen, GnuCash, GStreamer, java-gnome, LDTP, NetworkManager, Tomboy.
Bug 655245 - [basevideodecoder] stop processing dropped or invisible frames earlier
[basevideodecoder] stop processing dropped or invisible frames earlier
Status: RESOLVED FIXED
Product: GStreamer
Classification: Platform
Component: gst-plugins-bad
git master
Other Linux
: Normal major
: 0.10.24
Assigned To: GStreamer Maintainers
GStreamer Maintainers
Depends on:
Blocks:
 
 
Reported: 2011-07-25 09:28 UTC by Oleksij Rempel
Modified: 2012-01-10 07:50 UTC
See Also:
GNOME target: ---
GNOME version: ---


Attachments
patch v1 (2.13 KB, patch)
2011-07-25 09:28 UTC, Oleksij Rempel
none Details | Review
patch v2 (1.35 KB, patch)
2011-07-25 17:29 UTC, Oleksij Rempel
none Details | Review
patch_1_v3 (1.87 KB, patch)
2011-07-26 09:09 UTC, Oleksij Rempel
none Details | Review
patch_2_v1 (vp8dec) (1.13 KB, patch)
2011-07-26 09:10 UTC, Oleksij Rempel
none Details | Review
001 - basevideodecoder: add option to hande alt frame data (1.85 KB, patch)
2012-01-04 10:13 UTC, Oleksij Rempel
none Details | Review
002 - vp8dec: use is_alt_data option to prevent timestamp collisions (1.17 KB, patch)
2012-01-04 10:16 UTC, Oleksij Rempel
none Details | Review
002 - vp8dec: use is_alt_data option to prevent timestamp collisions (1.17 KB, patch)
2012-01-06 08:02 UTC, Oleksij Rempel
committed Details | Review
001 - basevideodecoder: add option to hande alt frame data (1.85 KB, patch)
2012-01-06 08:03 UTC, Oleksij Rempel
none Details | Review
001 - basevideodecoder: add option to hande alt frame data (2.26 KB, patch)
2012-01-06 10:12 UTC, Oleksij Rempel
committed Details | Review

Description Oleksij Rempel 2011-07-25 09:28:02 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.
Comment 1 Sebastian Dröge (slomo) 2011-07-25 09:32:27 UTC
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?
Comment 2 Oleksij Rempel 2011-07-25 10:10:12 UTC
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.
Comment 3 Oleksij Rempel 2011-07-25 17:29:13 UTC
Created attachment 192624 [details] [review]
patch v2

How about some thing like this?
Comment 4 Sebastian Dröge (slomo) 2011-07-26 07:11:38 UTC
Yes, that's better but the name not_frame is not perfect IMHO. I don't have a better suggestion though
Comment 5 Oleksij Rempel 2011-07-26 09:09:10 UTC
Created attachment 192649 [details] [review]
patch_1_v3

Changes:
- rename not_frame to is_alt_data
- spilt patch to basevideodecoder and vp8dec parts.
Comment 6 Oleksij Rempel 2011-07-26 09:10:11 UTC
Created attachment 192650 [details] [review]
patch_2_v1 (vp8dec)
Comment 7 Oleksij Rempel 2012-01-04 10:13:48 UTC
Created attachment 204553 [details] [review]
001 - basevideodecoder: add option to hande alt frame data
Comment 8 Oleksij Rempel 2012-01-04 10:16:09 UTC
Created attachment 204554 [details] [review]
002 - vp8dec: use is_alt_data option to prevent timestamp collisions
Comment 9 Oleksij Rempel 2012-01-06 08:02:51 UTC
Created attachment 204730 [details] [review]
002 - vp8dec: use is_alt_data option to prevent timestamp collisions
Comment 10 Oleksij Rempel 2012-01-06 08:03:47 UTC
Created attachment 204731 [details] [review]
001 - basevideodecoder: add option to hande alt frame data

change log:
- rename is_no_data to decode_only
Comment 11 Oleksij Rempel 2012-01-06 10:12:48 UTC
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
Comment 12 Sebastian Dröge (slomo) 2012-01-10 07:50:40 UTC
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>