summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--ChangeLog2
-rw-r--r--configure.ac6
-rw-r--r--src/combined/ffmpeg/ff_video_decoder.c16
-rw-r--r--src/demuxers/demux_flv.c47
-rw-r--r--src/demuxers/demux_ts.c17
-rw-r--r--src/video_out/Makefile.am40
6 files changed, 59 insertions, 69 deletions
diff --git a/ChangeLog b/ChangeLog
index 45219584c..5cbb50e5d 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,4 +1,4 @@
-xine-lib (1.1.1?) 20??-??-??
+xine-lib (1.1.18) 20??-??-??
* Bump the FLAC decoder's priority above ffmpegaudio. This should fix
various problems with FLAC playback.
* Build fix (undefined symbol) for when using older ffmpeg.
diff --git a/configure.ac b/configure.ac
index 10c32d03c..6ca597502 100644
--- a/configure.ac
+++ b/configure.ac
@@ -17,7 +17,7 @@ dnl XINE_SUB += 1; XINE_PATCH = ''; continue with XINE_LT_* values below
dnl
XINE_MAJOR=1
XINE_MINOR=1
-XINE_SUB=17
+XINE_SUB=18
dnl XINE_PATCH should be left empty or set to ".1" or ".2" or something similar
XINE_PATCH=
dnl Release series number (usually $XINE_MAJOR.$XINE_MINOR)
@@ -54,9 +54,9 @@ dnl are platform dependent
dnl * in Linux, the library will be named
dnl libname.so.(XINE_LT_CURRENT - XINE_LT_AGE).XINE_LT_AGE.XINE_LT_REVISION
-XINE_LT_CURRENT=28
+XINE_LT_CURRENT=29
XINE_LT_REVISION=0
-XINE_LT_AGE=27
+XINE_LT_AGE=28
dnl for a release tarball do "rm .cvsversion" before "make dist"
if test -f "${srcdir-.}/.cvsversion"; then
diff --git a/src/combined/ffmpeg/ff_video_decoder.c b/src/combined/ffmpeg/ff_video_decoder.c
index 876ac2217..727508847 100644
--- a/src/combined/ffmpeg/ff_video_decoder.c
+++ b/src/combined/ffmpeg/ff_video_decoder.c
@@ -51,22 +51,6 @@
# include <libpostproc/postprocess.h>
#endif
-/* As of 2010-01-17, libavutil trunk doesn't define a few useful macros.
- * While we may still be able to #define things to cause them to be used,
- * it's safest to assume that they'll go away.
- */
-#ifndef PIX_FMT_RGB32
-# ifdef WORDS_BIGENDIAN
-# define PIX_FMT_RGB32 PIX_FMT_ARGB
-# define PIX_FMT_RGB555 PIX_FMT_RGB555BE
-# define PIX_FMT_RGB565 PIX_FMT_RGB565BE
-# else
-# define PIX_FMT_RGB32 PIX_FMT_BGRA
-# define PIX_FMT_RGB555 PIX_FMT_RGB555LE
-# define PIX_FMT_RGB565 PIX_FMT_RGB565LE
-# endif
-#endif
-
#define VIDEOBUFSIZE (128*1024)
#define SLICE_BUFFER_SIZE (1194*1024)
diff --git a/src/demuxers/demux_flv.c b/src/demuxers/demux_flv.c
index 813f33086..6b5a72a1b 100644
--- a/src/demuxers/demux_flv.c
+++ b/src/demuxers/demux_flv.c
@@ -395,14 +395,15 @@ static void parse_flv_script(demux_flv_t *this, int size) {
static int read_flv_packet(demux_flv_t *this, int preview) {
fifo_buffer_t *fifo = NULL;
buf_element_t *buf = NULL;
- unsigned char buffer[12];
- unsigned char tag_type;
- unsigned int remaining_bytes;
- unsigned int buf_type = 0;
- unsigned int buf_flags = 0;
- unsigned int pts;
while (1) {
+ unsigned char buffer[12], extrabuffer[4];
+ unsigned char tag_type, avinfo;
+ unsigned int remaining_bytes;
+ unsigned int buf_type = 0;
+ unsigned int buf_flags = 0;
+ unsigned int pts;
+
lprintf (" reading FLV tag...\n");
this->input->seek(this->input, 4, SEEK_CUR);
if (this->input->read(this->input, buffer, 11) != 11) {
@@ -420,13 +421,13 @@ static int read_flv_packet(demux_flv_t *this, int preview) {
switch (tag_type) {
case FLV_TAG_TYPE_AUDIO:
lprintf(" got audio tag..\n");
- if (this->input->read(this->input, buffer, 1) != 1) {
+ if (this->input->read(this->input, &avinfo, 1) != 1) {
this->status = DEMUX_FINISHED;
return this->status;
}
remaining_bytes--;
- this->audiocodec = buffer[0] >> 4; /* override */
+ this->audiocodec = avinfo >> 4; /* override */
switch (this->audiocodec) {
case FLV_SOUND_FORMAT_PCM_BE:
buf_type = BUF_AUDIO_LPCM_BE;
@@ -450,11 +451,11 @@ static int read_flv_packet(demux_flv_t *this, int preview) {
case FLV_SOUND_FORMAT_AAC:
buf_type = BUF_AUDIO_AAC;
/* AAC extra header */
- this->input->read(this->input, buffer, 1 );
+ this->input->read(this->input, extrabuffer, 1 );
remaining_bytes--;
break;
default:
- lprintf(" unsupported audio format (%d)...\n", buffer[0] >> 4);
+ lprintf(" unsupported audio format (%d)...\n", this->audiocodec);
buf_type = BUF_AUDIO_UNKNOWN;
break;
}
@@ -465,9 +466,9 @@ static int read_flv_packet(demux_flv_t *this, int preview) {
buf = fifo->buffer_pool_alloc(fifo);
buf->decoder_flags = BUF_FLAG_HEADER | BUF_FLAG_STDHEADER | BUF_FLAG_FRAME_END;
buf->decoder_info[0] = 0;
- buf->decoder_info[1] = 44100 >> (3 - ((buffer[0] >> 2) & 3)); /* samplerate */
- buf->decoder_info[2] = (buffer[0] & 2) ? 16 : 8; /* bits per sample */
- buf->decoder_info[3] = (buffer[0] & 1) + 1; /* channels */
+ buf->decoder_info[1] = 44100 >> (3 - ((avinfo >> 2) & 3)); /* samplerate */
+ buf->decoder_info[2] = (avinfo & 2) ? 16 : 8; /* bits per sample */
+ buf->decoder_info[3] = (avinfo & 1) + 1; /* channels */
buf->size = 0; /* no extra data */
buf->type = buf_type;
fifo->put(fifo, buf);
@@ -477,13 +478,13 @@ static int read_flv_packet(demux_flv_t *this, int preview) {
case FLV_TAG_TYPE_VIDEO:
lprintf(" got video tag..\n");
- if (this->input->read(this->input, buffer, 1) != 1) {
+ if (this->input->read(this->input, &avinfo, 1) != 1) {
this->status = DEMUX_FINISHED;
return this->status;
}
remaining_bytes--;
- switch ((buffer[0] >> 4)) {
+ switch ((avinfo >> 4)) {
case 0x01:
buf_flags = BUF_FLAG_KEYFRAME;
break;
@@ -495,7 +496,7 @@ static int read_flv_packet(demux_flv_t *this, int preview) {
break;
}
- this->videocodec = buffer[0] & 0x0F; /* override */
+ this->videocodec = avinfo & 0x0F; /* override */
switch (this->videocodec) {
case FLV_VIDEO_FORMAT_FLV1:
buf_type = BUF_VIDEO_FLV1;
@@ -503,23 +504,23 @@ static int read_flv_packet(demux_flv_t *this, int preview) {
case FLV_VIDEO_FORMAT_VP6:
buf_type = BUF_VIDEO_VP6F;
/* VP6 extra header */
- this->input->read(this->input, buffer, 1 );
+ this->input->read(this->input, extrabuffer, 1 );
remaining_bytes--;
break;
case FLV_VIDEO_FORMAT_VP6A:
buf_type = BUF_VIDEO_VP6F;
/* VP6A extra header */
- this->input->read(this->input, buffer, 4);
+ this->input->read(this->input, extrabuffer, 4);
remaining_bytes -= 4;
break;
case FLV_VIDEO_FORMAT_H264:
buf_type = BUF_VIDEO_H264;
/* AVC extra header */
- this->input->read(this->input, buffer, 4);
+ this->input->read(this->input, extrabuffer, 4);
remaining_bytes -= 4;
break;
default:
- lprintf(" unsupported video format (%d)...\n", buffer[0] & 0x0F);
+ lprintf(" unsupported video format (%d)...\n", this->videocodec);
buf_type = BUF_VIDEO_UNKNOWN;
break;
}
@@ -541,11 +542,11 @@ static int read_flv_packet(demux_flv_t *this, int preview) {
buf->size = sizeof(xine_bmiheader);
buf->type = buf_type;
if (buf_type == BUF_VIDEO_VP6F) {
- *((unsigned char *)buf->content+buf->size) = buffer[0];
+ *((unsigned char *)buf->content+buf->size) = extrabuffer[0];
bih->biSize++;
buf->size++;
}
- else if (buf_type == BUF_VIDEO_H264 && buffer[0] == 0) {
+ else if (buf_type == BUF_VIDEO_H264 && extrabuffer[0] == 0) {
/* AVC sequence header */
if (remaining_bytes > buf->max_size-buf->size) {
xprintf(this->xine, XINE_VERBOSITY_LOG,
@@ -670,7 +671,7 @@ static int read_flv_packet(demux_flv_t *this, int preview) {
(int)((double)this->input->get_current_pos(this->input) * 65535.0 / this->size);
}
- if ((buf_type == BUF_VIDEO_H264 || buf_type == BUF_AUDIO_AAC) && buffer[0] == 0) {
+ if ((buf_type == BUF_VIDEO_H264 || buf_type == BUF_AUDIO_AAC) && extrabuffer[0] == 0) {
/* AVC/AAC sequence header */
buf->pts = 0;
buf->size = 0;
diff --git a/src/demuxers/demux_ts.c b/src/demuxers/demux_ts.c
index 1a016fea9..1a19340f3 100644
--- a/src/demuxers/demux_ts.c
+++ b/src/demuxers/demux_ts.c
@@ -987,7 +987,6 @@ static void demux_ts_buffer_pes(demux_ts_t*this, unsigned char *ts,
m->buf->decoder_flags |= BUF_FLAG_FRAME_END;
}
m->buf->pts = m->pts;
- m->pts = 0;
m->buf->decoder_info[0] = 1;
if( this->input->get_length (this->input) )
@@ -996,12 +995,12 @@ static void demux_ts_buffer_pes(demux_ts_t*this, unsigned char *ts,
if (this->rate)
m->buf->extra_info->input_time = (int)((int64_t)this->input->get_current_pos (this->input)
* 1000 / (this->rate * 50));
-#ifdef TS_LOG
- printf ("demux_ts: produced buffer, pts=%lld\n", m->buf->pts);
-#endif
m->fifo->put(m->fifo, m->buf);
m->buffered_bytes = 0;
m->buf = NULL; /* forget about buf -- not our responsibility anymore */
+#ifdef TS_LOG
+ printf ("demux_ts: produced buffer, pts=%lld\n", m->pts);
+#endif
}
/* allocate the buffer here, as pes_header needs a valid buf for dvbsubs */
m->buf = m->fifo->buffer_pool_alloc(m->fifo);
@@ -1034,7 +1033,6 @@ static void demux_ts_buffer_pes(demux_ts_t*this, unsigned char *ts,
m->buf->size = m->buffered_bytes;
m->buf->type = m->type;
m->buf->pts = m->pts;
- m->pts = 0;
m->buf->decoder_info[0] = 1;
if( this->input->get_length (this->input) )
m->buf->extra_info->input_normpos = (int)( (double) this->input->get_current_pos (this->input) *
@@ -1042,12 +1040,15 @@ static void demux_ts_buffer_pes(demux_ts_t*this, unsigned char *ts,
if (this->rate)
m->buf->extra_info->input_time = (int)((int64_t)this->input->get_current_pos (this->input)
* 1000 / (this->rate * 50));
-#ifdef TS_LOG
- printf ("demux_ts: produced buffer, pts=%lld\n", m->buf->pts);
-#endif
+
m->fifo->put(m->fifo, m->buf);
m->buffered_bytes = 0;
m->buf = m->fifo->buffer_pool_alloc(m->fifo);
+
+#ifdef TS_LOG
+ printf ("demux_ts: produced buffer, pts=%lld\n", m->pts);
+#endif
+
}
memcpy(m->buf->mem + m->buffered_bytes, ts, len);
m->buffered_bytes += len;
diff --git a/src/video_out/Makefile.am b/src/video_out/Makefile.am
index 3e182fc14..84712db66 100644
--- a/src/video_out/Makefile.am
+++ b/src/video_out/Makefile.am
@@ -86,6 +86,14 @@ if HAVE_MACOSX_VIDEO
macosx_module = xineplug_vo_out_macosx.la
endif
+noinst_LTLIBRARIES = libyuv2rgb.la
+
+libyuv2rgb_la_SOURCES = yuv2rgb.c yuv2rgb_mmx.c yuv2rgb_mlib.c
+libyuv2rgb_la_CFLAGS = $(VISIBILITY_FLAG) $(MLIB_CFLAGS)
+
+# All YUV lib info here to avoid polluting the .la with this info
+YUV_LIBS = libyuv2rgb.la $(XINE_LIB) $(MLIB_LIBS)
+
xineplug_LTLIBRARIES = $(xshm_module) $(xv_module) $(xvmc_module) \
$(opengl_module) \
$(syncfb_module) \
@@ -104,17 +112,16 @@ xineplug_LTLIBRARIES = $(xshm_module) $(xv_module) $(xvmc_module) \
xineplug_vo_out_raw.la \
xineplug_vo_out_none.la
-xineplug_vo_out_xcbshm_la_SOURCES = yuv2rgb.c yuv2rgb_mmx.c yuv2rgb_mlib.c video_out_xcbshm.c $(XCBOSD)
-xineplug_vo_out_xcbshm_la_LIBADD = $(XINE_LIB) $(MLIB_LIBS) $(PTHREAD_LIBS) $(XCB_LIBS) $(XCBSHM_LIBS) $(LTLIBINTL)
+xineplug_vo_out_xcbshm_la_SOURCES = video_out_xcbshm.c $(XCBOSD)
+xineplug_vo_out_xcbshm_la_LIBADD = $(YUV_LIBS) $(PTHREAD_LIBS) $(XCB_LIBS) $(XCBSHM_LIBS) $(LTLIBINTL)
xineplug_vo_out_xcbshm_la_CFLAGS = $(VISIBILITY_FLAG) $(MLIB_CFLAGS) $(XCB_CFLAGS) $(XCBSHM_CFLAGS)
xineplug_vo_out_xcbxv_la_SOURCES = deinterlace.c video_out_xcbxv.c $(XCBOSD)
xineplug_vo_out_xcbxv_la_LIBADD = $(XINE_LIB) $(PTHREAD_LIBS) $(LTLIBINTL) $(XCBXV_LIBS) $(XCB_LIBS)
xineplug_vo_out_xcbxv_la_CFLAGS = $(VISIBILITY_FLAG) $(XCB_CFLAGS) $(XCBXV_CFLAGS)
-xineplug_vo_out_xshm_la_SOURCES = yuv2rgb.c yuv2rgb_mmx.c yuv2rgb_mlib.c \
- video_out_xshm.c $(X11OSD)
-xineplug_vo_out_xshm_la_LIBADD = $(XINE_LIB) $(MLIB_LIBS) $(X_LIBS) $(PTHREAD_LIBS) $(LTLIBINTL)
+xineplug_vo_out_xshm_la_SOURCES = video_out_xshm.c $(X11OSD)
+xineplug_vo_out_xshm_la_LIBADD = $(YUV_LIBS) $(X_LIBS) $(PTHREAD_LIBS) $(LTLIBINTL)
xineplug_vo_out_xshm_la_CFLAGS = $(VISIBILITY_FLAG) $(X_CFLAGS) $(MLIB_CFLAGS) -fno-strict-aliasing
xineplug_vo_out_xv_la_SOURCES = $(X11OSD) deinterlace.c video_out_xv.c
@@ -130,9 +137,8 @@ xineplug_vo_out_xxmc_la_SOURCES = $(X11OSD) deinterlace.c video_out_xxmc.c\
xineplug_vo_out_xxmc_la_LIBADD = $(XINE_LIB) $(XXMC_LIBS) $(XV_LIBS) $(X_LIBS) $(PTHREAD_LIBS) $(LTLIBINTL)
xineplug_vo_out_xxmc_la_CFLAGS = $(VISIBILITY_FLAG) $(X_CFLAGS) $(XV_CFLAGS) -fno-strict-aliasing
-xineplug_vo_out_opengl_la_SOURCES = yuv2rgb.c yuv2rgb_mmx.c yuv2rgb_mlib.c \
- video_out_opengl.c myglext.h $(X11OSD)
-xineplug_vo_out_opengl_la_LIBADD = $(XINE_LIB) $(MLIB_LIBS) $(OPENGL_LIBS) \
+xineplug_vo_out_opengl_la_SOURCES = video_out_opengl.c myglext.h $(X11OSD)
+xineplug_vo_out_opengl_la_LIBADD = $(YUV_LIBS) $(OPENGL_LIBS) \
$(GLUT_LIBS) $(GLU_LIBS) $(X_LIBS) $(PTHREAD_LIBS) $(DYNAMIC_LD_LIBS) $(LTLIBINTL)
xineplug_vo_out_opengl_la_CFLAGS = $(VISIBILITY_FLAG) $(X_CFLAGS) $(MLIB_CFLAGS) -fno-strict-aliasing
@@ -157,14 +163,12 @@ xineplug_vo_out_aa_la_SOURCES = video_out_aa.c
xineplug_vo_out_aa_la_LIBADD = $(XINE_LIB) $(AALIB_LIBS) $(PTHREAD_LIBS) $(LTLIBINTL)
xineplug_vo_out_aa_la_CFLAGS = $(VISIBILITY_FLAG) $(AALIB_CFLAGS)
-xineplug_vo_out_caca_la_SOURCES = yuv2rgb.c yuv2rgb_mmx.c yuv2rgb_mlib.c \
- video_out_caca.c
-xineplug_vo_out_caca_la_LIBADD = $(XINE_LIB) $(CACA_LIBS) $(PTHREAD_LIBS) $(LTLIBINTL)
+xineplug_vo_out_caca_la_SOURCES = video_out_caca.c
+xineplug_vo_out_caca_la_LIBADD = $(YUV_LIBS) $(CACA_LIBS) $(PTHREAD_LIBS) $(LTLIBINTL)
xineplug_vo_out_caca_la_CFLAGS = $(VISIBILITY_FLAG) $(CACA_CFLAGS)
-xineplug_vo_out_fb_la_SOURCES = yuv2rgb.c yuv2rgb_mmx.c yuv2rgb_mlib.c \
- video_out_fb.c
-xineplug_vo_out_fb_la_LIBADD = $(XINE_LIB) $(MLIB_LIBS) $(PTHREAD_LIBS) $(LTLIBINTL)
+xineplug_vo_out_fb_la_SOURCES = video_out_fb.c
+xineplug_vo_out_fb_la_LIBADD = $(YUV_LIBS) $(PTHREAD_LIBS) $(LTLIBINTL)
xineplug_vo_out_fb_la_CFLAGS = $(VISIBILITY_FLAG) $(MLIB_CFLAGS)
xineplug_vo_out_directfb_la_SOURCES = video_out_directfb_fb.c
@@ -183,17 +187,17 @@ xineplug_vo_out_stk_la_SOURCES = video_out_stk.c
xineplug_vo_out_stk_la_LIBADD = $(XINE_LIB) $(LIBSTK_LIBS) $(PTHREAD_LIBS)
xineplug_vo_out_stk_la_CFLAGS = $(VISIBILITY_FLAG) $(LIBSTK_CFLAGS)
-xineplug_vo_out_directx_la_SOURCES = yuv2rgb.c yuv2rgb_mmx.c video_out_directx.c
+xineplug_vo_out_directx_la_SOURCES = video_out_directx.c
xineplug_vo_out_directx_la_CPPFLAGS = $(AM_CPPFLAGS) $(DIRECTX_CPPFLAGS)
-xineplug_vo_out_directx_la_LIBADD = $(XINE_LIB) $(DIRECTX_VIDEO_LIBS) $(PTHREAD_LIBS) $(LTLIBINTL)
+xineplug_vo_out_directx_la_LIBADD = $(YUV_LIBS) $(DIRECTX_VIDEO_LIBS) $(PTHREAD_LIBS) $(LTLIBINTL)
xineplug_vo_out_directx_la_CFLAGS = $(VISIBILITY_FLAG)
xineplug_vo_out_none_la_SOURCES = video_out_none.c
xineplug_vo_out_none_la_LIBADD = $(XINE_LIB) $(PTHREAD_LIBS) $(LTLIBINTL)
xineplug_vo_out_none_la_CFLAGS = $(VISIBILITY_FLAG)
-xineplug_vo_out_raw_la_SOURCES = yuv2rgb.c yuv2rgb_mmx.c yuv2rgb_mlib.c video_out_raw.c
-xineplug_vo_out_raw_la_LIBADD = $(XINE_LIB) $(PTHREAD_LIBS) $(LTLIBINTL)
+xineplug_vo_out_raw_la_SOURCES = video_out_raw.c
+xineplug_vo_out_raw_la_LIBADD = $(YUV_LIBS) $(PTHREAD_LIBS) $(LTLIBINTL)
xineplug_vo_out_raw_la_CFLAGS = $(VISIBILITY_FLAG)
xineplug_vo_out_macosx_la_SOURCES = video_out_macosx.m