diff options
author | arpi_esp <arpi_esp@b3059339-0415-0410-9bf9-f77b7e298cf2> | 2001-06-03 23:37:20 +0000 |
---|---|---|
committer | arpi_esp <arpi_esp@b3059339-0415-0410-9bf9-f77b7e298cf2> | 2001-06-03 23:37:20 +0000 |
commit | 1a92942b614da4c5dbe5a7ae19cecc55276f79a4 (patch) | |
tree | bfc3786a30a413910110ed8f5c07e650c4357a2b /demux_asf.c | |
parent | 99e963fece591fdaeda9083625d6669c27eb8eb3 (diff) | |
download | mpv-1a92942b614da4c5dbe5a7ae19cecc55276f79a4.tar.bz2 mpv-1a92942b614da4c5dbe5a7ae19cecc55276f79a4.tar.xz |
keyframe flag added
git-svn-id: svn://svn.mplayerhq.hu/mplayer/trunk@980 b3059339-0415-0410-9bf9-f77b7e298cf2
Diffstat (limited to 'demux_asf.c')
-rw-r--r-- | demux_asf.c | 9 |
1 files changed, 6 insertions, 3 deletions
diff --git a/demux_asf.c b/demux_asf.c index e7550a5695..76373461ab 100644 --- a/demux_asf.c +++ b/demux_asf.c @@ -58,7 +58,7 @@ static void asf_descrambling(unsigned char *src,int len){ } -static int demux_asf_read_packet(demuxer_t *demux,unsigned char *data,int len,int id,int seq,unsigned long time,unsigned short dur,int offs){ +static int demux_asf_read_packet(demuxer_t *demux,unsigned char *data,int len,int id,int seq,unsigned long time,unsigned short dur,int offs,int keyframe){ demux_stream_t *ds=NULL; if(verbose>=4) printf("demux_asf.read_packet: id=%d seq=%d len=%d\n",id,seq,len); @@ -118,6 +118,7 @@ static int demux_asf_read_packet(demuxer_t *demux,unsigned char *data,int len,in dp=new_demux_packet(len); memcpy(dp->buffer,data,len); dp->pts=time*0.001f; + dp->flags=keyframe; // if(ds==demux->video) printf("ASF time: %8d dur: %5d \n",time,dur); dp->pos=demux->filepos; ds->asf_packet=dp; @@ -207,6 +208,7 @@ int demux_asf_fill_buffer(demuxer_t *demux){ unsigned long x; unsigned char type; unsigned long time2; + int keyframe=0; if(p>=p_end) printf("Warning! invalid packet 1, sig11 coming soon...\n"); @@ -218,6 +220,7 @@ int demux_asf_fill_buffer(demuxer_t *demux){ } streamno=p[0]&0x7F; + if(p[0]&0x80) keyframe=1; seq=p[1]; p+=2; @@ -279,7 +282,7 @@ int demux_asf_fill_buffer(demuxer_t *demux){ int len2=p[0]; p++; //printf(" group part: %d bytes\n",len2); - demux_asf_read_packet(demux,p,len2,streamno,seq,x,duration,-1); + demux_asf_read_packet(demux,p,len2,streamno,seq,x,duration,-1,keyframe); p+=len2; len-=len2+1; } @@ -290,7 +293,7 @@ int demux_asf_fill_buffer(demuxer_t *demux){ case 0x08: // NO GROUPING: //printf("fragment offset: %d \n",sh->x); - demux_asf_read_packet(demux,p,len,streamno,seq,time2,duration,x); + demux_asf_read_packet(demux,p,len,streamno,seq,time2,duration,x,keyframe); p+=len; break; } |