# FLAC: FLAC/format.h: format components

FLAC/format.h: format components
FLAC C API

## Classes

struct | FLAC__EntropyCodingMethod_PartitionedRiceContents
struct | FLAC__EntropyCodingMethod_PartitionedRice
struct | FLAC__EntropyCodingMethod
struct | FLAC__Subframe_Constant
struct | FLAC__Subframe_Verbatim
struct | FLAC__Subframe_Fixed
struct | FLAC__Subframe_LPC
struct | FLAC__Subframe
struct | FLAC__FrameHeader
struct | FLAC__FrameFooter
struct | FLAC__Frame
struct | FLAC__StreamMetadata_StreamInfo
struct | FLAC__StreamMetadata_Padding
struct | FLAC__StreamMetadata_Application
struct | FLAC__StreamMetadata_SeekPoint
struct | FLAC__StreamMetadata_SeekTable
struct | FLAC__StreamMetadata_VorbisComment_Entry
struct | FLAC__StreamMetadata_VorbisComment
struct | FLAC__StreamMetadata_CueSheet_Index
struct | FLAC__StreamMetadata_CueSheet_Track
struct | FLAC__StreamMetadata_CueSheet
struct | FLAC__StreamMetadata_Picture
struct | FLAC__StreamMetadata_Unknown
struct | FLAC__StreamMetadata

## Macros

#define | FLAC__MAX_METADATA_TYPE_CODE (126u)
#define | FLAC__MIN_BLOCK_SIZE (16u)
#define | FLAC__MAX_BLOCK_SIZE (65535u)
#define | FLAC__SUBSET_MAX_BLOCK_SIZE_48000HZ (4608u)
#define | FLAC__MAX_CHANNELS (8u)
#define | FLAC__MIN_BITS_PER_SAMPLE (4u)
#define | FLAC__MAX_BITS_PER_SAMPLE (32u)
#define | FLAC__REFERENCE_CODEC_MAX_BITS_PER_SAMPLE (24u)
#define | FLAC__MAX_SAMPLE_RATE (655350u)
#define | FLAC__MAX_LPC_ORDER (32u)
#define | FLAC__SUBSET_MAX_LPC_ORDER_48000HZ (12u)
#define | FLAC__MIN_QLP_COEFF_PRECISION (5u)
#define | FLAC__MAX_QLP_COEFF_PRECISION (15u)
#define | FLAC__MAX_FIXED_ORDER (4u)
#define | FLAC__MAX_RICE_PARTITION_ORDER (15u)
#define | FLAC__SUBSET_MAX_RICE_PARTITION_ORDER (8u)
#define | FLAC__STREAM_SYNC_LENGTH (4u)
#define | FLAC__STREAM_METADATA_STREAMINFO_LENGTH (34u)
#define | FLAC__STREAM_METADATA_SEEKPOINT_LENGTH (18u)
#define | FLAC__STREAM_METADATA_HEADER_LENGTH (4u)

## Enumerations

enum | FLAC__EntropyCodingMethodType { FLAC__ENTROPY_CODING_METHOD_PARTITIONED_RICE = 0, FLAC__ENTROPY_CODING_METHOD_PARTITIONED_RICE2 = 1 }
enum | FLAC__SubframeType { FLAC__SUBFRAME_TYPE_CONSTANT = 0, FLAC__SUBFRAME_TYPE_VERBATIM = 1, FLAC__SUBFRAME_TYPE_FIXED = 2, FLAC__SUBFRAME_TYPE_LPC = 3 }
enum | FLAC__ChannelAssignment { FLAC__CHANNEL_ASSIGNMENT_INDEPENDENT = 0, FLAC__CHANNEL_ASSIGNMENT_LEFT_SIDE = 1, FLAC__CHANNEL_ASSIGNMENT_RIGHT_SIDE = 2, FLAC__CHANNEL_ASSIGNMENT_MID_SIDE = 3 }
enum | FLAC__FrameNumberType { FLAC__FRAME_NUMBER_TYPE_FRAME_NUMBER, FLAC__FRAME_NUMBER_TYPE_SAMPLE_NUMBER }
enum | FLAC__MetadataType { FLAC__METADATA_TYPE_STREAMINFO = 0, FLAC__METADATA_TYPE_PADDING = 1, FLAC__METADATA_TYPE_APPLICATION = 2, FLAC__METADATA_TYPE_SEEKTABLE = 3, FLAC__METADATA_TYPE_VORBIS_COMMENT = 4, FLAC__METADATA_TYPE_CUESHEET = 5, FLAC__METADATA_TYPE_PICTURE = 6, FLAC__METADATA_TYPE_UNDEFINED = 7, FLAC__MAX_METADATA_TYPE = FLAC__MAX_METADATA_TYPE_CODE }

enum

FLAC__StreamMetadata_Picture_Type {
FLAC__STREAM_METADATA_PICTURE_TYPE_OTHER = 0, FLAC__STREAM_METADATA_PICTURE_TYPE_FILE_ICON_STANDARD = 1, FLAC__STREAM_METADATA_PICTURE_TYPE_FILE_ICON = 2, FLAC__STREAM_METADATA_PICTURE_TYPE_FRONT_COVER = 3,
FLAC__STREAM_METADATA_PICTURE_TYPE_BACK_COVER = 4, FLAC__STREAM_METADATA_PICTURE_TYPE_LEAFLET_PAGE = 5, FLAC__STREAM_METADATA_PICTURE_TYPE_MEDIA = 6, FLAC__STREAM_METADATA_PICTURE_TYPE_LEAD_ARTIST = 7,
FLAC__STREAM_METADATA_PICTURE_TYPE_ARTIST = 8, FLAC__STREAM_METADATA_PICTURE_TYPE_CONDUCTOR = 9, FLAC__STREAM_METADATA_PICTURE_TYPE_BAND = 10, FLAC__STREAM_METADATA_PICTURE_TYPE_COMPOSER = 11,
FLAC__STREAM_METADATA_PICTURE_TYPE_LYRICIST = 12, FLAC__STREAM_METADATA_PICTURE_TYPE_RECORDING_LOCATION = 13, FLAC__STREAM_METADATA_PICTURE_TYPE_DURING_RECORDING = 14, FLAC__STREAM_METADATA_PICTURE_TYPE_DURING_PERFORMANCE = 15,
FLAC__STREAM_METADATA_PICTURE_TYPE_VIDEO_SCREEN_CAPTURE = 16, FLAC__STREAM_METADATA_PICTURE_TYPE_FISH = 17, FLAC__STREAM_METADATA_PICTURE_TYPE_ILLUSTRATION = 18, FLAC__STREAM_METADATA_PICTURE_TYPE_BAND_LOGOTYPE = 19,
FLAC__STREAM_METADATA_PICTURE_TYPE_PUBLISHER_LOGOTYPE = 20, FLAC__STREAM_METADATA_PICTURE_TYPE_UNDEFINED
}

