diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/libreal/xine_decoder.c | 9 |
1 files changed, 7 insertions, 2 deletions
diff --git a/src/libreal/xine_decoder.c b/src/libreal/xine_decoder.c index bdf261d17..eb981ba74 100644 --- a/src/libreal/xine_decoder.c +++ b/src/libreal/xine_decoder.c @@ -17,7 +17,7 @@ * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA * - * $Id: xine_decoder.c,v 1.39 2003/06/03 15:44:31 jstembridge Exp $ + * $Id: xine_decoder.c,v 1.40 2003/07/09 22:09:10 jstembridge Exp $ * * thin layer to use real binary-only codecs in xine * @@ -79,6 +79,8 @@ typedef struct realdec_decoder_s { int num_chunks; uint32_t chunk_tab[CHUNK_TAB_SIZE]; + uint8_t chunk_id; + /* keep track of timestamps, estimate framerate */ uint64_t pts; int num_frames; @@ -458,6 +460,8 @@ static void realdec_decode_data (video_decoder_t *this_gen, buf_element_t *buf) this->chunk_tab[1] = 0; this->num_chunks = 1; + this->chunk_id = buf->content[0]; + if (buf->pts) this->pts = buf->pts; else @@ -471,7 +475,8 @@ static void realdec_decode_data (video_decoder_t *this_gen, buf_element_t *buf) this->num_chunks); #endif - if (((buf->content[0] & 0x20) == 0) || (buf->type != BUF_VIDEO_RV30)) { + if (((buf->type != BUF_VIDEO_RV30) && (buf->type != BUF_VIDEO_RV40)) || + (buf->content[0] == this->chunk_id)) { memcpy (this->chunk_buffer+this->chunk_buffer_size, buf->content, buf->size); |