FFmpeg  4.0
Data Structures | Macros | Enumerations | Functions
flac.h File Reference

FLAC (Free Lossless Audio Codec) decoder/demuxer common functions. More...

#include "avcodec.h"
#include "bytestream.h"
#include "get_bits.h"

Go to the source code of this file.

Data Structures

struct  FLACStreaminfo
 
struct  FLACFrameInfo
 

Macros

#define FLAC_STREAMINFO_SIZE   34
 
#define FLAC_MAX_CHANNELS   8
 
#define FLAC_MIN_BLOCKSIZE   16
 
#define FLAC_MAX_BLOCKSIZE   65535
 
#define FLAC_MIN_FRAME_SIZE   11
 
#define FLACCOMMONINFO
 bits-per-sample More...
 
#define FLACSTREAMINFO
 Data needed from the Streaminfo header for use by the raw FLAC demuxer and/or the FLAC decoder. More...
 

Enumerations

enum  { FLAC_CHMODE_INDEPENDENT = 0, FLAC_CHMODE_LEFT_SIDE = 1, FLAC_CHMODE_RIGHT_SIDE = 2, FLAC_CHMODE_MID_SIDE = 3 }
 
enum  {
  FLAC_METADATA_TYPE_STREAMINFO = 0, FLAC_METADATA_TYPE_PADDING, FLAC_METADATA_TYPE_APPLICATION, FLAC_METADATA_TYPE_SEEKTABLE,
  FLAC_METADATA_TYPE_VORBIS_COMMENT, FLAC_METADATA_TYPE_CUESHEET, FLAC_METADATA_TYPE_PICTURE, FLAC_METADATA_TYPE_INVALID = 127
}
 
enum  FLACExtradataFormat { FLAC_EXTRADATA_FORMAT_STREAMINFO = 0, FLAC_EXTRADATA_FORMAT_FULL_HEADER = 1 }
 

Functions

int ff_flac_parse_streaminfo (AVCodecContext *avctx, struct FLACStreaminfo *s, const uint8_t *buffer)
 Parse the Streaminfo metadata block. More...
 
int ff_flac_is_extradata_valid (AVCodecContext *avctx, enum FLACExtradataFormat *format, uint8_t **streaminfo_start)
 Validate the FLAC extradata. More...
 
int ff_flac_get_max_frame_size (int blocksize, int ch, int bps)
 Calculate an estimate for the maximum frame size based on verbatim mode. More...
 
int ff_flac_decode_frame_header (AVCodecContext *avctx, GetBitContext *gb, FLACFrameInfo *fi, int log_level_offset)
 Validate and decode a frame header. More...
 
void ff_flac_set_channel_layout (AVCodecContext *avctx)
 
static av_always_inline void flac_parse_block_header (const uint8_t *block_header, int *last, int *type, int *size)
 Parse the metadata block parameters from the header. More...
 

Detailed Description

FLAC (Free Lossless Audio Codec) decoder/demuxer common functions.

Definition in file flac.h.

Macro Definition Documentation

◆ FLAC_STREAMINFO_SIZE

#define FLAC_STREAMINFO_SIZE   34

◆ FLAC_MAX_CHANNELS

#define FLAC_MAX_CHANNELS   8

◆ FLAC_MIN_BLOCKSIZE

#define FLAC_MIN_BLOCKSIZE   16

Definition at line 36 of file flac.h.

Referenced by ff_flac_parse_streaminfo(), and flac_encode_init().

◆ FLAC_MAX_BLOCKSIZE

#define FLAC_MAX_BLOCKSIZE   65535

Definition at line 37 of file flac.h.

Referenced by decode_frame(), flac_decode_frame(), and flac_encode_init().

◆ FLAC_MIN_FRAME_SIZE

#define FLAC_MIN_FRAME_SIZE   11

Definition at line 38 of file flac.h.

Referenced by flac_decode_frame().

◆ FLACCOMMONINFO

#define FLACCOMMONINFO
Value:
int samplerate; /**< sample rate */\
int channels; /**< number of channels */\
int bps;
channels
Definition: aptx.c:30
unsigned bps
Definition: movenc.c:1456

bits-per-sample

Definition at line 63 of file flac.h.

◆ FLACSTREAMINFO