## Functions

FLAC__bool | FLAC__format_sample_rate_is_valid (uint32_t sample_rate)
FLAC__bool | FLAC__format_blocksize_is_subset (uint32_t blocksize, uint32_t sample_rate)
FLAC__bool | FLAC__format_sample_rate_is_subset (uint32_t sample_rate)
FLAC__bool | FLAC__format_vorbiscomment_entry_name_is_legal (const char *name)
FLAC__bool | FLAC__format_vorbiscomment_entry_value_is_legal (const FLAC__byte *value, uint32_t length)
FLAC__bool | FLAC__format_vorbiscomment_entry_is_legal (const FLAC__byte *entry, uint32_t length)
FLAC__bool | FLAC__format_seektable_is_legal (const FLAC__StreamMetadata_SeekTable *seek_table)
uint32_t | FLAC__format_seektable_sort (FLAC__StreamMetadata_SeekTable *seek_table)
FLAC__bool | FLAC__format_cuesheet_is_legal (const FLAC__StreamMetadata_CueSheet *cue_sheet, FLAC__bool check_cd_da_subset, const char **violation)
FLAC__bool | FLAC__format_picture_is_legal (const FLAC__StreamMetadata_Picture *picture, const char **violation)

## Variables

const char * | FLAC__VERSION_STRING
const char * | FLAC__VENDOR_STRING
const FLAC__byte | FLAC__STREAM_SYNC_STRING [4]
const uint32_t | FLAC__STREAM_SYNC
const uint32_t | FLAC__STREAM_SYNC_LEN
const char *const | FLAC__EntropyCodingMethodTypeString []
const uint32_t | FLAC__ENTROPY_CODING_METHOD_PARTITIONED_RICE_ORDER_LEN
const uint32_t | FLAC__ENTROPY_CODING_METHOD_PARTITIONED_RICE_PARAMETER_LEN
const uint32_t | FLAC__ENTROPY_CODING_METHOD_PARTITIONED_RICE2_PARAMETER_LEN
const uint32_t | FLAC__ENTROPY_CODING_METHOD_PARTITIONED_RICE_RAW_LEN
const uint32_t | FLAC__ENTROPY_CODING_METHOD_PARTITIONED_RICE_ESCAPE_PARAMETER
const uint32_t | FLAC__ENTROPY_CODING_METHOD_PARTITIONED_RICE2_ESCAPE_PARAMETER
const uint32_t | FLAC__ENTROPY_CODING_METHOD_TYPE_LEN
const char *const | FLAC__SubframeTypeString []
const uint32_t | FLAC__SUBFRAME_LPC_QLP_COEFF_PRECISION_LEN
const uint32_t | FLAC__SUBFRAME_LPC_QLP_SHIFT_LEN
const uint32_t | FLAC__SUBFRAME_ZERO_PAD_LEN
const uint32_t | FLAC__SUBFRAME_TYPE_LEN
const uint32_t | FLAC__SUBFRAME_WASTED_BITS_FLAG_LEN
const uint32_t | FLAC__SUBFRAME_TYPE_CONSTANT_BYTE_ALIGNED_MASK
const uint32_t | FLAC__SUBFRAME_TYPE_VERBATIM_BYTE_ALIGNED_MASK
const uint32_t | FLAC__SUBFRAME_TYPE_FIXED_BYTE_ALIGNED_MASK
const uint32_t | FLAC__SUBFRAME_TYPE_LPC_BYTE_ALIGNED_MASK
const char *const | FLAC__ChannelAssignmentString []
const char *const | FLAC__FrameNumberTypeString []
const uint32_t | FLAC__FRAME_HEADER_SYNC
const uint32_t | FLAC__FRAME_HEADER_SYNC_LEN
const uint32_t | FLAC__FRAME_HEADER_RESERVED_LEN
const uint32_t | FLAC__FRAME_HEADER_BLOCKING_STRATEGY_LEN
const uint32_t | FLAC__FRAME_HEADER_BLOCK_SIZE_LEN
const uint32_t | FLAC__FRAME_HEADER_SAMPLE_RATE_LEN
const uint32_t | FLAC__FRAME_HEADER_CHANNEL_ASSIGNMENT_LEN
const uint32_t | FLAC__FRAME_HEADER_BITS_PER_SAMPLE_LEN
const uint32_t | FLAC__FRAME_HEADER_ZERO_PAD_LEN
const uint32_t | FLAC__FRAME_HEADER_CRC_LEN
const uint32_t | FLAC__FRAME_FOOTER_CRC_LEN
const char *const | FLAC__MetadataTypeString []
const uint32_t | FLAC__STREAM_METADATA_STREAMINFO_MIN_BLOCK_SIZE_LEN
const uint32_t | FLAC__STREAM_METADATA_STREAMINFO_MAX_BLOCK_SIZE_LEN
const uint32_t | FLAC__STREAM_METADATA_STREAMINFO_MIN_FRAME_SIZE_LEN
const uint32_t | FLAC__STREAM_METADATA_STREAMINFO_MAX_FRAME_SIZE_LEN
const uint32_t | FLAC__STREAM_METADATA_STREAMINFO_SAMPLE_RATE_LEN
const uint32_t | FLAC__STREAM_METADATA_STREAMINFO_CHANNELS_LEN
const uint32_t | FLAC__STREAM_METADATA_STREAMINFO_BITS_PER_SAMPLE_LEN
const uint32_t | FLAC__STREAM_METADATA_STREAMINFO_TOTAL_SAMPLES_LEN
const uint32_t | FLAC__STREAM_METADATA_STREAMINFO_MD5SUM_LEN
const uint32_t | FLAC__STREAM_METADATA_APPLICATION_ID_LEN
const uint32_t | FLAC__STREAM_METADATA_SEEKPOINT_SAMPLE_NUMBER_LEN
const uint32_t | FLAC__STREAM_METADATA_SEEKPOINT_STREAM_OFFSET_LEN
const uint32_t | FLAC__STREAM_METADATA_SEEKPOINT_FRAME_SAMPLES_LEN
const FLAC__uint64 | FLAC__STREAM_METADATA_SEEKPOINT_PLACEHOLDER
const uint32_t | FLAC__STREAM_METADATA_VORBIS_COMMENT_ENTRY_LENGTH_LEN
const uint32_t | FLAC__STREAM_METADATA_VORBIS_COMMENT_NUM_COMMENTS_LEN
const uint32_t | FLAC__STREAM_METADATA_CUESHEET_INDEX_OFFSET_LEN
const uint32_t | FLAC__STREAM_METADATA_CUESHEET_INDEX_NUMBER_LEN
const uint32_t | FLAC__STREAM_METADATA_CUESHEET_INDEX_RESERVED_LEN
const uint32_t | FLAC__STREAM_METADATA_CUESHEET_TRACK_OFFSET_LEN
const uint32_t | FLAC__STREAM_METADATA_CUESHEET_TRACK_NUMBER_LEN
const uint32_t | FLAC__STREAM_METADATA_CUESHEET_TRACK_ISRC_LEN
const uint32_t | FLAC__STREAM_METADATA_CUESHEET_TRACK_TYPE_LEN
const uint32_t | FLAC__STREAM_METADATA_CUESHEET_TRACK_PRE_EMPHASIS_LEN
const uint32_t | FLAC__STREAM_METADATA_CUESHEET_TRACK_RESERVED_LEN
const uint32_t | FLAC__STREAM_METADATA_CUESHEET_TRACK_NUM_INDICES_LEN
const uint32_t | FLAC__STREAM_METADATA_CUESHEET_MEDIA_CATALOG_NUMBER_LEN
const uint32_t | FLAC__STREAM_METADATA_CUESHEET_LEAD_IN_LEN
const uint32_t | FLAC__STREAM_METADATA_CUESHEET_IS_CD_LEN
const uint32_t | FLAC__STREAM_METADATA_CUESHEET_RESERVED_LEN
const uint32_t | FLAC__STREAM_METADATA_CUESHEET_NUM_TRACKS_LEN
const char *const | FLAC__StreamMetadata_Picture_TypeString []
const uint32_t | FLAC__STREAM_METADATA_PICTURE_TYPE_LEN
const uint32_t | FLAC__STREAM_METADATA_PICTURE_MIME_TYPE_LENGTH_LEN
const uint32_t | FLAC__STREAM_METADATA_PICTURE_DESCRIPTION_LENGTH_LEN
const uint32_t | FLAC__STREAM_METADATA_PICTURE_WIDTH_LEN
const uint32_t | FLAC__STREAM_METADATA_PICTURE_HEIGHT_LEN
const uint32_t | FLAC__STREAM_METADATA_PICTURE_DEPTH_LEN
const uint32_t | FLAC__STREAM_METADATA_PICTURE_COLORS_LEN
const uint32_t | FLAC__STREAM_METADATA_PICTURE_DATA_LENGTH_LEN
const uint32_t | FLAC__STREAM_METADATA_IS_LAST_LEN
const uint32_t | FLAC__STREAM_METADATA_TYPE_LEN
const uint32_t | FLAC__STREAM_METADATA_LENGTH_LEN

