Jan Schmidt [Thu, 5 Feb 2015 06:44:59 +0000 (17:44 +1100)]
audiobasesink: Re-work GAP buffer and trick-mode handling
In trickmode no-audio mode, or when receiving a GAP buffer,
discard the contents and render as a GAP event instead.
Make sure when rendering a gap event that the ring buffer will
restart on PAUSED->PLAYING by setting the eos_rendering flag.
This mostly reverts commit 8557ee and replaces it. The problem
with the previous approach is that it hangs in wait_preroll()
on a PLAYING-PAUSED transition because it doesn't commit state
properly.
https://bugzilla.gnome.org/show_bug.cgi?id=735666
Jan Schmidt [Tue, 3 Feb 2015 09:38:44 +0000 (20:38 +1100)]
oggdemux: Add a little timestamping debug output
Jan Schmidt [Mon, 2 Feb 2015 14:19:05 +0000 (01:19 +1100)]
theora: If no header packets in stream, look for them in the caps
Makes theora work in cases where the header packets are only in the caps
(because theoradec was connected to oggdemux late and missed the
beginning of the stream)
Jan Schmidt [Mon, 2 Feb 2015 11:23:51 +0000 (22:23 +1100)]
theora: Remove FIXME and return GST_CUSTOM_FLOW_DROP for header packet handling
This FIXME is easily fixed :)
Jan Schmidt [Fri, 30 Jan 2015 18:12:10 +0000 (05:12 +1100)]
audiodecoder: Remove pointless else{} around some code
Jan Schmidt [Fri, 30 Jan 2015 18:09:46 +0000 (05:09 +1100)]
audiodecoder: Fix reverse playback when there's only one gather set.
The decoder can fail to drain on EOS if there was only one gather
set, because it will never have sent the segment event downstream
and set the output segment, and fail to detect that the rate < 0.0
Make sure to send pending events before sending all the gather data
for decode.
Jan Schmidt [Wed, 8 Oct 2014 16:31:58 +0000 (03:31 +1100)]
video: Fix simple typo in GstVideoFrameMapFlags docs
Wim Taymans [Thu, 5 Feb 2015 16:49:55 +0000 (17:49 +0100)]
video-converter: add crop and border to some fastpaths
Wim Taymans [Thu, 5 Feb 2015 16:18:20 +0000 (17:18 +0100)]
video-converter: add support for borders in scale fastpath
Add support for borders and cropping in the scaler fastpaths.
Wim Taymans [Thu, 5 Feb 2015 14:03:24 +0000 (15:03 +0100)]
video-converter: disable fastpath for crop and border
Add crop and border properties to the fastpath table and only select
fastpath functions when it can handle the cropping or borders.
Fixes https://bugzilla.gnome.org/show_bug.cgi?id=744028
Wim Taymans [Wed, 4 Feb 2015 17:01:51 +0000 (18:01 +0100)]
video-converter: add fastpath for some gray formats
Wim Taymans [Wed, 4 Feb 2015 16:44:31 +0000 (17:44 +0100)]
video-converter: add fastpath for some more RGB formats
Add fastpath for RGB and BGR.
Add fastpath for nearest resampling for RGB15 and RGB16 formats.
Wim Taymans [Wed, 4 Feb 2015 15:37:22 +0000 (16:37 +0100)]
video-converter: skip lines we don't need
Make sure to skip unused lines instead of doing a useless horizontal
resampling.
Luis de Bethencourt [Wed, 4 Feb 2015 12:08:21 +0000 (12:08 +0000)]
videoscale: fix memory leak
In gst_video_scale_fixate_caps () it can goto done without freeing the memory
of the tmp GstStructure. This makes it go out of scope and leak.
CID #1265766
Luis de Bethencourt [Wed, 4 Feb 2015 11:25:54 +0000 (11:25 +0000)]
video-resampler: make sure params.envelope is initialized
In gst_video_resampler_init () if method is GST_VIDEO_RESAMPLER_METHOD_NEAREST
then params.envelope is not initialized but still used later in line 382.
Make sure this variable is initiliazed to avoid undefined behaviour.
CID #1256568
Sebastian Dröge [Tue, 3 Feb 2015 11:23:06 +0000 (12:23 +0100)]
video{enc,dec}oder: Don't reset latency all the time and handle max=GST_CLOCK_TIME_NONE correctly
max=NONE means that *this* element has no maximum latency. If upstream had a
maximum latency we must not override it with NONE.
Sebastian Dröge [Tue, 3 Feb 2015 11:15:25 +0000 (12:15 +0100)]
audio{enc,dec}oder: Always directly post latency messages on the bus when the subclass sets the latency
Instead of doing it only in setcaps for the encoder, and never at all for the
decoder.
Sebastian Dröge [Tue, 3 Feb 2015 11:12:18 +0000 (12:12 +0100)]
audio{enc,dec}oder: Handle max_latency == GST_CLOCK_TIME_NONE
And initialize the latencies with 0 and NONE.
Jan Schmidt [Tue, 27 Jan 2015 18:26:06 +0000 (05:26 +1100)]
audiobasesink: Don't render a GAP silence buffer
Don't render out silence samples to a buffer, just
start the clock running, since any buffer with the
GAP flag will be discarded in render() now anyway.
Jan Schmidt [Wed, 28 Jan 2015 11:42:17 +0000 (22:42 +1100)]
audiobasesink: Make sure the ringbuffer is started before waiting
Don't call the basesink wait_event implementation until we're sure
the ringbuffer is running, because it might wait on a non-running
clock.
Jan Schmidt [Mon, 26 Jan 2015 15:04:22 +0000 (02:04 +1100)]
audiobasesink: drop GAP buffers, or all buffers in trickmode no-audio mode
Make the base audio sink throw away buffers marked GAP, or all
incoming buffers when performing a trick play with
GST_SEGMENT_TRICKMODE_NO_AUDIO flag set, and make sure to start
the ringbuffer when that happens so the clock starts running.
Preserve the timing calculations when rendering, so state is all
updated the same, but just don't render samples.
https://bugzilla.gnome.org/show_bug.cgi?id=735666
Vincent Penquerc'h [Thu, 29 Jan 2015 17:58:27 +0000 (17:58 +0000)]
oggdemux: do not throw a flow error on flushing
If the streaming task attempts to read a chain while the pipeline
is stopping (which can happen if the pipeline stops shortly after
start or a new URI being setup in gapless playback case), it will
see a flushing return from upstream, and should then also return
flushing to the caller, rather than emit a flow error.
https://bugzilla.gnome.org/show_bug.cgi?id=722442
Sebastian Dröge [Wed, 28 Jan 2015 16:44:57 +0000 (17:44 +0100)]
video-converter: Fix compiler warnings
video-converter.c:3073:48: error: implicit conversion from enumeration type 'GstFormat' to different enumeration type 'GstVideoFormat'
[-Werror,-Wenum-conversion]
gst_video_scaler_horizontal (h_scaler, format,
~~~~~~~~~~~~~~~~~~~~~~~~~~~ ^~~~~~
video-converter.c:3081:44: error: implicit conversion from enumeration type 'GstFormat' to different enumeration type 'GstVideoFormat'
[-Werror,-Wenum-conversion]
gst_video_scaler_vertical (v_scaler, format, lines, d, i, out_w);
~~~~~~~~~~~~~~~~~~~~~~~~~ ^~~~~~
video-converter.c:3137:24: error: implicit conversion from enumeration type 'const GstVideoFormat' to different enumeration type 'GstFormat'
[-Werror,-Wenum-conversion]
convert->fformat = GST_VIDEO_INFO_FORMAT (in_info);
~ ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
../../../gst-libs/gst/video/video-info.h:125:43: note: expanded from macro 'GST_VIDEO_INFO_FORMAT'
^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
../../../gst-libs/gst/video/video-format.h:361:59: note: expanded from macro 'GST_VIDEO_FORMAT_INFO_FORMAT'
~~~~~~~~^~~~~~
video-converter.c:3157:24: error: implicit conversion from enumeration type 'GstVideoFormat' to different enumeration type 'GstFormat'
[-Werror,-Wenum-conversion]
convert->fformat = GST_VIDEO_FORMAT_GRAY8;
Sebastian Dröge [Wed, 28 Jan 2015 16:43:59 +0000 (17:43 +0100)]
video: Update orc files
Wim Taymans [Wed, 28 Jan 2015 16:37:35 +0000 (17:37 +0100)]
defs: update
Wim Taymans [Wed, 28 Jan 2015 16:32:12 +0000 (17:32 +0100)]
video-converter: add fast-path scaler for some packed YUV formats
Add fast path scaling for YUY2 and other packed YUV formats. Add a new
method to merge the scalers of the Y and UV components into one scaler.
Add faster horizontal 2tap scaler.
See https://bugzilla.gnome.org/show_bug.cgi?id=741987
Wim Taymans [Wed, 28 Jan 2015 16:30:53 +0000 (17:30 +0100)]
videoscale: don't do dithering
Wim Taymans [Wed, 28 Jan 2015 16:30:14 +0000 (17:30 +0100)]
video-converter: the default is BAYER dithering
Wim Taymans [Wed, 28 Jan 2015 16:29:45 +0000 (17:29 +0100)]
video-converter: don't do dither when set to NONE
Wim Taymans [Wed, 28 Jan 2015 10:38:16 +0000 (11:38 +0100)]
video-scaler: fix taps calculation for pstride == 1
Take pstride into consideration when calculating the scaler taps.
Jan Schmidt [Tue, 27 Jan 2015 17:51:25 +0000 (04:51 +1100)]
audiobasesink: Make sure the ringbuffer really starts when we need it to
Some audio sink sub-classes (pulsesink) don't start their clock
when the ringbuffer starts, but always have to on EOS. When we
explicitly need to start the ringbuffer, make sure sub-classes will
do it by (ab)using the existing eos_rendering flag.
Jan Schmidt [Wed, 10 Dec 2014 14:54:07 +0000 (01:54 +1100)]
playback-test: Support new skip seek flags
Support the new SEEK_TRICKMODE_KEY_UNITS and SEEK_TRICKMODE_NO_AUDIO
flags added to core
https://bugzilla.gnome.org/show_bug.cgi?id=735666
Luis de Bethencourt [Tue, 27 Jan 2015 13:39:14 +0000 (13:39 +0000)]
orc: update orc files
Wim Taymans [Tue, 27 Jan 2015 09:28:35 +0000 (10:28 +0100)]
video-converter: add fastpath for planar scaling
Add fastpaths for scaling of planar subsampled formats.
See https://bugzilla.gnome.org/show_bug.cgi?id=741987
Wim Taymans [Tue, 27 Jan 2015 09:04:11 +0000 (10:04 +0100)]
video-scaler: add support for monochroma formats
Add support for scaling of images with pstride == 1. This can be used
to scale individual planes later.
Rework some of the scaling code to take the pstride as a parameter.
Wim Taymans [Tue, 27 Jan 2015 08:51:47 +0000 (09:51 +0100)]
videoscale: disable chroma and matrix operations
Ignore chroma subsampling and color matrix transformations like the
old videoscale used to do. This is to make the performance like it was
before.
See https://bugzilla.gnome.org/show_bug.cgi?id=741987
Wim Taymans [Mon, 26 Jan 2015 11:52:40 +0000 (12:52 +0100)]
video-format: fix GBR unpack
Jan Schmidt [Mon, 26 Jan 2015 14:31:50 +0000 (01:31 +1100)]
audiodecoder: Fix typo in documentation
Fix a couple of harmless warnings in the gtk-doc parsing
Edward Hervey [Fri, 23 Jan 2015 11:46:41 +0000 (12:46 +0100)]
video: Fix leaked dither object in error cases
Coverity CID : 1256564
Luis de Bethencourt [Wed, 21 Jan 2015 15:22:15 +0000 (15:22 +0000)]
visual: fix caps leak
Fix leak of caps event and of caps objects when setting caps on sink and src
pads. Sync audiovisualizer class implementation to the one in gst-plugins-bad.
This commit matches
c5ef1bee7318f057aa1f542d5a1474b75e85131a in that module.
https://bugzilla.gnome.org/show_bug.cgi?id=742875
Luis de Bethencourt [Wed, 21 Jan 2015 14:46:15 +0000 (14:46 +0000)]
visual: post QoS messages when dropping frames due to QoS
https://bugzilla.gnome.org/show_bug.cgi?id=742875
Sebastian Dröge [Wed, 21 Jan 2015 08:49:47 +0000 (09:49 +0100)]
Constify some static arrays everywhere
Sebastian Dröge [Wed, 21 Jan 2015 08:42:21 +0000 (09:42 +0100)]
alsa: Constify channel position table
Sebastian Dröge [Wed, 21 Jan 2015 08:41:23 +0000 (09:41 +0100)]
alsa: Fix indention
Thomas Roos [Wed, 21 Jan 2015 07:33:57 +0000 (08:33 +0100)]
alsa: Allow to use 8 bit samples with ALSA
8 bit samples have no (0) as endianness, not the native endianness.
https://bugzilla.gnome.org/show_bug.cgi?id=739446
Sebastian Dröge [Wed, 21 Jan 2015 08:39:30 +0000 (09:39 +0100)]
audio-format: Constify the audio format table
Sebastian Dröge [Wed, 21 Jan 2015 08:37:30 +0000 (09:37 +0100)]
audiosrc: Fill in the correct silence
For unsigned raw formats this is not all zeroes, and for non-raw formats
we just continue to assume all zeroes for now.
https://bugzilla.gnome.org/show_bug.cgi?id=739446
Thomas Roos [Wed, 21 Jan 2015 07:47:26 +0000 (08:47 +0100)]
audiosink: Fill in the correct silence
For unsigned raw formats this is not all zeroes, and for non-raw formats
we just continue to assume all zeroes for now.
https://bugzilla.gnome.org/show_bug.cgi?id=739446
Sebastian Dröge [Tue, 20 Jan 2015 18:14:21 +0000 (19:14 +0100)]
appsink: Only emit EOS signal after all buffers are consumed
Otherwise the application will possibly shut down the pipeline already
because EOS is received, while there are still some buffers pending.
Vincent Penquerc'h [Tue, 20 Jan 2015 15:08:24 +0000 (15:08 +0000)]
dcodebin2: fix lock/unlock mismatch on multiqueue overrun
Jan Alexander Steffens (heftig) [Tue, 13 Jan 2015 15:07:06 +0000 (16:07 +0100)]
audioresample: Try to prevent endless looping
Speex may decide not to consume any samples because it can't write any. I've
seen a hang during draining caused by the resample loop never terminating.
In that case, resampling happened as normal until olen was 0 but ilen was
still 1. _process_native then reduced ichunk to 0, so ilen never decreased
below 1 and the loop never terminated.
Instead of reverting 684cf44 ({audioresample: don't skip input samples),
break only if all output samples have been produced and speex refuses
to consume any more input samples.
https://bugzilla.gnome.org/show_bug.cgi?id=732908
Sebastian Dröge [Mon, 19 Jan 2015 10:17:18 +0000 (11:17 +0100)]
videorate: Add $(GST_PLUGINS_BASE_CFLAGS) to be able to find gst/video/video.h
Nicolas Dufresne [Sun, 18 Jan 2015 19:58:36 +0000 (14:58 -0500)]
videorate: Implement allocation query
The videorate element keeps 1 buffer internally. This buffer need
to be requested during allocation query otherwise the pipeline may
stall.
https://bugzilla.gnome.org/show_bug.cgi?id=738302
Nicolas Dufresne [Sun, 18 Jan 2015 19:17:07 +0000 (14:17 -0500)]
Revert "videorate: Implement allocation query"
This reverts commit
3c04db4a307048db70ee1d08c1d62e26ad9569d8.
Nicolas Dufresne [Sun, 18 Jan 2015 16:02:00 +0000 (11:02 -0500)]
videorate: Implement allocation query
VideRate keeps 1 buffer in order to duplicate base on closest buffer
relative to targeted time. This extra buffer need to be request
otherwise the pipeline may stall when fixed size buffer pool is used.
https://bugzilla.gnome.org/show_bug.cgi?id=738302
Sebastian Dröge [Sat, 17 Jan 2015 13:51:48 +0000 (14:51 +0100)]
decodebin: Fix compilation
Branislav Katreniak [Mon, 12 Jan 2015 13:38:09 +0000 (14:38 +0100)]
decodebin: do call set_queue_size in no_more_pads_cb
Consider pipeline: gst-launch-1.0 playbin uri=http://example.com/a.ogg
Consider 128kbit audio stream.
As soon as uridecodebin detects the bitrate, it configures its input
queue2 max-size to 32000 bytes.
The 2MB buffer in multiqueue is nearly 2 orders of magnitude bigger.
This non-deterministically drives queue2 buffer anywhere from
100% to 0% until multiqueue is filled.
This patch sets multiqueue size to 5 buffers early in no_more_pads_cb.
Partly reverts commit
db771185ed750627a6a1824c42b651d739e1b4a4.
https://bugzilla.gnome.org/show_bug.cgi?id=740689
Vincent Penquerc'h [Fri, 16 Jan 2015 15:21:14 +0000 (15:21 +0000)]
decodebin: free old groups when switching groups
Old groups are freed with one switch's delay when switching groups.
They're freed in a scratch thread to avoid delaying the switch.
Vincent Penquerc'h [Fri, 12 Dec 2014 17:02:35 +0000 (17:02 +0000)]
oggmux: fix clipped duration determination for non 0 based segments
https://bugzilla.gnome.org/show_bug.cgi?id=740422
Sebastian Dröge [Thu, 15 Jan 2015 09:51:37 +0000 (10:51 +0100)]
audio: Keep caps features when building the downstream filter
Based on
5fd4e3e0b6cc4f30d7b1489a105db946b43f1a9f for video
by Alessandro Decina.
Alessandro Decina [Thu, 15 Jan 2015 02:54:14 +0000 (13:54 +1100)]
videoutils: keep caps features in account when building the downstream filter
See 00c2ce6 and https://bugzilla.gnome.org/show_bug.cgi?id=741263 for reference.
Thiago Santos [Wed, 14 Jan 2015 13:35:34 +0000 (10:35 -0300)]
examples: playback: add labels with supported seek range
Add the supported seeking range in the advanced seek area.
Also implement seeking querying the pipeline to retrieve those
values and show to the user. It is done in a smaller frequency
compared to the position/duration querying.
Thiago Santos [Tue, 13 Jan 2015 22:25:52 +0000 (19:25 -0300)]
decodebin: disable pad link checks as it has already been done
Decodebin has already added the element to the bin and should only
select caps compatible pads. It should disable the pad link checks
to avoid doing those again.
https://bugzilla.gnome.org/show_bug.cgi?id=742885
Luis de Bethencourt [Tue, 13 Jan 2015 16:58:34 +0000 (16:58 +0000)]
visual: cleanup
Shameful fix to a silly mistake in the previous commit. Above email address for
any mockery
Luis de Bethencourt [Tue, 13 Jan 2015 16:36:09 +0000 (16:36 +0000)]
visual: handle the return of the setup function
Make the baseclass future proof by handling the gboolean return of the setup
function. So if/when a child class uses this the base class is ready.
Luis de Bethencourt [Tue, 13 Jan 2015 16:09:49 +0000 (16:09 +0000)]
Revert "visual: remove unnecessary variable"
This reverts commit
a91d521a3602f33083405467db9454d422b9da1b.
Being a base class it is better to check the value instead of ignoring it since
a child class could be created that returns valuable information.
Luis de Bethencourt [Tue, 13 Jan 2015 15:07:56 +0000 (15:07 +0000)]
visual: remove unnecessary variable
klass->setup (scope) will always return TRUE since all children of this class
do so, no need to store the return. Besides, the value is overwritten a few
lines down before it is ever used. Save the unnecessary memory and instructions.
CID #1226467
Luis de Bethencourt [Mon, 12 Jan 2015 15:27:18 +0000 (15:27 +0000)]
visual: use unused value
ret is assigned but not used and in the next cycle of the loop it is overwritten
with default_prepare_output_buffer (). If there is a flow error the function
should return instead.
CID #1226475
Stefan Sauer [Mon, 12 Jan 2015 14:56:06 +0000 (15:56 +0100)]
Automatic update of common submodule
From f2c6b95 to bc76a8b
Mark Nauwelaerts [Thu, 8 Jan 2015 20:20:14 +0000 (21:20 +0100)]
audioringbuffer: start ringbuffer if needed upon commit
... to provide for a running clock.
Mark Nauwelaerts [Fri, 2 Jan 2015 13:34:41 +0000 (14:34 +0100)]
videoencoder: fix comment typo
Luis de Bethencourt [Fri, 9 Jan 2015 15:38:09 +0000 (15:38 +0000)]
video-dither: remove check for below zero for unsigned value
CLAMP checks both if value is '< 0' and '> max'. Value will never be a negative
number since it is an unsigned integer. Removing that check and only checking if
it is bigger than max and setting it appropriately.
CID 1256559
Luis de Bethencourt [Fri, 9 Jan 2015 15:28:06 +0000 (15:28 +0000)]
video-resampler: remove check for below zero for unsigned value
CLAMP checks both if n_taps is '< 0' and '> max_taps'. n_taps will never be a
negative number because it is an unsigned integer. Removing that check and only
making sure it isn't set bigger than max.
CID 1256558
Sebastian Dröge [Thu, 8 Jan 2015 09:45:46 +0000 (10:45 +0100)]
video: Add support for BT2020 colorspace (UHD)
Wim Taymans [Wed, 7 Jan 2015 14:54:58 +0000 (15:54 +0100)]
video-scaler: remove useless debug
Wim Taymans [Wed, 7 Jan 2015 14:52:57 +0000 (15:52 +0100)]
video-converter: add options to control chroma resampling
Add an option to disable chroma resampling.
Improve the matrix option values so that you can choose to use the input
or output matrix or disable conversion.
Tim-Philipp Müller [Fri, 2 Jan 2015 15:27:23 +0000 (15:27 +0000)]
oggmux: remove unused enum
Tim-Philipp Müller [Wed, 31 Dec 2014 19:40:20 +0000 (19:40 +0000)]
oggmux: fix silly GQueue iteration code
Sam Thursfield [Fri, 26 Dec 2014 20:48:55 +0000 (20:48 +0000)]
Fix documentation that incorrectly says a return value should be freed
The gst_discoverer_info_get_missing_elements_installer_details()
documentation and annotation says that the return value should be freed
with g_strfreev(), but actually it's owned by the GstDiscovereInfo
object and should definitely not get freed by the caller as well.
https://bugzilla.gnome.org/show_bug.cgi?id=742006
Nirbheek Chauhan [Sat, 27 Dec 2014 09:14:51 +0000 (14:44 +0530)]
audiobasesrc: Explicitly document that buffer-time and latency-time may be ignored
Thiago Santos [Fri, 26 Dec 2014 21:55:08 +0000 (18:55 -0300)]
oggmux: only clip by duration if end of buffer is ahead of segment
It might happen that the timestamp is before the segment and the
check would succeed. In this case reducing the duration makes no
sense and would lead to broken results.
Sebastian Dröge [Mon, 22 Dec 2014 21:04:41 +0000 (22:04 +0100)]
videotestsrc: Report our latency properly in live mode
While we have no latency at all in theory, any other live source has the
duration of one buffer as minimum latency. Do the same in videotestsrc.
https://bugzilla.gnome.org/show_bug.cgi?id=741879
Sebastian Dröge [Mon, 22 Dec 2014 21:00:26 +0000 (22:00 +0100)]
audiotestsrc: Report our latency properly in live mode
While we have no latency at all in theory, any other live source has the
duration of one buffer as minimum latency. Do the same in audiotestsrc.
https://bugzilla.gnome.org/show_bug.cgi?id=741879
Song Bing [Mon, 22 Dec 2014 14:25:04 +0000 (09:25 -0500)]
videopool: update video alignment after applying
Video buffer pool will update video alignment to respect stride alignment
requirement. But haven't updated it to video alignment in configure.
Which will cause user get wrong video alignment.
Fixes https://bugzilla.gnome.org/show_bug.cgi?id=741501
Thiago Santos [Fri, 28 Nov 2014 17:36:23 +0000 (14:36 -0300)]
audiobasesink: get the internal time before the clock reset
Otherwise calls to get the clock time might change its internal state
and the internal/external time for calibration get unbalanced leading to
a clock jump
https://bugzilla.gnome.org/show_bug.cgi?id=740834
Sebastian Dröge [Mon, 22 Dec 2014 10:45:53 +0000 (11:45 +0100)]
MAINTAINERS: Update my mail address
Sebastian Dröge [Mon, 22 Dec 2014 10:38:20 +0000 (11:38 +0100)]
video{en,de}coder: Call reset() before the start() vfunc
This makes sure that the element is in the same state before start() is called
the very first time and every future call after the element was used already.
Also it ensure that we always have a clean state before start(), cleaned the
same way in every case.
Sebastian Dröge [Mon, 22 Dec 2014 10:36:58 +0000 (11:36 +0100)]
audioencoder: Call reset() before the start() vfunc to guarantee a clean state
The same was done already in the decoder, and we cleaned some state just above
manually that would also be taken care of by reset().
This makes sure that the element is in the same state before start() is called
the very first time and every future call after the element was used already.
Sebastian Dröge [Mon, 22 Dec 2014 10:33:14 +0000 (11:33 +0100)]
video{en,de}coder: Reset the codec after calling the stop() vfunc
The stop() vfunc might mess with some of our fields we have just
reset, which could cause memory leaks or invalid state taken over
to later.
Also the stop() vfunc, or anything called until it from another thread,
might want to be able to use the fields that were just resetted and
become confused because of that.
In the decoder we already had a workaround for things like this happening,
this workaround is not needed anymore.
Sebastian Dröge [Mon, 22 Dec 2014 09:45:37 +0000 (10:45 +0100)]
audiobase{sink,src}: Don't hold the object lock while calling create_ringbuffer() vfunc
The implementation of that vfunc might want to use the object lock for
something too. It's generally not a good idea to keep the object lock while
calling any function implemented elsewhere.
Also the ringbuffer can only be NULL at this point, remove a useless if block.
And in the sink actually hold the object lock while setting the ringbuffer on
the instance. Code accessing this is expected to use the object lock, so do it
here ourselves too.
Sebastian Dröge [Thu, 18 Dec 2014 12:24:22 +0000 (13:24 +0100)]
riff-media: Error out early if we observe an invalid audio format
Sebastian Dröge [Thu, 18 Dec 2014 12:22:17 +0000 (13:22 +0100)]
riff: Also handle invalid block aligns for raw audio
Fixes audio playback of
http://demo.archermind.com/Test%20Sample/Video/MPEG%204/Divx3/Low-Motion/576-320.avi
Audio and video together is still broken because of other issues.
Edward Hervey [Thu, 18 Dec 2014 09:57:13 +0000 (10:57 +0100)]
audio: Fix private header include/dist
We want to dist it, but we don't want to install it.
Fixes make dist/distcheck
Sebastian Dröge [Thu, 18 Dec 2014 09:53:20 +0000 (10:53 +0100)]
Automatic update of common submodule
From ef1ffdc to f2c6b95
Thiago Santos [Wed, 17 Dec 2014 22:14:38 +0000 (19:14 -0300)]
video: audio: fix GI annotations for proxy caps function
Add the annotations to parameters that can be null and also for stating
the ownership of the returned caps
Thiago Santos [Wed, 17 Dec 2014 18:21:48 +0000 (15:21 -0300)]
tests: audiodecoder: tests for caps query implementation
Copied from videodecoder tests and updated to audio features
Thiago Santos [Wed, 17 Dec 2014 18:21:16 +0000 (15:21 -0300)]
audiodecoder: expose getcaps virtual function
Allows subclasses to do custom caps query replies.
Also exposes the standard caps query handler so subclasses can just
extend on top of it instead of reimplementing the caps query proxying.
Thiago Santos [Tue, 16 Dec 2014 21:36:57 +0000 (18:36 -0300)]
audiodecoder: implement caps and accept-caps queries
Allows decoders to proxy downstream restrictions on caps.
Also implements accept-caps query to prevent regressions caused by the
new fields on the return of a caps query that would cause the accept-caps
to fail as it uses subset caps comparisons
Thiago Santos [Tue, 16 Dec 2014 14:13:40 +0000 (11:13 -0300)]
audioencoder: refactor getcaps proxy function to be reusable
Makes the audioencoder's getcaps function that proxies downstream
restriction available to other elements in the audio module to use it
Thiago Santos [Wed, 17 Dec 2014 17:18:03 +0000 (14:18 -0300)]
videodecoder: expose getcaps virtual function
Allows subclasses to do custom caps query replies.
Also exposes the standard caps query handler so subclasses can just
extend on top of it instead of reimplementing the caps query proxying.
https://bugzilla.gnome.org/show_bug.cgi?id=741263