Commit graph

598 commits

Author SHA1 Message Date
Mark Nauwelaerts
89f6720545 audioencoder: protect pending_events with proper lock 2011-09-27 16:21:45 +02:00
Mark Nauwelaerts
9a9541ff35 audioencoder: clean up some documentation 2011-09-27 16:21:41 +02:00
Sebastian Dröge
e4c895dfaf audioencoder: Improve set_frame_sample_{min,max} documentation 2011-09-26 16:35:55 +02:00
Sebastian Dröge
b767be2f68 audiodecoder: Fix thread safety issues if both pads have different streaming threads 2011-09-26 16:22:00 +02:00
Sebastian Dröge
d0bf465248 audiodecoder: Delay sending of serialized events to finish_frame() 2011-09-26 16:19:42 +02:00
Sebastian Dröge
f3f416004f Revert "audioencoder: Use GST_BOILERPLATE instead of custom GObject boilerplate code"
This reverts commit 11e375486e.

GST_BOILERPLATE() can't define an abstract type and
G_DEFINE_ABSTRACT_TYPE() does not pass the class struct to
the instance_init function and there's no way to get the
class struct of the current type in instance_init().
2011-09-26 16:02:51 +02:00
Sebastian Dröge
4fa9749106 audioencoder: Add support for requesting a minimum and maximum number of samples per frame
This extends the special case of a fixed number of samples per frame
that was supported before already.
2011-09-26 15:59:22 +02:00
Sebastian Dröge
16c3d6b3d5 audioencoder: Fix thread safety issues if both pads have different streaming threads 2011-09-26 15:45:40 +02:00
Sebastian Dröge
61ffd7cb42 audioencoder: Delay sending of serialized events to finish_frame()
This makes sure that the caps are already set before any serialized
events are sent downstream.
2011-09-26 15:42:14 +02:00
Sebastian Dröge
11e375486e audioencoder: Use GST_BOILERPLATE instead of custom GObject boilerplate code 2011-09-26 15:34:54 +02:00
Mark Nauwelaerts
abafb030ac audioencoder: add some tag handling convenience help 2011-09-26 15:15:03 +02:00
Mark Nauwelaerts
a99b313c26 audioencoder: provide CODEC/AUDIO_CODEC handling 2011-09-26 15:10:08 +02:00
Mark Nauwelaerts
aae0312e10 audioencoder: filter AUDIO_CODEC/CODEC tags from passing tag events 2011-09-26 15:10:06 +02:00
Mark Nauwelaerts
001b4a0072 audioencoder: proxy some more optional downstream caps fields to upstream 2011-09-22 15:47:06 +02:00
Mark Nauwelaerts
2a362a95f7 audioencoder: changed is verily the opposite of equal 2011-09-22 15:47:06 +02:00
Mark Nauwelaerts
b420dd54ea audioencoder: prevent crashing when comparing to a freshly inited GstAudioInfo 2011-09-22 15:46:56 +02:00
Mark Nauwelaerts
7fa7de9221 audio: some more accessor macros for GstAudioInfo 2011-09-22 15:45:05 +02:00
Mark Nauwelaerts
b44978befe audiodecoder: fix documentation typo 2011-09-22 15:45:01 +02:00
Tim-Philipp Müller
55182ed841 baseaudiosrc: don't try to fixate "width" field for alaw/mulaw
Fixes warning when trying to fixate e.g. pulsesrc ! audio/x-alaw ! fakesink.
2011-09-10 18:30:55 +01:00
Wim Taymans
dc28bd1b63 audio: rename IS_LE/BE to _IS_LITTLE_ENDIAN/BIG_ENDIAN 2011-09-06 16:27:27 +01:00
Tim-Philipp Müller
36a75bdb71 audio: update internal silent sample defines as well to match 0.11 2011-09-06 15:46:45 +01:00
Tim-Philipp Müller
91d1112360 audio: update audio format enums to match changes in 0.11
And add new audio format info stuff to docs.
2011-09-06 15:36:51 +01:00
Tim-Philipp Müller
9a8a989a22 docs: more docs clean-ups 2011-09-06 10:07:33 +01:00
Tim-Philipp Müller
5e61db25b5 audio: fix GST_AUDIO_FORMAT_INFO_IS_*() macros to return a boolean 2011-09-05 23:28:20 +01:00
Tim-Philipp Müller
ba05716485 docs: some docs love 2011-09-05 23:28:20 +01:00
Tim-Philipp Müller
7563e0c9cf docs: add GstAudioDecoder and GstAudioEncoder to documentation 2011-09-05 23:28:20 +01:00
Tim-Philipp Müller
86e6343759 audio: rename GstBaseAudioDecoder/Encoder to GstAudioDecoder/Encoder
API: gst_gst_audio_decoder_finish_frame()
API: gst_gst_audio_decoder_get_audio_info()
API: gst_gst_audio_decoder_get_byte_time()
API: gst_gst_audio_decoder_get_delay()
API: gst_gst_audio_decoder_get_latency()
API: gst_gst_audio_decoder_get_max_errors()
API: gst_gst_audio_decoder_get_min_latenc()y
API: gst_gst_audio_decoder_get_parse_state()
API: gst_gst_audio_decoder_get_plc()
API: gst_gst_audio_decoder_get_plc_aware()
API: gst_gst_audio_decoder_get_tolerance()
API: gst_gst_audio_decoder_get_type()
API: gst_gst_audio_decoder_set_byte_time()
API: gst_gst_audio_decoder_set_latency()
API: gst_gst_audio_decoder_set_max_errors()
API: gst_gst_audio_decoder_set_min_latency()
API: gst_gst_audio_decoder_set_plc()
API: gst_gst_audio_decoder_set_plc_aware()
API: gst_gst_audio_decoder_set_tolerance()

