X-Git-Url: https://git.sesse.net/?a=blobdiff_plain;f=libavformat%2Fpcm.c;h=767bbd045a9945d2f062710d848c818b21baea5d;hb=4f484edaa7ca839fa230f9e3aace14acfcceba56;hp=806f91b6b135e167637c90143a110cfdceb082de;hpb=0018f17f233d5a702513b7f83eadff8d15f08883;p=ffmpeg diff --git a/libavformat/pcm.c b/libavformat/pcm.c index 806f91b6b13..767bbd045a9 100644 --- a/libavformat/pcm.c +++ b/libavformat/pcm.c @@ -28,13 +28,20 @@ int ff_pcm_read_packet(AVFormatContext *s, AVPacket *pkt) { + AVCodecParameters *par = s->streams[0]->codecpar; int ret, size; - size= RAW_SAMPLES*s->streams[0]->codecpar->block_align; - if (size <= 0) + if (par->block_align <= 0) return AVERROR(EINVAL); - ret= av_get_packet(s->pb, pkt, size); + /* + * Compute read size to complete a read every 62ms. + * Clamp to RAW_SAMPLES if larger. + */ + size = FFMAX(par->sample_rate/25, 1); + size = FFMIN(size, RAW_SAMPLES) * par->block_align; + + ret = av_get_packet(s->pb, pkt, size); pkt->flags &= ~AV_PKT_FLAG_CORRUPT; pkt->stream_index = 0;