## Detailed Description

This module contains structure definitions for the representation of FLAC format components in memory. These are the basic structures used by the rest of the interfaces.

First, you should be familiar with the FLAC format. Many of the values here follow directly from the specification. As a user of libFLAC, the interesting parts really are the structures that describe the frame header and metadata blocks.

The format structures here are very primitive, designed to store information in an efficient way. Reading information from the structures is easy but creating or modifying them directly is more complex. For the most part, as a user of a library, editing is not necessary; however, for metadata blocks it is, so there are convenience functions provided in the metadata module to simplify the manipulation of metadata blocks.

Note
  It's not the best convention, but symbols ending in _LEN are in bits and _LENGTH are in bytes. _LENGTH symbols are #defines instead of global variables because they are usually used when declaring byte arrays and some compilers require compile-time knowledge of array sizes when declared on the stack.

## Macro Definition Documentation

## FLAC__MAX_METADATA_TYPE_CODE

#define FLAC__MAX_METADATA_TYPE_CODE (126u)

The largest legal metadata type code.

## FLAC__MIN_BLOCK_SIZE

#define FLAC__MIN_BLOCK_SIZE (16u)

The minimum block size, in samples, permitted by the format.

## FLAC__MAX_BLOCK_SIZE

#define FLAC__MAX_BLOCK_SIZE (65535u)

The maximum block size, in samples, permitted by the format.

## FLAC__SUBSET_MAX_BLOCK_SIZE_48000HZ

#define FLAC__SUBSET_MAX_BLOCK_SIZE_48000HZ (4608u)

The maximum block size, in samples, permitted by the FLAC subset for sample rates up to 48kHz.

## FLAC__MAX_CHANNELS

#define FLAC__MAX_CHANNELS (8u)

The maximum number of channels permitted by the format.

## FLAC__MIN_BITS_PER_SAMPLE

#define FLAC__MIN_BITS_PER_SAMPLE (4u)

The minimum sample resolution permitted by the format.

## FLAC__MAX_BITS_PER_SAMPLE

#define FLAC__MAX_BITS_PER_SAMPLE (32u)

The maximum sample resolution permitted by the format.

## FLAC__REFERENCE_CODEC_MAX_BITS_PER_SAMPLE

#define FLAC__REFERENCE_CODEC_MAX_BITS_PER_SAMPLE (24u)

The maximum sample resolution permitted by libFLAC.

Warning
  FLAC__MAX_BITS_PER_SAMPLE is the limit of the FLAC format. However, the reference encoder/decoder is currently limited to 24 bits because of prevalent 32-bit math, so make sure and use this value when appropriate.

## FLAC__MAX_SAMPLE_RATE

#define FLAC__MAX_SAMPLE_RATE (655350u)

The maximum sample rate permitted by the format. The value is ((2 ^ 16) - 1) * 10; see FLAC format as to why.

