Age | Commit message (Collapse) | Author |
|
|
|
xine-lib jack audio output plugin still uses deprecated jack_client_new()
function. This function has been superseded by jack_client_open(). New API
has an advantage that jackd is allowed to alter name of the client in case
of ambiguity.
|
|
Using bitmeter, I found that xine's jack output suffers from the problem
mentioned at the bottom of bitmeter's home page.
"Although JACK itself works entirely with IEEE floating point values the
conversion to and from analog audio uses integers, as do popular audio
storage technologies like DAT and Red Book CDs. For correct operation JACK
software which uses such integers should use the same conversion ratios as
JACK itself. e.g. 16-bit samples should be divided by exactly 32768.
A common mistake is to choose the value 32767 instead. You can't hear this,
or see it with ordinary meters, but the bitmeter shows a clear signature for
audio processed in this way. The 8th bit of the mantissa (counting the
rightmost as the 0th) is orange, indicating that an unusually high
percentage of samples have this bit set."
(from http://users.ecs.soton.ac.uk/njl98r/code/audio/bitmeter/
via Google cache)
|
|
At the moment playing multichannel audio via the sndio backend results in
garbled sound. This disables the multichannel audio support until I have
more time to look into a better and more appropriate fix.
|
|
|
|
|
|
This requires that many other files include config.h themselves.
Also convert <config.h> to "config.h".
|
|
|
|
Update for build with newer mingw compilation tools.
|
|
It was not possible to compile some parts of XINE-LIB with NLS enabled. It's
also a good idea to explicitely enable --enable-stdcall-fixup for solving a
huge amount of warnings. Attached patch fixes these problems.
|
|
|
|
The playback pointer did occasionally overrun the write pointer, which
results in audible gaps in playback. To solve this, the slotted ringbuffer
was replaced by a simple ringbuffer and the service threads now checks
periodically if there is still data in the buffer instead of checking at the
slots borders.
--HG--
extra : transplant_source : %A1%12%60%B9%E4%AB%E7%7C%D7%D6%BD%7C%C6M%C9%94s%7F%BE%91
|
|
Version 0.9.6 has PA_PROTOCOL_VERSION 10, version 0.9.7 has 11.
This simplifies configure and limits the knowledge about PA versions to the
audio output plug-in.
This time, the patch includes configure.ac, too.
|
|
|
|
Adjust translations for the spacing changes etc. which this introduces.
|
|
When using a variable to store the result of strlen(), make sure its
type is size_t just like the function returns, rather than using a
smaller type like int.
--HG--
extra : transplant_source : %B0%D5%3B%D7%1Dy%0A%7E%7D%7C%023%08%B2%CE%D3t%0B3%D7
|
|
If needed, use calloc() to allocate the area so that it's already
reset by the time it returns.
|
|
Using asprintf() instead of malloc() + sprintf() reduces the lines of
code in xine-lib (moving the allocation to the C library or asprintf
replacement), makes it safer to access the string and can also improve
performance whenever the value returned by a function was used as
parameter, as before it had to run the function twice in almost every
case (once for strlen(), once for sprintf()).
|
|
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
|
|
put the volume to zero.
|
|
|
|
The value being converted is already of the correct type.
|
|
The problem was basically that detection if PA was available happened in
open() instead of open_plugin().
|
|
It's basically a rework of the PulseAudio driver, fixing all the
inherent races (and thus stability issues), adding proper surround
sound support, support for proper muting and pause/resume. It also
gets rid of all usleep() loops to make sure we don't wakeup more often
than we need to. Also does a couple of other minor cleanups.
This also increases the autoprobe priority to 12, above ALSA, to make
sure that the Pulse plugin is preferred over ALSA if both are
available. This is because we want to make sure that Xine-on-PA is
preferred over Xine-on-ALSA-on-PA.
|
|
(Fall back on SNDCTL_DSP_GETOPTR.)
|
|
|
|
|
|
there.
Instead of using a thread to watch for completion, use mutexes where needed.
Don't wait for operation completion for volume changes, they can happen asynchronously too.
|
|
|
|
not played yet.
When closing the pcm device make sure that everything that was written to the
device actually gets played. This was the race we were seeing with Ogg Vorbis
and wav playback where a delayed driver->close would fix playback. Notice that
blocking mode needs to be used for snd_pcm_drain, otherwise the call would be
a noop.
|
|
--HG--
extra : transplant_source : %E0%D0%C5%8B%BEU%DD%24%5D7%1F%ADV%AD%EB%23%CBU%80%EB
|
|
For contributed code, leave whatever the version we last synced for is using
to make simpler future syncs.
|
|
Solaris definitions.
|
|
Some plugins may have been missed due to them not being built here.
|
|
|
|
close the driver on a return value <0
|
|
|
|
|
|
|
|
|
|
Checked snd_pcm_delay return code, and don't trust negative values.
|
|
|
|
available on NetBSD only.
With this, it's not needed to check for OpenBSD too.
Thanks to Pascal S. de Kloe for pointing at it.
|
|
automake-related files.
|
|
--HG--
rename : .cvsignore => .hgignore
rename : doc/.cvsignore => doc/.hgignore
rename : doc/faq/.cvsignore => doc/faq/.hgignore
rename : doc/hackersguide/.cvsignore => doc/hackersguide/.hgignore
rename : doc/man/.cvsignore => doc/man/.hgignore
rename : doc/man/en/.cvsignore => doc/man/en/.hgignore
rename : include/.cvsignore => include/.hgignore
rename : intl/.cvsignore => intl/.hgignore
rename : lib/.cvsignore => lib/.hgignore
rename : m4/.cvsignore => m4/.hgignore
rename : misc/.cvsignore => misc/.hgignore
rename : misc/fonts/.cvsignore => misc/fonts/.hgignore
rename : po/.cvsignore => po/.hgignore
rename : src/.cvsignore => src/.hgignore
rename : src/audio_out/.cvsignore => src/audio_out/.hgignore
rename : src/combined/.cvsignore => src/combined/.hgignore
rename : src/demuxers/.cvsignore => src/demuxers/.hgignore
rename : src/dxr3/.cvsignore => src/dxr3/.hgignore
rename : src/input/.cvsignore => src/input/.hgignore
rename : src/input/dvb/.cvsignore => src/input/dvb/.hgignore
rename : src/input/libdvdnav/.cvsignore => src/input/libdvdnav/.hgignore
rename : src/input/libreal/.cvsignore => src/input/libreal/.hgignore
rename : src/input/librtsp/.cvsignore => src/input/librtsp/.hgignore
rename : src/input/vcd/.cvsignore => src/input/vcd/.hgignore
rename : src/input/vcd/libcdio/.cvsignore => src/input/vcd/libcdio/.hgignore
rename : src/input/vcd/libcdio/MSWindows/.cvsignore => src/input/vcd/libcdio/MSWindows/.hgignore
rename : src/input/vcd/libcdio/cdio/.cvsignore => src/input/vcd/libcdio/cdio/.hgignore
rename : src/input/vcd/libcdio/image/.cvsignore => src/input/vcd/libcdio/image/.hgignore
rename : src/input/vcd/libvcd/.cvsignore => src/input/vcd/libvcd/.hgignore
rename : src/input/vcd/libvcd/libvcd/.cvsignore => src/input/vcd/libvcd/libvcd/.hgignore
rename : src/liba52/.cvsignore => src/liba52/.hgignore
rename : src/libdts/.cvsignore => src/libdts/.hgignore
rename : src/libfaad/.cvsignore => src/libfaad/.hgignore
rename : src/libfaad/codebook/.cvsignore => src/libfaad/codebook/.hgignore
rename : src/libffmpeg/.cvsignore => src/libffmpeg/.hgignore
rename : src/libffmpeg/libavcodec/.cvsignore => src/libffmpeg/libavcodec/.hgignore
rename : src/libffmpeg/libavcodec/alpha/.cvsignore => src/libffmpeg/libavcodec/alpha/.hgignore
rename : src/libffmpeg/libavcodec/armv4l/.cvsignore => src/libffmpeg/libavcodec/armv4l/.hgignore
rename : src/libffmpeg/libavcodec/i386/.cvsignore => src/libffmpeg/libavcodec/i386/.hgignore
rename : src/libffmpeg/libavcodec/libpostproc/.cvsignore => src/libffmpeg/libavcodec/libpostproc/.hgignore
rename : src/libffmpeg/libavcodec/mlib/.cvsignore => src/libffmpeg/libavcodec/mlib/.hgignore
rename : src/libffmpeg/libavcodec/ppc/.cvsignore => src/libffmpeg/libavcodec/ppc/.hgignore
rename : src/libffmpeg/libavcodec/sparc/.cvsignore => src/libffmpeg/libavcodec/sparc/.hgignore
rename : src/libffmpeg/libavutil/.cvsignore => src/libffmpeg/libavutil/.hgignore
rename : src/libflac/.cvsignore => src/libflac/.hgignore
rename : src/liblpcm/.cvsignore => src/liblpcm/.hgignore
rename : src/libmad/.cvsignore => src/libmad/.hgignore
rename : src/libmpeg2/.cvsignore => src/libmpeg2/.hgignore
rename : src/libmpeg2new/.cvsignore => src/libmpeg2new/.hgignore
rename : src/libmpeg2new/include/.cvsignore => src/libmpeg2new/include/.hgignore
rename : src/libmpeg2new/libmpeg2/.cvsignore => src/libmpeg2new/libmpeg2/.hgignore
rename : src/libmusepack/.cvsignore => src/libmusepack/.hgignore
rename : src/libmusepack/musepack/.cvsignore => src/libmusepack/musepack/.hgignore
rename : src/libreal/.cvsignore => src/libreal/.hgignore
rename : src/libspeex/.cvsignore => src/libspeex/.hgignore
rename : src/libspucc/.cvsignore => src/libspucc/.hgignore
rename : src/libspucmml/.cvsignore => src/libspucmml/.hgignore
rename : src/libspudec/.cvsignore => src/libspudec/.hgignore
rename : src/libspudvb/.cvsignore => src/libspudvb/.hgignore
rename : src/libsputext/.cvsignore => src/libsputext/.hgignore
rename : src/libtheora/.cvsignore => src/libtheora/.hgignore
rename : src/libvorbis/.cvsignore => src/libvorbis/.hgignore
rename : src/libw32dll/.cvsignore => src/libw32dll/.hgignore
rename : src/libw32dll/DirectShow/.cvsignore => src/libw32dll/DirectShow/.hgignore
rename : src/libw32dll/dmo/.cvsignore => src/libw32dll/dmo/.hgignore
rename : src/libw32dll/qtx/.cvsignore => src/libw32dll/qtx/.hgignore
rename : src/libw32dll/qtx/qtxsdk/.cvsignore => src/libw32dll/qtx/qtxsdk/.hgignore
rename : src/libw32dll/wine/.cvsignore => src/libw32dll/wine/.hgignore
rename : src/libxineadec/.cvsignore => src/libxineadec/.hgignore
rename : src/libxineadec/gsm610/.cvsignore => src/libxineadec/gsm610/.hgignore
rename : src/libxineadec/nosefart/.cvsignore => src/libxineadec/nosefart/.hgignore
rename : src/libxinevdec/.cvsignore => src/libxinevdec/.hgignore
rename : src/post/.cvsignore => src/post/.hgignore
rename : src/post/audio/.cvsignore => src/post/audio/.hgignore
rename : src/post/deinterlace/.cvsignore => src/post/deinterlace/.hgignore
rename : src/post/deinterlace/plugins/.cvsignore => src/post/deinterlace/plugins/.hgignore
rename : src/post/goom/.cvsignore => src/post/goom/.hgignore
rename : src/post/mosaico/.cvsignore => src/post/mosaico/.hgignore
rename : src/post/planar/.cvsignore => src/post/planar/.hgignore
rename : src/post/visualizations/.cvsignore => src/post/visualizations/.hgignore
rename : src/video_out/.cvsignore => src/video_out/.hgignore
rename : src/video_out/libdha/.cvsignore => src/video_out/libdha/.hgignore
rename : src/video_out/libdha/bin/.cvsignore => src/video_out/libdha/bin/.hgignore
rename : src/video_out/libdha/kernelhelper/.cvsignore => src/video_out/libdha/kernelhelper/.hgignore
rename : src/video_out/libdha/oth/.cvsignore => src/video_out/libdha/oth/.hgignore
rename : src/video_out/libdha/sysdep/.cvsignore => src/video_out/libdha/sysdep/.hgignore
rename : src/video_out/macosx/.cvsignore => src/video_out/macosx/.hgignore
rename : src/video_out/vidix/.cvsignore => src/video_out/vidix/.hgignore
rename : src/video_out/vidix/drivers/.cvsignore => src/video_out/vidix/drivers/.hgignore
rename : src/xine-engine/.cvsignore => src/xine-engine/.hgignore
rename : src/xine-utils/.cvsignore => src/xine-utils/.hgignore
rename : win32/.cvsignore => win32/.hgignore
rename : win32/include/.cvsignore => win32/include/.hgignore
|
|
Unfortunately if the server dies during playback xine will be too messed up to recover.
This is the same issue as unplugged USB devices, it requires a proper generic handling of these cases.
CVS patchset: 8779
CVS date: 2007/04/01 00:32:29
|
|
CVS patchset: 8778
CVS date: 2007/03/31 22:06:54
|
|
CVS patchset: 8777
CVS date: 2007/03/31 21:22:58
|
|
getter methods, returning the correct value in case the property is not implemented.
CVS patchset: 8776
CVS date: 2007/03/31 21:16:22
|
|
xine's plugin wasn't, this caused race conditions similar to the old ones with ALSA output.
Also instead of copying two pointers (three with the mutex) from the class to the output instance, just copy a pointer to the class.
CVS patchset: 8775
CVS date: 2007/03/31 20:58:51
|