API: gst_gst_audio_encoder_finish_frame()
API: gst_gst_audio_encoder_get_audio_info()
API: gst_gst_audio_encoder_get_frame_max()
API: gst_gst_audio_encoder_get_frame_samples()
API: gst_gst_audio_encoder_get_hard_resync()
API: gst_gst_audio_encoder_get_latency()
API: gst_gst_audio_encoder_get_lookahead()
API: gst_gst_audio_encoder_get_mark_granule()
API: gst_gst_audio_encoder_get_perfect_timestamp()
API: gst_gst_audio_encoder_get_tolerance()
API: gst_gst_audio_encoder_get_type()
API: gst_gst_audio_encoder_proxy_getcaps()
API: gst_gst_audio_encoder_set_frame_max()
API: gst_gst_audio_encoder_set_frame_samples()
API: gst_gst_audio_encoder_set_hard_resync()
API: gst_gst_audio_encoder_set_latency()
API: gst_gst_audio_encoder_set_lookahead()
API: gst_gst_audio_encoder_set_mark_granule()
API: gst_gst_audio_encoder_set_perfect_timestamp()
API: gst_gst_audio_encoder_set_tolerance()

https://bugzilla.gnome.org/show_bug.cgi?id=642690
2011-09-05 23:28:13 +01:00
Tim-Philipp Müller
517153e85a audio: add GstBaseAudioDecoder and GstBaseAudioEncoder to build
However, libgstaudio now depends on libgstvideo (via pbutils).

https://bugzilla.gnome.org/show_bug.cgi?id=642690