## FLAC__MAX_LPC_ORDER

#define FLAC__MAX_LPC_ORDER (32u)

The maximum LPC order permitted by the format.

## FLAC__SUBSET_MAX_LPC_ORDER_48000HZ

#define FLAC__SUBSET_MAX_LPC_ORDER_48000HZ (12u)

The maximum LPC order permitted by the FLAC subset for sample rates up to 48kHz.

## FLAC__MIN_QLP_COEFF_PRECISION

#define FLAC__MIN_QLP_COEFF_PRECISION (5u)

The minimum quantized linear predictor coefficient precision permitted by the format.

## FLAC__MAX_QLP_COEFF_PRECISION

#define FLAC__MAX_QLP_COEFF_PRECISION (15u)

The maximum quantized linear predictor coefficient precision permitted by the format.

## FLAC__MAX_FIXED_ORDER

#define FLAC__MAX_FIXED_ORDER (4u)

The maximum order of the fixed predictors permitted by the format.

## FLAC__MAX_RICE_PARTITION_ORDER

#define FLAC__MAX_RICE_PARTITION_ORDER (15u)

The maximum Rice partition order permitted by the format.

## FLAC__SUBSET_MAX_RICE_PARTITION_ORDER

#define FLAC__SUBSET_MAX_RICE_PARTITION_ORDER (8u)

The maximum Rice partition order permitted by the FLAC Subset.

## FLAC__STREAM_SYNC_LENGTH

#define FLAC__STREAM_SYNC_LENGTH (4u)

The length of the FLAC signature in bytes.

## FLAC__STREAM_METADATA_STREAMINFO_LENGTH

#define FLAC__STREAM_METADATA_STREAMINFO_LENGTH (34u)

The total stream length of the STREAMINFO block in bytes.

## FLAC__STREAM_METADATA_SEEKPOINT_LENGTH

#define FLAC__STREAM_METADATA_SEEKPOINT_LENGTH (18u)

The total stream length of a seek point in bytes.

## FLAC__STREAM_METADATA_HEADER_LENGTH

#define FLAC__STREAM_METADATA_HEADER_LENGTH (4u)

The total stream length of a metadata block header in bytes.

## Enumeration Type Documentation

## FLAC__EntropyCodingMethodType

enum FLAC__EntropyCodingMethodType

An enumeration of the available entropy coding methods.

Enumerator
FLAC__ENTROPY_CODING_METHOD_PARTITIONED_RICE | Residual is coded by partitioning into contexts, each with it's own 4-bit Rice parameter.
FLAC__ENTROPY_CODING_METHOD_PARTITIONED_RICE2 | Residual is coded by partitioning into contexts, each with it's own 5-bit Rice parameter.

## FLAC__SubframeType

enum FLAC__SubframeType

An enumeration of the available subframe types.

Enumerator
FLAC__SUBFRAME_TYPE_CONSTANT | constant signal
FLAC__SUBFRAME_TYPE_VERBATIM | uncompressed signal
FLAC__SUBFRAME_TYPE_FIXED | fixed polynomial prediction
FLAC__SUBFRAME_TYPE_LPC | linear prediction

## FLAC__ChannelAssignment

enum FLAC__ChannelAssignment

An enumeration of the available channel assignments.

Enumerator
FLAC__CHANNEL_ASSIGNMENT_INDEPENDENT | independent channels
FLAC__CHANNEL_ASSIGNMENT_LEFT_SIDE | left+side stereo
FLAC__CHANNEL_ASSIGNMENT_RIGHT_SIDE | right+side stereo
FLAC__CHANNEL_ASSIGNMENT_MID_SIDE | mid+side stereo

## FLAC__FrameNumberType

enum FLAC__FrameNumberType

An enumeration of the possible frame numbering methods.

Enumerator
FLAC__FRAME_NUMBER_TYPE_FRAME_NUMBER | number contains the frame number
FLAC__FRAME_NUMBER_TYPE_SAMPLE_NUMBER | number contains the sample number of first sample in frame

## FLAC__MetadataType

enum FLAC__MetadataType

An enumeration of the available metadata block types.

Enumerator
FLAC__METADATA_TYPE_STREAMINFO | STREAMINFO block
FLAC__METADATA_TYPE_PADDING | PADDING block
FLAC__METADATA_TYPE_APPLICATION | APPLICATION block
FLAC__METADATA_TYPE_SEEKTABLE | SEEKTABLE block
FLAC__METADATA_TYPE_VORBIS_COMMENT | VORBISCOMMENT block (a.k.a. FLAC tags)
FLAC__METADATA_TYPE_CUESHEET | CUESHEET block
FLAC__METADATA_TYPE_PICTURE | PICTURE block
FLAC__METADATA_TYPE_UNDEFINED | marker to denote beginning of undefined type range; this number will increase as new metadata types are added
FLAC__MAX_METADATA_TYPE | No type will ever be greater than this. There is not enough room in the protocol block.

## FLAC__StreamMetadata_Picture_Type

enum FLAC__StreamMetadata_Picture_Type

An enumeration of the PICTURE types (see FLAC__StreamMetadataPicture and id3 v2.4 APIC tag).

Enumerator
FLAC__STREAM_METADATA_PICTURE_TYPE_OTHER | Other
FLAC__STREAM_METADATA_PICTURE_TYPE_FILE_ICON_STANDARD | 32x32 pixels 'file icon' (PNG only)
FLAC__STREAM_METADATA_PICTURE_TYPE_FILE_ICON | Other file icon
FLAC__STREAM_METADATA_PICTURE_TYPE_FRONT_COVER | Cover (front)
FLAC__STREAM_METADATA_PICTURE_TYPE_BACK_COVER | Cover (back)
FLAC__STREAM_METADATA_PICTURE_TYPE_LEAFLET_PAGE | Leaflet page
FLAC__STREAM_METADATA_PICTURE_TYPE_MEDIA | Media (e.g. label side of CD)
FLAC__STREAM_METADATA_PICTURE_TYPE_LEAD_ARTIST | Lead artist/lead performer/soloist
FLAC__STREAM_METADATA_PICTURE_TYPE_ARTIST | Artist/performer
FLAC__STREAM_METADATA_PICTURE_TYPE_CONDUCTOR | Conductor
FLAC__STREAM_METADATA_PICTURE_TYPE_BAND | Band/Orchestra
FLAC__STREAM_METADATA_PICTURE_TYPE_COMPOSER | Composer
FLAC__STREAM_METADATA_PICTURE_TYPE_LYRICIST | Lyricist/text writer
FLAC__STREAM_METADATA_PICTURE_TYPE_RECORDING_LOCATION | Recording Location
FLAC__STREAM_METADATA_PICTURE_TYPE_DURING_RECORDING | During recording
FLAC__STREAM_METADATA_PICTURE_TYPE_DURING_PERFORMANCE | During performance
FLAC__STREAM_METADATA_PICTURE_TYPE_VIDEO_SCREEN_CAPTURE | Movie/video screen capture
FLAC__STREAM_METADATA_PICTURE_TYPE_FISH | A bright coloured fish
FLAC__STREAM_METADATA_PICTURE_TYPE_ILLUSTRATION | Illustration
FLAC__STREAM_METADATA_PICTURE_TYPE_BAND_LOGOTYPE | Band/artist logotype
FLAC__STREAM_METADATA_PICTURE_TYPE_PUBLISHER_LOGOTYPE | Publisher/Studio logotype

