Signed-off-by: Zane van Iperen <z...@zanevaniperen.com> --- libavformat/argo_brp.c | 18 +++++++++++------- 1 file changed, 11 insertions(+), 7 deletions(-)
diff --git a/libavformat/argo_brp.c b/libavformat/argo_brp.c index a3e9846c74..3a5a0c0497 100644 --- a/libavformat/argo_brp.c +++ b/libavformat/argo_brp.c @@ -78,8 +78,8 @@ typedef struct ArgoBRPStreamHeader { typedef struct ArgoBRPDemuxContext { ArgoBRPFileHeader fhdr; ArgoBRPStreamHeader *streams; - /* To know how much of a BASF to give. */ - int64_t lastpts; + /* Current PTS converted into BASF timebase (samples). */ + int64_t currpts; int hit_eof; /* BASF-specific fields. */ @@ -88,7 +88,6 @@ typedef struct ArgoBRPDemuxContext { ArgoASFChunkHeader ckhdr; uint32_t blocks_read; int64_t offset; - /* ms, not samples. */ int64_t lastpts; } basf; } ArgoBRPDemuxContext; @@ -352,7 +351,7 @@ static int argo_brp_read_basf(AVFormatContext *s, AVPacket *pkt, if (brp->basf.blocks_read >= ckhdr->num_blocks) return 0; - if (!ignorepts && brp->lastpts < brp->basf.lastpts) + if (!ignorepts && brp->currpts < brp->basf.lastpts) return 0; if ((ret = avio_tell(s->pb)) < 0) @@ -377,8 +376,7 @@ static int argo_brp_read_basf(AVFormatContext *s, AVPacket *pkt, brp->basf.offset += pkt->size; brp->basf.blocks_read += blocks_read; - /* Need the ceil() because ((1 * 32 * 1000) / 44100) < 1 */ - brp->basf.lastpts += ceilf((blocks_read * ckhdr->num_samples * 1000.0f) / ckhdr->sample_rate); + brp->basf.lastpts += blocks_read * brp->basf.ckhdr.num_samples; return 1; } @@ -434,7 +432,13 @@ static int argo_brp_read_packet(AVFormatContext *s, AVPacket *pkt) pkt->stream_index = blk.stream_id; pkt->pts = blk.start_ms; - brp->lastpts = FFMAX(brp->lastpts, blk.start_ms); + + if (brp->basf.index >= 0) { + int64_t pts = av_rescale_rnd(blk.start_ms, brp->basf.ckhdr.sample_rate, + 1000, AV_ROUND_UP); + brp->currpts = FFMAX(brp->currpts, pts); + } + return 0; } -- 2.25.4 _______________________________________________ ffmpeg-devel mailing list ffmpeg-devel@ffmpeg.org https://ffmpeg.org/mailman/listinfo/ffmpeg-devel To unsubscribe, visit link above, or email ffmpeg-devel-requ...@ffmpeg.org with subject "unsubscribe".