summaryrefslogtreecommitdiff
path: root/src/libmpeg2/decode.c
diff options
context:
space:
mode:
authorMiguel Freitas <miguelfreitas@users.sourceforge.net>2002-11-12 18:40:50 +0000
committerMiguel Freitas <miguelfreitas@users.sourceforge.net>2002-11-12 18:40:50 +0000
commit5caae571ccadaaf00a90d4ec321c5ab4b4cc4191 (patch)
tree76f5a2032230468f0321cdccd221768b419ffec0 /src/libmpeg2/decode.c
parent1083056bd34700d1b21171cabf507eab1620be27 (diff)
downloadxine-lib-5caae571ccadaaf00a90d4ec321c5ab4b4cc4191.tar.gz
xine-lib-5caae571ccadaaf00a90d4ec321c5ab4b4cc4191.tar.bz2
merge metronom's improvements (inform decoders about discontinuities)
http://sourceforge.net/mailarchive/forum.php?thread_id=1297475&forum_id=7131 CVS patchset: 3250 CVS date: 2002/11/12 18:40:50
Diffstat (limited to 'src/libmpeg2/decode.c')
-rw-r--r--src/libmpeg2/decode.c17
1 files changed, 16 insertions, 1 deletions
diff --git a/src/libmpeg2/decode.c b/src/libmpeg2/decode.c
index 6fc38d98a..f0674512f 100644
--- a/src/libmpeg2/decode.c
+++ b/src/libmpeg2/decode.c
@@ -557,6 +557,21 @@ int mpeg2_decode_data (mpeg2dec_t * mpeg2dec, uint8_t * current, uint8_t * end,
return ret;
}
+void mpeg2_discontinuity (mpeg2dec_t * mpeg2dec) {
+ picture_t *picture = mpeg2dec->picture;
+
+ if( !picture )
+ return;
+
+ mpeg2dec->pts = 0;
+ if ( picture->current_frame )
+ picture->current_frame->pts = 0;
+ if ( picture->forward_reference_frame )
+ picture->forward_reference_frame->pts = 0;
+ if ( picture->backward_reference_frame )
+ picture->backward_reference_frame->pts = 0;
+}
+
void mpeg2_reset (mpeg2dec_t * mpeg2dec) {
picture_t *picture = mpeg2dec->picture;
@@ -564,7 +579,7 @@ void mpeg2_reset (mpeg2dec_t * mpeg2dec) {
if( !picture )
return;
- mpeg2dec->pts = 0;
+ mpeg2_discontinuity(mpeg2dec);
if( !picture->mpeg1 )
mpeg2dec->is_sequence_needed = 1;