GNOME Bugzilla – Bug 762613
playbin regression: On failure of vtdec_hw, playbin errors out and doesn't fall back to avdec_h264
Last modified: 2016-02-25 09:40:37 UTC
Created attachment 322243 [details] debug log of failing playbin I have noticed a regression when playing back h264 content on OSX on a machine that doesn't support hardware decoding. When playing back an h264 movie, the pipeline errors out with ERROR: from element /GstPlayBin:playbin0/GstURIDecodeBin:uridecodebin0/GstDecodeBin:decodebin0/GstVtdecHw:vtdechw0: GStreamer encountered a general resource error. Additional debug info: vtdec.c(540): gst_vtdec_create_session (): /GstPlayBin:playbin0/GstURIDecodeBin:uridecodebin0/GstDecodeBin:decodebin0/GstVtdecHw:vtdechw0: VTDecompressionSessionCreate returned -12913 ERROR: pipeline doesn't want to preroll. launch line: gst-launch-1.0 playbin uri=file:///PATH/TOclaudia_h264.mov file: https://www.dropbox.com/s/gwgzsx8t5bvrnyi/claudia_h264.mov?dl=1 A debug log is attached. The expected behaviour is that playbin would just fall back to using avdec_h264 if vtdec_hw doesn't work. I am able to narrow this down to changes made some time between Nov 16th and Nov 17th (in our build from Nov 16th the fallback still works, but any later build until today fails). I'll post the exact GIT SHAs between the working build and the first one that fails in a minute.
the last-known working build was based on the following GIT SHAs: gstreamer 42d45a0f4031478d1043f8b096f4cedba4fd562f gst-plugins-base 09c881ee146511d1a8d64fdf2b0f3b2b97af32de gst-plugins-good 8ef6ecc244285161ce5d12dfd1e6fda2c55c329c gst-plugins-ugly cc2c53bdde6be3d8d400ec9772c78979b8691aa9 gst-plugins-bad 1491d02c4e78bc1321778fe67ceac7ea46b6befa gst-libav 28168ed305f504920b9f270fe342047a544abe0f the first build where the fallback was broken was based on the following GIT SHAs: gstreamer 61a8c946acb077959dfec78fc6393a5bea17a260 gst-plugins-base 5f79ccb420d6b270d108892f1c7e3dedbd64b57a gst-plugins-good 0d4e3847f0c9106ed345f0316e4954f82332e250 gst-plugins-ugly cc2c53bdde6be3d8d400ec9772c78979b8691aa9 gst-plugins-bad 3d5a1ccbf4e5b036164a02c6bd6b0b0ddab19880 gst-libav 28168ed305f504920b9f270fe342047a544abe0f Some commit between the above versions must have broken the falling back.
Created attachment 322248 [details] [review] vtdec: Negotiate the decoder in set_format() already Don't wait until later, we want to know here if the codec can be opened or not for the requested format. This was removed (accidentially?) by 119e09eac315f79ac2cf45b4441ad1d932130614 Without this decodebin has no way to switch to a different decoder if this one does not work.
Your patch restores the fallback for me
Matthew, Alessandro? Any reasons not to do this? :)
Attachment 322248 [details] pushed as 924795c - vtdec: Negotiate the decoder in set_format() already