Paul B Mahol: > Improves decoding speed by 24x > > Signed-off-by: Paul B Mahol <one...@gmail.com> > --- > libavformat/adxdec.c | 23 +++++++++++++++-------- > 1 file changed, 15 insertions(+), 8 deletions(-) > > diff --git a/libavformat/adxdec.c b/libavformat/adxdec.c > index ccd5049acd..0e4c251cfc 100644 > --- a/libavformat/adxdec.c > +++ b/libavformat/adxdec.c > @@ -53,6 +53,9 @@ static int adx_read_packet(AVFormatContext *s, AVPacket > *pkt) > AVCodecParameters *par = s->streams[0]->codecpar; > int ret, size; > > + if (avio_feof(s->pb)) > + return AVERROR_EOF; > + > if (par->channels <= 0) { > av_log(s, AV_LOG_ERROR, "invalid number of channels %d\n", > par->channels); > return AVERROR_INVALIDDATA; > @@ -63,16 +66,20 @@ static int adx_read_packet(AVFormatContext *s, AVPacket > *pkt) > pkt->pos = avio_tell(s->pb); > pkt->stream_index = 0; > > - ret = av_get_packet(s->pb, pkt, size); > - if (ret != size) { > - return ret < 0 ? ret : AVERROR(EIO); > - } > - if (AV_RB16(pkt->data) & 0x8000) { > - return AVERROR_EOF; > + ret = av_get_packet(s->pb, pkt, size * 128); > + if (ret < 0) > + return ret; > + if ((ret % size) && ret >= size) {
So if ret < size you don't set the corrupt flag. Why? > + size = ret - (ret % size); > + av_shrink_packet(pkt, size); > + pkt->flags &= ~AV_PKT_FLAG_CORRUPT; > + } else { > + size = ret; > } > + > pkt->size = size; This line makes no sense any more: If the first branch above is taken, av_shrink_packet() will already set the size; in the other branch, av_get_packet() already did. > - pkt->duration = 1; > - pkt->pts = (pkt->pos - c->header_size) / size; > + pkt->duration = size / (BLOCK_SIZE * par->channels); > + pkt->pts = (pkt->pos - c->header_size) / (BLOCK_SIZE * > par->channels); > > return 0; > } > _______________________________________________ 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".