summaryrefslogtreecommitdiffstats
path: root/demux_asf.c
diff options
context:
space:
mode:
authorarpi_esp <arpi_esp@b3059339-0415-0410-9bf9-f77b7e298cf2>2001-06-03 23:37:20 +0000
committerarpi_esp <arpi_esp@b3059339-0415-0410-9bf9-f77b7e298cf2>2001-06-03 23:37:20 +0000
commit1a92942b614da4c5dbe5a7ae19cecc55276f79a4 (patch)
treebfc3786a30a413910110ed8f5c07e650c4357a2b /demux_asf.c
parent99e963fece591fdaeda9083625d6669c27eb8eb3 (diff)
downloadmpv-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.c9
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;
}