/** \file wma.h The asf_header structure and public wma function declarations. */ /** * Information contained in an asf audio file header. * * Both para_filter and para_afh need to read the header. */ struct asf_header_info { /** The size of the audio file header. */ int header_len; /** Offset of the audio stream info header. */ int audio_stream_info_start; /** Number of channels. */ uint8_t channels; /** One of the 5 possible sample rates. */ uint16_t sample_rate; /** Size of one data block. */ uint16_t block_align; /** Bits per second. */ uint32_t bit_rate; /** Further decoding information (ignored). */ uint32_t flags1; /** Encodes exp_vlc, bit reservoir, vbl, number of block sizes. */ uint16_t flags2; /** Whether exponents are coded with VLC codes. */ bool use_exp_vlc; /** If false, a frame is equal to a superframe. */ bool use_bit_reservoir; /** Whether blocks are of variable or of constant size. */ bool use_variable_block_len; /** Obtained from the file properties object. */ uint32_t packet_size; }; /* wma_common.c */ __a_const int wma_log2(unsigned int v); const char *search_pattern(const uint8_t *pattern, int pattern_len, const char *buf, int buf_size); int read_asf_header(const char *buf, int loaded, struct asf_header_info *ahi); #define WMA_FRAME_SKIP 31