diff options
author | Darren Salt <linux@youmustbejoking.demon.co.uk> | 2007-12-03 23:52:57 +0000 |
---|---|---|
committer | Darren Salt <linux@youmustbejoking.demon.co.uk> | 2007-12-03 23:52:57 +0000 |
commit | 048e921c00ddd8acbb003d24692355638ef739d4 (patch) | |
tree | 8d3700e6b6537b48327d8e83cb4178a56f0bd8e8 | |
parent | b16de9c5e59ce99cba75f51cde8f2c441d36e55b (diff) | |
parent | 0aa00fb217357cee4ef1008677e1247bb24eb42c (diff) | |
download | xine-lib-048e921c00ddd8acbb003d24692355638ef739d4.tar.gz xine-lib-048e921c00ddd8acbb003d24692355638ef739d4.tar.bz2 |
Merge from 1.1.
--HG--
rename : src/demuxers/demux_ogg.c => src/combined/xine_ogg_demuxer.c
-rw-r--r-- | ChangeLog | 8 | ||||
-rw-r--r-- | debian/changelog | 8 | ||||
-rw-r--r-- | debian/control | 5 | ||||
-rw-r--r-- | doc/man/en/xine.5 | 7 | ||||
-rw-r--r-- | src/audio_out/audio_alsa_out.c | 6 | ||||
-rw-r--r-- | src/combined/xine_ogg_demuxer.c | 2 | ||||
-rw-r--r-- | src/xine-engine/audio_out.c | 47 |
7 files changed, 55 insertions, 28 deletions
@@ -62,6 +62,14 @@ xine-lib (1.1.9) (unreleased) This requires conversion to UTF-8 of entities with codes >= 128. * Fixed ATSC support. [Bug 1749508] * Fixed a possible DVB plugin crash when switching channels. + * Fixed ogg demuxer to not discard data at the end of the stream. + * Fixed deadlock on ao_close while paused. + * Nicer wakeup behaviour, using select instead of nanosleep (800 -> 100 + wakeups/s). + * Fixed ALSA close function to not discard all data that had been written + but not played yet. + * Fixed a race condition between ao_loop and ao_close to not lose the last + buffer. xine-lib (1.1.8) * Send a channel-changed event to the frontend when receiving the SYNC diff --git a/debian/changelog b/debian/changelog index a12d9233a..63a658013 100644 --- a/debian/changelog +++ b/debian/changelog @@ -5,11 +5,13 @@ xine-lib-1.2 (1.2.0~hg-0) experimental; urgency=low -- Darren Salt <linux@youmustbejoking.demon.co.uk> Tue, 17 Apr 2007 16:50:37 +0100 -xine-lib (1.1.6~hg-0) unstable; urgency=low +xine-lib (1.1.9~hg-0) unstable; urgency=low - * Hg snapshot. + [ Reinhard Tartler ] + * remove gs from build-dependencies + * change the maintainer field to xine-devel@lists.sourceforge.net. - -- Darren Salt <linux@youmustbejoking.demon.co.uk> Mon, 16 Apr 2007 22:00:07 +0100 + -- Reinhard Tartler <siretart@tauware.de> Sun, 25 Nov 2007 23:45:52 +0100 xine-lib (1.1.5~cvs-0) unstable; urgency=low diff --git a/debian/control b/debian/control index 9486b110b..4bf8b3823 100644 --- a/debian/control +++ b/debian/control @@ -1,8 +1,7 @@ Source: xine-lib-1.2 Section: libs Priority: optional -Maintainer: Darren Salt <linux@youmustbejoking.demon.co.uk> -Uploaders: Reinhard Tartler <siretart@tauware.de> +Maintainer: xine Developers <xine-devel@lists.sourceforge.net> Build-Depends: debhelper (>= 5.0.1), binutils (>= 2.12.90.0.9), pkg-config, automake1.9, autoconf, libtool, libxcb-xinerama0-dev | libxv-dev (<< 1:1.0.3), libxcb-xv0-dev | libxv-dev (<< 1:1.0.3), @@ -21,7 +20,7 @@ Build-Depends: debhelper (>= 5.0.1), binutils (>= 2.12.90.0.9), pkg-config, libflac-dev, libpulse-dev, libsdl1.2-dev, libwavpack-dev, libsmbclient-dev, libspeex-dev, libmng-dev, libmad0-dev, libmpcdec-dev, libcdio-dev (>= 0.76-1), libvcdinfo-dev, - w3m, gs, xmlto, librsvg2-bin + w3m, xmlto, librsvg2-bin Build-Conflicts: libdvdnav-dev Standards-Version: 3.7.2 diff --git a/doc/man/en/xine.5 b/doc/man/en/xine.5 index 3a67589dd..297aff48e 100644 --- a/doc/man/en/xine.5 +++ b/doc/man/en/xine.5 @@ -79,15 +79,14 @@ to read from. Valid MRLs may be plain file names or one of the following .BR rtsp://<host>... " (requires Real codecs)" .br .LP +Additional input plugins will provide additional MRL types. The ones listed +above are available with stock libxine. + \fBNOTE:\fP where a file name is required, the \fIfull path must be provided\fP - from a shell, you can use \fB"$PWD/file"\fP or \fB"$(pwd)/file"\fP or \fB"\`pwd\`/file"\fP if the file is in the current directory. (Which one depends on your shell; all three work in bash.) -Several MRLs may be specified in order to play a number of consecutive -streams. Additional input plugins will provide additional MRL types. The ones -listed above are available with stock libxine... - As of xine-lib 1.1.3, the DVD title number may be 0 (select navigation) and the chapter number may be 0 (full title). diff --git a/src/audio_out/audio_alsa_out.c b/src/audio_out/audio_alsa_out.c index e92bfbb3a..4ce2b1be3 100644 --- a/src/audio_out/audio_alsa_out.c +++ b/src/audio_out/audio_alsa_out.c @@ -856,7 +856,11 @@ static int ao_alsa_write(ao_driver_t *this_gen, int16_t *data, uint32_t count) { static void ao_alsa_close(ao_driver_t *this_gen) { alsa_driver_t *this = (alsa_driver_t *) this_gen; - if(this->audio_fd) snd_pcm_close(this->audio_fd); + if(this->audio_fd) { + snd_pcm_nonblock(this->audio_fd, 0); + snd_pcm_drain(this->audio_fd); + snd_pcm_close(this->audio_fd); + } this->audio_fd = NULL; this->has_pause_resume = 0; /* This is set at open time */ } diff --git a/src/combined/xine_ogg_demuxer.c b/src/combined/xine_ogg_demuxer.c index f8a4437a4..2a69c4da2 100644 --- a/src/combined/xine_ogg_demuxer.c +++ b/src/combined/xine_ogg_demuxer.c @@ -242,7 +242,7 @@ static int read_ogg_packet (demux_ogg_t *this) { bytes = this->input->read(this->input, buffer, CHUNKSIZE); if (bytes == 0) { if (total == 0) { - printf("read_ogg_packet read nothing\n"); + lprintf("read_ogg_packet read nothing\n"); return 0; } break; diff --git a/src/xine-engine/audio_out.c b/src/xine-engine/audio_out.c index 76d678aa2..aac1739aa 100644 --- a/src/xine-engine/audio_out.c +++ b/src/xine-engine/audio_out.c @@ -342,9 +342,7 @@ static void fifo_append (audio_fifo_t *fifo, pthread_mutex_unlock (&fifo->mutex); } -static audio_buffer_t *fifo_remove_int (audio_fifo_t *fifo, int blocking) { - audio_buffer_t *buf; - +static audio_buffer_t *fifo_peek_int (audio_fifo_t *fifo, int blocking) { while (!fifo->first) { pthread_cond_signal (&fifo->empty); if (blocking) @@ -359,25 +357,38 @@ static audio_buffer_t *fifo_remove_int (audio_fifo_t *fifo, int blocking) { return NULL; } } + return fifo->first; +} - buf = fifo->first; - - if (buf) { - fifo->first = buf->next; +static audio_buffer_t *fifo_remove_int (audio_fifo_t *fifo, int blocking) { + audio_buffer_t *buf = fifo_peek_int(fifo, blocking); + if (!buf) + return NULL; - if (!fifo->first) { + fifo->first = buf->next; - fifo->last = NULL; - fifo->num_buffers = 0; - pthread_cond_signal (&fifo->empty); + if (!fifo->first) { - } else - fifo->num_buffers--; + fifo->last = NULL; + fifo->num_buffers = 0; + pthread_cond_signal (&fifo->empty); - } + } else + fifo->num_buffers--; buf->next = NULL; - + + return buf; +} + +static audio_buffer_t *fifo_peek (audio_fifo_t *fifo) { + + audio_buffer_t *buf; + + pthread_mutex_lock (&fifo->mutex); + buf = fifo_peek_int(fifo, 1); + pthread_mutex_unlock (&fifo->mutex); + return buf; } @@ -1000,7 +1011,7 @@ static void *ao_loop (void *this_gen) { if (!in_buf) { lprintf ("loop: get buf from fifo\n"); - in_buf = fifo_remove (this->out_fifo); + in_buf = fifo_peek (this->out_fifo); bufs_since_sync++; lprintf ("got a buffer\n"); } @@ -1013,6 +1024,7 @@ static void *ao_loop (void *this_gen) { } if (this->discard_buffers) { + fifo_remove (this->out_fifo); if (in_buf->stream) _x_refcounter_dec(in_buf->stream->refcounter); fifo_append (this->free_fifo, in_buf); @@ -1039,6 +1051,7 @@ static void *ao_loop (void *this_gen) { cur_time = this->clock->get_current_time (this->clock); if (in_buf->vpts < cur_time ) { lprintf ("loop: next fifo\n"); + fifo_remove (this->out_fifo); if (in_buf->stream) _x_refcounter_dec(in_buf->stream->refcounter); fifo_append (this->free_fifo, in_buf); @@ -1163,6 +1176,7 @@ static void *ao_loop (void *this_gen) { /* drop package */ lprintf ("loop: drop package, next fifo\n"); + fifo_remove (this->out_fifo); if (in_buf->stream) _x_refcounter_dec(in_buf->stream->refcounter); fifo_append (this->free_fifo, in_buf); @@ -1229,6 +1243,7 @@ static void *ao_loop (void *this_gen) { } else { result = 0; } + fifo_remove (this->out_fifo); if( result < 0 ) { /* device unplugged. */ |