## Function Documentation

## FLAC__format_sample_rate_is_valid()

FLAC__bool FLAC__format_sample_rate_is_valid | ( | uint32_t | sample_rate | ) |

Tests that a sample rate is valid for FLAC.

Parameters

  sample_rate | The sample rate to test for compliance.

Return values

  FLAC__bool | `true` if the given sample rate conforms to the specification, else `false`.

## FLAC__format_blocksize_is_subset()

FLAC__bool FLAC__format_blocksize_is_subset | ( | uint32_t | blocksize,
|  | uint32_t | sample_rate
| ) |  |

Tests that a blocksize at the given sample rate is valid for the FLAC subset.

Parameters

  blocksize | The blocksize to test for compliance.
  sample_rate | The sample rate is needed, since the valid subset blocksize depends on the sample rate.

Return values

  FLAC__bool | `true` if the given blocksize conforms to the specification for the subset at the given sample rate, else `false`.

## FLAC__format_sample_rate_is_subset()

FLAC__bool FLAC__format_sample_rate_is_subset | ( | uint32_t | sample_rate | ) |

Tests that a sample rate is valid for the FLAC subset. The subset rules for valid sample rates are slightly more complex since the rate has to be expressible completely in the frame header.

Parameters

  sample_rate | The sample rate to test for compliance.

Return values

  FLAC__bool | `true` if the given sample rate conforms to the specification for the subset, else `false`.

## FLAC__format_vorbiscomment_entry_name_is_legal()

FLAC__bool FLAC__format_vorbiscomment_entry_name_is_legal | ( | const char * | name | ) |

Check a Vorbis comment entry name to see if it conforms to the Vorbis comment specification.

Vorbis comment names must be composed only of characters from [0x20-0x3C,0x3E-0x7D].

Parameters

  name | A NUL-terminated string to be checked.

Assertions:
  name != NULL

Return values

  FLAC__bool | `false` if entry name is illegal, else `true`.

## FLAC__format_vorbiscomment_entry_value_is_legal()

FLAC__bool FLAC__format_vorbiscomment_entry_value_is_legal | ( | const FLAC__byte * | value,
|  | uint32_t | length
| ) |  |

Check a Vorbis comment entry value to see if it conforms to the Vorbis comment specification.

Vorbis comment values must be valid UTF-8 sequences.

Parameters

  value | A string to be checked.
  length | A the length of value in bytes. May be ``(uint32_t)(-1) to indicate that value is a plain UTF-8 NUL-terminated string.

Assertions:
  value != NULL

Return values

  FLAC__bool | `false` if entry name is illegal, else `true`.

## FLAC__format_vorbiscomment_entry_is_legal()

FLAC__bool FLAC__format_vorbiscomment_entry_is_legal | ( | const FLAC__byte * | entry,
|  | uint32_t | length
| ) |  |

Check a Vorbis comment entry to see if it conforms to the Vorbis comment specification.

Vorbis comment entries must be of the form 'name=value', and 'name' and 'value' must be legal according to FLAC__format_vorbiscomment_entry_name_is_legal() and FLAC__format_vorbiscomment_entry_value_is_legal() respectively.

Parameters

  entry | An entry to be checked.
  length | The length of entry in bytes.

Assertions:
  value != NULL

Return values

  FLAC__bool | `false` if entry name is illegal, else `true`.

## FLAC__format_seektable_is_legal()

FLAC__bool FLAC__format_seektable_is_legal | ( | const FLAC__StreamMetadata_SeekTable * | seek_table | ) |

Check a seek table to see if it conforms to the FLAC specification. See the format specification for limits on the contents of the seek table.

Parameters

  seek_table | A pointer to a seek table to be checked.

Assertions:
  seek_table != NULL

Return values

  FLAC__bool | `false` if seek table is illegal, else `true`.

## FLAC__format_seektable_sort()

uint32_t FLAC__format_seektable_sort | ( | FLAC__StreamMetadata_SeekTable * | seek_table | ) |

Sort a seek table's seek points according to the format specification. This includes a "unique-ification" step to remove duplicates, i.e. seek points with identical sample_number values. Duplicate seek points are converted into placeholder points and sorted to the end of the table.

Parameters

  seek_table | A pointer to a seek table to be sorted.

Assertions:
  seek_table != NULL

Return values

  uint32_t | The number of duplicate seek points converted into placeholders.

## FLAC__format_cuesheet_is_legal()

FLAC__bool FLAC__format_cuesheet_is_legal | ( | const FLAC__StreamMetadata_CueSheet * | cue_sheet,
|  | FLAC__bool | check_cd_da_subset,
|  | const char ** | violation
| ) |  |

Check a cue sheet to see if it conforms to the FLAC specification. See the format specification for limits on the contents of the cue sheet.

Parameters

  cue_sheet | A pointer to an existing cue sheet to be checked.
  check_cd_da_subset | If `true`, check CUESHEET against more stringent requirements for a CD-DA (audio) disc.
  violation | Address of a pointer to a string. If there is a violation, a pointer to a string explanation of the violation will be returned here. violation may be `NULL` if you don't need the returned string. Do not free the returned string; it will always point to static data.

Assertions:
  cue_sheet != NULL

