summaryrefslogtreecommitdiff
path: root/src/libmpeg2
diff options
context:
space:
mode:
Diffstat (limited to 'src/libmpeg2')
-rw-r--r--src/libmpeg2/decode.c7
-rw-r--r--src/libmpeg2/mpeg2.h4
-rw-r--r--src/libmpeg2/xine_decoder.c4
3 files changed, 10 insertions, 5 deletions
diff --git a/src/libmpeg2/decode.c b/src/libmpeg2/decode.c
index 1b0432472..e0ceacb97 100644
--- a/src/libmpeg2/decode.c
+++ b/src/libmpeg2/decode.c
@@ -257,6 +257,7 @@ static inline int parse_chunk (mpeg2dec_t * mpeg2dec, int code,
}
picture->current_frame->bad_frame = 0;
picture->current_frame->PTS = mpeg2dec->pts;
+ picture->current_frame->SCR = mpeg2dec->scr;
mpeg2dec->pts = 0;
}
}
@@ -323,7 +324,7 @@ static inline uint8_t * copy_chunk (mpeg2dec_t * mpeg2dec,
}
int mpeg2_decode_data (mpeg2dec_t * mpeg2dec, uint8_t * current, uint8_t * end,
- uint32_t pts)
+ uint32_t pts, uint32_t scr)
{
int ret;
uint8_t code;
@@ -340,6 +341,8 @@ int mpeg2_decode_data (mpeg2dec_t * mpeg2dec, uint8_t * current, uint8_t * end,
if (pts)
mpeg2dec->pts = pts;
+ mpeg2dec->scr = scr;
+
while (current != end) {
code = mpeg2dec->code;
current = copy_chunk (mpeg2dec, current, end);
@@ -380,6 +383,7 @@ void mpeg2_close (mpeg2dec_t * mpeg2dec)
if (picture->throwaway_frame) {
printf ("libmpeg2: blasting out throwaway frame on close\n");
picture->throwaway_frame->PTS = 0;
+ picture->throwaway_frame->SCR = mpeg2dec->scr;
picture->throwaway_frame->bad_frame = 0;
picture->throwaway_frame->draw (picture->throwaway_frame);
picture->throwaway_frame->free (picture->throwaway_frame);
@@ -388,6 +392,7 @@ void mpeg2_close (mpeg2dec_t * mpeg2dec)
if (picture->backward_reference_frame) {
printf ("libmpeg2: blasting out backward reference frame on close\n");
picture->backward_reference_frame->PTS = 0;
+ picture->backward_reference_frame->SCR = mpeg2dec->scr;
picture->backward_reference_frame->bad_frame = 0;
picture->backward_reference_frame->draw (picture->backward_reference_frame);
picture->backward_reference_frame->free (picture->backward_reference_frame);
diff --git a/src/libmpeg2/mpeg2.h b/src/libmpeg2/mpeg2.h
index 5ff2165bf..c4f250f6d 100644
--- a/src/libmpeg2/mpeg2.h
+++ b/src/libmpeg2/mpeg2.h
@@ -43,7 +43,7 @@ typedef struct mpeg2dec_s {
/* last start code ? */
uint8_t code;
- uint32_t pts;
+ uint32_t pts, scr;
} mpeg2dec_t ;
@@ -60,7 +60,7 @@ void mpeg2_close (mpeg2dec_t * mpeg2dec);
int mpeg2_decode_data (mpeg2dec_t * mpeg2dec,
uint8_t * data_start, uint8_t * data_end,
- uint32_t pts);
+ uint32_t pts, uint32_t scr);
void mpeg2_find_sequence_header (mpeg2dec_t * mpeg2dec,
uint8_t * data_start, uint8_t * data_end);
diff --git a/src/libmpeg2/xine_decoder.c b/src/libmpeg2/xine_decoder.c
index 012e24a5f..5c4885237 100644
--- a/src/libmpeg2/xine_decoder.c
+++ b/src/libmpeg2/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.15 2001/10/03 17:17:06 jkeil Exp $
+ * $Id: xine_decoder.c,v 1.16 2001/11/10 13:48:03 guenter Exp $
*
* stuff needed to turn libmpeg2 into a xine decoder plugin
*/
@@ -72,7 +72,7 @@ static void mpeg2dec_decode_data (video_decoder_t *this_gen, buf_element_t *buf)
/* write (this->mpeg_file, buf->content, buf->size); */
mpeg2_decode_data (&this->mpeg2, buf->content, buf->content + buf->size,
- buf->PTS);
+ buf->PTS, buf->SCR);
}