diff options
author | Guenter Bartsch <guenter@users.sourceforge.net> | 2001-11-10 13:48:02 +0000 |
---|---|---|
committer | Guenter Bartsch <guenter@users.sourceforge.net> | 2001-11-10 13:48:02 +0000 |
commit | b602849ad7cd8ce3b9c99da97bc3b4138cf8159d (patch) | |
tree | a6e53a2a202672f963aea421a7ab6dcb6152a12c /src/libmpeg2 | |
parent | 1944fafeb5b8d23bd667cbf9b97cb115b2517483 (diff) | |
download | xine-lib-b602849ad7cd8ce3b9c99da97bc3b4138cf8159d.tar.gz xine-lib-b602849ad7cd8ce3b9c99da97bc3b4138cf8159d.tar.bz2 |
very unfinished scr discontinuity detection stuff, new software audio out buffer and thread
CVS patchset: 1010
CVS date: 2001/11/10 13:48:02
Diffstat (limited to 'src/libmpeg2')
-rw-r--r-- | src/libmpeg2/decode.c | 7 | ||||
-rw-r--r-- | src/libmpeg2/mpeg2.h | 4 | ||||
-rw-r--r-- | src/libmpeg2/xine_decoder.c | 4 |
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); } |