API: gst_audio_info_clear()
API: gst_audio_info_convert()
API: gst_audio_info_copy()
API: gst_audio_info_free()
API: gst_audio_info_from_caps()
API: gst_audio_info_init()
API: gst_audio_info_to_caps()
API: gst_base_audio_decoder_finish_frame()
API: gst_base_audio_decoder_get_audio_info()
API: gst_base_audio_decoder_get_byte_time()
API: gst_base_audio_decoder_get_delay()
API: gst_base_audio_decoder_get_latency()
API: gst_base_audio_decoder_get_max_errors()
API: gst_base_audio_decoder_get_min_latency()
API: gst_base_audio_decoder_get_parse_state()
API: gst_base_audio_decoder_get_plc()
API: gst_base_audio_decoder_get_plc_aware()
API: gst_base_audio_decoder_get_tolerance()
API: gst_base_audio_decoder_get_type()
API: gst_base_audio_decoder_set_byte_time()
API: gst_base_audio_decoder_set_latency()
API: gst_base_audio_decoder_set_max_errors()
API: gst_base_audio_decoder_set_min_latency()
API: gst_base_audio_decoder_set_plc()
API: gst_base_audio_decoder_set_plc_aware()
API: gst_base_audio_decoder_set_tolerance()
API: gst_base_audio_encoder_finish_frame()
API: gst_base_audio_encoder_get_audio_info()
API: gst_base_audio_encoder_get_frame_max()
API: gst_base_audio_encoder_get_frame_samples()
API: gst_base_audio_encoder_get_hard_resync()
API: gst_base_audio_encoder_get_latency()
API: gst_base_audio_encoder_get_lookahead()
API: gst_base_audio_encoder_get_mark_granule()
API: gst_base_audio_encoder_get_perfect_timestamp()
API: gst_base_audio_encoder_get_tolerance()
API: gst_base_audio_encoder_get_type()
API: gst_base_audio_encoder_proxy_getcaps()
API: gst_base_audio_encoder_set_frame_max()
API: gst_base_audio_encoder_set_frame_samples()
API: gst_base_audio_encoder_set_hard_resync()
API: gst_base_audio_encoder_set_latency()
API: gst_base_audio_encoder_set_lookahead()
API: gst_base_audio_encoder_set_mark_granule()
API: gst_base_audio_encoder_set_perfect_timestamp()
API: gst_base_audio_encoder_set_tolerance()
2011-08-27 14:47:50 +01:00
Tim-Philipp Müller
58f515f06a docs: add since markers to baseaudio{decoder,encoder} documentation 2011-08-27 14:47:50 +01:00
Tim-Philipp Müller
90e3d25891 baseaudiodecoder, baseaudioencoder: fix some compiler warnings
Leaving the GST_USE_UNSTABLE_API guards in until some of the
ported decoders have been updated and it's clear that I didn't
mess up anywhere porting things to the new audio API.
2011-08-27 14:47:49 +01:00
Tim-Philipp Müller
52ecb383d7 baseaudioutils: remove, merged into or superseded by audio.c 2011-08-27 14:47:49 +01:00
Tim-Philipp Müller
7f0c7e5f82 baseaudioencoder: port to new GstAudioInfo API 2011-08-27 14:47:49 +01:00
Tim-Philipp Müller
c89b49bfaf baseaudiodecoder: port to GstAudioInfo API 2011-08-27 14:47:49 +01:00
Tim-Philipp Müller
946ddb6462 audio: add gst_audio_info_{init,clear} and gst_audio_info_{copy,free} 2011-08-27 14:47:49 +01:00
Tim-Philipp Müller
63a3d360dc audio: add GstAudioFormat, GstAudioFormatInfo and GstAudioInfo
Same as in 0.11, but with caps parsing/serialising for 0.10 style
caps. Add setting default channel positions.
2011-08-27 14:47:01 +01:00
Mark Nauwelaerts
bf4a28f420 baseaudioencoder: remove leftover experimental code 2011-08-27 14:47:00 +01:00
Mark Nauwelaerts
35b172004c audioutils: modify _parse, add GType support functions 2011-08-27 14:47:00 +01:00
Mark Nauwelaerts
a4d5e33224 baseaudiodecoder: move properties to private storage and add
_get/_set
2011-08-27 14:47:00 +01:00
Mark Nauwelaerts
7939d37936 baseaudiodecoder: rename property 2011-08-27 14:47:00 +01:00
Mark Nauwelaerts
d71e427c49 baseaudiodecoder: replace context helper structure by various
_get/_set
2011-08-27 14:47:00 +01:00
Mark Nauwelaerts
a39a66dd4b baseaudioencoder: move properties to private storage and add
_get/_set
2011-08-27 14:47:00 +01:00
Mark Nauwelaerts
41a0d6f8f0 baseaudioencoder: rename some properties 2011-08-27 14:47:00 +01:00
Mark Nauwelaerts
6302c9d31d baseaudioencoder: replace context helper structure by various
_get/_set
2011-08-27 14:47:00 +01:00
Mark Nauwelaerts
d1ab04f029 baseaudio: rename GstAudioState to GstAudioFormatInfo 2011-08-27 14:47:00 +01:00
Mark Nauwelaerts
ecf57f2b73 baseaudioencoder: TEMP; avoid some imperfect ts jitter ?
... even when not in perfect mode ?
2011-08-27 14:47:00 +01:00
Mark Nauwelaerts
5a40343102 baseaudioencoder: debug format fixes 2011-08-27 14:47:00 +01:00
Mark Nauwelaerts
cedbedbbca baseaudiodecoder: debug format fix 2011-08-27 14:47:00 +01:00
Mark Nauwelaerts
8b6109cdbe baseaudiodecoder: fixup documentation 2011-08-27 14:47:00 +01:00
Mark Nauwelaerts
5003868dc7 baseaudiodecoder: fix FLUSH_STOP actions 2011-08-27 14:46:59 +01:00
Mark Nauwelaerts
660aa2e2c0 baseaudiodecoder: preserve upstream seek event seqnum 2011-08-27 14:46:59 +01:00
Mark Nauwelaerts
d1f5c34fe7 baseaudioencoder: use buffer running time for granule calculation 2011-08-27 14:46:59 +01:00
Mark Nauwelaerts
6c04035eec baseaudiodecoder: minor fix in ts resync 2011-08-27 14:46:59 +01:00
Mark Nauwelaerts
d46006b198 baseaudiodecoder: improve glitch resilience
Provide a replacement for GST_ELEMENT_ERROR to avoid aborting at the first
atom out of place, while on the other hand not failing indefinitely.
2011-08-27 14:46:59 +01:00
Mark Nauwelaerts
79b41f59f6 baseaudiodecoder: add limited legacy seeking support 2011-08-27 14:46:59 +01:00
Mark Nauwelaerts
0c33df6540 baseaudiodecoder: cater for audio-codec tag 2011-08-27 14:46:59 +01:00
Mark Nauwelaerts
1dbbe7c89d baseaudiodecoder: initial version 2011-08-27 14:46:59 +01:00
Mark Nauwelaerts
87409f2587 baseaudioencoder: misc fixes 2011-08-27 14:46:59 +01:00
Mark Nauwelaerts
8c61685554 baseaudio: add audioutils for caps and query handling helper utils 2011-08-27 14:46:59 +01:00
Mark Nauwelaerts
cb04eaaa8f baseaudioencoder: mark unstable API 2011-08-27 14:46:59 +01:00
Mark Nauwelaerts
b47c08ba17 baseaudioencoder: fix clearing context 2011-08-27 14:46:59 +01:00
Mark Nauwelaerts
e3cae1619c baseaudioencoder: simplify latency variable handling 2011-08-27 14:46:59 +01:00
Mark Nauwelaerts
9ce2edc918 baseaudioencoder: minor fixes and code simplifications
Also modify and elaborate a bit on pre_push (though currently unused to no harm).
2011-08-27 14:46:59 +01:00
Mark Nauwelaerts
d0e9fbf3db baseaudioencoder: additional documentation on granule semantics and
configuration
2011-08-27 14:46:59 +01:00
Mark Nauwelaerts
9f7849eac9 baseaudioencoder: elaborate property names 2011-08-27 14:46:58 +01:00
Mark Nauwelaerts
bf61f04577 baseaudioencoder: rename state field xint to is_int 2011-08-27 14:46:58 +01:00
Mark Nauwelaerts
3d2f496b3a baseaudioencoder: gtk-doc syntax fixes 2011-08-27 14:46:58 +01:00
Mark Nauwelaerts
51acb02342 baseaudioencoder: minor fix and cleanup 2011-08-27 14:46:58 +01:00
Mark Nauwelaerts
90d99f23c6 baseaudiocodec: ... and also rename to baseaudiodecoder 2011-08-27 14:46:58 +01:00
Mark Nauwelaerts
dfd7616f60 gst-libs/gst/audio: Remove baseaudiodecoder
Adds little beyond baseaudiocodec (seeking, bit of query), and what it adds
is mainly out-of-scope (e.g. decoder seeking, should be done by upstream
demuxer/parser) and/or based on non-prime example (mad).
2011-08-27 14:46:58 +01:00
Iago Toral
492ab47fd2 baseaudiodecoder: Return TRUE if we run into special conversion cases. 2011-08-27 14:46:50 +01:00
Iago Toral
2ed1331f43 audio: initial version of GstBaseAudioCodec
Moved most of the code to GstBaseAudioCodec, GstBaseAudioDecode is
now really small, maybe we do not really need it (or its encoder
counterpart). Added more API for subclasses and documentation.
2011-08-27 14:45:47 +01:00
Iago Toral
9740eb35b8 Added src_queries to decoder class. Added handle_discont to decoder
class. Reworked reset. Various other minor fixes.
2011-08-27 14:45:47 +01:00
Iago Toral
d05c805b16 Added a draft implementation of gstbaseaudiodecoder 2011-08-27 14:45:47 +01:00
Mark Nauwelaerts
fc6b421227 Added audio directory for audio codec base classes 2011-08-27 14:45:47 +01:00
Mark Nauwelaerts
ef92c7438d audioencoders: add streamheader helper utility 2011-08-27 14:45:47 +01:00
Mark Nauwelaerts
80241fde8d audioencoders: baseaudioencoder and ported encoders 2011-08-27 14:45:47 +01:00
Stefan Kost
01bbdd6bdf docs: handle warnings emitted by gtk-doc
This is useful and in most cases someone had put arbitrary markup into the docs,
misspelled xref'ed symbols, forgot to add stuff to the docs etc..
2011-08-20 19:16:42 +02:00
Stefan Sauer
264d91a502 baseaudiosink: fix latency calculation for live elements
Max_latency was computed on already adjusted min_latency. Introduce a new
variable for clarity. Spotted by Blaise Gassend.
Fixes #644284
2011-07-28 14:31:47 +02:00
Mark Nauwelaerts
68231a645a baseaudiosink: fix max latency calculation
... to allow infinite max, as also claimed by comment.
2011-07-28 12:05:06 +02:00
Mark Nauwelaerts
5d0f279fea baseaudiosink: drop samples that are too late
... rather than having all of them rendered at 0 or subsequently aligned,
likely inevitably leading to repeated resyncing.
2011-07-28 11:47:52 +02:00
Stefan Kost
940291dd38 audio: move testchannels example to 'tests/examples' dir
Also fix it up a little to not include 'c' file but link to the libs instead.
2011-05-27 15:09:25 +03:00
Stefan Kost
6bee2cb4ee docs: add missing documentation for various pieces 2011-05-23 23:56:09 +03:00
Thijs Vermeir
dad50ad1fe baseaudiosink: recalibrate clock on setcaps
Because the spec for the ringbuffer can change when changing
the caps, we must recalibrate the clock.

