Commit graph

1175 commits

Author SHA1 Message Date
Wim Taymans
2d971df593 audio-converter: handle NULL input
Allow NULL as input to mean silence samples.
2016-01-26 17:19:34 +01:00
Wim Taymans
6050509b65 audio-converter: improve _update_config
Allow NULL config to keep the existing parameters.
Fix the docs.
2016-01-26 17:19:34 +01:00
Wim Taymans
0f757bc23c audio-converter: audio-converter: make some optimized functions
Make optimized functions for generic and passthrough conversion.
2016-01-26 17:19:34 +01:00
Wim Taymans
cde091ae81 audio-quantize: add _reset function
Add a reset function that clears any history.
2016-01-26 16:45:44 +01:00
Wim Taymans
3674742957 audio-converter: ensure correct alignment of samples
Make sure that the data we allocate for our temporary buffers is
properly aligned.

Fixes https://bugzilla.gnome.org/show_bug.cgi?id=760938
2016-01-21 16:27:50 +01:00
Sebastian Dröge
761142e15a audioencoder: Add note to the documentation about various settings being reset before set_format()
It's quite unexpected behaviour that various subclass settings are just
reset before set_format(). Unfortunately changing this now has the risk
of breaking existing code but we should reconsider this for 2.0.
2016-01-16 11:05:13 +01:00
Wim Taymans
1b412a523d audio-channel-mixer: round before truncating
Round the result before truncating for int channel mixing.
2016-01-12 15:56:36 +01:00
Wim Taymans
ef3844cf6f audio-converter: Avoid conversion when possible
When the input and output formats are the same and in a possible
intermediate format, avoid unpack and pack.
Never do passthrough channel mixing.
Only do dithering and noise shaping in S32 format
2016-01-12 15:27:16 +01:00
Wim Taymans
4d47d43a13 audio-channel-mixer: add more formats
Add support for float and int16 mixing
Remove in-place processing, this simplifies things as we won't be using it.
Don't do clipping for float audio formats
2016-01-12 11:43:20 +01:00
Wim Taymans
8a8b12189e audio-converter: improve processing loop
Process as many samples as we can from the input and return the number
of processed samples from the chain. This simplifies some code.
Fix the IN_WRITABLE handling, don't overwrite the flags.
2016-01-12 11:37:17 +01:00
Wim Taymans
85afad72ec audio-converter: small API tweaks
Pass flags in _converter_new() so that we can configure ourselves
differently depending on some options.
SOURCE_WRITABLE -> IN_WRITABLE because the array is called 'in'
2016-01-08 17:34:50 +01:00
Wim Taymans
7f49b946cc audio-converter: prepare API for rate changes
Use the update function to update the sample rates along with the config
once we implement resampling.
2016-01-08 17:28:31 +01:00
Wim Taymans
980163457e audio-convert: simplify API
Simplify the API, we don't need the consumed and produced output
arguments. The caller needs to use the _get_in_frames/get_out_frames API
to check how much input is needed and how much output will be produced.
2016-01-08 17:19:58 +01:00
Sebastian Dröge
0da2709d0c audio/video: Use G_GNUC_INTERNAL for internal functions 2016-01-08 17:50:50 +02:00
Wim Taymans
40f4c5e352 audio: GstAudioChannelMix -> GstAudioChannelMixer
Rename the GstAudioChannelMix object to GstAudioChannelMixer because it
looks better and to avoid a conflict with a library in -bad.
2016-01-08 16:41:17 +01:00
Stefan Sauer
7bbfa39ada audioconvert: fix passthrough operation
We did not take the sample size into account. Rearrange the tests to have more
conversion test and an extra test case for passthrough operations.

