[FFmpeg-cvslog] avformat/aptxdec: Don't set AV_PKT_FLAG_CORRUPT mistakenly
Andreas Rheinhardt
git at videolan.org
Mon Sep 19 18:06:52 EEST 2022
ffmpeg | branch: master | Andreas Rheinhardt <andreas.rheinhardt at outlook.com> | Sun Aug 29 22:01:16 2021 +0200| [c8707c105fc7cf3cd2ca59a5f2e645d129369d98] | committer: Andreas Rheinhardt
avformat/aptxdec: Don't set AV_PKT_FLAG_CORRUPT mistakenly
Just because we try to put multiple units of block_align bytes
(the atomic units for APTX and APTX HD) into one packet
does not mean that packets with fewer units than the
one we wanted are corrupt; only those packets that are not
a multiple of block_align are.
Signed-off-by: Andreas Rheinhardt <andreas.rheinhardt at outlook.com>
> http://git.videolan.org/gitweb.cgi/ffmpeg.git/?a=commit;h=c8707c105fc7cf3cd2ca59a5f2e645d129369d98
---
libavformat/aptxdec.c | 10 ++++++++--
1 file changed, 8 insertions(+), 2 deletions(-)
diff --git a/libavformat/aptxdec.c b/libavformat/aptxdec.c
index aa86bfe330..0637a8afde 100644
--- a/libavformat/aptxdec.c
+++ b/libavformat/aptxdec.c
@@ -74,12 +74,18 @@ static int aptx_hd_read_header(AVFormatContext *s)
static int aptx_read_packet(AVFormatContext *s, AVPacket *pkt)
{
- return av_get_packet(s->pb, pkt, APTX_PACKET_SIZE);
+ int ret = av_get_packet(s->pb, pkt, APTX_PACKET_SIZE);
+ if (ret >= 0 && !(ret % APTX_BLOCK_SIZE))
+ pkt->flags &= ~AV_PKT_FLAG_CORRUPT;
+ return ret >= 0 ? 0 : ret;
}
static int aptx_hd_read_packet(AVFormatContext *s, AVPacket *pkt)
{
- return av_get_packet(s->pb, pkt, APTX_HD_PACKET_SIZE);
+ int ret = av_get_packet(s->pb, pkt, APTX_HD_PACKET_SIZE);
+ if (ret >= 0 && !(ret % APTX_HD_BLOCK_SIZE))
+ pkt->flags &= ~AV_PKT_FLAG_CORRUPT;
+ return ret >= 0 ? 0 : ret;
}
static const AVOption aptx_options[] = {
More information about the ffmpeg-cvslog
mailing list