GNOME Bugzilla – Bug 766190
vtdec: corrupted rendering on OSX
Last modified: 2016-06-02 07:03:28 UTC
When the video dimensions change the rendering gets corrupted and all I see is a green rectangle in the video window. This is easy to reproduce on a smooth-streaming sample with playbin, such as: http://playready.directtaps.net/smoothstreaming/SSWSS720H264/SuperSpeedway_720.ism/Manifest A video with fixed dimensions renders fine here.
For a short moment I can see the first video frame correctly rendered but then everything goes HULK :/
This appears to be a regression due to: commit 5228238715a3d73bbfe9a7de1c02941096e95576 Author: Alessandro Decina <alessandro.d@gmail.com> Date: Wed May 4 11:30:11 2016 +1000 applemedia: vtdec: output sysmem by default
Created attachment 327556 [details] vt*:5,videodecoder:6 log
This commit fixes the green frames commit 4a83686a57818e182672b25e5040ea5ba0141f03 Author: Alessandro Decina <alessandro.d@gmail.com> Date: Thu Jun 2 13:10:51 2016 +1000 vtdec: fix switching from GLMemory to Sysmem When renegotiating from GLMemory to Sysmem do teardown the texture_cache. Fixes: https://bugzilla.gnome.org/show_bug.cgi?id=766190
This fixes another issue with multiple bitrate streams commit 3d8d60baa87442b5a38383309481bc15c3fade15 Author: Alessandro Decina <alessandro.d@gmail.com> Date: Thu Jun 2 16:30:02 2016 +1000 vtdec: make vtdec_hw fallback to software on renegotiation When renegotiating mid stream - for example with variable bitrate streams - and therefore destroying and recreating VTSessions, the hw decoder might become temporarily unavailable. To deal with this and avoid erroring out on bitrate changes, vtdec_hw now falls back to using the software decoder if the hw one was available at some point but isn't anymore. At renegotiation/bitrate change time, it will still retry to open the hardware one.
And one more which minimizes the number of VTSessions recreated during negotiation commit bf44430 Author: Alessandro Decina <alessandro.d@gmail.com> Date: Thu Jun 2 11:36:57 2016 +1000 vtdec: optimize renegotiation ::negotiate can be called several times before the CAPS event is sent downstream so use the currently configured output state caps instead of the pad current caps when deciding whether to recreate the VTSession or not. This leads to creating/destroying less VTSessions which makes renegotiation more reliable especially when using hw decoding.