Commit graph

39 commits

Author SHA1 Message Date
Ratchanan Srirattanamet
cc8f54468e audiobasesrc: always acquire if not acquired in _setcaps
audiobasesrc's setcaps contains an optimization that makes it not re-
acquire the ringbuffer if the caps have not changed. However, it doesn't
check if it has successfully acquired it or not. It's possible to have
the caps set but not having ringbuffer acquired if the previous attempt
to acquire fails.

This commit replaces the caps existence check with whether the
ringbuffer is acquired or not. There's no need to check for caps
existence because 1.) it's unlikely to be NULL if the ringbuffer is
acquired, and 2.) _setcaps shouldn't be called with a NULL caps.

This should also let the element retry on acquiring ringbuffer after an
error by re-setting the element's state to READY and back to PLAYING.
Whether this behavior is correct is up for debate.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-base/-/merge_requests/512>
2020-12-04 13:57:58 +00:00
Thibault Saunier
909baa2360 Pass the code through codespell 2019-08-30 13:05:36 +00:00
wangzq
9f51607723 audiobasesrc: Round down segsize to an integer number of samples
https://bugzilla.gnome.org/show_bug.cgi?id=796704
2018-06-29 07:38:20 +02:00
Tim-Philipp Müller
fae8c24590 audio: Update for g_type_class_add_private() deprecation in recent GLib
https://gitlab.gnome.org/GNOME/glib/merge_requests/7
2018-06-23 21:49:48 +02:00
Nirbheek Chauhan
b5698995f1 audiobasesrc: posting errors should be always be safe
Don't try to signal an error in the ringbuffer if it hasn't been
allocated yet.

https://bugzilla.gnome.org/show_bug.cgi?id=794611
2018-04-09 17:25:32 +05:30
Sebastian Dröge
8b468c3c36 audio: Generate audiobasesink/src and audiocdsrc GLib enums automatically
And ensure that GstAudioBaseSrcSlaveMethod's re-timestamp stays
re-timestamp and doesn't become retimestamp.
2017-04-09 11:49:50 +03:00
Thibault Saunier
099ac9faf2 docs: Convert gtkdoc comments to markdown
Modernizing the documentation, making it simpler to read an
modify and allowing us to possibly switch to hotdoc in the
future.
2017-03-10 18:19:17 -03:00
Marcin Kolny
89e711663f audioclock: use GstAudioClock* as first argument in GstAudioClock methods
All the GstAudioClock method declarations required object of GstClock type
as a first argument, but in fact, required GstAudioClock object (runtime
check in function body). Instead of checking type in run-time, we can
change functions declaration, to accept only GstAudioClock methods. Then,
runtime check is not necessary anymore, since always GstAudioClock object
is passed to a function.

https://bugzilla.gnome.org/show_bug.cgi?id=756628
2016-11-01 19:54:01 +02:00
Sebastian Dröge
2f3eb47a95 audiobasesrc: Post latency message on the bus after set_caps()
The latency is only known once the caps are known, and might change
whenever the caps are changing.

https://bugzilla.gnome.org/show_bug.cgi?id=758911
2015-12-01 19:58:25 +02:00
Vincent Penquerc'h
4e6b917ba3 audiobasesrc: fix ring buffer leak on open failure 2015-04-09 13:00:57 +01:00
Nirbheek Chauhan
54e4baa523 audiobasesrc: Explicitly document that buffer-time and latency-time may be ignored 2014-12-27 10:24:45 +01:00
Sebastian Dröge
ceb9de6e55 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.
2014-12-22 10:47:36 +01:00
Tim-Philipp Müller
bcb8068e27 docs: remove outdated and pointless 'Last reviewed' lines from docs
They are very confusing for people, and more often than not
also just not very accurate. Seeing 'last reviewed: 2005' in
your docs is not very confidence-inspiring. Let's just remove
those comments.
2014-04-26 23:28:57 +01:00
Jan Schmidt
f0b655e1ad audiobasesrc: Avoid unnecessary configuration
Port a change from audiobasesink from def07410, to ignore setcaps
when the caps don't actually change, and avoid a reconfiguration
and reset of the ringbuffer in that case.
2014-01-03 02:20:39 +11:00
Reynaldo H. Verdejo Pinochet
5f07c1ed4e audiobasesrc: Bunch of cosmetic/grammar fixes 2013-12-27 01:36:09 -03:00
Reynaldo H. Verdejo Pinochet
0a6d6e1fff audiobasesrc: Retarget FIXME to 2.0
Properly fixing this one would break API.
2013-12-27 01:36:09 -03:00
Reynaldo H. Verdejo Pinochet
aa1883d5d7 audiobase*: Drop trailing withespaces 2013-12-27 01:36:09 -03:00
Reynaldo H. Verdejo Pinochet
d1b3454299 audiobasesrc: Break some too long lines 2013-12-27 01:36:09 -03:00
Reynaldo H. Verdejo Pinochet
6b17d86692 audiobasesrc: Add FIXME for times in NSECONDS
Timebase is in nanoseconds pretty much everywhere else
2013-12-27 01:36:09 -03:00
Ognyan Tonchev
f240d34c7e audiobasesrc: add 2 missing gst_buffer_unmap () calls
There are 2 missing calls to gst_buffer_unmap () in the error handling in
create ().

