Commit graph

1875 commits

Author SHA1 Message Date
Wim Taymans
956c9f32a3 videorate: handle invalid timestamps better
Handle buffers with -1 timestamps better by keeping track of the en time of the
previous buffer and assuming the -1 timestamp buffer goes right after the
previous one.

when we have two buffers that are equally good, output the oldest buffer once to
minimize latency.

don't try to calculate latency when the input framerate is unknown.
2009-05-12 10:47:17 +02:00
Wim Taymans
a0525fadb4 decodebin2: make subpictures a raw output format
Subpictures are a raw format, we want those pads exposed so that playbin2 can do
the subpicture mixing.
2009-05-12 10:40:11 +02:00
Wim Taymans
e1aa348246 playbin2: make fallback identity silent
Set the signal-handoffs to FALSE and silent to TRUE for the fallback identity
element so that it consumes less CPU.
2009-05-12 10:38:15 +02:00
Wim Taymans
c6f6282fde playbin2: handle custom audiosinks differently
Keep track of the autoplugged custom sinks and configure them in the playsink
element when we have collected all streams.
Also make sure that we only select one custom sink.
When unreffing the internal sink, we don't need to change the state to NULL.
2009-05-12 10:37:45 +02:00
Wim Taymans
0b372dd371 playbin2: unify custom sink get/set functions
Use one function to set/get all of the different sink types.
cleanup up the subpicture chain too.
Allow setting a custom subpicture sink.
2009-05-12 10:36:25 +02:00
Arnout Vandecappelle
192a34af40 typefindfunctions: made mp3_type_find less aggressive
mp3_type_find could suggest already when only a single valid header
was found, if it ran out of data before the end of the next frame.
Therefore, ignore the last found frame if it was incomplete.
Fixes bug #579692.
2009-05-12 09:03:22 +02:00
Wim Taymans
691a52975e playbin2: fix resume after pause
Don't ignore the state change of the children, they might be doing an ASYNC
state change.
2009-05-08 13:11:01 +02:00
Wim Taymans
7c61249ceb multifdsink: fix signature of the add-full signal
The second parameter is a GstSyncMethod enum, not a boolean.
2009-05-07 23:14:56 +02:00
Wim Taymans
52da312fa5 playsink: initialize variable too 2009-05-07 15:19:05 +02:00
Wim Taymans
c05541c195 playbin2: make playsink go ASYNC to PAUSED
Make playsink go async to the PAUSED state instead of relying on uridecodebin
for async behaviour in playbin. This solves some problems (mainly with DVD)
where the pipeline would go to PLAYING before preroll completed, failing to
select the audiosink clock.
Fixes #581727
2009-05-07 14:28:30 +02:00
Jan Schmidt
02a7b31f0e audioresample: Fix buffer size transformations
When calculating the input/output buffer sizes in the transform_size function,
take the number of channels into account, so we don't end up calculating
a buffer size that only contains a partial number of audio frames.

Also, when going from output size to input size, round down rather than
up, so as to calculate the minimum number of samples that *might* yield
a buffer of the intended destination size.

Fixes: #580470 and #580952
2009-05-01 16:47:53 +01:00
Wim Taymans
915b3d139d videorate: clear discont on duplicated buffers
When videorate duplicates a buffer with a DISCONT flag, it copies the discont on
the first pushed buffer but fails to clear it for subsequent buffers. This
causes theoraenc!oggmux and possibly other elements to consider this a discont
stream.

Fix videorate to produce discont as the first buffer and after a flushing seek.

Fixes #580271.
2009-04-28 16:45:07 +02:00
Edward Hervey
71a372c847 decodebin2: Don't reduce max-size-time of exposed groups. Fixes #579912
The 2s limit is way too small for a lot of files (which have an interleave
in time of between 3 and 5s). Instead, leave it to the initial 5s value
and reduce the other limits (allowing us to stay memory-efficient).
2009-04-23 11:54:55 +02:00
René Stadler
22a69b49a3 audioresample: Fix unused variable in compilation with --disable-gst-debug
Fixes: #579668
2009-04-21 22:18:02 +01:00
Wim Taymans
8f8b638d31 playbin: only use raw_decoding_mode when it's true
First check the pad caps if they are raw before setting the raw_decoding_mode to
TRUE. Fixes playback of transport streams and other streams that require large
queues.
Fixes #579734
2009-04-21 20:57:34 +02:00
Jan Urbanski
63108730a5 multifdsink: add property to resend streamheaders
Adds a new property in multifdsink, resend-streamheader.

If this property is false, the multifdsink will not send the streamheader if
there's already one set for a particular client.

