avformat/argo_brp: set BVID packet duration

Signed-off-by: Zane van Iperen <zane@zanevaniperen.com>
pull/352/head
Zane van Iperen 4 years ago
parent 52c5c97740
commit 9ab54eb501
No known key found for this signature in database
GPG Key ID: 68616B2D8AC4DCC5
  1. 5
      libavformat/argo_brp.c

@ -306,6 +306,7 @@ static int argo_brp_read_packet(AVFormatContext *s, AVPacket *pkt)
{ {
ArgoBRPDemuxContext *brp = s->priv_data; ArgoBRPDemuxContext *brp = s->priv_data;
ArgoBRPBlockHeader blk; ArgoBRPBlockHeader blk;
const ArgoBRPStreamHeader *shdr;
AVStream *st; AVStream *st;
uint8_t buf[BRP_MIN_BUFFER_SIZE]; uint8_t buf[BRP_MIN_BUFFER_SIZE];
ArgoASFChunkHeader ckhdr; ArgoASFChunkHeader ckhdr;
@ -327,6 +328,7 @@ static int argo_brp_read_packet(AVFormatContext *s, AVPacket *pkt)
return AVERROR_INVALIDDATA; return AVERROR_INVALIDDATA;
st = s->streams[blk.stream_id]; st = s->streams[blk.stream_id];
shdr = brp->streams + blk.stream_id;
if (blk.stream_id == brp->basf.index) { if (blk.stream_id == brp->basf.index) {
if (blk.size < ASF_CHUNK_HEADER_SIZE) if (blk.size < ASF_CHUNK_HEADER_SIZE)
@ -358,6 +360,9 @@ static int argo_brp_read_packet(AVFormatContext *s, AVPacket *pkt)
if (blk.stream_id == brp->basf.index) { if (blk.stream_id == brp->basf.index) {
pkt->duration = ckhdr.num_samples * ckhdr.num_blocks; pkt->duration = ckhdr.num_samples * ckhdr.num_blocks;
pkt->pts = av_rescale_rnd(blk.start_ms, ckhdr.sample_rate, 1000, AV_ROUND_UP); pkt->pts = av_rescale_rnd(blk.start_ms, ckhdr.sample_rate, 1000, AV_ROUND_UP);
} else if (shdr->codec_id == BRP_CODEC_ID_BVID) {
pkt->duration = av_rescale_rnd(1, st->duration, shdr->extradata.bvid.num_frames, AV_ROUND_UP);
pkt->pts = blk.start_ms;
} else { } else {
pkt->pts = blk.start_ms; pkt->pts = blk.start_ms;
} }

Loading…
Cancel
Save