Return values

  FLAC__bool | `false` if cue sheet is illegal, else `true`.

## FLAC__format_picture_is_legal()

FLAC__bool FLAC__format_picture_is_legal | ( | const FLAC__StreamMetadata_Picture * | picture,
|  | const char ** | violation
| ) |  |

Check picture data to see if it conforms to the FLAC specification. See the format specification for limits on the contents of the PICTURE block.

Parameters

  picture | A pointer to existing picture data to be checked.
  violation | Address of a pointer to a string. If there is a violation, a pointer to a string explanation of the violation will be returned here. violation may be `NULL` if you don't need the returned string. Do not free the returned string; it will always point to static data.

Assertions:
  picture != NULL

Return values

  FLAC__bool | `false` if picture data is illegal, else `true`.

## Variable Documentation

## FLAC__VERSION_STRING

const char* FLAC__VERSION_STRING

The version string of the release, stamped onto the libraries and binaries.

Note
  This does not correspond to the shared library version number, which is used to determine binary compatibility.

## FLAC__VENDOR_STRING

const char* FLAC__VENDOR_STRING

The vendor string inserted by the encoder into the VORBIS_COMMENT block. This is a NUL-terminated ASCII string; when inserted into the VORBIS_COMMENT the trailing null is stripped.

## FLAC__STREAM_SYNC_STRING

const FLAC__byte FLAC__STREAM_SYNC_STRING[4]

The byte string representation of the beginning of a FLAC stream.

## FLAC__STREAM_SYNC

const uint32_t FLAC__STREAM_SYNC

The 32-bit integer big-endian representation of the beginning of a FLAC stream.

## FLAC__STREAM_SYNC_LEN

const uint32_t FLAC__STREAM_SYNC_LEN

The length of the FLAC signature in bits.

## FLAC__EntropyCodingMethodTypeString

const char* const FLAC__EntropyCodingMethodTypeString[]

Maps a FLAC__EntropyCodingMethodType to a C string.

Using a FLAC__EntropyCodingMethodType as the index to this array will give the string equivalent. The contents should not be modified.

## FLAC__ENTROPY_CODING_METHOD_PARTITIONED_RICE_ORDER_LEN

const uint32_t FLAC__ENTROPY_CODING_METHOD_PARTITIONED_RICE_ORDER_LEN

== 4 (bits)

## FLAC__ENTROPY_CODING_METHOD_PARTITIONED_RICE_PARAMETER_LEN

const uint32_t FLAC__ENTROPY_CODING_METHOD_PARTITIONED_RICE_PARAMETER_LEN

== 4 (bits)

## FLAC__ENTROPY_CODING_METHOD_PARTITIONED_RICE2_PARAMETER_LEN

const uint32_t FLAC__ENTROPY_CODING_METHOD_PARTITIONED_RICE2_PARAMETER_LEN

== 5 (bits)

## FLAC__ENTROPY_CODING_METHOD_PARTITIONED_RICE_RAW_LEN

const uint32_t FLAC__ENTROPY_CODING_METHOD_PARTITIONED_RICE_RAW_LEN

== 5 (bits)

## FLAC__ENTROPY_CODING_METHOD_PARTITIONED_RICE_ESCAPE_PARAMETER

const uint32_t FLAC__ENTROPY_CODING_METHOD_PARTITIONED_RICE_ESCAPE_PARAMETER

== (1<<FLAC__ENTROPY_CODING_METHOD_PARTITIONED_RICE_PARAMETER_LEN)-1

## FLAC__ENTROPY_CODING_METHOD_PARTITIONED_RICE2_ESCAPE_PARAMETER

const uint32_t FLAC__ENTROPY_CODING_METHOD_PARTITIONED_RICE2_ESCAPE_PARAMETER

== (1<<FLAC__ENTROPY_CODING_METHOD_PARTITIONED_RICE2_PARAMETER_LEN)-1

## FLAC__ENTROPY_CODING_METHOD_TYPE_LEN

const uint32_t FLAC__ENTROPY_CODING_METHOD_TYPE_LEN

== 2 (bits)

## FLAC__SubframeTypeString

const char* const FLAC__SubframeTypeString[]

Maps a FLAC__SubframeType to a C string.

Using a FLAC__SubframeType as the index to this array will give the string equivalent. The contents should not be modified.

## FLAC__SUBFRAME_LPC_QLP_COEFF_PRECISION_LEN

const uint32_t FLAC__SUBFRAME_LPC_QLP_COEFF_PRECISION_LEN

== 4 (bits)

## FLAC__SUBFRAME_LPC_QLP_SHIFT_LEN

const uint32_t FLAC__SUBFRAME_LPC_QLP_SHIFT_LEN

== 5 (bits)

## FLAC__SUBFRAME_ZERO_PAD_LEN

const uint32_t FLAC__SUBFRAME_ZERO_PAD_LEN

== 1 (bit)

This used to be a zero-padding bit (hence the name FLAC__SUBFRAME_ZERO_PAD_LEN) but is now a reserved bit. It still has a mandatory value of `0` but in the future may take on the value `0` or `1` to mean something else.

## FLAC__SUBFRAME_TYPE_LEN

const uint32_t FLAC__SUBFRAME_TYPE_LEN

== 6 (bits)

## FLAC__SUBFRAME_WASTED_BITS_FLAG_LEN

const uint32_t FLAC__SUBFRAME_WASTED_BITS_FLAG_LEN

== 1 (bit)

## FLAC__SUBFRAME_TYPE_CONSTANT_BYTE_ALIGNED_MASK

const uint32_t FLAC__SUBFRAME_TYPE_CONSTANT_BYTE_ALIGNED_MASK

= 0x00

## FLAC__SUBFRAME_TYPE_VERBATIM_BYTE_ALIGNED_MASK

const uint32_t FLAC__SUBFRAME_TYPE_VERBATIM_BYTE_ALIGNED_MASK

= 0x02

## FLAC__SUBFRAME_TYPE_FIXED_BYTE_ALIGNED_MASK

const uint32_t FLAC__SUBFRAME_TYPE_FIXED_BYTE_ALIGNED_MASK

= 0x10

## FLAC__SUBFRAME_TYPE_LPC_BYTE_ALIGNED_MASK

const uint32_t FLAC__SUBFRAME_TYPE_LPC_BYTE_ALIGNED_MASK

