diff options
author | Darren Salt <linux@youmustbejoking.demon.co.uk> | 2007-10-23 23:15:36 +0100 |
---|---|---|
committer | Darren Salt <linux@youmustbejoking.demon.co.uk> | 2007-10-23 23:15:36 +0100 |
commit | 7f0cb19782f4ac1de0f35bf3321be03b30a7179c (patch) | |
tree | af7539b3eb33846dffe4645d52aa00a0720ed82e | |
parent | 9b6900307db58fd1adcc1311e1938f74225bc549 (diff) | |
parent | 063fce405f6dd99f78040a0087ab4c602c5b96fc (diff) | |
download | xine-lib-7f0cb19782f4ac1de0f35bf3321be03b30a7179c.tar.gz xine-lib-7f0cb19782f4ac1de0f35bf3321be03b30a7179c.tar.bz2 |
Merge from 1.1, updating plugin Conflicts/Replaces accordingly.
-rw-r--r-- | ChangeLog | 1 | ||||
-rw-r--r-- | debian/control | 2 | ||||
-rw-r--r-- | src/libffmpeg/ff_video_decoder.c | 18 | ||||
-rw-r--r-- | src/libsputext/xine_sputext_decoder.c | 6 | ||||
-rw-r--r-- | src/xine-utils/xmlparser.c | 2 |
5 files changed, 22 insertions, 7 deletions
@@ -54,6 +54,7 @@ xine-lib (1.1.9) (unreleased) * Improve syncing of audio and video in the presence of bad frames. * Improve handling of invalid or unknown frame sizes. * Fixed handling of streamed Flash videos (broken in 1.1.5). + * Fixed division by zero in sputext decoder xine-lib (1.1.8) * Send a channel-changed event to the frontend when receiving the SYNC diff --git a/debian/control b/debian/control index 7ef909890..e3f6491d7 100644 --- a/debian/control +++ b/debian/control @@ -66,6 +66,8 @@ Architecture: any Depends: ${shlibs:Depends} Recommends: ${shlibs:Recommends}, libxine2-doc | libxine-doc Suggests: ${shlibs:Suggests}, libartsc0 +Conflicts: libxine2-console, libxine2-ffmpeg, libxine2-gnome, libxine2-misc-plugins, libxine2-plugins, libxine2-x +Replaces: libxine2-console, libxine2-ffmpeg, libxine2-gnome, libxine2-misc-plugins, libxine2-plugins, libxine2-x Description: the xine video/media player library, binary files This is the xine media player library (libxine). . diff --git a/src/libffmpeg/ff_video_decoder.c b/src/libffmpeg/ff_video_decoder.c index 6cbb152a2..3c69e360d 100644 --- a/src/libffmpeg/ff_video_decoder.c +++ b/src/libffmpeg/ff_video_decoder.c @@ -1154,6 +1154,7 @@ static void ff_handle_buffer (ff_video_decoder_t *this, buf_element_t *buf) { int got_one_picture = 0; int offset = 0; int codec_type = buf->type & 0xFFFF0000; + int video_step_to_use; /* pad input data */ /* note: bitstream, alt bitstream reader or something will cause @@ -1194,6 +1195,9 @@ static void ff_handle_buffer (ff_video_decoder_t *this, buf_element_t *buf) { } } + /* use externally provided video_step or fall back to stream's time_base otherwise */ + video_step_to_use = (this->video_step || !this->context->time_base.den) ? this->video_step : (int)(90000ll * this->context->time_base.num / this->context->time_base.den); + /* aspect ratio provided by ffmpeg, override previous setting */ if ((this->aspect_ratio_prio < 2) && av_cmp_q(this->context->sample_aspect_ratio, avr00)) { @@ -1283,16 +1287,20 @@ static void ff_handle_buffer (ff_video_decoder_t *this, buf_element_t *buf) { img->pts = this->pts; this->pts = 0; + /* workaround for demux_mpeg_pes sending fields as frames */ + if (!this->video_step && this->av_frame->interlaced_frame) + video_step_to_use /= 2; + /* workaround for weird 120fps streams */ - if( this->video_step == 750 ) { + if( video_step_to_use == 750 ) { /* fallback to the VIDEO_PTS_MODE */ - this->video_step = 0; + video_step_to_use = 0; } if (this->av_frame->repeat_pict) - img->duration = this->video_step * 3 / 2; + img->duration = video_step_to_use * 3 / 2; else - img->duration = this->video_step; + img->duration = video_step_to_use; img->crop_right = this->crop_right; img->crop_bottom = this->crop_bottom; @@ -1316,7 +1324,7 @@ static void ff_handle_buffer (ff_video_decoder_t *this, buf_element_t *buf) { img->pts = this->pts; this->pts = 0; - img->duration = this->video_step; + img->duration = video_step_to_use; img->bad_frame = 1; this->skipframes = img->draw(img, this->stream); img->free(img); diff --git a/src/libsputext/xine_sputext_decoder.c b/src/libsputext/xine_sputext_decoder.c index ea3a69189..66ce4a533 100644 --- a/src/libsputext/xine_sputext_decoder.c +++ b/src/libsputext/xine_sputext_decoder.c @@ -703,9 +703,11 @@ static void spudec_decode_data (spu_decoder_t *this_gen, buf_element_t *buf) { lprintf("started\n"); this->width = this->height = 0; - this->started = 1; - update_output_size( this ); + update_output_size( this ); + if( this->width && this->height ) { + this->started = 1; + } } if( this->started ) { diff --git a/src/xine-utils/xmlparser.c b/src/xine-utils/xmlparser.c index 9fad38e5d..66ab28ce4 100644 --- a/src/xine-utils/xmlparser.c +++ b/src/xine-utils/xmlparser.c @@ -239,6 +239,8 @@ static int xml_parser_get_node_internal (xml_node_t *current_node, char *root_na if (rec < MAX_RECURSION) { + memset (tok, 0, TOKEN_SIZE); + while ((bypass_get_token) || (res = lexer_get_token(tok, TOKEN_SIZE)) != T_ERROR) { bypass_get_token = 0; lprintf("info: %d - %d : '%s'\n", state, res, tok); |