diff options
author | arpi <arpi@b3059339-0415-0410-9bf9-f77b7e298cf2> | 2003-06-09 00:24:49 +0000 |
---|---|---|
committer | arpi <arpi@b3059339-0415-0410-9bf9-f77b7e298cf2> | 2003-06-09 00:24:49 +0000 |
commit | 080311d08f70042db8db88a6696a8a6c61c337df (patch) | |
tree | 82e106e42caafb41b5cfa63492b010be810e3b91 /libmpdemux/video.c | |
parent | 14328b41fedf57134a759b5cd4e3d8af330e7e0f (diff) | |
download | mpv-080311d08f70042db8db88a6696a8a6c61c337df.tar.bz2 mpv-080311d08f70042db8db88a6696a8a6c61c337df.tar.xz |
TiVo demuxer and sub-cc/osd decoder
patch by usenet@wingert.org
(http://tivo-mplayer.sourceforge.net/releases/MPlayer-20030501-tivo-patch.gz)
changes by me:
- spit demux_ty to demux_ty and demux_ty_osd (later handles mpeg user-data
decoding, ie sub-cc and osd)
- removed some cosmetics changes
- some compile fixes (gcc3 specific variable decl etc)
git-svn-id: svn://svn.mplayerhq.hu/mplayer/trunk@10264 b3059339-0415-0410-9bf9-f77b7e298cf2
Diffstat (limited to 'libmpdemux/video.c')
-rw-r--r-- | libmpdemux/video.c | 12 |
1 files changed, 11 insertions, 1 deletions
diff --git a/libmpdemux/video.c b/libmpdemux/video.c index 295cb352f4..e0c9c048f1 100644 --- a/libmpdemux/video.c +++ b/libmpdemux/video.c @@ -176,6 +176,7 @@ switch(d_video->demuxer->file_format){ case DEMUXER_TYPE_PVA: case DEMUXER_TYPE_MPEG_TS: case DEMUXER_TYPE_MPEG_ES: + case DEMUXER_TYPE_MPEG_TY: case DEMUXER_TYPE_MPEG_PS: { //mpeg_header_parser: // Find sequence_header first: @@ -282,6 +283,8 @@ switch(d_video->demuxer->file_format){ return 1; } +void ty_processuserdata( unsigned char* buf, int len ); + static void process_userdata(unsigned char* buf,int len){ int i; /* if the user data starts with "CC", assume it is a CC info packet */ @@ -289,6 +292,11 @@ static void process_userdata(unsigned char* buf,int len){ // mp_msg(MSGT_DECVIDEO,MSGL_DBG2,"video.c: process_userdata() detected Closed Captions!\n"); if(subcc_enabled) subcc_process_data(buf+2,len-2); } + if( len > 2 && buf[ 0 ] == 'T' && buf[ 1 ] == 'Y' ) + { + ty_processuserdata( buf + 2, len - 2 ); + return; + } if(verbose<2) return; printf( "user_data: len=%3d %02X %02X %02X %02X '", len, buf[0], buf[1], buf[2], buf[3]); @@ -312,6 +320,7 @@ int video_read_frame(sh_video_t* sh_video,float* frame_time_ptr,unsigned char** if(demuxer->file_format==DEMUXER_TYPE_MPEG_ES || demuxer->file_format==DEMUXER_TYPE_MPEG_PS || demuxer->file_format==DEMUXER_TYPE_PVA || demuxer->file_format==DEMUXER_TYPE_MPEG_TS + || demuxer->file_format==DEMUXER_TYPE_MPEG_TY #ifdef STREAMING_LIVE_DOT_COM || (demuxer->file_format==DEMUXER_TYPE_RTP && demux_is_mpeg_rtp_stream(demuxer)) #endif @@ -473,7 +482,8 @@ int video_read_frame(sh_video_t* sh_video,float* frame_time_ptr,unsigned char** if(demuxer->file_format==DEMUXER_TYPE_MPEG_PS || demuxer->file_format==DEMUXER_TYPE_MPEG_TS || - demuxer->file_format==DEMUXER_TYPE_MPEG_ES){ + demuxer->file_format==DEMUXER_TYPE_MPEG_ES || + demuxer->file_format==DEMUXER_TYPE_MPEG_TY){ // if(pts>0.0001) printf("\r!!! pts: %5.3f [%d] (%5.3f) \n",pts,picture_coding_type,i_pts); |