Fixes #759890
2015-12-29 14:40:32 +01:00
Stefan Sauer
0bd3f818bb audio-converter: code cleanup
Rename samples to num_samples, since we also have samples in chain, but that is
the data pointer. Always use gzize for num_samples. Make the log output a bit
more homogenous.
2015-12-27 19:25:20 +01:00
Sebastian Dröge
3459bd6854 audio: Fix some documentation warnings
Remove/rename function parameters and skip some functions that can't
be used by bindings as they are now.
2015-12-26 09:43:56 +01:00
Wim Taymans
08734e7598 audio-converter: rework the main processing loop
Rework the main processing loop. We now create an audio processing
chain from small core functions. This is very similar to how the
video-converter core works and allows us to statically calculate an
optimal allocation strategy for all possible combinations of operations.
Make sure we support non-interleaved data everywhere.
Add functions to calculate in and out frames and latency.
2015-12-16 11:13:15 +01:00
Xavier Claessens
429860e51f base: Add g_autoptr() support to all types
https://bugzilla.gnome.org/show_bug.cgi?id=754464
2015-12-14 13:39:43 -05:00
Wim Taymans
f5a3f70571 audio: adapt API for non-interleaved formats
Allow an array of sample blocks to be passed to the channel mix and
quantizer functions to support non-interleaved formats.
2015-12-14 09:16:08 +01:00
Wim Taymans
aec17c63fd audio-converter: improve API for non-interleaved formats
Make it possible to pass an array of sample blocks when dealing with
non-interleaved formats.
2015-12-14 09:16:08 +01:00
Wim Taymans
5e55968546 audio-convert: improve converter API
Improve the converter API to allow for an max input and output number of
samples and return the number of consumed/produced samples.
2015-12-09 17:16:26 +01:00
Reynaldo H. Verdejo Pinochet
4ed7b0a0e6 Drop usage of deprecated g-ir-scanner --strip-prefix flag 2015-12-02 20:19:43 -08: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
Michael Olbrich
43155807cd audiobasesink: Post latency message on the bus after set_caps()
Any latency query before this will not get the correct latency so a new
latency query should be triggered once the audio sink know its own latency.

Without this the initial latency query from the pipeline arrives too early
sometimes and the resulting latency is too short.

https://bugzilla.gnome.org/show_bug.cgi?id=758911
2015-12-01 19:58:25 +02:00
Luis de Bethencourt
df16e8dd5a audio-converter: remove unneeded check for unsigned < 0
Commit ff6d1a2a25 changed sample's type from
gint to gsize (and renamed it to in_samples). gsize is an unsigned long,
which means it can never be a negative value and the check making sure that
in_samples is >= 0 is never going to be false. Removing it.

CID 1338689
2015-11-12 14:18:30 +00:00
Vineeth TM
b61e1465b7 audio-quantize: Fix dither_buffer memory leak
https://bugzilla.gnome.org/show_bug.cgi?id=757928
2015-11-11 15:01:08 +01:00
Wim Taymans
ff6d1a2a25 audio-converter: add output size argument
Make it possible to have a different number of output samples than input
samples when we, for example, want to add resampling later.
2015-11-10 09:53:59 +01:00
Wim Taymans
30977cf1a5 audio-converter: require interleaved samples and no resampling
We can't yet do resampling or anything other than interleaved audio.
2015-11-06 18:00:41 +01:00
Wim Taymans
7abed02858 audio: update ORC dist files 2015-11-06 17:54:21 +01:00
Wim Taymans
e3f0f3b91e audio-converter: move audio converter to audio libs
Move the audio-converter helper to the audio library.
2015-11-06 17:53:22 +01:00
Wim Taymans
dfa25a40fc audio-channel-mix: move channel mixer to audio libs
Move the channel mixer code to the audio library
2015-11-06 17:39:33 +01:00
Wim Taymans
b8bea9d8be audio: add debug categories 2015-11-06 17:29:22 +01:00
Wim Taymans
59db8ce542 audio-quantize: update docs
Update docs
Add another flag for the quantizer
2015-11-06 13:02:19 +01:00
Wim Taymans
dfbeb78342 audio: update orc files 2015-11-06 12:37:14 +01:00
Wim Taymans
c36ac3ce45 audioconvert: move audio quantize code to libs
Move the audio quantize code from audioconvert to the audio library.
work on making an audio converter helper function similar to the video
converter.
Fold fastrandom directly into the quantizer, add some ORC code to
optimize this later.
2015-11-06 12:10:48 +01:00
Wim Taymans
a7789854d5 audio-channels: rename get_default_mask
Rename _get_default_mask() to _get_fallback_mask() to make it more
clear that the function only provides a fallback if nothing else can be
done. Also clarify this in the documentation.

