summaryrefslogtreecommitdiff
AgeCommit message (Collapse)AuthorFilesLines
2015-03-14playbin: don't escape percent sign in documentation code sampleHEADmasterRamiro Polla1-1/+1
2015-03-14playsink: remove redundant else statementsRamiro Polla1-7/+4
2015-03-14Add test_that_multisocketsink_and_socketsrc_preserve_metaWilliam Manley3-11/+113
This test is in a seperate commit to the previous two because it depends on and tests the functionality in both.
2015-03-14socketsrc: Add support for GstNetControlMessageMetaWilliam Manley1-2/+18
multisocketsink now understands the new GstNetControlMessageMeta to allow sending control messages (ancillary data) with data when writing to Unix domain sockets. Thanks to glib's `GSocketControlMessage` abstraction the code introduced in this commit is entirely portable and doesn't introduce and additional dependencies or conditionally compiled code, even if it is unlikely to be of much use on non-UNIX systems.
2015-03-14multisocketsink: Add support for GstNetControlMessageMetaWilliam Manley2-4/+26
multisocketsink now understands the new GstNetControlMessageMeta to allow sending control messages (ancillary data) with data when writing to Unix domain sockets. A later commit will introduce a new socketsrc element which will similarly understand `GstNetControlMessageMeta`. This, when used with a `GSocketControlMessage` of type `GUnixFDMessage` will allow GStreamer to send and receive file-descriptions in ancillary data, the first step to using memfds to implement zero-copy video IPC. Thanks to glib's `GSocketControlMessage` abstraction the code introduced in this commit is entirely portable and doesn't introduce and additional dependencies or conditionally compiled code, even if it is unlikely to be of much use on non-UNIX systems.
2015-03-13socketsrc: Add `connection-closed-by-peer` signalWilliam Manley3-5/+115
This provides notification that the socket in use was closed by the peer and gives an opportunity to replace it with a new one which is not closed, allowing reading from many sockets in order. I use this in pulsevideo to implement reconnection logic to handle the pulsevideo service dieing, such that is can be restarted without disrupting downstream. Fixes https://bugzilla.gnome.org/show_bug.cgi?id=739546
2015-03-13socketsrc: Tidy up usage of `g_object_unref`/`g_clear_object` and lockingWilliam Manley1-14/+9
This is clearer, and should make future changes safer. No functional change intended. See https://bugzilla.gnome.org/show_bug.cgi?id=739546
2015-03-13socketsrc: Refactor to simplifyWilliam Manley1-86/+13
* Don't bother polling, just do a blocking read, the `GCancellable` will take care of unlocking. This should also be faster on MS Windows where the GIO documentation for `g_socket_get_available_bytes` states: "Note that on Windows, this function is rather inefficient in the UDP case". * Implement `GstPushSrc.fill` rather than `GstPushSrc.create`. This means that we will be using the downstream allocator which may be more efficient. It also means that socketsrc is likely to respect its "blocksize" property (assuming that there is enough data available). See https://bugzilla.gnome.org/show_bug.cgi?id=739546
2015-03-13tcp: Add element socketsrcWilliam Manley11-2/+528
`socketsrc` can be considered a source counterpart to `multisocketsink`. It can be considered a generalization of `tcpclientsrc` and `tcpserversrc`: it contains all the logic required to communicate over the socket but none of the logic for creating the sockets/establishing the connection in the first place, allowing the user to accomplish this externally in whatever manner they wish making it applicable to other types of sockets besides TCP. This commit essentially copies the implementation directly from tcpserversrc. Later patches will tidy the implementation up and re-implement `tcpclientsrc` and `tcpserversrc` in terms of `socketsrc`. See https://bugzilla.gnome.org/show_bug.cgi?id=739546
2015-03-13audioringbuffer: Log with the ringbuffer object where possibleArun Raghavan1-4/+4
2015-03-13multisocketsink: Map `GstMemory`s individually when sendingWilliam Manley2-18/+176
If a buffer is made up of non-contiguous `GstMemory`s `gst_buffer_map` has to copy all the data into a new `GstMemory` which is contiguous. By mapping all the `GstMemory`s individually and then using scatter-gather IO we avoid this situation. This is a preparatory step for adding support to multisocketsink for sending file descriptors, where a GstBuffer may be made up of several `GstMemory`s, some of which are backed by a memfd or file, but I think this patch is valid and useful on its own. Fixes https://bugzilla.gnome.org/show_bug.cgi?id=746150
2015-03-13video-frame: Relax width/height assertionNicolas Dufresne1-2/+2
When doing CROP META it is exepcted that the width and/or height in the GstVideoMeta is bigger or equal to the caps negotiated size.
2015-03-13videopool: Choose the biggest buffer sizeNicolas Dufresne1-0/+11
We should respect what has been negotiated.
2015-03-12oggdemux: recover from EOS when searching for chain in push modeVincent Penquerc'h1-2/+4
If we get EOS when we're trying to build a chain, we disable seeking and continue instead of posting an error. This can happen for corner cases such as a stream with a video that stops before the end, for instance. https://bugzilla.gnome.org/show_bug.cgi?id=745980
2015-03-12oggdemux: fix seeking in files with a "missing" streamVincent Penquerc'h1-4/+29
When looking for pages when seeking, we stop looking for non sparse streams if we don't find one within a given threshold. This fixes seeking filling up queues and blocking in corner cases such as an audio file with a pathological 1 frame video stream (yes, I saw one). https://bugzilla.gnome.org/show_bug.cgi?id=745980
2015-03-12docs: Add new video functions and objects. Cleanup a little.Jan Schmidt10-14/+120
Add GstVideoChroma, GstVideoDither, GstVideoScaler and friends to the docs. Remove and clean up a few obsolete/deleted refs and typos
2015-03-12playbin: Disconnect signals and invalidate group if it fails to activateSebastian Dröge1-3/+14
Otherwise playbin might move to the group directly after EOS of the next group, and then error out again.
2015-03-12theoradec: Fix decoding in the presence of GstVideoCropMetaJan Schmidt2-6/+13
Store the video info of the internal frame decode width/height separate to the exposed (cropped) frame info, so that it can be used for mapping the downstream allocated video frame buffer correctly when using GstVideoCropMeta. Fixes playback of files with sizes that aren't a multiple of 16-pixels width or height. https://bugzilla.gnome.org/show_bug.cgi?id=741030
2015-03-11streamsynchronizer: Should wait state change complete before start another ↵Song Bing1-8/+8
state change Should wait state change complete before start another state change. Can't ensure can received async-done message when state change from PLAYING to PAUSED. https://bugzilla.gnome.org/show_bug.cgi?id=736655
2015-03-11streamsynchronizer: Remove unnecessary ERROR message.Song Bing1-1/+0
Remove unnecessary ERROR message. Push GAP will fail as flushing. Needn't ERROR message. https://bugzilla.gnome.org/show_bug.cgi?id=736655
2015-03-11oggdemux: do not send seek events from the streaming threadVincent Penquerc'h2-30/+113
This will usually deadlock, despite this patch being in master for quite some time and working fine. Nevertheless, we deem it to be not working, disregarding facts. As such, we fix it by keeping track of seek events, and sending them upstream from a separate thread. Buffers are then discarded till we get a new segment with the expected seqnum.
2015-03-11oggdemux: set correct seqnum on segment events after a seek in push modeVincent Penquerc'h2-5/+3
There is already a seqnum field for this, which was used to overwrite the seqnum that was set by the push specific code.
2015-03-11oggdemux: try harder to query duration from upstreamVincent Penquerc'h1-16/+33
READY->PAUSED can be too early as souphttpsrc can get the HTTP headers after this. Try again in the chain function. Also use seeking query to disable seeking if upstream reports being unseekable.
2015-03-11oggdemux: add non flushing time seeking in push modeVincent Penquerc'h1-12/+42
Some resetting code has to be done in the NEW_SEGMENT event handler, instead of the missing FLUSH_STOP one. Segment base was also wrongly accounted for. This was hidden by the fact that flushing resets the base. A discontinuity is now also signalled on seeking. We have to also ensure that the discontinuity "sticks" till a buffer with a valid timestamp goes out, or the audio decoder base class will ignore the discontinuity for purposes of keeping track of the current time. This allows using non flushing segment seeks for looping HTML audio in particular, and more generally non flushing seeks. https://bugzilla.gnome.org/show_bug.cgi?id=729198
2015-03-11oggdemux: fix wrong first granuleVincent Penquerc'h1-1/+65
The code was using the first nonnegative granulepos to seed the granule tracking, which appeared to work since headers have zero granulepos. However, this does not work for files with a hole at start, which are common in live streaming. The correct behavior is to look for the first granule, and subtract the duration of all the packets finishing on this page. The function which does this relies on the fact that the ogg_stream structure can be duplicated by shallow copy, in order to pull the packets from the first page(s) on the copy without affecting the original stream state.
2015-03-11video-converter: fix border handling of YUY2 and friendsWim Taymans1-5/+27
Don't draw the border in groups of 4 pixels for YUY2 but instead in groups of 2 with alternating U and V. This avoids a crash on odd width borders.
2015-03-11video-converter: force yuv conversion for borderWim Taymans1-6/+7
Make sure we always do yuv conversion for the border.
2015-03-10video-format: fix A422 subsampling descriptionWim Taymans1-1/+1
2015-03-10video-converter: add table based matrix8 implementationWim Taymans1-0/+104
Based on patch from Mozzhuhin Andrey <nopscmn at gmail.com> Add a table based matrix8 multiplication implementation. The algorithm does not do any clipping so we need to make sure we never call this on input that might need to be clipped. In general, this algorithm is 2 times faster than the orc optimized one and would be chosen for all RGB -> YUV conversions and some YUV->YUV and RGB->RGB conversions. Fixes https://bugzilla.gnome.org/show_bug.cgi?id=732186
2015-03-10videotestsrc: add all colors modeWim Taymans4-1/+35
2015-03-10video: Add support for 10 bit planar AYUV formatsSebastian Dröge4-1/+573
2015-03-10Fix double semicolonsTim-Philipp Müller7-10/+10
2015-03-10videorate: Accept any capsfeaturesOlivier Crete1-5/+8
2015-03-09video-info: validate parsed colorimetryWim Taymans1-2/+25
Validate the parsed colorimetry and reset to defaults when we get RGB with a matrix or YUV without a matrix.
2015-03-09video-converter: detect identity matrixWim Taymans1-0/+31
Do nothing if we have an identity matrix conversion.
2015-03-09video-info: use default colorimetry on errorWim Taymans1-3/+4
When we fail to parse the colorimetry property, fall back to the default colorimetry for the format and dimension instead of leaving things undefined.
2015-03-09videoencoder: unused valueLuis de Bethencourt1-1/+1
Value set in ret is immediately overwritten in the next line outside of the if block. Run reset but don't store return. CID #1226470
2015-03-09video-converter: only convert to/from rgb when neededWim Taymans1-3/+2
Only use the YUV->RGB matrix when we have YUV as input and only use the matrix when we need to make YUV output. Fixes https://bugzilla.gnome.org/show_bug.cgi?id=745780
2015-03-09rtpbuffer: Link to an explanation why the seqnum comparison function does ↵Sebastian Dröge1-0/+5
the right thing even for wraparounds
2015-03-07videodecoder: only return EOS upon clipping if applicableMark Nauwelaerts1-4/+16
See also https://bugzilla.gnome.org/show_bug.cgi?id=709224
2015-03-07audiodecoder: only return EOS upon clipping if applicableMark Nauwelaerts1-4/+17
See also https://bugzilla.gnome.org/show_bug.cgi?id=709224
2015-03-07video: Update orc generated C filesSebastian Dröge2-0/+246
2015-03-06video-converter: add transfer full annotation for configWim Taymans1-1/+1
2015-03-06video-converter: correct right-border location for YUY2, YVYU, UYVYRavi Kiran K N1-1/+0
Remove 'r_border /= 2' in convert_fill_border(). It doesn't take the right border to correct location. https://bugzilla.gnome.org/show_bug.cgi?id=745719
2015-03-05volume: Explicitly cast integers to doubles and then back to integers after ↵Sebastian Dröge1-4/+8
multiplication gcc 4.9.1 on ARM seems to have a bug that causes it to cast the float to an integer first, resulting in a 0 scale factor for volume < 1.0. As a side effect this change here will also improve accuracy of the result a bit because we go via doubles instead of floats. https://gcc.gnu.org/bugzilla/show_bug.cgi?id=65325 https://bugzilla.gnome.org/show_bug.cgi?id=745667
2015-03-05video-converter: avoid scaler when size is unchangedWim Taymans1-14/+19
2015-03-04video-scaler: add horizontal 2tap u16 orc functionWim Taymans2-7/+34
Add slightly faster u16 horizontal resampler orc function.
2015-03-04check: add another generic converter testWim Taymans1-0/+20
Run conversion and scaling with borders.
2015-03-04video-converter: don't reuse the input line when adding bordersWim Taymans2-1/+44
When we need to add borders, we need a writable input line, so don't reuse the source memory directly. Fixes https://bugzilla.gnome.org/show_bug.cgi?id=745207
2015-03-03textoverlay: Re-render if video size changedNicolas Dufresne1-0/+5
https://bugzilla.gnome.org/show_bug.cgi?id=745554