There are some formats in which every stream needs to start with a certain
blob, but you can't inject this blob at leisure. If the producer wants to
change the blob in question and sets in as the streamheader on the outgoing
buffers' caps, new clients of multifdsink will get the new streamheader, but
old clients will break, because they'll see the blob in the middle of the
stream.

The property is true by default, so existing code will not see any difference.

Fixes #578118.
2009-04-14 17:04:06 +02:00
Wim Taymans
19d30b90d4 multifdsink: add property to handle client write
Add a property to disable listening to client writes. This property is usefull
when other code will deal with reading from the client socket.

API: GstMultiFdSink::handle-read property
2009-04-14 16:53:33 +02:00
Wim Taymans
5eed96dc06 playbin2: clear the target
Clear the target of our ghostpads before we remove the pad from the element.
This to make sure that the internal pad is not left linked to whatever pad we
were ghosted to. This should only be a problem when we leak the ghostpads.

Also release our subpicture pads.

Fixes #577288.
2009-04-14 13:55:52 +02:00
Wim Taymans
4265511b70 decodebin2: fix up the debugs and warnings
Use _OBJECT variants because we can. Go over some log statements and put them in
the right category.
Fixes #567740.
2009-04-14 11:34:49 +02:00
Luca Ognibene
1beabc48e8 multifdsink: fix error in sync-method
Multifdsink did not handle sync-method=latest-keyframe correctly when the
soft-limit is set to -1 (unlimited).
Fixes #578583.
2009-04-12 22:26:33 +02:00
Wim Taymans
1a557e60ea playbin2: fix refcounting of visualisations
See #577794.
2009-04-10 13:42:56 +02:00
Wim Taymans
33ef15fad6 playsink: fix refcounting of custom elements
Sink the custom sinks, let other elements we create be sunken by the bin we add
them to.
Fixes #577794.
2009-04-10 13:27:41 +02:00
Wim Taymans
f25e4e4743 playbin2: handle missing input-selector
Gracefully degrade and disable stream selection when input-selector is
missing.
2009-04-10 12:26:16 +02:00
Stefan Kost
509256dce5 playbin2: better error message on sink failure
If we could create the sinks, but the don't work, don't send the missing plugin
message and report that the state-changed failed.
2009-04-08 16:43:27 +03:00
Michael Smith
a0959afb01 playbin2: don't leak selector when getting current stream numbers. 2009-04-03 10:51:42 -07:00
Jan Schmidt
c2a56e3115 playbin: Add simple 'raw decoding mode'.
Raw decoding mode removes almost all buffering in video and audio queues
when a source providing already decoded video/audio is detected, on the
possibly bogus assumption that such a source should provide sufficient
internal queueing. Fixes playback on some DVDs, and improves it
on all.
2009-04-02 12:18:08 +01:00
Sebastian Dröge
22f99da35c videoscale: Don't read over line ends when taking the last Cr or Cb 2009-04-02 11:10:12 +02:00
Sebastian Dröge
db1236505e videoscale: Don't write to few pixels and don't mix Cr and Cb
Fixes bug #577054.
2009-04-02 10:53:10 +02:00
Tim-Philipp Müller
d271c8de53 audioresample: fix negotiation so that upstream can actually fixate to downstream's rate
If one side has a preference for a particular sample rate or set of sample rates, we
should honour this in the caps we advertise and transform to and from, so that elements
actually know about the other side's sample rate preference and can negotiate to it
if supported. Also add unit test for this.
2009-04-01 15:36:38 +01:00
Tim-Philipp Müller
ce51cad163 docs: add a blurb about redirect messages to playbin2 docs 2009-04-01 15:36:37 +01:00
Sebastian Dröge
ab7d52c053 videoscale: Fix linear scaling for one byte components
Fixes bug #577054.
2009-03-29 12:01:33 +02:00
Sebastian Dröge
954b1713e1 videoscale: Fix 4tap scaling of YUYV and friends 2009-03-29 11:53:40 +02:00
Sebastian Dröge
9d586e0475 videoscale: Rewrite YUYV (and friends) scaling and don't read/write over line ends
Partially fixes bug #577054, there's just one issue left now.
2009-03-28 16:08:44 +01:00
Sebastian Dröge
b5793ccd0d videoscale: Use bilinear instead of 4tap scaling for heights < 4
Partially fixes bug #577054.
2009-03-28 11:57:35 +01:00
Sebastian Dröge
8eb3572eef videoscale: Don't read after the end of a line when lineary scaling YUYV/UYVY/RGB/RGBA
This case is for upscaling a frame with width=1
Partially fixes bug #577054.
2009-03-28 11:57:19 +01:00
Sebastian Dröge
b69231ad21 videoscale: Don't read after the end of a line when lineary scaling YUYV/UYVY
Partially fixes bug #577054.
2009-03-28 11:27:56 +01:00
Sebastian Dröge
1c36c03001 videotestsrc: Initialize buffer memory with zeroes
This prevents valgrind warnings when accessing the "x" parts
of xRGB and friends in other elements that handle (and can handle)
xRGB like ARGB (for example videoscale).
2009-03-28 10:40:43 +01:00
Sebastian Dröge
e2f823c2f3 videocale: Add support for video/x-raw-gray with bpp=depth=8 2009-03-28 10:06:24 +01:00
Sebastian Dröge
dea48dc885 videotestsrc: Add support for generating video/x-raw-gray with bpp=depth=8 2009-03-28 10:01:00 +01:00
Sebastian Dröge
77bc4ff763 ffmpegcolorspace: video/x-raw-gray is the same as the YUV Y800 format 2009-03-28 09:43:23 +01:00
Sebastian Dröge
96b9ec4da0 videoscale: Take the next luma value instead of every second next when scaling UYVY and friends 2009-03-27 19:12:49 +01:00
Sebastian Dröge
12bbcc4db9 videoscale: Add support for v308 YUV colorspace 2009-03-27 19:09:47 +01:00
Sebastian Dröge
92eb02c71f videoscale: Add my copyright to the 4tap scalers 2009-03-27 13:15:11 +01:00
Sebastian Dröge
014f6f1508 videoscale: Enable 4-tap scaling for all supported formats 2009-03-27 13:14:17 +01:00
Sebastian Dröge
77795ac240 videoscale: Implement 4-tap scaling for RGB565 and RGB555 2009-03-27 13:14:00 +01:00
Sebastian Dröge
c1653fc5b0 videoscale: Implement 4-tap scaling for UYVY 2009-03-27 10:47:39 +01:00
Sebastian Dröge
435e9f8b38 videoscale: Implement 4-tap scaling for YUY2 and YVYU 2009-03-27 09:33:58 +01:00
Sebastian Dröge
2045a89350 videoscale: Implement 4-tap scaling for RGB and BGR 2009-03-26 22:14:53 +01:00
Sebastian Dröge
c2d31eb2d1 videoscale: Implement 4-tap scaling for RGBA and other 4 byte formats 2009-03-26 22:08:26 +01:00
Wim Taymans
5ec2d48f0a decodebin2: do some more cleanup
Free the groups when we go to READY.
Allow for NO_PREROLL elements.
2009-03-25 19:01:45 +01:00
Wim Taymans
9bf8277d13 playbin2: add more support for subpictures 2009-03-24 18:29:28 +01:00
Wim Taymans
e7b382c6a9 playbin2: first support for subpictures
Add beginnings of subpicture support.
2009-03-24 17:12:53 +01:00
Wim Taymans
786b0c248c playbin2: blacklist subpictures for now
Blacklist the subpictures until we add support for them.
Add some small debug info.
See #576408.
2009-03-24 12:23:24 +01:00
Wim Taymans
852ace9cce uridecodebin: expose more media types
Expose more media types from a raw source, such as the subpicture and various
text pads.
Small cleanups  and add some more debugging.
See #576408.
2009-03-24 12:19:30 +01:00
Wim Taymans
7cf4e3eb15 playbin2: rescan audio sinks for volume/mute
Rescan the audio sinks for the mute and volume properties.
fixes #576180.
2009-03-24 10:42:04 +01:00
Wim Taymans
14be3f41e2 playbin2: fix reuse of the video chains
When reusing playbin with visualisations, reset the async property on the video
sink because some sinks might dynamically recreate their sinks.
Fixes #576188
2009-03-23 19:40:18 +01:00
Wim Taymans
7628319688 playbin2: allow dynamic swtiching of subtitles
When we have the textpad configured, enable and disable the subtitles by setting
the silent flag on the overlay element instead of trying to remove elements.
See #576187
2009-03-23 17:38:46 +01:00
Wim Taymans
d8003bea06 playbin2: fix dynamic switching of visualisations
Fix the switching of visualisations by requesting and releasing the tee request
pads on demand.
See #576187.
2009-03-23 16:06:43 +01:00
Stefan Kost
3d20bad4ba docs: add examples for tcp elements, also use correct section name. Fixes #564139
Updated the examples in the README to actually work. Add them to api docs. Tests
the api-docs and fix the section names to make the docs actualy show up.
The example for "tcpserversrc" needs review (might be an element bug).
2009-03-23 17:03:38 +02:00
Stefan Kost
46c18b2aa3 indent: fix damange that gst-indent did some time ago 2009-03-23 17:03:37 +02:00
Wim Taymans
7cc84f9205 playbin2: fix linking order
Link after doing the state change and unlink before shutting down. Makes the
window for causing races in toggling the visualisations smaller.
See #576187.
2009-03-23 15:27:27 +01:00
Wim Taymans
779d6f886d uridecodebin: reset counter
reset the number of pending dynamic operations back to 0 when we reuse
uridecodebin.
Fixes #576190
2009-03-23 12:28:18 +01:00
Wim Taymans
554b3aafe4 decodebin2: a pad starts out being not drained.
Mark a new pad as not drained until we get EOS on it.
2009-03-20 15:47:47 +01:00
LRN
23e603f054 win32: fix seeking in large files
Fix Seeking in large files by using the 64-bit seek functions.
Fixes #576019
2009-03-20 14:17:19 +01:00
Wim Taymans
600a810236 decodebin2: recover from failing to add a pad
When we cannot add a pad to the decodebin2 for some reason, print a warning but
continue adding the remaining pads.
2009-03-19 20:31:01 +01:00
Wim Taymans
20468a22c9 decodebin2: more cleanups and docs.
Add some more comments and use g_list_prepend().
2009-03-19 19:35:15 +01:00
Wim Taymans
17e7948325 decodebin2: refactoring and race fixes
Refactor some code so that we can take the right locks and in the right order.
Fixes quite a bit of races already.
2009-03-19 19:19:38 +01:00
Wim Taymans
2f39597919 playbin2: remove the group cond + cleanups
Remove the group GCond that we used for waiting for groups to finish because we
use pad blocking on the selectors and counters instead for waiting for the
groups to complete.

