[FFmpeg-trac] #2266(undetermined:new): support flac crcchecks

FFmpeg trac at avcodec.org
Wed Feb 13 07:20:28 CET 2013


#2266: support flac crcchecks
-------------------------------------+-------------------------------------
               Reporter:  dericed    |                  Owner:
                   Type:             |                 Status:  new
  enhancement                        |              Component:
               Priority:  wish       |  undetermined
                Version:             |               Keywords:  flac, crc
  unspecified                        |               Blocking:
             Blocked By:             |  Analyzed by developer:  0
Reproduced by developer:  0          |
-------------------------------------+-------------------------------------
 Summary of the bug:

 FLAC uses an md5 in the header to verify that the audio data is correct.
 It also uses crcs to allow any damage to be identified more precisely.
 FFmpeg has a -err_detect crccheck option but it doesn't work on flac.

 How to reproduce:

 Apply a data fuzzer to a valid flac file.

 {{{
 ffmpeg -i test.flac -f null -err_detect crccheck -
 ffmpeg version 1.1.git Copyright (c) 2000-2013 the FFmpeg developers
   built on Feb 12 2013 19:07:29 with Apple clang version 4.1
 (tags/Apple/clang-421.11.66) (based on LLVM 3.1svn)
   configuration: --prefix=/usr/local/Cellar/ffmpeg/HEAD --enable-shared
 --enable-pthreads --enable-gpl --enable-version3 --enable-nonfree
 --enable-hardcoded-tables --enable-avresample --cc=cc --host-cflags=
 --host-ldflags= --enable-libx264 --enable-libfaac --enable-libmp3lame
 --enable-libxvid --enable-ffplay --enable-libopenjpeg --extra-
 cflags='-I/usr/local/Cellar/openjpeg/1.5.1/include/openjpeg-1.5 '
   libavutil      52. 17.101 / 52. 17.101
   libavcodec     54. 91.103 / 54. 91.103
   libavformat    54. 63.100 / 54. 63.100
   libavdevice    54.  3.103 / 54.  3.103
   libavfilter     3. 37.101 /  3. 37.101
   libswscale      2.  2.100 /  2.  2.100
   libswresample   0. 17.102 /  0. 17.102
   libpostproc    52.  2.100 / 52.  2.100
 [flac @ 0x7f932a836e00] max_analyze_duration 5000000 reached at 5088000
 microseconds
 Input #0, flac, from 'test.flac':
   Metadata:
     MAJOR_BRAND     : isom
     MINOR_VERSION   : 1
     COMPATIBLE_BRANDS: isom
     ENCODER         : Lavf54.63.100
   Duration: 00:00:30.05, bitrate: 996 kb/s
     Stream #0:0: Audio: flac, 48000 Hz, stereo, s32
 Output #0, null, to 'pipe:':
   Metadata:
     MAJOR_BRAND     : isom
     MINOR_VERSION   : 1
     COMPATIBLE_BRANDS: isom
     encoder         : Lavf54.63.100
     Stream #0:0: Audio: pcm_s16le, 48000 Hz, stereo, s16, 1536 kb/s
 Stream mapping:
   Stream #0:0 -> #0:0 (flac -> pcm_s16le)
 Press [q] to stop, [?] for help
 size=N/A time=00:00:30.04 bitrate=N/A
 video:0kB audio:5634kB subtitle:0 global headers:0kB muxing overhead
 -100.000381%
 }}}

 No error is provided, although the file is damaged with a crc mismatch.

 Via the flac utility the same file is assessed like this:

 {{{
 flac -d -V test.flac

 flac 1.2.1, Copyright (C) 2000,2001,2002,2003,2004,2005,2006,2007  Josh
 Coalson
 flac comes with ABSOLUTELY NO WARRANTY.  This is free software, and you
 are
 welcome to redistribute it under certain conditions.  Type `flac' for
 details.

 test.flac: 20% completetest.flac: *** Got error code
 2:FLAC__STREAM_DECODER_ERROR_STATUS_FRAME_CRC_MISMATCH


 test.flac: ERROR while decoding data
            state = FLAC__STREAM_DECODER_READ_FRAME
 }}}

 Although flac acknowledges the presence of an error it only notes that it
 occurs ~20% into the decoding. I would recommend ffmpeg report the pts of
 where the error is identified, similar to how the crccheck is reported in
 ffv1.3.

-- 
Ticket URL: <https://ffmpeg.org/trac/ffmpeg/ticket/2266>
FFmpeg <http://ffmpeg.org>
FFmpeg issue tracker


More information about the FFmpeg-trac mailing list