printf("seek failed\n");
av_log(s, AV_LOG_INFO, "seek failed\n");
static int64_t asf_read_pts(AVFormatContext *s, int64_t *ppos, int stream_index){    ASFContext *asf = s->priv_data;    AVPacket pkt1, *pkt = &pkt1;    ASFStream *asf_st;    int64_t pts;    int64_t pos= *ppos;    int i;    int64_t start_pos[s->nb_streams];        for(i=0; i<s->nb_streams; i++){        start_pos[i]= pos;    }//printf("asf_read_pts\n");    url_fseek(&s->pb, pos*asf->packet_size + s->data_offset, SEEK_SET);    asf_reset_header(s);    for(;;){        if (av_read_frame(s, pkt) < 0){            printf("seek failed\n");    	    return AV_NOPTS_VALUE;        }        pts= pkt->pts;        av_free_packet(pkt);        if(pkt->flags&PKT_FLAG_KEY){            i= pkt->stream_index;            asf_st= s->streams[i]->priv_data;            assert((asf_st->packet_pos - s->data_offset) % asf->packet_size == 0);            pos= (asf_st->packet_pos - s->data_offset) / asf->packet_size;            av_add_index_entry(s->streams[i], pos, pts, pos - start_pos[i] + 1, AVINDEX_KEYFRAME);            start_pos[i]= pos + 1;                        if(pkt->stream_index == stream_index)               break;        }    }    *ppos= pos;//printf("found keyframe at %Ld stream %d stamp:%Ld\n", *ppos, stream_index, pts);    return pts;}