summaryrefslogtreecommitdiff
path: root/src/xine-engine/audio_out.c
AgeCommit message (Collapse)Author
2012-06-08Merge from 1.1Petri Hintukainen
2012-06-08Fix utilization of _POSIX_THREAD_PRIORITY_SCHEDULING macroBrad Smith
A POSIX compliant OS can have a setting of (-1) instead of say 200112L to indicate that the OS does not implement the feature. The code as it is would still attempt to utilize the functions if (-1) were being set and fail to build.
2012-03-28add access to audio engine gapLACARRIERE Jerome
2011-01-22Provide _x_query_buffers() to allow analyzing buffer usage by pluginsReinhard Nißl
This function is similar to _x_query_buffer_usage() but retrieves also the total and available (= free) number of buffers besides the number of buffers ready for processing. For example if one wants to create a buffering algorithm based on the number of frames ready, it's not that easy to determine the maximum number of ready frames possible. In case one configures engine.buffers.video_num_frames:50 it may happen, that only 30 frames can actually be provided by the video out driver. Next a video codec like H.264 may hold several frames in its display picture buffer so that you may end up with only 13 ready frames at maximum. At the same time, the number of available (= free) frames will be 0 (or almost zero in case of vo). So it may be even easier to base the buffer algorithm on the number of free buffers. The reported numbers may also reveal that too few input buffers have been provided to compensate a large a/v offset at input stage. --HG-- extra : rebase_source : 255cb186891fbab5199a99031cf1b1e93ac19923
2010-07-25Merge from 1.1; resync translation files.Darren Salt
--HG-- rename : po/libxine1.pot => po/libxine2.pot rename : src/libmad/xine_mad_decoder.c => src/audio_dec/xine_mad_decoder.c rename : src/libspucmml/xine_cmml_decoder.c => src/spu_dec/cmml_decoder.c
2010-07-21Add _POSIX_THREAD_PRIORITY_SCHEDULING #ifdefsMatthias Drochner
This is optional, and some systems don't support it. POSIX defines the _POSIX_THREAD_PRIORITY_SCHEDULING to tell that support is present.
2010-02-23Merge from 1.1.Darren Salt
--HG-- rename : src/xine-engine/buffer.h => include/xine/buffer.h rename : src/libxineadec/xine_lpcm_decoder.c => src/audio_dec/xine_lpcm_decoder.c
2009-09-15Add locking for when adjusting audio frame discarding.Roger Scott
2010-02-23Prevent discard_{frames,buffers} from going negative.Darren Salt
Based on patches from Roger Scott <ras351@hotmail.com>.
2009-12-01Fork failure messages shouldn't be debug-only.Darren Salt
2009-11-30Trim trailing space & reduce space+tab.Darren Salt
2009-12-12Merge from 1.1.Darren Salt
--HG-- rename : include/xine.h.in => include/xine.h rename : src/combined/decoder_flac.c => src/combined/flac_decoder.c rename : src/libspuhdmv/xine_hdmv_decoder.c => src/spu_dec/spuhdmv_decoder.c
2009-11-30Trim trailing space & reduce space+tab.Darren Salt
2009-03-16Merge from 1.1.Darren Salt
--HG-- rename : src/libmpeg2new/Makefile.am => src/video_dec/libmpeg2new/Makefile.am rename : src/libmpeg2new/libmpeg2/Makefile.am => src/video_dec/libmpeg2new/libmpeg2/Makefile.am
2009-03-15Fix thread starvation for xine_get_param() on multi-core systems.Reinhard Nißl
ao_loop() called sched_yield() to give other threads a chance to acquire driver->lock. But on multi-core systems, it takes too long to wake up the acquiring thread so that ao_loop() takes driver->lock again before the other threads had a chance to acquire it. Therefore a cond var is introduced which ao_loop() can wait for. The cond var will be signalled when one of the other threads has acquired driver->lock. This prevents starvation.
2009-02-17Merge from 1.1.Darren Salt
--HG-- rename : doc/faq/faq.sgml => doc/faq/faq.docbook rename : doc/hackersguide/intro.sgml => doc/hackersguide/intro.docbook
2009-02-16Protect audio loop so it cannot write to a paused device (fixMiguel Freitas
pause/resume freeze with pulseaudio).
2009-02-10Merge from 1.1.Darren Salt
--HG-- rename : doc/faq/faq.sgml => doc/faq/faq.docbook rename : src/xine-engine/buffer.h => include/xine/buffer.h rename : src/xine-engine/xine_internal.h => include/xine/xine_internal.h
2009-02-09Fix race conditions in gapless_switch (ref. kde bug #180339)Miguel Freitas
2008-05-29Merge from 1.1.Darren Salt
--HG-- rename : src/xine-utils/array.h => include/xine/array.h rename : src/xine-utils/attributes.h => include/xine/attributes.h rename : src/xine-engine/audio_out.h => include/xine/audio_out.h rename : src/xine-engine/broadcaster.h => include/xine/broadcaster.h rename : src/xine-engine/buffer.h => include/xine/buffer.h rename : src/xine-engine/configfile.h => include/xine/configfile.h rename : src/xine-utils/list.h => include/xine/list.h rename : src/xine-engine/metronom.h => include/xine/metronom.h rename : src/xine-engine/osd.h => include/xine/osd.h rename : src/xine-utils/pool.h => include/xine/pool.h rename : src/xine-engine/refcounter.h => include/xine/refcounter.h rename : src/xine-utils/ring_buffer.h => include/xine/ring_buffer.h rename : src/xine-engine/scratch.h => include/xine/scratch.h rename : src/xine-utils/sorted_array.h => include/xine/sorted_array.h rename : src/xine-engine/video_out.h => include/xine/video_out.h rename : src/xine-engine/video_overlay.h => include/xine/video_overlay.h rename : src/xine-engine/xine_internal.h => include/xine/xine_internal.h rename : src/xine-utils/xineutils.h => include/xine/xineutils.h rename : src/libspucc/cc_decoder.c => src/spu_dec/cc_decoder.c
2008-05-23Mark initialisation functions with malloc attribute.Diego 'Flameeyes' Pettenò
All the initialisation functions returning a new object instance that was allocated through malloc() or calloc() can get the malloc attribute so that the compiler can optimise their call.
2008-05-23Merge from 1.1. VDR needs to be updated.Diego 'Flameeyes' Pettenò
--HG-- rename : src/liba52/parse.c => contrib/a52dec/parse.c rename : include/xine.h.in => include/xine.h rename : src/xine-engine/alphablend.h => include/xine/alphablend.h rename : src/xine-utils/attributes.h => include/xine/attributes.h rename : src/xine-engine/buffer.h => include/xine/buffer.h rename : src/input/input_plugin.h => include/xine/input_plugin.h rename : src/xine-utils/xineutils.h => include/xine/xineutils.h rename : src/libxineadec/fooaudio.c => src/audio_dec/fooaudio.c rename : src/libxineadec/gsm610.c => src/audio_dec/gsm610.c rename : src/liba52/xine_a52_decoder.c => src/audio_dec/xine_a52_decoder.c rename : src/libdts/xine_dts_decoder.c => src/audio_dec/xine_dts_decoder.c rename : src/libfaad/xine_faad_decoder.c => src/audio_dec/xine_faad_decoder.c rename : src/libxineadec/xine_lpcm_decoder.c => src/audio_dec/xine_lpcm_decoder.c rename : src/libmad/xine_mad_decoder.c => src/audio_dec/xine_mad_decoder.c rename : src/libmusepack/xine_musepack_decoder.c => src/audio_dec/xine_musepack_decoder.c rename : src/combined/decoder_flac.c => src/combined/flac_decoder.c rename : src/combined/demux_flac.c => src/combined/flac_demuxer.c rename : src/libxineadec/nsf.c => src/combined/nsf_decoder.c rename : src/demuxers/demux_nsf.c => src/combined/nsf_demuxer.c rename : src/combined/combined_wavpack.h => src/combined/wavpack_combined.h rename : src/combined/decoder_wavpack.c => src/combined/wavpack_decoder.c rename : src/combined/demux_wavpack.c => src/combined/wavpack_demuxer.c rename : src/demuxers/demux_ogg.c => src/combined/xine_ogg_demuxer.c rename : src/libxineadec/xine_speex_decoder.c => src/combined/xine_speex_decoder.c rename : src/libxinevdec/xine_theora_decoder.c => src/combined/xine_theora_decoder.c rename : src/libxineadec/xine_vorbis_decoder.c => src/combined/xine_vorbis_decoder.c rename : src/libspucc/cc_decoder.c => src/spu_dec/cc_decoder.c rename : src/libspucmml/xine_cmml_decoder.c => src/spu_dec/cmml_decoder.c rename : src/libspudec/xine_spu_decoder.c => src/spu_dec/spu_decoder.c rename : src/libspudec/spu.c => src/spu_dec/spudec.c rename : src/libspudvb/xine_spudvb_decoder.c => src/spu_dec/spudvb_decoder.c rename : src/libsputext/xine_sputext_decoder.c => src/spu_dec/sputext_decoder.c rename : src/libsputext/demux_sputext.c => src/spu_dec/sputext_demuxer.c rename : src/libspucc/xine_cc_decoder.c => src/spu_dec/xine_cc_decoder.c rename : src/libxinevdec/bitplane.c => src/video_dec/bitplane.c rename : src/libxinevdec/foovideo.c => src/video_dec/foovideo.c rename : src/libxinevdec/gdkpixbuf.c => src/video_dec/gdkpixbuf.c rename : src/libxinevdec/image.c => src/video_dec/image.c rename : src/libmpeg2/xine_mpeg2_decoder.c => src/video_dec/libmpeg2/xine_mpeg2_decoder.c rename : src/libxinevdec/rgb.c => src/video_dec/rgb.c rename : src/libxinevdec/yuv.c => src/video_dec/yuv.c
2008-05-07xine_xmalloc() deprecation: replace its use with static and non-zero size.Diego 'Flameeyes' Pettenò
The xine_xmalloc() function is going to be deprecated, as its behaviour is rarely needed as such, and it's thus misused. With this, almost all uses of xine_xmalloc() with static size (for instance the value returned by sizeof()) or with a size that is guaranteed not to be zero (like strlen()+1) are replaced with calls to either calloc(1, ...) or malloc(). malloc() is used whenever the allocated memory is going to be immediately overwritten, while calloc() is used in every other case, as it sets the whole memory area to zero. --HG-- extra : transplant_source : %8F%98%EC%02%1E%83%F0s%06X%83C%205Y%80%B12%CC%E1
2008-01-27Revert part of commit applied by mistake.Diego 'Flameeyes' Pettenò
2008-01-27Avoid one recursive make by declaring all the installed headers inside ↵Diego 'Flameeyes' Pettenò
include/Makefile.am.
2008-01-25Merge from 1.1.Darren Salt
2008-01-24Only restore the audio buffer discard setting if it was altered.Darren Salt
(Cset 1a0447486a13 broke things differently.)
2008-01-24Don't discard audio samples forever. Fixed streaming playbackThibaut Mattern
2007-12-23Mark more array as constants.Diego 'Flameeyes' Pettenò
2007-12-19Update all the code to the new headers layout.Diego 'Flameeyes' Pettenò
2007-12-03Merge from 1.1.Darren Salt
--HG-- rename : src/demuxers/demux_ogg.c => src/combined/xine_ogg_demuxer.c
2007-12-04fifo_peek_int can return NULL (when non-blocking). make fifo_remove_int ↵Matthias Kretz
handle that case
2007-12-03Fixed a race condition between ao_loop and ao_close to not lose the last buffer.Matthias Kretz
In ao_loop only read the first buffer and remove it from the fifo only when the buffer has been written or is about to be discarded. This fixes the race between ao_loop and ao_close for good. Now fifo_remove_int may signal empty again right after removing the last buffer from the fifo.
2007-12-02Don't signal fifo->empty right after reading the last bufferMatthias Kretz
but only when a read was requested and the fifo is empty. Rationale: ao_close uses fifo_wait_empty to make sure all buffers were written to the driver before it calls close on the driver. But if empty is already signaled when ao_loop just reads the next buffer then ao_close might close the driver before ao_loop has a chance to send the buffer to the driver.
2007-12-02remove redundant checkMatthias Kretz
buf must be != NULL because of the while(!fifo->first) before and the buf->next after
2007-11-25Merge from 1.1.Darren Salt
Some fixups were required for the kfreebsd patch; needs testing. --HG-- rename : src/video_out/libdha/ports.c => contrib/libdha/ports.c rename : src/demuxers/demux_ogg.c => src/combined/xine_ogg_demuxer.c rename : src/libxineadec/xine_vorbis_decoder.c => src/combined/xine_vorbis_decoder.c
2007-11-23Merge.Darren Salt
2007-11-15when the stream is paused fifo_wait_empty will wait forever. In that case weMatthias Kretz
discard all buffers before calling fifo_wait_empty
2007-11-10Delete most of the CVS $Id$/$Log$ lines.Darren Salt
--HG-- extra : transplant_source : %E0%D0%C5%8B%BEU%DD%24%5D7%1F%ADV%AD%EB%23%CBU%80%EB
2007-11-10Merge from 1.1.Darren Salt
--HG-- rename : src/libxineadec/nsf.c => src/combined/nsf_decoder.c rename : src/demuxers/demux_nsf.c => src/combined/nsf_demuxer.c rename : src/combined/combined_wavpack.c => src/combined/wavpack_combined.c rename : src/combined/combined_wavpack.h => src/combined/wavpack_combined.h rename : src/combined/decoder_wavpack.c => src/combined/wavpack_decoder.c rename : src/combined/demux_wavpack.c => src/combined/wavpack_demuxer.c rename : src/demuxers/demux_ogg.c => src/combined/xine_ogg_demuxer.c rename : src/libxineadec/xine_speex_decoder.c => src/combined/xine_speex_decoder.c rename : src/libxinevdec/xine_theora_decoder.c => src/combined/xine_theora_decoder.c rename : src/libxineadec/xine_vorbis_decoder.c => src/combined/xine_vorbis_decoder.c rename : src/liba52/xine_a52_decoder.c => src/libxineadec/xine_a52_decoder.c rename : src/libdts/xine_dts_decoder.c => src/libxineadec/xine_dts_decoder.c rename : src/libfaad/xine_faad_decoder.c => src/libxineadec/xine_faad_decoder.c rename : src/libmad/xine_mad_decoder.c => src/libxineadec/xine_mad_decoder.c rename : src/libmusepack/xine_musepack_decoder.c => src/libxineadec/xine_musepack_decoder.c
2007-11-09Merge FSF address changes from 1.1 branch.Diego 'Flameeyes' Pettenò
--HG-- rename : src/combined/decoder_flac.c => src/combined/flac_decoder.c rename : src/combined/demux_flac.c => src/combined/flac_demuxer.c rename : src/libxineadec/nsf.c => src/combined/nsf_decoder.c rename : src/demuxers/demux_nsf.c => src/combined/nsf_demuxer.c rename : src/combined/combined_wavpack.c => src/combined/wavpack_combined.c rename : src/combined/combined_wavpack.h => src/combined/wavpack_combined.h rename : src/combined/decoder_wavpack.c => src/combined/wavpack_decoder.c rename : src/combined/demux_wavpack.c => src/combined/wavpack_demuxer.c rename : src/demuxers/demux_ogg.c => src/combined/xine_ogg_demuxer.c rename : src/libxineadec/xine_speex_decoder.c => src/combined/xine_speex_decoder.c rename : src/libxinevdec/xine_theora_decoder.c => src/combined/xine_theora_decoder.c rename : src/libxineadec/xine_vorbis_decoder.c => src/combined/xine_vorbis_decoder.c rename : src/liba52/xine_a52_decoder.c => src/libxineadec/xine_a52_decoder.c rename : src/libdts/xine_dts_decoder.c => src/libxineadec/xine_dts_decoder.c rename : src/libfaad/xine_faad_decoder.c => src/libxineadec/xine_faad_decoder.c rename : src/libmusepack/xine_musepack_decoder.c => src/libxineadec/xine_musepack_decoder.c
2007-11-09Update FSF address on non-contributed code and COPYING files.Diego 'Flameeyes' Pettenò
For contributed code, leave whatever the version we last synced for is using to make simpler future syncs.
2007-08-16Merge open()/glibc (debug #define) workaround from 1.1; fix up for 1.2 changes.Darren Salt
This does not touch code in contrib.
2007-08-16Merge all but the open()/glibc workaround from 1.1.Darren Salt
2007-08-15Workaround for recent glibc & -D_FORTIFY_SOURCE=2 (defines open() as a macro).Darren Salt
According to bug 1773769, this breaks foo->open(). The fix (as used in Ville Skyttä's patch, which doesn't cover all cases) is to replace this with (foo->open)(). This patch was generated using sed -i -re 's/(([[:alnum:]_]+(->|\.))+open) ?\(/(\1) (/' `grep '[>.]open \?(' include -rIl` One change (in a comment) is not committed.
2007-08-15Fix an audio resampling problem which was causing regular clicking.Darren Salt
The cause was that the resampling code was using only the samples in the buffer but not really handling the transition between two buffers (which it would handle completely independently). The new code remembers the last sample from the previous buffer and uses it in the resampling. We therefore end up one sample behind and without the clicks.
2007-06-04fallback to none output when the device is unpluggedMatthias Kretz
2007-06-04handle unplugged devices in audio_alsa_out (return -1) and in audio_out ↵Matthias Kretz
close the driver on a return value <0
2007-06-04fallback to none output when the device is unpluggedMatthias Kretz
2007-06-04handle unplugged devices in audio_alsa_out (return -1) and in audio_out ↵Matthias Kretz
close the driver on a return value <0