https://bugzilla.gnome.org/show_bug.cgi?id=610443
2011-05-23 17:02:03 +02:00
Stefan Kost
089fdb7792 docs: fixup audio-library docs 2011-05-23 15:08:24 +03:00
Stefan Kost
d6ea8d5cb3 docs: fix docs for new api
Some parameters where wrong, first line missed the ':' and return docs where
broken.
2011-05-23 14:56:17 +03:00
Arun Raghavan
623e8781ab baseaudiosink: Use g_str_equal() instead of strncmp()
The strncmp is unnecessary anyway since one of the strings is a const
string.
2011-05-14 18:53:12 +05:30
Arun Raghavan
824e643ec9 baseaudiosink: Fix trivial indentation problems 2011-05-14 18:53:12 +05:30
Arun Raghavan
8ff93a6a3d audio: Add an IEC 61937 payloading library
This can be used by sinks to take compressed formats, correctly payload
these in IEC 61937 frames and feed these to sinks that support
passthrough output over IEC 60958 (S/PDIF) or, in the case of MP3, over
Bluetooth.

Initial implementation includes AC3, E-AC3, MPEG-1, MPEG-2 (non-AAC),
and DTS (type-I/II/II) payloading. More formats can be added as needed.

API: gst_audio_iec61937_frame_size()
API: gst_audio_iec61937_payload()

