Corrigir FLAC usando MD5 colocado em STREAMINFO

4

Eu sei de [Sources], que o FLAC calcula CRC e MD5.

O que eu tenho medo é que flac --test só faça o teste de CRC - como indicado em man flac : same as -d except no decoded file is written .

Como verificar a correção do arquivo flac, usando MD5 de PCM bruto colocado em STREAMINFO em determinado arquivo .flac?

Se flac --test faz trabalho, há alguma referência confiável (como na documentação flac) que mostre isso?

Fontes:

link podemos encontrar:

FLAC uses CRC checksums for identifying corrupted frames when used in a streaming protocol, and also has a complete MD5 hash of the raw PCM audio stored in its STREAMINFO metadata header.

link

By default when processing files, flac computes the MD5 sum while encoding and decoding.

Para ver o md5sums no STEAMINFO, podemos usar:

$ metaflac --show-md5sum *.flac
    
por Grzegorz Wierzowiecki 03.10.2011 / 16:47

2 respostas

4

A fonte mais confiável é o próprio código-fonte, e sugere que o MD5 armazenado em STREAMINFO seja verificado por padrão.

    
por 24.02.2012 / 22:28
0

link mostra esta informação:

Instead, when you decompress or use flac's Test feature, FLAC automatically verifies each file against an internal checksum stored in the file.

Note that a flac fingerprint isn't a checksum of the encoded flac data - it's a checksum of the decoded music data. So to test the file, flac decodes the data in the file and verifies that the checksum of the music data matches the (internally stored) flac fingerprint.

This has a few interesting implications:

When flac decodes, it checks the file (and each part of the file) against the internal checksum data. If a flac file decodes without error, it's a good file - as long as you are using an application that reports decoding errors!

Isto parece implicar que tanto o CRC quanto o MD5 são verificados, uma vez que os CRCs são apenas para quadros. Fiz um pequeno teste e recebi 2:FLAC__STREAM_DECODER_ERROR_STATUS_FRAME_CRC_MISMATCH , o que é esperado. Analisando o código , o seguinte implica que está sempre marcado:

/*
 * undocumented debugging options for the test suite
 */
{ "no-md5-sum"                , share__no_argument, 0, 0 },

Por padrão, está definido :

FLAC__stream_decoder_set_md5_checking(decoder_session->decoder, true);

Set the "MD5 signature checking" flag. If true, the decoder will compute the MD5 signature of the unencoded audio data while decoding and compare it to the signature from the STREAMINFO block, if it exists, during FLAC__stream_decoder_finish().

É como a resposta de sendmoreinfo indica:

The most reliable source is the source code itself, and it does suggest that MD5 stored in STREAMINFO is checked by default.

    
por 17.03.2017 / 23:51