|
|
|
@@ -28,6 +28,7 @@ |
|
|
|
#define AVCODEC_FLAC_H |
|
|
|
|
|
|
|
#include "avcodec.h" |
|
|
|
#include "bytestream.h" |
|
|
|
#include "get_bits.h" |
|
|
|
|
|
|
|
#define FLAC_STREAMINFO_SIZE 34 |
|
|
|
@@ -109,15 +110,10 @@ int avpriv_flac_is_extradata_valid(AVCodecContext *avctx, |
|
|
|
enum FLACExtradataFormat *format, |
|
|
|
uint8_t **streaminfo_start); |
|
|
|
|
|
|
|
/** |
|
|
|
* Parse the metadata block parameters from the header. |
|
|
|
* @param[in] block_header header data, at least 4 bytes |
|
|
|
* @param[out] last indicator for last metadata block |
|
|
|
* @param[out] type metadata block type |
|
|
|
* @param[out] size metadata block size |
|
|
|
*/ |
|
|
|
#if LIBAVCODEC_VERSION_MAJOR < 56 |
|
|
|
void avpriv_flac_parse_block_header(const uint8_t *block_header, |
|
|
|
int *last, int *type, int *size); |
|
|
|
#endif |
|
|
|
|
|
|
|
/** |
|
|
|
* Calculate an estimate for the maximum frame size based on verbatim mode. |
|
|
|
@@ -140,4 +136,23 @@ int ff_flac_decode_frame_header(AVCodecContext *avctx, GetBitContext *gb, |
|
|
|
|
|
|
|
void ff_flac_set_channel_layout(AVCodecContext *avctx); |
|
|
|
|
|
|
|
/** |
|
|
|
* Parse the metadata block parameters from the header. |
|
|
|
* @param[in] block_header header data, at least 4 bytes |
|
|
|
* @param[out] last indicator for last metadata block |
|
|
|
* @param[out] type metadata block type |
|
|
|
* @param[out] size metadata block size |
|
|
|
*/ |
|
|
|
static av_always_inline void flac_parse_block_header(const uint8_t *block_header, |
|
|
|
int *last, int *type, int *size) |
|
|
|
{ |
|
|
|
int tmp = bytestream_get_byte(&block_header); |
|
|
|
if (last) |
|
|
|
*last = tmp & 0x80; |
|
|
|
if (type) |
|
|
|
*type = tmp & 0x7F; |
|
|
|
if (size) |
|
|
|
*size = bytestream_get_be24(&block_header); |
|
|
|
} |
|
|
|
|
|
|
|
#endif /* AVCODEC_FLAC_H */ |