API: gst_audio_channel_get_fallback_mask()
2015-11-05 12:50:18 +01:00
Wim Taymans
f86ed8cdf6 audio-channels: make method to get default channel-mask
Add a new method to get the default channel-mask.
Use the new method on audiodecoder and audioconvert.

API: gst_audio_channel_get_default_mask()
2015-11-05 10:52:53 +01:00
Sebastian Dröge
35ea6fdddf audio: Add GstAudioClippingMeta for specifying clipping on encoded audio buffers
https://bugzilla.gnome.org/show_bug.cgi?id=757153
2015-11-03 20:35:33 +02:00
Tim-Philipp Müller
1f2fdd3789 audio: update disted orc backup files 2015-11-03 16:38:09 +00:00
Luis de Bethencourt
94a7f9fc4e audioclock: use GST_STIME_FORMAT for GstClockTimeDiff
GST_STIME_FORMAT is more appropriate for GstClockTimeDiff since it can
handle negative values better.

https://bugzilla.gnome.org/show_bug.cgi?id=757480
2015-11-03 14:08:29 +00:00
Wim Taymans
801f7ca464 audio-format: add TRUNCATE_RANGE flag
Add a TRUNCATE_RANGE flag for unpack functions to fill the least
significate bits with 0 (as did the old code). Also add functions
that don't truncate. Use the TRUNC flag in audioconvert for
backwards compatibility for now.
2015-11-03 12:12:08 +01:00
Wim Taymans
914aa4aed1 audiopack: improve pack functions
Avoid shifts by using convh functions.
2015-11-03 12:12:08 +01:00
Luis de Bethencourt
fe62e797d5 audiobasesink: use GST_STIME_ARGS for GstClockTimeDiff
No need to use G_GINT64_FORMAT for potentially negative values of
GstClockTimeDiff. Since 1.6 these can be handled with GST_STIME_ARGS.
Plus it creates more readable values in the logs.

https://bugzilla.gnome.org/show_bug.cgi?id=757480
2015-11-02 17:35:20 +00:00
Sebastian Dröge
443171bb4c audio: Fix parameters to gst_buffer_get_audio_downmix_meta() in macro 2015-11-02 17:35:45 +02:00
Sebastian Dröge
736a27fe1e audiofilter: Clip input buffers to the segment before handling them
https://bugzilla.gnome.org/show_bug.cgi?id=757068
2015-11-02 10:20:37 +02:00
eunhae choi
e98b96247f audiobasesink: fix issue about eos handling during flushing
If the flush-start is arrived during _eos_wait() in basesink,
the 'eos' flag is overwritten to TRUE after exiting the _eos_wait().
To resolve the overwritten issue,
the subclass doing the _eos_wait() call should return the right value.
If the eos flag is set to TRUE again, it will cause error(enter the eos flow)
of the following state changing from PAUSED to PLAYING in basesink.

https://bugzilla.gnome.org/show_bug.cgi?id=754980
2015-10-19 12:12:12 -03:00
Sebastian Dröge
b60ab758e4 Revert "audioencoder: timestamp headers same as first buffer and use duration 0"
This reverts commit dd4d6d9ed5.

It breaks ogg muxing and the vorbisenc unit test.
2015-10-12 14:02:58 +03:00
Havard Graff
dd4d6d9ed5 audioencoder: timestamp headers same as first buffer and use duration 0
https://bugzilla.gnome.org/show_bug.cgi?id=754224
2015-10-11 11:04:53 +01:00