Aug 3, 2020, 01:45 by mich...@niedermayer.cc: > On Sun, Aug 02, 2020 at 08:52:22PM +0000, Lynne wrote: > >> ffmpeg | branch: master | Lynne <d...@lynne.ee> | Sun Aug 2 22:45:00 2020 >> +0200| [b48397e7b84864f2d4c70361a4c4bed93e826753] | committer: Lynne >> >> mpegaudiodec_template: disable CRC checking for layers 1 and 2 >> >> Layers 1 and 2 use lengths in bits which are not a multiple of 8, >> and our CRC works on a per-byte basis. >> >> > http://git.videolan.org/gitweb.cgi/ffmpeg.git/?a=commit;h=b48397e7b84864f2d4c70361a4c4bed93e826753 >> --- >> >> libavcodec/mpegaudiodec_template.c | 2 +- >> 1 file changed, 1 insertion(+), 1 deletion(-) >> > > Please send patches before pushing changes like everyone else > it was just luck that i spoted this change > > there quite possibly might be people who would want to fix this instead > of disabling it. > > I for example would certainly want to take a look if i knew there was > a problem and had a testcase (when i have time) > > thx >
This actually broke decoding if both crccheck and explode were set and I broke it, so I think fixing this quickly first is better. No one else has been interested in CRC checks after all and I only noticed this because I always run my audio decoder with those settings. I did attempt to fix it myself, but like the commit comment said, it requires feeding the CRC bits instead of bytes for some inputs, as that's what the MPEG-1 spec says, and that's also what libtwolame seems to generate for 2ch 48khz inputs and 128kbps out. If you'd like to try fixing it properly you can generate an mp2 file with error protection via -c:a libtwolame -error_protection 1 and decode via ffmpeg -err_detect +crccheck <input> The CRC is otherwise the same, it still reads 16 bits at the start, skips, and reads N bits, its just the number N that changed. ISO 11172-3 Annex B defines the numbers, you can find it at http://read.pudn.com/downloads72/doc/260415/11172/11172_3_ANNEXAB.DOC Look for the table "NUMBER OF PROTECTED AUDIO_DATA BITS". You can open the doc with any code editor, it isn't a binary word doc, just uses some pseudo-markdown syntax. Reading bits for CRC isn't a common case, but I've encountered this before when trying to make the AAC-HE decoder check the CRC, so maybe having a function in libavcodec or libavutil for that would be a good idea. _______________________________________________ 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".