[prev in list] [next in list] [prev in thread] [next in thread] 

List:       xine-cvslog
Subject:    [xine-cvs] HG: xine-lib-1.2: Merge from 1.1.
From:       Darren Salt <linux () youmustbejoking ! demon ! co ! uk>
Date:       2007-10-18 22:09:16
Message-ID: f5622ad9a0cff190e2fe.1192745320 () hg ! debian ! org
[Download RAW message or body]

# HG changeset patch
# User Darren Salt <linux@youmustbejoking.demon.co.uk>
# Date 1192745320 -3600
# Node ID f5622ad9a0cff190e2fe5f25e5bd3acbf4e6a67e
# Parent  9c4596aad5c75d84cf3b064a26da756416aa25e6
# Parent  d562948ee6abdaaf8622b8b1585899f44b26d06c
Merge from 1.1.

diff -r f5622ad9a0cff190e2fe5f25e5bd3acbf4e6a67e -r \
                9c4596aad5c75d84cf3b064a26da756416aa25e6 ChangeLog
--- a/ChangeLog	Thu Oct 18 23:08:40 2007 +0100
+++ b/ChangeLog	Thu Oct 18 15:22:48 2007 +0100
@@ -53,6 +53,7 @@ xine-lib (1.1.9) (unreleased)
   * Add UI option to configure FFmpeg's video decoder thread count.
   * 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).
 
 xine-lib (1.1.8)
   * Send a channel-changed event to the frontend when receiving the SYNC
diff -r f5622ad9a0cff190e2fe5f25e5bd3acbf4e6a67e -r \
                9c4596aad5c75d84cf3b064a26da756416aa25e6 src/demuxers/demux_flv.c
--- a/src/demuxers/demux_flv.c	Thu Oct 18 23:08:40 2007 +0100
+++ b/src/demuxers/demux_flv.c	Thu Oct 18 15:22:48 2007 +0100
@@ -183,10 +183,7 @@ static int open_flv_file(demux_flv_t *th
   this->start = _X_BE_32(&buffer[5]);
   this->size = this->input->get_length(this->input);
    
-  if (INPUT_IS_SEEKABLE(this->input))
-    this->input->seek(this->input, this->start, SEEK_SET);
-  else if (this->start > 9)
-    this->input->seek(this->input, this->start-9, SEEK_CUR);
+  this->input->seek(this->input, this->start, SEEK_SET);
   
   lprintf("  qualified FLV file, repositioned @ offset 0x%" PRIxMAX "\n", 
           (intmax_t)this->start);
@@ -340,7 +337,7 @@ static void parse_flv_script(demux_flv_t
   free(buf);
 }
 
-static int read_flv_packet(demux_flv_t *this) {
+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];
@@ -487,7 +484,9 @@ static int read_flv_packet(demux_flv_t *
       buf = fifo->buffer_pool_alloc(fifo);
       buf->type = buf_type;
       buf->pts = (int64_t) pts * 90;
-      check_newpts(this, buf->pts, (tag_type == FLV_TAG_TYPE_VIDEO));
+      
+      if (!preview)
+        check_newpts(this, buf->pts, (tag_type == FLV_TAG_TYPE_VIDEO));
       
       buf->extra_info->input_time = pts;
       if (this->input->get_length(this->input)) {
@@ -502,6 +501,8 @@ static int read_flv_packet(demux_flv_t *
       remaining_bytes -= buf->size;
 
       buf->decoder_flags = buf_flags;
+      if (preview)
+        buf->decoder_flags |= BUF_FLAG_PREVIEW;
       if (!remaining_bytes)
         buf->decoder_flags |= BUF_FLAG_FRAME_END;
 
@@ -609,7 +610,7 @@ static int demux_flv_send_chunk(demux_pl
 static int demux_flv_send_chunk(demux_plugin_t *this_gen) {
   demux_flv_t *this = (demux_flv_t *) this_gen;
   
-  return read_flv_packet(this);
+  return read_flv_packet(this, 0);
 }
 
 static void demux_flv_send_headers(demux_plugin_t *this_gen) {
@@ -632,7 +633,7 @@ static void demux_flv_send_headers(demux
 
   /* find first audio/video packets and send headers */
   for (i = 0; i < 20; i++) {
-    if (read_flv_packet(this) != DEMUX_OK)
+    if (read_flv_packet(this, 1) != DEMUX_OK)
       break;
     if (((this->flags & FLV_FLAG_HAS_VIDEO) && this->got_video) &&
         ((this->flags & FLV_FLAG_HAS_AUDIO) && this->got_audio)) {
diff -r f5622ad9a0cff190e2fe5f25e5bd3acbf4e6a67e -r \
                9c4596aad5c75d84cf3b064a26da756416aa25e6 \
                src/demuxers/demux_matroska.c
--- a/src/demuxers/demux_matroska.c	Thu Oct 18 23:08:40 2007 +0100
+++ b/src/demuxers/demux_matroska.c	Thu Oct 18 15:22:48 2007 +0100
@@ -1856,7 +1856,7 @@ static int parse_block (demux_matroska_t
 
   gap = flags & 1;
   lacing = (flags >> 1) & 0x3;
-  fprintf(stderr, "lacing: %x\n", lacing);
+/*fprintf(stderr, "lacing: %x\n", lacing);*/
 
   if (!find_track_by_id(this, (int)track_num, &track)) {
      xprintf(this->stream->xine, XINE_VERBOSITY_LOG,
diff -r f5622ad9a0cff190e2fe5f25e5bd3acbf4e6a67e -r \
                9c4596aad5c75d84cf3b064a26da756416aa25e6 src/libreal/real_common.c
--- a/src/libreal/real_common.c	Thu Oct 18 23:08:40 2007 +0100
+++ b/src/libreal/real_common.c	Thu Oct 18 15:22:48 2007 +0100
@@ -89,6 +89,7 @@ void _x_real_codecs_init(xine_t *const x
   /* The priority is for the first found */
   try_real_subpath("lib/win32")
   else try_real_subpath("lib/codecs")
+  else try_real_subpath("lib64/real")
   else try_real_subpath("lib/real")
   else try_real_subpath("lib/RealPlayer10GOLD/codecs")
   else try_real_subpath("lib64/RealPlayer10/codecs")

-------------------------------------------------------------------------
This SF.net email is sponsored by: Splunk Inc.
Still grepping through log files to find problems?  Stop.
Now Search log events and configuration files using AJAX and a browser.
Download your FREE copy of Splunk now >> http://get.splunk.com/
_______________________________________________
Xine-cvslog mailing list
Xine-cvslog@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/xine-cvslog


[prev in list] [next in list] [prev in thread] [next in thread] 

Configure | About | News | Add a list | Sponsored by KoreLogic