= 0x40

## FLAC__ChannelAssignmentString

const char* const FLAC__ChannelAssignmentString[]

Maps a FLAC__ChannelAssignment to a C string.

Using a FLAC__ChannelAssignment as the index to this array will give the string equivalent. The contents should not be modified.

## FLAC__FrameNumberTypeString

const char* const FLAC__FrameNumberTypeString[]

Maps a FLAC__FrameNumberType to a C string.

Using a FLAC__FrameNumberType as the index to this array will give the string equivalent. The contents should not be modified.

## FLAC__FRAME_HEADER_SYNC

const uint32_t FLAC__FRAME_HEADER_SYNC

== 0x3ffe; the frame header sync code

## FLAC__FRAME_HEADER_SYNC_LEN

const uint32_t FLAC__FRAME_HEADER_SYNC_LEN

== 14 (bits)

## FLAC__FRAME_HEADER_RESERVED_LEN

const uint32_t FLAC__FRAME_HEADER_RESERVED_LEN

== 1 (bits)

## FLAC__FRAME_HEADER_BLOCKING_STRATEGY_LEN

const uint32_t FLAC__FRAME_HEADER_BLOCKING_STRATEGY_LEN

== 1 (bits)

## FLAC__FRAME_HEADER_BLOCK_SIZE_LEN

const uint32_t FLAC__FRAME_HEADER_BLOCK_SIZE_LEN

== 4 (bits)

## FLAC__FRAME_HEADER_SAMPLE_RATE_LEN

const uint32_t FLAC__FRAME_HEADER_SAMPLE_RATE_LEN

== 4 (bits)

## FLAC__FRAME_HEADER_CHANNEL_ASSIGNMENT_LEN

const uint32_t FLAC__FRAME_HEADER_CHANNEL_ASSIGNMENT_LEN

== 4 (bits)

## FLAC__FRAME_HEADER_BITS_PER_SAMPLE_LEN

const uint32_t FLAC__FRAME_HEADER_BITS_PER_SAMPLE_LEN

== 3 (bits)

## FLAC__FRAME_HEADER_ZERO_PAD_LEN

const uint32_t FLAC__FRAME_HEADER_ZERO_PAD_LEN

== 1 (bit)

## FLAC__FRAME_HEADER_CRC_LEN

const uint32_t FLAC__FRAME_HEADER_CRC_LEN

== 8 (bits)

## FLAC__FRAME_FOOTER_CRC_LEN

const uint32_t FLAC__FRAME_FOOTER_CRC_LEN

== 16 (bits)

## FLAC__MetadataTypeString

const char* const FLAC__MetadataTypeString[]

Maps a FLAC__MetadataType to a C string.

Using a FLAC__MetadataType as the index to this array will give the string equivalent. The contents should not be modified.

## FLAC__STREAM_METADATA_STREAMINFO_MIN_BLOCK_SIZE_LEN

const uint32_t FLAC__STREAM_METADATA_STREAMINFO_MIN_BLOCK_SIZE_LEN

== 16 (bits)

## FLAC__STREAM_METADATA_STREAMINFO_MAX_BLOCK_SIZE_LEN

const uint32_t FLAC__STREAM_METADATA_STREAMINFO_MAX_BLOCK_SIZE_LEN

== 16 (bits)

## FLAC__STREAM_METADATA_STREAMINFO_MIN_FRAME_SIZE_LEN

const uint32_t FLAC__STREAM_METADATA_STREAMINFO_MIN_FRAME_SIZE_LEN

== 24 (bits)

## FLAC__STREAM_METADATA_STREAMINFO_MAX_FRAME_SIZE_LEN

const uint32_t FLAC__STREAM_METADATA_STREAMINFO_MAX_FRAME_SIZE_LEN

== 24 (bits)

## FLAC__STREAM_METADATA_STREAMINFO_SAMPLE_RATE_LEN

const uint32_t FLAC__STREAM_METADATA_STREAMINFO_SAMPLE_RATE_LEN

== 20 (bits)

## FLAC__STREAM_METADATA_STREAMINFO_CHANNELS_LEN

const uint32_t FLAC__STREAM_METADATA_STREAMINFO_CHANNELS_LEN

== 3 (bits)

## FLAC__STREAM_METADATA_STREAMINFO_BITS_PER_SAMPLE_LEN

const uint32_t FLAC__STREAM_METADATA_STREAMINFO_BITS_PER_SAMPLE_LEN

== 5 (bits)

## FLAC__STREAM_METADATA_STREAMINFO_TOTAL_SAMPLES_LEN

const uint32_t FLAC__STREAM_METADATA_STREAMINFO_TOTAL_SAMPLES_LEN

== 36 (bits)

## FLAC__STREAM_METADATA_STREAMINFO_MD5SUM_LEN

const uint32_t FLAC__STREAM_METADATA_STREAMINFO_MD5SUM_LEN

== 128 (bits)

## FLAC__STREAM_METADATA_APPLICATION_ID_LEN

const uint32_t FLAC__STREAM_METADATA_APPLICATION_ID_LEN

== 32 (bits)

## FLAC__STREAM_METADATA_SEEKPOINT_SAMPLE_NUMBER_LEN

const uint32_t FLAC__STREAM_METADATA_SEEKPOINT_SAMPLE_NUMBER_LEN

== 64 (bits)

## FLAC__STREAM_METADATA_SEEKPOINT_STREAM_OFFSET_LEN

const uint32_t FLAC__STREAM_METADATA_SEEKPOINT_STREAM_OFFSET_LEN

== 64 (bits)

## FLAC__STREAM_METADATA_SEEKPOINT_FRAME_SAMPLES_LEN

const uint32_t FLAC__STREAM_METADATA_SEEKPOINT_FRAME_SAMPLES_LEN

== 16 (bits)

## FLAC__STREAM_METADATA_SEEKPOINT_PLACEHOLDER

const FLAC__uint64 FLAC__STREAM_METADATA_SEEKPOINT_PLACEHOLDER

The value used in the sample_number field of FLAC__StreamMetadataSeekPoint used to indicate a placeholder point (== 0xffffffffffffffff).

## FLAC__STREAM_METADATA_VORBIS_COMMENT_ENTRY_LENGTH_LEN

const uint32_t FLAC__STREAM_METADATA_VORBIS_COMMENT_ENTRY_LENGTH_LEN

