GNOME Bugzilla – Bug 777735
urisourcebin: Push EOS if slot is still eos state
Last modified: 2017-08-17 10:42:00 UTC
linked input of slot can be old input, so urisourcebin should check eos state to figure out whether it's new one or not. If not, urisourcebin never ever forwards EOS to downstream at the end of presentation, because the old input is still there without removal
Created attachment 344206 [details] [review] urisourcebin: Push EOS if slot is still eos state
Created attachment 344207 [details] [review] decodebin3: Push EOS to output stream if they are all drained decodebin3 checks input streams and pushes EOS if all input streams are EOSed. If not, fake EOS is pushed to the corresponding slot. When adaptivedemux is used with multi-track configuration, adaptivedemux never ever push EOS to non-selected track because streaming thread for the slot stops with not-linked flow return. So, decodebin3 should generate EOS itself to finish playback.
When adaptivedemux is used, current playbin3 never post EOS message to application by 2 reasons. - urisourcebin drop EOS at the end of presentation. This is not restricted to multi-track. - non-selected track never pushes EOS unlike usual demuxer. So, actual EOS condition cannot be satisfied. I tested with following mpd and several multi-track hls streams. http://dash.akamaized.net/dash264/TestCases/10a/1/iis_forest_short_poem_multi_lang_480p_single_adapt_aaclc_sidx.mpd
commit 60cae68c4e243e461ecd3eff011c0cb988235521 Author: Seungha Yang <sh.yang@lge.com> Date: Wed Jan 25 19:51:17 2017 +0900 decodebin3: Push EOS to output stream if they are all drained decodebin3 checks input streams and pushes EOS if all input streams are EOSed. If not, fake EOS is pushed to the corresponding slot. When adaptivedemux is used with multi-track configuration, adaptivedemux never ever push EOS to non-selected track because streaming thread for the slot stops with not-linked flow return. So, decodebin3 should generate EOS itself to finish playback. https://bugzilla.gnome.org/show_bug.cgi?id=777735 commit fc67a689aff22f183598e5aed6599efb68d5516b Author: Seungha Yang <sh.yang@lge.com> Date: Wed Jan 25 19:20:44 2017 +0900 urisourcebin: Push EOS if slot is still eos state linked input of slot can be old input, so urisourcebin should check eos state to figure out whether it's new one or not. If not, urisourcebin never ever forwards EOS to downstream at the end of presentation, because the old input is still there without removal https://bugzilla.gnome.org/show_bug.cgi?id=777735