remove the obsolete about_to_finish variable set while emiting the
about-to-finish signal and fix some old comments.

We don't need to take the playbin lock when querying the uridecodebin.
2009-03-19 19:03:25 +01:00
Wim Taymans
563db0fdca decodebin2: add extra dynamic ref for demuxers
When we make a group connected to a demuxer, keep an extra dynamic refcount for
the group which is only decremented when no_more_pads or a multiqueue overrun is
detected. This way we avoid a race between exposing the group while more dynamic
refs are added from new pads.

Fixes #575588.
2009-03-17 19:09:02 +01:00
Wim Taymans
da6a544bdf playbin2: sync state of the sink correctly
Sync the state of the newly added chains to the state of the parent sink element
to avoid lost async-start messages. Fixes cdda:// async-done message storm.
2009-03-17 15:39:23 +01:00
Wim Taymans
a8579ffea0 playbin2: return NOT_LINKED for unselected streams
When streams are not selected in the selector, return NOT_LINKED so that
upstream elements can skip decoding. Only do this for audio and video pads
because for text streams the overhead is smaller and they could come from
external files.
2009-03-17 11:54:40 +01:00
Wim Taymans
5021c930ba playbin: set custom text sink properties
Set the custom sink async=FALSE to not make it participate in preroll because we
are dealing with sparse streams.
Try to set sync=TRUE on the custom text sink.
2009-03-17 11:51:58 +01:00
Wim Taymans
48f7f6b7c2 playbin2: don't try to set invalid stream numbers
Fix a problem with setting the stream numbers because we check for the wrong
range.
See #575239.
2009-03-16 16:42:18 +01:00
Wim Taymans
ba6d3b5aca playbin2: release the shutdown lock
Release the shutdown lock when we wait for other groups to complete or else we
have a deadlock when the other group completes and tries to grab the shutdown
lock.
Fixes #575550.
2009-03-16 16:16:30 +01:00
Tim-Philipp Müller
04a860c6f7 typefinding: make flac typefinder return lower probability for frame headers
The flac frame header typefinder overstates the likelihood of a match, leading
to false positives with e.g. aac streams and PDF files. Reduce probabilty
returned from LIKELY to POSSIBLE for the frame header matchin code.
Fixes #574939.
2009-03-15 19:57:36 +00:00
Tim-Philipp Müller
a622ff74b0 typefinding: improve image/bmp typefinder
Detect more variations and also bail out in more cases where the values
don't make sense. Furthermore, add width/height and bpp to the caps,
because we can.
2009-03-15 19:52:46 +00:00
Wim Taymans
777f8ab1bf playbin2: fix raw elements like cdda://
Fix a fixme with a one liner and make cd playback work again.
2009-03-12 18:27:25 +01:00
Wim Taymans
7849db42b8 playbin2: improve subtitle handling
Add property to playbin2 to configure a custom sink that receives the raw
subtitle buffers instead of using a textoverlay.
Improve the property finding code to make it more usable.
Use property find code to find async properties in custom sinks that are bins.
Improve text overlay code to gracefully handle missing elements.
2009-03-12 17:51:39 +01:00
Tim-Philipp Müller
4cbe4d2c72 typefinding: flac typefinder fixes
Use scan context for initial peek as well. Peek 6 bytes in the initial
peek rather than 5 bytes, to match the length of the memcmp we're doing
on that data later. Return immediately when we found caps from looking
at the beginning of the data - no point in continuing to scan the next
64kB for something matching a frame header.
2009-03-11 13:33:33 +00:00
Stefan Kost
e633c46e95 adder: log details in getcaps like in setcaps 2009-03-10 21:14:43 +02:00
Jonathan Matthew
db7ecda64f typefind: add photoshop typefind functions
Add photoshop typefind functions.
Fixes #574516.
2009-03-09 16:19:40 +01:00
Wim Taymans
72533ecccc decodebin2: only remove pads that were added
Flag pads that were added so that we can see if we need to remove them later or
not.
2009-03-09 15:46:21 +01:00
Mark Nauwelaerts
b7ea2a9105 Unblock blocked ghostpads when shutting down. Fixes #574293. 2009-03-09 13:32:21 +01:00
Edward Hervey
9acf7de5a4 typefind: Use the proper data pointer instead of poking random memory. 2009-03-09 09:08:00 +01:00
Michael Smith
e9e9d82fbe decodebin2: don't stay connected to notify::caps after negotiation
Disconnect the notify::caps signal in our callback (it'll be re-added
if we're not, in fact, finished getting complete caps). Ensures that
caps changes mid-stream (e.g. from an mp3 that changes from
stereo->mono mid-file) don't cause us to try to add a new pad.
2009-03-05 15:44:17 -08:00
Stefan Kost
79771eaba7 adder: add variants for unsigned to fix warnings for unneeded check
For unsigned int out+in can't be < 0.
2009-03-05 12:27:16 +02:00
Stefan Kost
2723c7e4f3 subparse: use the right variable in debug log, encoding is not yet initialized 2009-03-05 10:58:12 +02:00
Stefan Kost
388fa77c11 audioresample: add missing break in event handling, remove dead code 2009-03-05 10:39:33 +02:00
LRN
db596d27a2 subparse: Convert regex code to GRegex code
Fixes: #572993.  Patch author prefers to use an alias, contact
ds if you actually need a real name.

Signed-off-by: David Schleef <ds@schleef.org>
2009-03-02 11:47:39 -08:00
Stefan Kost
46833b9bc7 subparse: don't leak line, if flushing 2009-02-26 18:01:05 +02:00
Stefan Kost
60847e48d7 ffmpegcolorspace: remove unused code/variables 2009-02-26 18:01:04 +02:00
Stefan Kost
5e6447c0ac docs: fix random text after since: tag. Also fix class name to make the docs actual appear. 2009-02-26 10:10:00 +02:00
Stefan Kost
a6ea8280a2 docs: playbin2 has no stream-info 2009-02-26 10:09:59 +02:00
Peter Kjellerstedt
a038a8d46d rtsp, multifdsink: Unify the use of union gst_sockaddr. 2009-02-25 15:45:50 +01:00
Wim Taymans
f5a3387bdb playbin: use flushing pads instead of fakesink
Use the flushing pads on playsink to terminate on shutdown instead of plugging
fakesinks. this should be a little cheaper.
2009-02-25 12:48:53 +01:00
Wim Taymans
747841e97c playsink: Add FLUSHING pad type
Make it possible to request a flushing pad from the playsink. We can eventually
use these flushing pads to quickly terminate the dataflow when we are shutting
down.
2009-02-25 12:48:53 +01:00
Wim Taymans
dbfc80cd6c Release the group lock when setting states
Release the group lock while we perform the state changes on the uridecodebins
because that might trigger callbacks that we need to handle with the group lock
taken. Avoids a possible deadly embrace in some id3/flac files.
Fixes #567396.
2009-02-25 10:08:29 +01:00
Wim Taymans
0b2238b70b Combine finding and creating groups
Combine the search for the current group and optionally creating one into one
function so that we can avoid taking the lock multiple times.
2009-02-25 10:05:38 +01:00
Edward Hervey
2968cc8710 Playbin2: Don't leave unused parameters in debug statements.
Fixes build on macosx
2009-02-25 08:22:00 +01:00
Wim Taymans
b725e1d2c6 Add some G_UNLIKELY because we can
Add a G_UNLIKELY when checking the shutdown variable.
2009-02-24 18:44:54 +01:00