summaryrefslogtreecommitdiff
path: root/sys/opensles
Commit message (Collapse)AuthorAgeFilesLines
* opensles: Remove hard-coded buffer-/latency-time valuesArun Raghavan2020-05-162-9/+0
| | | | | These were originally required in early Android versions, but are no longer needed.
* openslessink: Allow openslessink to handle 48kHz streams.Matthew Read2020-03-031-4/+1
| | | | | | | | The most common audio sample rate in AV streams is 48kHz, and the most common device output sample rate is 48kHz. This allows handing of 48kHz input streams without resampling. Remove comments about avoiding the use of 48kHz.
* Remove autotools build systemTim-Philipp Müller2019-10-141-24/+0
|
* meson: add more plugins to plugins listTim-Philipp Müller2019-05-301-0/+1
| | | | | Makes sure their path gets added to the uninstalled environment and makes sure they get included in the docs.
* meson: Fix invalid keyword warningSeungha Yang2018-11-131-1/+1
| | | | | | | "required" keyword is not a valid argument for has_header() WARNING: Passed invalid keyword argument "required". WARNING: This will become a hard error in the future.
* meson: Add build files for androidmedia and openslesNirbheek Chauhan2018-08-291-0/+29
| | | | Note that androidmedia requires Android gstgl
* Remove plugin specific static build optionNicolas Dufresne2017-05-161-1/+0
| | | | | Static and dynamic plugins now have the same interface. The standard --enable-static/--enable-shared toggle are sufficient.
* docs: Port all docstring to gtk-doc markdownThibault Saunier2017-04-122-6/+4
|
* opensles: Add opensles.h to noinst_HEADERSFredrik Fornwall2016-08-241-1/+2
| | | | https://bugzilla.gnome.org/show_bug.cgi?id=770326
* bad: use new gst_element_class_add_static_pad_template()Vineeth TM2016-03-242-4/+2
| | | | https://bugzilla.gnome.org/show_bug.cgi?id=763081
* openslesringbuffer: Warn if the position reported by OpenSL is higher than ↵Sebastian Dröge2016-03-161-1/+8
| | | | | | | what we queued up so far This would hint at wrong position reporting, and apparently sometimes happens after a seek.
* plugins-bad: Fix example pipelinesVineeth TM2015-12-152-2/+2
| | | | | | | | rename gst-launch --> gst-launch-1.0 replace old elements with new elements(ffmpegcolorspace -> videoconvert, ffenc_** -> avenc_**) fix caps in examples https://bugzilla.gnome.org/show_bug.cgi?id=759432
* opensles: Fix build with Android API level < 14Arun Raghavan2015-06-132-0/+7
| | | | | | Headers were broken on older Android versions, apparently. https://bugzilla.gnome.org/show_bug.cgi?id=744459
* openslessink: Allow setting the stream type via a propertyArun Raghavan2015-06-136-3/+130
|
* openslessrc: Implement recording presetsArun Raghavan2015-06-137-5/+212
| | | | | | This allows us to signal what kind of audio we are expecting to record, which should tell the system to apply filters (such as echo cancellation, noise suppression, etc.) if required.
* opensles: Explicitly specify layout=interleaved in capsArun Raghavan2015-04-082-2/+4
| | | | | | This is fine to hard-code. Section 9.1.8 of the OpenSL ES 1.1 specification, it is expected that multi-channel audio is always interleaved.
* opensles: Make debug category naming a bit more consistentArun Raghavan2015-02-132-4/+4
|
* openslesringbuffer: Only allocate at most half the number of internal ↵Sebastian Dröge2015-02-101-1/+5
| | | | | | | buffers as external audioringbuffer ones Otherwise we might end up reading too much from the audioringbuffer, which would result in reading silence.
* openslesringbuffer: Only pre-roll a single bufferSebastian Dröge2015-02-051-5/+2
| | | | | | | | | | | There is no reason to pre-roll more buffers here as we have our own ringbuffer with more segments around it, and we can immediately provide more buffers to OpenSL ES when it requests that from the callback. Pre-rolling a single buffer before starting is necessary though, as otherwise we will only output silence. Lowers latency a bit, depending on latency-time and buffer-time settings.
* openslesringbuffer: Allocate at most 4 internal buffersSebastian Dröge2015-02-051-3/+5
| | | | | | | | | 4 is the "typical" number of buffers defined by Android's OpenSL ES implementation, and its code is optimized for this. Also because we have our own ringbuffer around this, we will always have enough buffering on our side already. Allows for more efficient processing.
* openslessink/src: Lower default buffer time to 200ms like alsasinkSebastian Dröge2015-02-052-2/+2
|
* Fix up one-element lists in template capsTim-Philipp Müller2014-09-101-1/+1
|
* openslesringbuffer: Provide the size of our array to ↵Sebastian Dröge2014-07-171-1/+1
| | | | | | | GetDestinationOutputDeviceIDs Otherwise it does not and just fails. It needs to know the size of the array to not write too much to it.
* openslessink: Silence some error debug output to log outputSebastian Dröge2014-07-171-3/+19
| | | | | These are not really errors, just unsupported features we don't necessarily need.
* openslessrc: Classification of the element factory should be Source/ not Src/Sebastian Dröge2014-06-231-1/+1
| | | | https://bugzilla.gnome.org/show_bug.cgi?id=727811
* opensles: Work around race condition in Android < 4.2 that leads to ↵Sebastian Dröge2014-05-161-0/+32
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | deadlocks on shutdown We need to sleep a bit before destroying the player object because of a bug in Android in versions < 4.2. OpenSLES is using AudioTrack for rendering the sound. AudioTrack has a thread that pulls raw audio from the buffer queue and then passes it forward to AudioFlinger (AudioTrack::processAudioBuffer()). This thread is calling various callbacks on events, e.g. when an underrun happens or to request data. OpenSLES sets this callback on AudioTrack (audioTrack_callBack_pullFromBuffQueue() from android_AudioPlayer.cpp). Among other things this is taking a lock on the player interface. Now if we destroy the player interface object, it will first of all take the player interface lock (IObject_Destroy()). Then it destroys the audio player instance (android_audioPlayer_destroy()) which then calls stop() on the AudioTrack and deletes it. Now the destructor of AudioTrack will wait until the rendering thread (AudioTrack::processAudioBuffer()) has finished. If all this happens with bad timing it can happen that the rendering thread is currently e.g. handling underrun but did not lock the player interface object yet. Then destroying happens and takes the lock and waits for the thread to finish. Then the thread tries to take the lock and waits forever. We wait a bit before destroying the player object to make sure that the rendering thread finished whatever it was doing, and then stops (note: we called gst_opensles_ringbuffer_stop() before this already).
* opensles: Include string.h for memcpy()Sebastian Dröge2013-03-211-0/+2
|
* opensles: Only include <gst/audio/audio.h>Sebastian Dröge2013-03-033-3/+3
|
* Fix FSF addressTim-Philipp Müller2012-11-048-16/+16
| | | | https://bugzilla.gnome.org/show_bug.cgi?id=687520
* opensles: Fix compilation with debugging enabledSebastian Dröge2012-11-021-1/+1
|
* opensles: Remove unused variableSebastian Dröge2012-11-011-4/+0
|
* opensles: Make sure to only ever create a single engine objectSebastian Dröge2012-11-014-25/+97
| | | | | | | | The OpenSL ES spec defines: An implementation shall enable creation of at least one such object, but attempting to create more instances (either by a single application or by several different applications) may fail.
* opensles: Port to 1.0Sebastian Dröge2012-10-258-167/+130
|
* opensles: Integrate into build systemSebastian Dröge2012-10-181-3/+0
|
* openslessink: Return 0 delay if the player object is in PAUSED stateJosep Torra2012-10-181-6/+9
|
* opensles: fixes noise on seekeingJosep Torra2012-10-182-2/+16
|
* opensles: chain up on _clear_allJosep Torra2012-10-181-0/+2
|
* opensles: implement the ringbuffer clear_all vmethod tooJosep Torra2012-10-182-2/+20
|
* opensles: initial attempt to reduce the src latencyJosep Torra2012-10-182-16/+12
|
* opensles: sprinkle comments and cosmetic fixesJosep Torra2012-10-184-43/+112
|
* opensles: check for device outputs in the mixerJosep Torra2012-10-181-0/+20
|
* opensles: drop 48kHz sample rateJosep Torra2012-10-181-1/+1
| | | | | | | | | | OpenSL ES implementation in Android is just a 'facade' API on top of AudioFlinger which will downsample 48kHz into 44.1kHz before delivering the audio to the underlaying hardware. We found that it suffer some sort of underrun when the downsample enters in action so relay on our good resampler to take care of that and fix the clicks issue. And get an extra bonus of a lower latency.
* opensles: change the defaults to use 20 ms ringbuffer segmentsJosep Torra2012-10-181-0/+2
| | | | | In my nexus7 seems that the internal min buffer size is 20 ms so make our segments match.
* opensles: ensure that we register the callback only in STOPPEDJosep Torra2012-10-182-12/+23
| | | | | Fixes the error registering the callback on the PLAYING -> PAUSE -> PLAYING state change sequence.
* opensles: cap queue sizeJosep Torra2012-10-181-3/+4
| | | | | Just in case we want to tweak the sink behaviour with buffer-time and latency-time properties cap the queue size to something reasonable.
* opensles: sink to provide the audioclock by defaultJosep Torra2012-10-181-1/+1
|
* opensles: only drain half ringbuffer on startJosep Torra2012-10-181-3/+3
| | | | | At start drain half ringbuffer into the OpenSL so the writting/reading pointers will start at half ringbuffer distance.
* opensles: monitor some player eventsJosep Torra2012-10-181-2/+46
|
* opensles: rework around the _delay functionJosep Torra2012-10-182-9/+10
|
* opensles: implement _delay functionJosep Torra2012-10-182-15/+23
|