Mercurial > mplayer.hg
diff libmpdemux/demux_mov.c @ 8937:afca652cb0e5
patch adds support for MOV-Reference-Files.
it uses d_video queue to store playlist entries as strz.
It also makes sure, that unnecessary items like qt5gateQT are removed and
that the url/basepath is added to "local files"
by Fabian Franz <FabianFranz@gmx.de>
author | arpi |
---|---|
date | Mon, 13 Jan 2003 02:42:06 +0000 |
parents | c82c8144cef9 |
children | ee0fdf5505c4 |
line wrap: on
line diff
--- a/libmpdemux/demux_mov.c Mon Jan 13 01:50:20 2003 +0000 +++ b/libmpdemux/demux_mov.c Mon Jan 13 02:42:06 2003 +0000 @@ -356,6 +356,8 @@ int ref=0; skipped+=i; mp_msg(MSGT_DEMUX,MSGL_INFO,"MOV: Reference Media file!!!\n"); + //set demuxer type to playlist ... + demuxer->type=DEMUXER_TYPE_PLAYLIST; while(i>0){ int len=stream_read_dword(demuxer->stream)-8; int fcc=stream_read_dword(demuxer->stream); @@ -369,10 +371,21 @@ int tmp=stream_read_dword(demuxer->stream); int type=stream_read_dword_le(demuxer->stream); int slen=stream_read_dword(demuxer->stream); - char* s=malloc(slen+1); - stream_read(demuxer->stream,s,slen); - s[slen]=0; - mp_msg(MSGT_DEMUX,MSGL_INFO,"REF: [%.4s] %s\n",&type,s); + //char* s=malloc(slen+1); + //stream_read(demuxer->stream,s,slen); + + //FIXME: also store type & data_rate ? + ds_read_packet(demuxer->video, + demuxer->stream, + slen, + 0, + stream_tell(demuxer->stream), + 0 // no flags + ); + flags|=4; + mp_msg(MSGT_DEMUX,MSGL_V,"Added reference to playlist\n"); + //s[slen]=0; + //mp_msg(MSGT_DEMUX,MSGL_INFO,"REF: [%.4s] %s\n",&type,s); len-=12+slen;i-=12+slen; break; } case MOV_FOURCC('r','m','d','r'): { @@ -434,6 +447,9 @@ } free(priv); + if (flags==5) // reference & header sent + return 1; + if(flags==1) mp_msg(MSGT_DEMUX,MSGL_WARN,"MOV: missing data (mdat) chunk! Maybe broken file...\n"); else if(flags==2)