#define FLACSTREAMINFO
Value:
FLACCOMMONINFO \
int max_blocksize; /**< maximum block size, in samples */\
int max_framesize; /**< maximum frame size, in bytes */\
int64_t samples;

Data needed from the Streaminfo header for use by the raw FLAC demuxer and/or the FLAC decoder.

total number of samples

Definition at line 73 of file flac.h.

Enumeration Type Documentation

◆ anonymous enum

anonymous enum
Enumerator
FLAC_CHMODE_INDEPENDENT 
FLAC_CHMODE_LEFT_SIDE 
FLAC_CHMODE_RIGHT_SIDE 
FLAC_CHMODE_MID_SIDE 

Definition at line 40 of file flac.h.

◆ anonymous enum

anonymous enum
Enumerator
FLAC_METADATA_TYPE_STREAMINFO 
FLAC_METADATA_TYPE_PADDING 
FLAC_METADATA_TYPE_APPLICATION 
FLAC_METADATA_TYPE_SEEKTABLE 
FLAC_METADATA_TYPE_VORBIS_COMMENT 
FLAC_METADATA_TYPE_CUESHEET 
FLAC_METADATA_TYPE_PICTURE 
FLAC_METADATA_TYPE_INVALID 

Definition at line 47 of file flac.h.

◆ FLACExtradataFormat

Enumerator
FLAC_EXTRADATA_FORMAT_STREAMINFO 
FLAC_EXTRADATA_FORMAT_FULL_HEADER 

Definition at line 58 of file flac.h.

Function Documentation

◆ ff_flac_parse_streaminfo()

int ff_flac_parse_streaminfo ( AVCodecContext avctx,
struct FLACStreaminfo s,
const uint8_t buffer 
)

Parse the Streaminfo metadata block.

Parameters
[out]avctxcodec context to set basic stream parameters
[out]swhere parsed information is stored
[in]bufferpointer to start of 34-byte streaminfo data
Returns
negative error code on faiure or >= 0 on success

Definition at line 204 of file flac.c.

Referenced by flac_decode_init(), and parse_streaminfo().

◆ ff_flac_is_extradata_valid()

int ff_flac_is_extradata_valid ( AVCodecContext avctx,
enum FLACExtradataFormat format,
uint8_t **  streaminfo_start 
)

Validate the FLAC extradata.

Parameters
[in]avctxcodec context containing the extradata.
[out]formatextradata format.
[out]streaminfo_startpointer to start of 34-byte STREAMINFO data.
Returns
1 if valid, 0 if not valid.

Definition at line 169 of file flac.c.

Referenced by flac_decode_init().

◆ ff_flac_get_max_frame_size()

int ff_flac_get_max_frame_size ( int  blocksize,
int  ch,
int  bps 
)

Calculate an estimate for the maximum frame size based on verbatim mode.

Parameters
blocksizeblock size, in samples
chnumber of channels
bpsbits-per-sample

Definition at line 148 of file flac.c.

Referenced by flac_decode_frame(), flac_encode_frame(), and flac_encode_init().

◆ ff_flac_decode_frame_header()

int ff_flac_decode_frame_header ( AVCodecContext avctx,
GetBitContext gb,
FLACFrameInfo fi,
int  log_level_offset 
)

Validate and decode a frame header.

Parameters
avctxAVCodecContext to use as av_log() context
gbGetBitContext from which to read frame header
[out]fiframe information
log_level_offsetlog level offset. can be used to silence error messages.
Returns
non-zero on error, 0 if ok

Definition at line 50 of file flac.c.

Referenced by decode_frame(), and frame_header_is_valid().

◆ ff_flac_set_channel_layout()

void ff_flac_set_channel_layout ( AVCodecContext avctx)

Definition at line 196 of file flac.c.

Referenced by decode_frame(), ff_flac_parse_streaminfo(), and get_best_header().

◆ flac_parse_block_header()

static av_always_inline void flac_parse_block_header ( const uint8_t block_header,
int last,
int type,
int size 
)
static

Parse the metadata block parameters from the header.

Parameters
[in]block_headerheader data, at least 4 bytes
[out]lastindicator for last metadata block
[out]typemetadata block type
[out]sizemetadata block size

Definition at line 145 of file flac.h.

Referenced by flac_read_header(), get_metadata_size(), matroska_parse_flac(), mov_read_dfla(), and parse_streaminfo().