FFmpeg
Functions | Variables
flac.c File Reference
#include "libavutil/channel_layout.h"
#include "libavutil/crc.h"
#include "libavutil/log.h"
#include "bytestream.h"
#include "get_bits.h"
#include "flac.h"
#include "flacdata.h"

Go to the source code of this file.

Functions

static int64_t get_utf8 (GetBitContext *gb)
 
int ff_flac_decode_frame_header (AVCodecContext *avctx, GetBitContext *gb, FLACFrameInfo *fi, int log_level_offset)
 Validate and decode a frame header. 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_is_extradata_valid (AVCodecContext *avctx, enum FLACExtradataFormat *format, uint8_t **streaminfo_start)
 Validate the FLAC extradata. More...
 
void ff_flac_set_channel_layout (AVCodecContext *avctx)
 
int ff_flac_parse_streaminfo (AVCodecContext *avctx, struct FLACStreaminfo *s, const uint8_t *buffer)
 Parse the Streaminfo metadata block. More...
 

Variables

static const int8_t sample_size_table [] = { 0, 8, 12, 0, 16, 20, 24, 0 }
 
static const uint64_t flac_channel_layouts [8]
 

Function Documentation

◆ get_utf8()

static int64_t get_utf8 ( GetBitContext gb)
static

Definition at line 43 of file flac.c.

Referenced by ff_flac_decode_frame_header().

◆ 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_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_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_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().

◆ 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().

Variable Documentation

◆ sample_size_table

const int8_t sample_size_table[] = { 0, 8, 12, 0, 16, 20, 24, 0 }
static

Definition at line 30 of file flac.c.

Referenced by ff_flac_decode_frame_header().

◆ flac_channel_layouts

const uint64_t flac_channel_layouts[8]
static
AV_CH_LAYOUT_6POINT1
#define AV_CH_LAYOUT_6POINT1
Definition: channel_layout.h:102
AV_CH_LAYOUT_MONO
#define AV_CH_LAYOUT_MONO
Definition: channel_layout.h:85
AV_CH_LAYOUT_STEREO
#define AV_CH_LAYOUT_STEREO
Definition: channel_layout.h:86
AV_CH_LAYOUT_QUAD
#define AV_CH_LAYOUT_QUAD
Definition: channel_layout.h:94
AV_CH_LAYOUT_5POINT1
#define AV_CH_LAYOUT_5POINT1
Definition: channel_layout.h:96
AV_CH_LAYOUT_5POINT0
#define AV_CH_LAYOUT_5POINT0
Definition: channel_layout.h:95
AV_CH_LAYOUT_7POINT1
#define AV_CH_LAYOUT_7POINT1
Definition: channel_layout.h:107
AV_CH_LAYOUT_SURROUND
#define AV_CH_LAYOUT_SURROUND
Definition: channel_layout.h:89