summaryrefslogtreecommitdiff
path: root/libavformat/asfdec.c
diff options
context:
space:
mode:
authorMichael Niedermayer <michaelni@gmx.at>2014-07-13 03:23:54 +0200
committerMichael Niedermayer <michaelni@gmx.at>2014-07-13 03:50:47 +0200
commit4eb13cdfb0aa053f7c3247a1f7ad4887ff3b367c (patch)
treeeb9c70fca7bb61ace99f5f24c9a5890c52b41ea3 /libavformat/asfdec.c
parent8202c49b43621c04e26d4a3aa83a10e1e5cc1836 (diff)
avformat/asfdec: dvrms timestamps are pts not dts
Should fix Ticket3328 Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
Diffstat (limited to 'libavformat/asfdec.c')
-rw-r--r--libavformat/asfdec.c7
1 files changed, 6 insertions, 1 deletions
diff --git a/libavformat/asfdec.c b/libavformat/asfdec.c
index 7b4a0a5c47..270ba1d25e 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;