📄 format.h
字号:
const FLAC__int32 *residual; /**< The residual signal, length == (blocksize minus order) samples. */} FLAC__Subframe_Fixed;/** LPC subframe. (c.f. <A HREF="../format.html#subframe_lpc">format specification</A>) */typedef struct { FLAC__EntropyCodingMethod entropy_coding_method; /**< The residual coding method. */ unsigned order; /**< The FIR order. */ unsigned qlp_coeff_precision; /**< Quantized FIR filter coefficient precision in bits. */ int quantization_level; /**< The qlp coeff shift needed. */ FLAC__int32 qlp_coeff[FLAC__MAX_LPC_ORDER]; /**< FIR filter coefficients. */ FLAC__int32 warmup[FLAC__MAX_LPC_ORDER]; /**< Warmup samples to prime the predictor, length == order. */ const FLAC__int32 *residual; /**< The residual signal, length == (blocksize minus order) samples. */} FLAC__Subframe_LPC;extern FLAC_API const unsigned FLAC__SUBFRAME_LPC_QLP_COEFF_PRECISION_LEN; /**< == 4 (bits) */extern FLAC_API const unsigned FLAC__SUBFRAME_LPC_QLP_SHIFT_LEN; /**< == 5 (bits) *//** FLAC subframe structure. (c.f. <A HREF="../format.html#subframe">format specification</A>) */typedef struct { FLAC__SubframeType type; union { FLAC__Subframe_Constant constant; FLAC__Subframe_Fixed fixed; FLAC__Subframe_LPC lpc; FLAC__Subframe_Verbatim verbatim; } data; unsigned wasted_bits;} FLAC__Subframe;extern FLAC_API const unsigned FLAC__SUBFRAME_ZERO_PAD_LEN; /**< == 1 (bit) */extern FLAC_API const unsigned FLAC__SUBFRAME_TYPE_LEN; /**< == 6 (bits) */extern FLAC_API const unsigned FLAC__SUBFRAME_WASTED_BITS_FLAG_LEN; /**< == 1 (bit) */extern FLAC_API const unsigned FLAC__SUBFRAME_TYPE_CONSTANT_BYTE_ALIGNED_MASK; /* = 0x00 */extern FLAC_API const unsigned FLAC__SUBFRAME_TYPE_VERBATIM_BYTE_ALIGNED_MASK; /* = 0x02 */extern FLAC_API const unsigned FLAC__SUBFRAME_TYPE_FIXED_BYTE_ALIGNED_MASK; /* = 0x10 */extern FLAC_API const unsigned FLAC__SUBFRAME_TYPE_LPC_BYTE_ALIGNED_MASK; /* = 0x40 *//*****************************************************************************//***************************************************************************** * * Frame structures * *****************************************************************************//** An enumeration of the available channel assignments. */typedef enum { FLAC__CHANNEL_ASSIGNMENT_INDEPENDENT = 0, /**< independent channels */ FLAC__CHANNEL_ASSIGNMENT_LEFT_SIDE = 1, /**< left+side stereo */ FLAC__CHANNEL_ASSIGNMENT_RIGHT_SIDE = 2, /**< right+side stereo */ FLAC__CHANNEL_ASSIGNMENT_MID_SIDE = 3 /**< mid+side stereo */} FLAC__ChannelAssignment;/** 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. */extern FLAC_API const char * const FLAC__ChannelAssignmentString[];/** An enumeration of the possible frame numbering methods. */typedef enum { 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__FrameNumberType;/** 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. */extern FLAC_API const char * const FLAC__FrameNumberTypeString[];/** FLAC frame header structure. (c.f. <A HREF="../format.html#frame_header">format specification</A>) */typedef struct { unsigned blocksize; /**< The number of samples per subframe. */ unsigned sample_rate; /**< The sample rate in Hz. */ unsigned channels; /**< The number of channels (== number of subframes). */ FLAC__ChannelAssignment channel_assignment; /**< The channel assignment for the frame. */ unsigned bits_per_sample; /**< The sample resolution. */ FLAC__FrameNumberType number_type; /**< The numbering scheme used for the frame. */ union { FLAC__uint32 frame_number; FLAC__uint64 sample_number; } number; /**< The frame number or sample number of first sample in frame; * use the \a number_type value to determine which to use. */ FLAC__uint8 crc; /**< CRC-8 (polynomial = x^8 + x^2 + x^1 + x^0, initialized with 0) * of the raw frame header bytes, meaning everything before the CRC byte * including the sync code. */} FLAC__FrameHeader;extern FLAC_API const unsigned FLAC__FRAME_HEADER_SYNC; /**< == 0x3ffe; the frame header sync code */extern FLAC_API const unsigned FLAC__FRAME_HEADER_SYNC_LEN; /**< == 14 (bits) */extern FLAC_API const unsigned FLAC__FRAME_HEADER_RESERVED_LEN; /**< == 2 (bits) */extern FLAC_API const unsigned FLAC__FRAME_HEADER_BLOCK_SIZE_LEN; /**< == 4 (bits) */extern FLAC_API const unsigned FLAC__FRAME_HEADER_SAMPLE_RATE_LEN; /**< == 4 (bits) */extern FLAC_API const unsigned FLAC__FRAME_HEADER_CHANNEL_ASSIGNMENT_LEN; /**< == 4 (bits) */extern FLAC_API const unsigned FLAC__FRAME_HEADER_BITS_PER_SAMPLE_LEN; /**< == 3 (bits) */extern FLAC_API const unsigned FLAC__FRAME_HEADER_ZERO_PAD_LEN; /**< == 1 (bit) */extern FLAC_API const unsigned FLAC__FRAME_HEADER_CRC_LEN; /**< == 8 (bits) *//** FLAC frame footer structure. (c.f. <A HREF="../format.html#frame_footer">format specification</A>) */typedef struct { FLAC__uint16 crc; /**< CRC-16 (polynomial = x^16 + x^15 + x^2 + x^0, initialized with * 0) of the bytes before the crc, back to and including the frame header * sync code. */} FLAC__FrameFooter;extern FLAC_API const unsigned FLAC__FRAME_FOOTER_CRC_LEN; /**< == 16 (bits) *//** FLAC frame structure. (c.f. <A HREF="../format.html#frame">format specification</A>) */typedef struct { FLAC__FrameHeader header; FLAC__Subframe subframes[FLAC__MAX_CHANNELS]; FLAC__FrameFooter footer;} FLAC__Frame;/*****************************************************************************//***************************************************************************** * * Meta-data structures * *****************************************************************************//** An enumeration of the available metadata block types. */typedef enum { FLAC__METADATA_TYPE_STREAMINFO = 0, /**< <A HREF="../format.html#metadata_block_streaminfo">STREAMINFO</A> block */ FLAC__METADATA_TYPE_PADDING = 1, /**< <A HREF="../format.html#metadata_block_padding">PADDING</A> block */ FLAC__METADATA_TYPE_APPLICATION = 2, /**< <A HREF="../format.html#metadata_block_application">APPLICATION</A> block */ FLAC__METADATA_TYPE_SEEKTABLE = 3, /**< <A HREF="../format.html#metadata_block_seektable">SEEKTABLE</A> block */ FLAC__METADATA_TYPE_VORBIS_COMMENT = 4, /**< <A HREF="../format.html#metadata_block_vorbis_comment">VORBISCOMMENT</A> block */ FLAC__METADATA_TYPE_CUESHEET = 5, /**< <A HREF="../format.html#metadata_block_cuesheet">CUESHEET</A> block */ FLAC__METADATA_TYPE_UNDEFINED = 6 /**< marker to denote beginning of undefined type range; this number will increase as new metadata types are added */} FLAC__MetadataType;/** 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. */extern FLAC_API const char * const FLAC__MetadataTypeString[];/** FLAC STREAMINFO structure. (c.f. <A HREF="../format.html#metadata_block_streaminfo">format specification</A>) */typedef struct { unsigned min_blocksize, max_blocksize; unsigned min_framesize, max_framesize; unsigned sample_rate; unsigned channels; unsigned bits_per_sample; FLAC__uint64 total_samples; FLAC__byte md5sum[16];} FLAC__StreamMetadata_StreamInfo;extern FLAC_API const unsigned FLAC__STREAM_METADATA_STREAMINFO_MIN_BLOCK_SIZE_LEN; /**< == 16 (bits) */extern FLAC_API const unsigned FLAC__STREAM_METADATA_STREAMINFO_MAX_BLOCK_SIZE_LEN; /**< == 16 (bits) */extern FLAC_API const unsigned FLAC__STREAM_METADATA_STREAMINFO_MIN_FRAME_SIZE_LEN; /**< == 24 (bits) */extern FLAC_API const unsigned FLAC__STREAM_METADATA_STREAMINFO_MAX_FRAME_SIZE_LEN; /**< == 24 (bits) */extern FLAC_API const unsigned FLAC__STREAM_METADATA_STREAMINFO_SAMPLE_RATE_LEN; /**< == 20 (bits) */extern FLAC_API const unsigned FLAC__STREAM_METADATA_STREAMINFO_CHANNELS_LEN; /**< == 3 (bits) */extern FLAC_API const unsigned FLAC__STREAM_METADATA_STREAMINFO_BITS_PER_SAMPLE_LEN; /**< == 5 (bits) */extern FLAC_API const unsigned FLAC__STREAM_METADATA_STREAMINFO_TOTAL_SAMPLES_LEN; /**< == 36 (bits) */extern FLAC_API const unsigned FLAC__STREAM_METADATA_STREAMINFO_MD5SUM_LEN; /**< == 128 (bits) *//** The total stream length of the STREAMINFO block in bytes. */#define FLAC__STREAM_METADATA_STREAMINFO_LENGTH (34u)/** FLAC PADDING structure. (c.f. <A HREF="../format.html#metadata_block_padding">format specification</A>) */typedef struct { int dummy; /**< Conceptually this is an empty struct since we don't store the * padding bytes. Empty structs are not allowed by some C compilers, * hence the dummy. */} FLAC__StreamMetadata_Padding;/** FLAC APPLICATION structure. (c.f. <A HREF="../format.html#metadata_block_application">format specification</A>) */typedef struct { FLAC__byte id[4]; FLAC__byte *data;} FLAC__StreamMetadata_Application;extern FLAC_API const unsigned FLAC__STREAM_METADATA_APPLICATION_ID_LEN; /**< == 32 (bits) *//** SeekPoint structure used in SEEKTABLE blocks. (c.f. <A HREF="../format.html#seekpoint">format specification</A>) */typedef struct { FLAC__uint64 sample_number; /**< The sample number of the target frame. */ FLAC__uint64 stream_offset; /**< The offset, in bytes, of the target frame with respect to * beginning of the first frame. */ unsigned frame_samples; /**< The number of samples in the target frame. */} FLAC__StreamMetadata_SeekPoint;extern FLAC_API const unsigned FLAC__STREAM_METADATA_SEEKPOINT_SAMPLE_NUMBER_LEN; /**< == 64 (bits) */extern FLAC_API const unsigned FLAC__STREAM_METADATA_SEEKPOINT_STREAM_OFFSET_LEN; /**< == 64 (bits) */extern FLAC_API const unsigned FLAC__STREAM_METADATA_SEEKPOINT_FRAME_SAMPLES_LEN; /**< == 16 (bits) *//** The total stream length of a seek point in bytes. */#define FLAC__STREAM_METADATA_SEEKPOINT_LENGTH (18u)/** The value used in the \a sample_number field of * FLAC__StreamMetadataSeekPoint used to indicate a placeholder * point (== 0xffffffffffffffff). */extern FLAC_API const FLAC__uint64 FLAC__STREAM_METADATA_SEEKPOINT_PLACEHOLDER;/** FLAC SEEKTABLE structure. (c.f. <A HREF="../format.html#metadata_block_seektable">format specification</A>) * * \note From the format specification: * - The seek points must be sorted by ascending sample number. * - Each seek point's sample number must be the first sample of the * target frame. * - Each seek point's sample number must be unique within the table. * - Existence of a SEEKTABLE block implies a correct setting of * total_samples in the stream_info block. * - Behavior is undefined when more than one SEEKTABLE block is
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -