📄 musepack.h
字号:
/// \file musepack.h/// Top level include file for libmusepack.#ifndef _musepack_h_#define _musepack_h_#ifdef __cplusplusextern "C" {#endif#include <stdio.h>#include <stdlib.h>#include <string.h>#include <math.h>#include "musepack/config_types.h"#include "musepack/decoder.h"#include "musepack/math.h"#include "musepack/reader.h"#include "musepack/streaminfo.h" enum { MPC_FRAME_LENGTH = (36 * 32), /// samples per mpc frame MPC_DECODER_BUFFER_LENGTH = 4 * MPC_FRAME_LENGTH /// required buffer size for decoder};// error codes#define ERROR_CODE_OK 0#define ERROR_CODE_FILE -1#define ERROR_CODE_SV7BETA 1#define ERROR_CODE_CBR 2#define ERROR_CODE_IS 3#define ERROR_CODE_BLOCKSIZE 4#define ERROR_CODE_INVALIDSV 5/// Initializes a streaminfo structure./// \param si streaminfo structure to initializevoid mpc_streaminfo_init(mpc_streaminfo *si);/// Reads streaminfo header from the mpc stream supplied by r./// \param si streaminfo pointer to which info will be written/// \param r stream reader to supply raw data/// \return error codempc_int32_t mpc_streaminfo_read(mpc_streaminfo *si, mpc_reader *r);/// Gets length of stream si, in seconds./// \return length of stream in secondsdouble mpc_streaminfo_get_length(mpc_streaminfo *si);/// Returns length of stream si, in samples./// \return length of stream in samplesmpc_int64_t mpc_streaminfo_get_length_samples(mpc_streaminfo *si);/// Sets up decoder library./// Call this first when preparing to decode an mpc stream./// \param r reader that will supply raw data to the decodervoid mpc_decoder_setup(mpc_decoder *d, mpc_reader *r);/// Initializes mpc decoder with the supplied stream info parameters./// Call this next after calling mpc_decoder_setup./// \param si streaminfo structure indicating format of source stream/// \return TRUE if decoder was initalized successfully, FALSE otherwise mpc_bool_t mpc_decoder_initialize(mpc_decoder *d, mpc_streaminfo *si);/// Sets decoder sample scaling factor. All decoded samples will be multiplied/// by this factor./// \param scale_factor multiplicative scaling factorvoid mpc_decoder_scale_output(mpc_decoder *d, double scale_factor);/// Actually reads data from previously initialized stream. Call/// this iteratively to decode the mpc stream./// \param buffer destination buffer for decoded samples/// \param vbr_update_acc \todo document me/// \param vbr_update_bits \todo document me/// \return -1 if an error is encountered/// \return 0 if the stream has been completely decoded successfully and there are no more samples/// \return > 0 to indicate the number of bytes that were actually read from the stream.mpc_uint32_t mpc_decoder_decode( mpc_decoder *d, MPC_SAMPLE_FORMAT *buffer, mpc_uint32_t *vbr_update_acc, mpc_uint32_t *vbr_update_bits);/// Seeks to the specified sample in the source stream.mpc_bool_t mpc_decoder_seek_sample(mpc_decoder *d, mpc_int64_t destsample);/// Seeks to specified position in seconds in the source stream.mpc_bool_t mpc_decoder_seek_seconds(mpc_decoder *d, double seconds);#ifdef __cplusplus}#endif // __cplusplus#endif // _musepack_h_
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -