summaryrefslogtreecommitdiffstats
path: root/libmpdemux
diff options
context:
space:
mode:
authorarpi <arpi@b3059339-0415-0410-9bf9-f77b7e298cf2>2003-01-13 02:42:06 +0000
committerarpi <arpi@b3059339-0415-0410-9bf9-f77b7e298cf2>2003-01-13 02:42:06 +0000
commit1e166db2028c0f27ea32d3c9427f993cc24d85ce (patch)
tree062a78471fa9dfd96dc563945706f4cb0b150539 /libmpdemux
parent57b2503b004ce37b7de9cc62682dcfd58ff2a33a (diff)
downloadmpv-1e166db2028c0f27ea32d3c9427f993cc24d85ce.tar.bz2
mpv-1e166db2028c0f27ea32d3c9427f993cc24d85ce.tar.xz
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> git-svn-id: svn://svn.mplayerhq.hu/mplayer/trunk@8938 b3059339-0415-0410-9bf9-f77b7e298cf2
Diffstat (limited to 'libmpdemux')
-rw-r--r--libmpdemux/demux_mov.c24
-rw-r--r--libmpdemux/demuxer.c2
2 files changed, 21 insertions, 5 deletions
diff --git a/libmpdemux/demux_mov.c b/libmpdemux/demux_mov.c
index 5beb69a9d0..1f2af95c66 100644
--- a/libmpdemux/demux_mov.c
+++ b/libmpdemux/demux_mov.c
@@ -356,6 +356,8 @@ int mov_check_file(demuxer_t* demuxer){
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 mov_check_file(demuxer_t* demuxer){
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 @@ skip_chunk:
}
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)
diff --git a/libmpdemux/demuxer.c b/libmpdemux/demuxer.c
index c107eac273..e8926414dd 100644
--- a/libmpdemux/demuxer.c
+++ b/libmpdemux/demuxer.c
@@ -650,7 +650,7 @@ if(file_format==DEMUXER_TYPE_UNKNOWN || file_format==DEMUXER_TYPE_MOV){
demuxer=new_demuxer(stream,DEMUXER_TYPE_MOV,audio_id,video_id,dvdsub_id);
if(mov_check_file(demuxer)){
mp_msg(MSGT_DEMUXER,MSGL_INFO,MSGTR_Detected_XXX_FileFormat,"QuickTime/MOV");
- file_format=DEMUXER_TYPE_MOV;
+ file_format=demuxer->type;
} else {
free_demuxer(demuxer);
demuxer = NULL;