mirror of
https://gitlab.freedesktop.org/gstreamer/gstreamer.git
synced 2025-06-05 15:08:53 +00:00
decodebin2: Chains with an exposed endpad are complete too
This allows partial group changes, i.e. demuxer2 in the example below goes EOS but has a next group and audio2 stays the same. /-- >demuxer2---->video demuxer--- \--->audio1 \--->audio2
This commit is contained in:
parent
bf7cd0ed81
commit
9bd6fe41cb
1 changed files with 8 additions and 3 deletions
|
@ -2191,7 +2191,7 @@ out:
|
||||||
*
|
*
|
||||||
* Returns TRUE if the chain is complete, this means either
|
* Returns TRUE if the chain is complete, this means either
|
||||||
* a) This chain is a dead end, i.e. we have no suitable plugins
|
* a) This chain is a dead end, i.e. we have no suitable plugins
|
||||||
* b) This chain ends in an endpad and this is blocked
|
* b) This chain ends in an endpad and this is blocked or exposed
|
||||||
*
|
*
|
||||||
* Not MT-safe, always call with decodebin expose lock
|
* Not MT-safe, always call with decodebin expose lock
|
||||||
*/
|
*/
|
||||||
|
@ -2200,7 +2200,12 @@ gst_decode_chain_is_complete (GstDecodeChain * chain)
|
||||||
{
|
{
|
||||||
gboolean complete = FALSE;
|
gboolean complete = FALSE;
|
||||||
|
|
||||||
if (chain->deadend || (chain->endpad && chain->endpad->blocked)) {
|
if (chain->deadend) {
|
||||||
|
complete = TRUE;
|
||||||
|
goto out;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (chain->endpad && (chain->endpad->blocked || chain->endpad->exposed)) {
|
||||||
complete = TRUE;
|
complete = TRUE;
|
||||||
goto out;
|
goto out;
|
||||||
}
|
}
|
||||||
|
@ -2543,7 +2548,7 @@ gst_decode_chain_expose (GstDecodeChain * chain, GList ** endpads)
|
||||||
return TRUE;
|
return TRUE;
|
||||||
|
|
||||||
if (chain->endpad) {
|
if (chain->endpad) {
|
||||||
if (!chain->endpad->blocked)
|
if (!chain->endpad->blocked && !chain->endpad->exposed)
|
||||||
return FALSE;
|
return FALSE;
|
||||||
*endpads = g_list_prepend (*endpads, gst_object_ref (chain->endpad));
|
*endpads = g_list_prepend (*endpads, gst_object_ref (chain->endpad));
|
||||||
return TRUE;
|
return TRUE;
|
||||||
|
|
Loading…
Reference in a new issue