X-Git-Url: https://git.sesse.net/?a=blobdiff_plain;f=libavformat%2Fasfdec.c;h=270ba1d25ea0b312f6c279253c81e08635d42986;hb=cc3e7a4c3df9f6de6f4a2f312355dc221d6380f0;hp=7b4a0a5c473586527b9788639f6b473f542f2b10;hpb=462c6cdb8ed256d2063815b67ca4d14e62e25802;p=ffmpeg diff --git a/libavformat/asfdec.c b/libavformat/asfdec.c index 7b4a0a5c473..270ba1d25ea 100644 --- a/libavformat/asfdec.c +++ b/libavformat/asfdec.c @@ -69,6 +69,7 @@ typedef struct { unsigned int packet_frag_offset; unsigned int packet_frag_size; int64_t packet_frag_timestamp; + int ts_is_pts; int packet_multi_size; int packet_time_delta; int packet_time_start; @@ -1053,6 +1054,7 @@ static int asf_read_frame_header(AVFormatContext *s, AVIOContext *pb) ts1 = avio_rl64(pb); if (ts0!= -1) asf->packet_frag_timestamp = ts0/10000; else asf->packet_frag_timestamp = AV_NOPTS_VALUE; + asf->ts_is_pts = 1; break; case 0x5B: case 0xB7: @@ -1203,7 +1205,10 @@ static int asf_parse_packet(AVFormatContext *s, AVIOContext *pb, AVPacket *pkt) /* new packet */ av_new_packet(&asf_st->pkt, asf_st->packet_obj_size); asf_st->seq = asf->packet_seq; - asf_st->pkt.dts = asf->packet_frag_timestamp - asf->hdr.preroll; + if (asf->ts_is_pts) { + asf_st->pkt.pts = asf->packet_frag_timestamp - asf->hdr.preroll; + } else + asf_st->pkt.dts = asf->packet_frag_timestamp - asf->hdr.preroll; asf_st->pkt.stream_index = asf->stream_index; asf_st->pkt.pos = asf_st->packet_pos = asf->packet_pos; asf_st->pkt_clean = 0;