From: Michael R. <mr...@us...> - 2002-12-06 17:29:39
|
Update of /cvsroot/xine/xine-lib/src/libmpeg2 In directory sc8-pr-cvs1:/tmp/cvs-serv24738/src/libmpeg2 Modified Files: decode.c mpeg2.h Log Message: embed closed caption decoding again (needs testing) Index: decode.c =================================================================== RCS file: /cvsroot/xine/xine-lib/src/libmpeg2/decode.c,v retrieving revision 1.85 retrieving revision 1.86 diff -u -r1.85 -r1.86 --- decode.c 20 Nov 2002 11:57:44 -0000 1.85 +++ decode.c 6 Dec 2002 17:29:14 -0000 1.86 @@ -696,6 +696,12 @@ free (mpeg2dec->picture_base); mpeg2dec->picture = NULL; } + + if ( mpeg2dec->cc_dec) { + /* dispose the closed caption decoder */ + mpeg2dec->cc_dec->dispose(mpeg2dec->cc_dec); + mpeg2dec->cc_dec = NULL; + } } void mpeg2_find_sequence_header (mpeg2dec_t * mpeg2dec, @@ -767,17 +773,23 @@ { /* check if user data denotes closed captions */ if (buffer[0] == 'C' && buffer[1] == 'C') { -#if 0 - /* FIXME: find an event-less solution */ - xine_closed_caption_event_t event; - uint8_t *end = find_end(buffer); - - event.event.type = XINE_EVENT_CLOSED_CAPTION; - event.buffer = &buffer[2]; - event.buf_len = end - &buffer[2]; - event.pts = mpeg2dec->pts; - xine_send_event(mpeg2dec->xine, &event.event); -#endif - + + if (!mpeg2dec->cc_dec) + /* open the closed caption decoder first */ + mpeg2dec->cc_dec = get_spu_decoder(mpeg2dec->stream, (BUF_SPU_CC >> 16) & 0xff); + + if (mpeg2dec->cc_dec) { + buf_element_t *buf; + + buf = mpeg2dec->stream->video_fifo->buffer_pool_alloc (mpeg2dec->stream->video_fifo); + buf->type = BUF_SPU_CC; + buf->content = &buffer[2]; + buf->pts = mpeg2dec->pts; + buf->size = find_end(buffer) - &buffer[2]; + + mpeg2dec->cc_dec->decode_data(mpeg2dec->cc_dec, buf); + + buf->free_buffer(buf); + } } } Index: mpeg2.h =================================================================== RCS file: /cvsroot/xine/xine-lib/src/libmpeg2/mpeg2.h,v retrieving revision 1.21 retrieving revision 1.22 diff -u -r1.21 -r1.22 --- mpeg2.h 20 Nov 2002 11:57:44 -0000 1.21 +++ mpeg2.h 6 Dec 2002 17:29:22 -0000 1.22 @@ -47,6 +47,10 @@ uint32_t rff_pattern; int force_aspect; xine_stream_t *stream; + + /* a spu decoder for possible closed captions */ + spu_decoder_t *cc_dec; + } mpeg2dec_t ; |