diff options
-rw-r--r-- | ChangeLog | 2 | ||||
-rw-r--r-- | configure.ac | 6 | ||||
-rw-r--r-- | src/combined/ffmpeg/ff_video_decoder.c | 16 | ||||
-rw-r--r-- | src/demuxers/demux_flv.c | 47 | ||||
-rw-r--r-- | src/demuxers/demux_ts.c | 17 | ||||
-rw-r--r-- | src/video_out/Makefile.am | 40 |
6 files changed, 59 insertions, 69 deletions
@@ -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 |