Fixes https://bugzilla.gnome.org/show_bug.cgi?id=702467
2013-06-17 16:34:26 +02:00
Alexander Schrab
a049b102da alsasrc: Make using driver timestamps possible
https://bugzilla.gnome.org/show_bug.cgi?id=699744
2013-05-20 11:25:17 +02:00
Paul HENRYS
78a8531c75 audiobasesrc: Fix ringbuffer handling when settings caps
ringbuffer was released after setting values to its spec field
in gst_audio_base_src_setcaps(). This led to failure in case
gst_audio_base_src_setcaps() is called more than one time.

https://bugzilla.gnome.org/show_bug.cgi?id=696540
2013-03-25 10:16:03 +01:00
Wim Taymans
5e04fcd2ef audiobasesrc: init variable
We need to initialize this variable because we can't be sure that the subclass
will set it.
2012-12-20 16:47:56 +01:00
Tim-Philipp Müller
68f366a8d3 audiobasesrc: bail out if subclass posts an error
Use new ringbuffer ERROR state to make all the various
threads bail out correctly when the subclass posts an
error. It's a bit iffy to communicate this properly
between the different bits of code.

https://bugzilla.gnome.org/show_bug.cgi?id=690197
2012-12-17 20:50:32 +00:00
Thiago Santos
929edc2572 audiobasesrc: Always resync the ringbuffer on the first buffer
In SKEW mode, use next_sample == -1 to check for the first sample
when starting to read samples so it resyncs the ringbuffer and
timestamps are ok.

Suggestion from Teemu Katajisto <teemu.katajisto@digia.com>

https://bugzilla.gnome.org/show_bug.cgi?id=648359
2012-12-17 11:47:34 +01:00
Sebastian Dröge
3f82e919dd libs: Use foo/foo.h as single-include header consistently everywhere
https://bugzilla.gnome.org/show_bug.cgi?id=688785
2012-12-12 17:13:10 +00:00
Tim-Philipp Müller
5f59b4f7ee Fix FSF address
https://bugzilla.gnome.org/show_bug.cgi?id=687520
2012-11-03 23:05:09 +00:00
Wim Taymans
a57198a0ba audio: improve property description
Improve the description of the latency-time and buffer-time properties in the
audio sink and source.
2012-09-14 16:08:50 +02:00
Wim Taymans
0ce33461c8 audiosrc: check for flushing state in provide_clock
Only provide a clock when we are not flushing, this means that we have posted a
PROVIDE_CLOCK message. We used to check if we were acquired but that doesn't
work anymore now that we do the negotiation async in the streaming thread: it's
possible that we are still negotiating when the pipeline asks us for a clock.
2012-09-10 12:19:22 +02:00
Pontus Oldberg
a2f8ec4f5a ringbuffer: add support for timestamps
Make it possible for subclasses to provide the timestamp (as an absolute time
against the pipeline clock) of the last read data.
Fix up alsa to provide the timestamp received from alsa. Because the alsa
timestamps are in monotonic time, we can only do this when the monotonic clock
has been selected as the pipeline clock.

Fixes https://bugzilla.gnome.org/show_bug.cgi?id=635256
2012-09-10 11:34:14 +02:00
Edward Hervey
2817bdadc9 libs: Remove "Since" markers and minor doc fixups 2012-07-13 12:11:06 +02:00
Wim Taymans
25137962ad fix for caps API changes 2012-03-11 19:04:41 +01:00
Wim Taymans
a75e9102c5 GST_FLOW_WRONG_STATE -> GST_FLOW_FLUSHING 2012-02-08 15:17:49 +01:00
Wim Taymans
fcdc385aa1 port to new map API 2012-01-25 12:30:53 +01:00
Sebastian Dröge
2760dd2068 audiobasesrc: Use guint8 instead of guchar 2011-12-20 14:36:28 +01:00
Tim-Philipp Müller
177525f89f Merge remote-tracking branch 'origin/master' into 0.11
Conflicts:
	gst-libs/gst/netbuffer/gstnetbuffer.c
	gst/ffmpegcolorspace/avcodec.h
	gst/ffmpegcolorspace/gstffmpegcodecmap.c
	gst/ffmpegcolorspace/imgconvert.c
	gst/ffmpegcolorspace/imgconvert_template.h
	gst/ffmpegcolorspace/mem.c
	gst/playback/README
	gst/playback/gstplaybasebin.c
	gst/playback/gstplaybasebin.h
	gst/playback/gstplaybin.c
	sys/v4l/v4lmjpegsrc_calls.c
	sys/v4l/videodev_mjpeg.h
	tests/check/elements/gnomevfssink.c
2011-12-02 11:10:17 +00:00
Wim Taymans
468d1dde89 audio: update for clock provider API change 2011-11-28 17:51:41 +01:00
Wim Taymans
d0bd5f04c0 update for new scheduling query 2011-11-18 17:58:58 +01:00
Wim Taymans
a3416bc11f rename baseaudio* -> audiobase* 2011-11-11 12:00:52 +01:00
Renamed from gst-libs/gst/audio/gstbaseaudiosrc.c (Browse further)