https://bugzilla.gnome.org/show_bug.cgi?id=642730
2011-05-14 18:53:12 +05:30
Arun Raghavan
643e5f586c baseaudiosink: Allow subclasses to provide payloaders
This allows subclasses to provide a "payload" function to prepare
buffers for consumption. The immediate use for this is for sinks that
can handle compressed formats - parsers are directly connected to the
sink, and for formats such as AC3, DTS, and MPEG, IEC 61937 patyloading
might be used.

API: GstBaseAudioSinkClass:payload()

https://bugzilla.gnome.org/show_bug.cgi?id=642730
2011-05-14 18:23:18 +05:30
Arun Raghavan
9615081f9c ringbuffer: Add support for E-AC3
Adds support for pushing E-AC3 buffers and doing bytes-to-ms conversion
correctly. The assumption (as with other formats) is that something like
IEC 61937 payloading will be used. Correspondingly the ringbuffer spec
is populated so that the data rate is 4x normal AC3.

https://bugzilla.gnome.org/show_bug.cgi?id=642730
2011-05-14 18:21:23 +05:30
Arun Raghavan
193fbf93a9 ringbuffer: Add support for MPEG audio buffers 2011-05-14 18:21:16 +05:30
Arun Raghavan
1a1f2cc50a ringbuffer: Add AAC format types
These are meant to be used for buffers containing AAC data. Nothing uses
this yet, but for now it serves to distinguish from GST_BUFTYPE_MPEG
which represents non-AAC MPEG audio.