== 32 (bits)

## FLAC__STREAM_METADATA_VORBIS_COMMENT_NUM_COMMENTS_LEN

const uint32_t FLAC__STREAM_METADATA_VORBIS_COMMENT_NUM_COMMENTS_LEN

== 32 (bits)

## FLAC__STREAM_METADATA_CUESHEET_INDEX_OFFSET_LEN

const uint32_t FLAC__STREAM_METADATA_CUESHEET_INDEX_OFFSET_LEN

== 64 (bits)

## FLAC__STREAM_METADATA_CUESHEET_INDEX_NUMBER_LEN

const uint32_t FLAC__STREAM_METADATA_CUESHEET_INDEX_NUMBER_LEN

== 8 (bits)

## FLAC__STREAM_METADATA_CUESHEET_INDEX_RESERVED_LEN

const uint32_t FLAC__STREAM_METADATA_CUESHEET_INDEX_RESERVED_LEN

== 3*8 (bits)

## FLAC__STREAM_METADATA_CUESHEET_TRACK_OFFSET_LEN

const uint32_t FLAC__STREAM_METADATA_CUESHEET_TRACK_OFFSET_LEN

== 64 (bits)

## FLAC__STREAM_METADATA_CUESHEET_TRACK_NUMBER_LEN

const uint32_t FLAC__STREAM_METADATA_CUESHEET_TRACK_NUMBER_LEN

== 8 (bits)

## FLAC__STREAM_METADATA_CUESHEET_TRACK_ISRC_LEN

const uint32_t FLAC__STREAM_METADATA_CUESHEET_TRACK_ISRC_LEN

== 12*8 (bits)

## FLAC__STREAM_METADATA_CUESHEET_TRACK_TYPE_LEN

const uint32_t FLAC__STREAM_METADATA_CUESHEET_TRACK_TYPE_LEN

== 1 (bit)

## FLAC__STREAM_METADATA_CUESHEET_TRACK_PRE_EMPHASIS_LEN

const uint32_t FLAC__STREAM_METADATA_CUESHEET_TRACK_PRE_EMPHASIS_LEN

== 1 (bit)

## FLAC__STREAM_METADATA_CUESHEET_TRACK_RESERVED_LEN

const uint32_t FLAC__STREAM_METADATA_CUESHEET_TRACK_RESERVED_LEN

== 6+13*8 (bits)

## FLAC__STREAM_METADATA_CUESHEET_TRACK_NUM_INDICES_LEN

const uint32_t FLAC__STREAM_METADATA_CUESHEET_TRACK_NUM_INDICES_LEN

== 8 (bits)

## FLAC__STREAM_METADATA_CUESHEET_MEDIA_CATALOG_NUMBER_LEN

const uint32_t FLAC__STREAM_METADATA_CUESHEET_MEDIA_CATALOG_NUMBER_LEN

== 128*8 (bits)

## FLAC__STREAM_METADATA_CUESHEET_LEAD_IN_LEN

const uint32_t FLAC__STREAM_METADATA_CUESHEET_LEAD_IN_LEN

== 64 (bits)

## FLAC__STREAM_METADATA_CUESHEET_IS_CD_LEN

const uint32_t FLAC__STREAM_METADATA_CUESHEET_IS_CD_LEN

== 1 (bit)

## FLAC__STREAM_METADATA_CUESHEET_RESERVED_LEN

const uint32_t FLAC__STREAM_METADATA_CUESHEET_RESERVED_LEN

== 7+258*8 (bits)

## FLAC__STREAM_METADATA_CUESHEET_NUM_TRACKS_LEN

const uint32_t FLAC__STREAM_METADATA_CUESHEET_NUM_TRACKS_LEN

== 8 (bits)

## FLAC__StreamMetadata_Picture_TypeString

const char* const FLAC__StreamMetadata_Picture_TypeString[]

Maps a FLAC__StreamMetadata_Picture_Type to a C string.

Using a FLAC__StreamMetadata_Picture_Type as the index to this array will give the string equivalent. The contents should not be modified.

## FLAC__STREAM_METADATA_PICTURE_TYPE_LEN

const uint32_t FLAC__STREAM_METADATA_PICTURE_TYPE_LEN

== 32 (bits)

## FLAC__STREAM_METADATA_PICTURE_MIME_TYPE_LENGTH_LEN

const uint32_t FLAC__STREAM_METADATA_PICTURE_MIME_TYPE_LENGTH_LEN

== 32 (bits)

## FLAC__STREAM_METADATA_PICTURE_DESCRIPTION_LENGTH_LEN

const uint32_t FLAC__STREAM_METADATA_PICTURE_DESCRIPTION_LENGTH_LEN

== 32 (bits)

## FLAC__STREAM_METADATA_PICTURE_WIDTH_LEN

const uint32_t FLAC__STREAM_METADATA_PICTURE_WIDTH_LEN

== 32 (bits)

## FLAC__STREAM_METADATA_PICTURE_HEIGHT_LEN

const uint32_t FLAC__STREAM_METADATA_PICTURE_HEIGHT_LEN

== 32 (bits)

## FLAC__STREAM_METADATA_PICTURE_DEPTH_LEN

const uint32_t FLAC__STREAM_METADATA_PICTURE_DEPTH_LEN

== 32 (bits)

## FLAC__STREAM_METADATA_PICTURE_COLORS_LEN

const uint32_t FLAC__STREAM_METADATA_PICTURE_COLORS_LEN

== 32 (bits)

## FLAC__STREAM_METADATA_PICTURE_DATA_LENGTH_LEN

const uint32_t FLAC__STREAM_METADATA_PICTURE_DATA_LENGTH_LEN

== 32 (bits)

## FLAC__STREAM_METADATA_IS_LAST_LEN

const uint32_t FLAC__STREAM_METADATA_IS_LAST_LEN

== 1 (bit)

## FLAC__STREAM_METADATA_TYPE_LEN

const uint32_t FLAC__STREAM_METADATA_TYPE_LEN

== 7 (bits)

## FLAC__STREAM_METADATA_LENGTH_LEN

const uint32_t FLAC__STREAM_METADATA_LENGTH_LEN

== 24 (bits)

Copyright (c) 2000-2009 Josh Coalson Copyright (c) 2011-2016 Xiph.Org Foundation |