Seungha Yang
44bc10219c
decodebin3: Change requested_selection to have its own memory for stream-id
...
"requested_selection" list might be generated by select-streams event.
And memory of stream-id(s) in select-streams is independent from that of stream-collection.
https://bugzilla.gnome.org/show_bug.cgi?id=775553
2017-01-31 16:48:04 +01:00
Seungha Yang
30fe123fdb
decodebin3: Change return types of stream_in_{list,collection}
...
Change return types of functions to get memory address of stream-id.
https://bugzilla.gnome.org/show_bug.cgi?id=775553
2017-01-31 16:48:04 +01:00
Seungha Yang
10fe0497b2
playback: Fix leak on select_streams
...
Since gst_event_parse_select_streams() returns newly allocated
memory for stream-id(s), it should be freed explicitly.
https://bugzilla.gnome.org/show_bug.cgi?id=775553
2017-01-31 16:48:04 +01:00
Jan Schmidt
54bf104274
decodebin: Don't leak blocked pad references on errors
...
When the decodebin state change fails because of an error
message, we might not go through PAUSED->READY. Don't leak
a ref to decodebin pads due to pad blocking in that case.
This is because we return ASYNC going to PAUSED, and if
we fail before reaching PAUSED the only transition we'll
see is READY->NULL.
https://bugzilla.gnome.org/show_bug.cgi?id=775893
2017-01-18 13:09:06 +02:00
Jan Schmidt
5076520502
urisourcebin: Preserve seqnum on EOS events
...
When converting EOS to/from our custom fake EOS event,
preserve any seqnum on the original event.
2017-01-12 22:28:50 +11:00
Edward Hervey
90e86b8638
urisourcebin: Avoid races when setting up typefind
...
The state of urisourcebin (and all elements contained within) can
change at any point in time, including when setting up the typefind
element.
In order to avoid ending up with typefind starting without being fully
connected, lock the state and connect to the 'have-type' signal.
2017-01-12 10:51:34 +01:00
Jan Schmidt
ef8f0cdd9d
urisourcebin: Drop fake EOS if the pad got relinked
...
If our pad got relinked in since the fake-EOS was sent to the
pad, then drop the fake-EOS event.
CID: 1398546
2017-01-11 23:18:47 +11:00
Arun Raghavan
a2c2b22176
urisourcebin: Drop some dead code
...
The ret == GST_STATE_CHANGE_FAILURE is handled in the previous for loop
already.
CID: 1398544
2017-01-11 17:14:46 +05:30
Seungha Yang
1eedb4ea91
urisourcebin: Clear pad from pending list if it was linked
...
If not, the other slots might try to link the pad again.
This can happen when the demuxer has multiple src pads
and their caps are identical
https://bugzilla.gnome.org/show_bug.cgi?id=777121
2017-01-11 20:19:45 +11:00
Seungha Yang
7bd7b2209a
urisourcebin: Configure typefind element for non-streaming uri
...
To ensure configuring adaptivedemux if needed,
setup typefind element even if uri is not matched to streaming protocol.
https://bugzilla.gnome.org/show_bug.cgi?id=776458
2017-01-11 00:26:27 +11:00
Seungha Yang
5d0628ff52
urisourcebin: Use GList for typefind elements
...
We need typefind elements per source element's srcpad
https://bugzilla.gnome.org/show_bug.cgi?id=776458
2017-01-11 00:26:27 +11:00
Seungha Yang
46c6e92abd
urisourcebin: Remove unused signal handler variable
...
Remove never used handler id
https://bugzilla.gnome.org/show_bug.cgi?id=776458
2017-01-11 00:26:27 +11:00
Seungha Yang
87f21a925c
urisourcebin: Clear EOS state with stream-start/flush-stop event
...
The EOS state marker should cleared on stream-start or flush-stop
https://bugzilla.gnome.org/show_bug.cgi?id=777009
2017-01-09 22:38:14 +11:00
Seungha Yang
c10e7c5011
urisourcebin: Never push actual EOS event to slot
...
Due to the special nature of adaptivedemux, reconfigure happens
frequently with seek/track-change.
In very exceptional cases, the following sequence is possible:
* EOS event is pushed to queue element and still buffers are queued
* During draining remaining buffers, reconfiguration downstream
happens due to track switch.
* The queue gets a not-linked flow return from downstream
* Because the sinkpad is EOS, the queue registers an
error on the bus, causing the pipeline to fail.
Avoid the sinkpad getting marked EOS in the first place, by using a
custom event in place of EOS.
https://bugzilla.gnome.org/show_bug.cgi?id=777009
2017-01-09 22:31:46 +11:00
Mark Nauwelaerts
28f4e7db12
playsink: do not link to audio or video filter using padname
...
... as a sinkpad need not be called "sink", and it is not the case
for e.g. timeoverlay (and friends).
Fixes https://bugzilla.gnome.org/show_bug.cgi?id=776623
2017-01-04 15:09:00 +01:00
Jan Schmidt
c2a91d2cfd
playback: Fix a small race on decodebin/parsebin shutdown.
...
When shutting down decodebin2 and parsebin, they set their
output pads to flushing, and there is a very small window
where elements might send a sticky event such as a tag event
(which silently fails due to flushing) and then sends a buffer,
and the buffer will return GST_FLOW_ERROR because it can't
forward sticky events. The element will then send an error
message on the bus. This can also happen when elements send EOS
just as shutdown is happening. Since we're about to destroy all
the elements inside parsebin and decodebin anyway, just discard
error messages from them.
A nicer but more difficult fix for GStreamer 2.0 is to make
all event pushing / handling in core return a GstFlowReturn
like buffers do, so we can report a FLUSHING state cleanly.
2017-01-03 02:27:51 +11:00
Jan Schmidt
9517bd9b34
parsebin: Ignore failure to send sticky events
...
When plugging and then exposing a parser, don't fail
if it fails to send sticky events. The most likely
reason is that things were flushed due to the app
immediately doing a seek, but we can't detect flushing
separately to other error conditions without a
gst_pad_send_event_full() core function that returns
a GstFlowReturn.
2016-12-21 00:44:45 +11:00
Sebastian Dröge
ce693174f4
decodebin2: Put the correct element srcpad into the topology for the very last element of a chain
...
We were putting the decode pad there, which is the ghostpad linked to
the last element. The decode pad is already in the pad field.
2016-12-17 22:01:10 +02:00
Sebastian Dröge
46835f550d
decodebin2: Put the correct pad into the stream-topology if a parser/converter is used
...
We have to take the capsfilter into account then as the elements are not
linked directly. Previously this caused NULL be set in these cases.
2016-12-17 22:01:10 +02:00
Sebastian Dröge
991758c3d6
decodebin: For adaptive streaming, ensure to put the buffering multiqueue after a parser or demuxer
...
There are cases when there is no demuxer involved that could do the
buffering, e.g. HLS with raw MP3 or AAC. In this case we want to place
the buffering multiqueue after the parser.
Before this change, we've considered the first element after the
adaptive streaming demuxer as a parser. This is not always true, e.g.
id3demux. Instead we now wait until we actually have a parser (or
decoder).
Fixes playback on such HLS streams.
2016-12-15 16:31:20 +02:00
Seungha Yang
c4929b8647
playback: Add ANY caps features to default text raw caps
...
Raw text caps with any caps features should be also default raw caps
https://bugzilla.gnome.org/show_bug.cgi?id=775967
2016-12-12 11:10:50 +02:00
Seungha Yang
49653b058a
decodebin3: Remove unused variable
...
https://bugzilla.gnome.org/show_bug.cgi?id=773341
2016-12-08 16:59:07 +01:00
Seungha Yang
582c7cef18
decodebin3: More cleanup DecodebinOutputStream and MultiQueueSlot
...
When removing DecodebinInputStream, cleanup DecodebinOutputStream and
MultiQueueSlot also if they were drained.
https://bugzilla.gnome.org/show_bug.cgi?id=773341
2016-12-08 16:59:07 +01:00
Seungha Yang
6bd7a5602c
decodebin3: Drop duration query during _input_pad_unlink ()
...
Playbin3 takes lock when querying duration and handling
stream-collection message. So,to post stream-collection message,
duration query should be dropped when input pad is being unlinked.
https://bugzilla.gnome.org/show_bug.cgi?id=773341
2016-12-08 16:59:07 +01:00
Seungha Yang
7e76405895
decodebin3: Update stream-collection with _input_pad_unlink()
...
Since parsebin does not post new stream-collection message when
it was being removed, decodebin3 should update it itself.
https://bugzilla.gnome.org/show_bug.cgi?id=773341
2016-12-08 16:59:07 +01:00
Seungha Yang
f08e4592a4
decodebin3: Cleanup no more used DecodebinInput
...
Remove DecodebinInput using gst_element_call_async() API.
https://bugzilla.gnome.org/show_bug.cgi?id=773341
2016-12-08 16:59:07 +01:00
Seungha Yang
bd6ec225b9
decodebin3: Cleanup no more used MultiQueueSlot
...
Since MultiQueueSlot cannot be removed inside of streaming thread,
use gst_element_call_async() API.
https://bugzilla.gnome.org/show_bug.cgi?id=773341
2016-12-08 16:59:07 +01:00
Seungha Yang
4fcbcf4e48
decodebin3: Send custom-eos event to notify drained state
...
Likewise how urisourcebin is doing, use custom event if other streams
are still alive.
https://bugzilla.gnome.org/show_bug.cgi?id=773341
2016-12-08 16:59:07 +01:00
Seungha Yang
f4d6aa7167
playbin3: Reconfigure playsink again with pad-removed
...
If selected streams and actived streams are matched,
do reconfigure of playsink again with pad-removed signal
https://bugzilla.gnome.org/show_bug.cgi?id=773341
2016-12-08 16:59:07 +01:00
Seungha Yang
858ee3d913
playback: Remove trailing whitespace
...
https://bugzilla.gnome.org/show_bug.cgi?id=773341
2016-12-08 16:59:07 +01:00
Seungha Yang
cbd4bcd7a4
urisourcebin: Try to link output slot before cleanup
...
Before cleaning up output slot, check pending pads first, if available.
Then, cleanup it only if linking was failed.
https://bugzilla.gnome.org/show_bug.cgi?id=773341
2016-12-08 16:59:07 +01:00
Seungha Yang
5760bd4543
urisourcebin: Cleanup unused output slot
...
Since urisourcebin cannot cleanup unused output slot
in streaming thread, it will be handled in thread pool
with gst_element_call_async ().
https://bugzilla.gnome.org/show_bug.cgi?id=773341
2016-12-08 16:59:07 +01:00
Garima Gaur
6c5381eda6
playbin: Fix caps memory leak in usage of gst_static_caps_get() API
...
https://bugzilla.gnome.org/show_bug.cgi?id=775310
2016-11-29 13:42:28 +02:00
Garima Gaur
b2b8e77566
subtitleoverlay: Fix caps memory leak when failing to get sinkpad from subtitle renderer
...
https://bugzilla.gnome.org/show_bug.cgi?id=775224
2016-11-28 13:56:33 +02:00
Jan Schmidt
8a20b06e0b
playsink: warn if a custom sink is set that has no 'sink' pad
2016-11-17 00:43:58 +11:00
Wonchul Lee
08ee940de2
playbin3: remove dead code
...
It never reach into this code path, custom_combiner always not null
here.
https://bugzilla.gnome.org/show_bug.cgi?id=774454
2016-11-16 00:17:18 +11:00
Seungha Yang
364a45267e
decodebin3: Clear saw_eos flag of DecodebinInputStream by FLUSH event
...
Likewise how GstPad is doing, saw_eos flag of DecodebinInputStream
must be cleared by FLUSH event.
https://bugzilla.gnome.org/show_bug.cgi?id=774343
2016-11-15 21:38:27 +11:00
Wonchul Lee
8b95d17f75
playbin3: Fix deadlock when adding multiple parsebin
...
https://bugzilla.gnome.org/show_bug.cgi?id=773131
2016-11-15 20:37:00 +11:00
Scott D Phillips
ff8d49a4c8
Use intermediate guint when handling GstVideoMultiviewFlags
...
The underlying integer type of the enum GstVideoMultiviewFlags is
implementation defined and may not have the same size as guint.
https://bugzilla.gnome.org/show_bug.cgi?id=774293
2016-11-12 10:51:30 +02:00
Changbok Chea
14ce96a459
urisourcebin: Fix adaptive demuxer's property checking and buffering setting
...
- Add adaptive demuxer's 'connection-speed' property checking
- Set adaptive demuxer q2 buffering property via urisrc use_buffering value
https://bugzilla.gnome.org/show_bug.cgi?id=772550
2016-11-02 11:23:44 +11:00
Seungha Yang
6dbfbead61
urisourcebin: Remove trailing whitespace
...
https://bugzilla.gnome.org/show_bug.cgi?id=773341
2016-11-01 20:06:43 +02:00
hoonhee.lee
1820c18b0f
parsebin: Rename variables include 'decode' to 'parse'
...
https://bugzilla.gnome.org/show_bug.cgi?id=772832
2016-11-01 20:01:20 +02:00
Wonchul Lee
dc7fd9c1f1
urisourcebin: Fix GST_TYPE_URI_SOURCE_BIN macro typo
...
https://bugzilla.gnome.org/show_bug.cgi?id=772445
2016-11-01 20:00:27 +02:00
Wonchul Lee
7c9626a3f4
urisourcebin: fix to log event pointer
...
https://bugzilla.gnome.org/show_bug.cgi?id=772445
2016-11-01 20:00:27 +02:00
Wonchul Lee
9e8c0d224b
urisourcebin: Make use of adaptive demuxer variable
...
https://bugzilla.gnome.org/show_bug.cgi?id=772445
2016-11-01 20:00:27 +02:00
Graham Leggett
98ea3e4647
decodebin3: Fix assertion failure when unreffing NULL stream caps
...
GStreamer-CRITICAL **: gst_mini_object_unref: assertion 'mini_object != NULL' failed
https://bugzilla.gnome.org/show_bug.cgi?id=773441
2016-10-25 12:43:22 +03:00
Seungha Yang
5f2c0c8ea7
decodebin3: More SELECTION_LOCK when linking to slot
...
Since there can be multiple parsebin in a decodebin3,
linking parsebin with MultiQueueSlot should be protected also.
https://bugzilla.gnome.org/show_bug.cgi?id=772855
2016-10-14 08:29:46 +02:00
Edward Hervey
8485a8d786
playback: GstStreamType is a flag
...
Therefor don't use equality
2016-10-13 11:42:28 +02:00
Edward Hervey
acc3a9d242
playback: decodebin3 and parsebin are streams-aware
...
Elements within can add/remove pads at anytime without complying
with the fallback system.
https://bugzilla.gnome.org/show_bug.cgi?id=772741
2016-10-12 15:05:55 +02:00
Wonchul Lee
778ffac86a
parsebin: re-use existing compare_factories utils func
...
https://bugzilla.gnome.org/show_bug.cgi?id=772676
2016-10-11 16:08:27 +01:00