API: GST_BUFTYPE_MPEG2_AAC
API: GST_BUFTYPE_MPEG4_AAC
2011-05-14 18:20:37 +05:30
Arun Raghavan
33ef9ab054 ringbuffer: Add support for DTS buffers 2011-05-14 16:53:33 +05:30
Håvard Graff
d9f1b3736e ringbuffer: make sure to not start if the may_start flag is FALSE
Fixes #635784
2011-04-18 11:40:06 +02:00
Tim-Philipp Müller
1d05e81435 libs: gobject-introspection scanner doesn't need to scan or update plugin info
Make sure the scanner doesn't load or introspect or check any plugins,
(especially not outside the build directory).
2011-04-16 11:01:53 +01:00
Alessandro Decina
030f639a8e android: make it ready for androgenizer
Remove the android/ top dir
Fixe the Makefile.am to be androgenized

To build gstreamer for android we are now using androgenizer which generates the
needed Android.mk files.
Androgenizer can be found here:
http://git.collabora.co.uk/?p=user/derek/androgenizer.git
2011-04-11 07:23:21 +02:00
Stian Johansen
0f8edca902 baseaudiosrc: Add src object lock around call to ringbuffer parse caps.
A race was observed between query() and setcaps() where the latter would
change the ringbuffer spec while the former was performing operations
based this data.
2011-04-04 09:35:58 +02:00
Havard Graff
63cfa2a50d baseaudiosrc: protect against ringbuffer disappearing while in a query
Observed a case where the src went to null-state during the query,
hence the spec pointer was no longer valid, and
gst_util_unit64_scale_int crashed (assertion `denom > 0´failed)

Add locking to make sure the ringbuffer can't disappear.
2011-04-04 09:33:33 +02:00
Havard Graff
588ac0ae6f baseaudiosink: don't allow aligning behind the read-segment
Given a large enough drift-tolerance, one could end up in a situation
where one would keep aligning the written buffers behind the current
read-segment position. The result for the reader would be complete
silence, possible preceded by very choppy audio.

By checking the available headroom, one can determine if there is
room to do alignment, or if one should resort to a resync instead to get
the pointers back on track.

Also refactor the alignment-logic out of the render function for cleaner
code.
2011-04-04 09:31:26 +02:00
Mark Nauwelaerts
e73f293ee5 baseaudiosink: arrange for running clock when rendering eos
Commit ba2e500bd9 ensured to provide
a running clock when EOS had finished rendering.  However,
other measures are needed (and were in place before) to ensure a
running clock when EOS still needs rendering (i.e. waiting).

So, specifically, re-introduce eos_rendering removed in aforementioned commit,
this time as a public variable so subclasses can be aware of the situation.

Fixes (part of) #645961.

API: GstBaseAudioSink:eos_rendering
2011-03-31 13:18:53 +02:00