audio_codec_mp3.h
来自「AMLOGIC DPF source code」· C头文件 代码 · 共 118 行
H
118 行
/*******************************************************************
*
* Copyright C 2005 by Amlogic, Inc. All Rights Reserved.
*
* Description:
*
* Author: Amlogic Software
* Created: Thu Nov 10 23:51:31 2005
*
*******************************************************************/
#ifndef _AUDIO_CODEC_MP3_H
#define _AUDIO_CODEC_MP3_H
#include "ioapi.h"
#define DECLARE_DEVICE_DRIVER_INIT(name) \
avfs_device_driver audio_device_##name##_init(avfs_device_major_number major, avfs_device_minor_number minor, void *arg)
#define DECLARE_DEVICE_DRIVER_OPEN(name) \
avfs_device_driver audio_device_##name##_open(avfs_device_major_number major, avfs_device_minor_number minor, void *arg)
#define DECLARE_DEVICE_DRIVER_CLOSE(name) \
avfs_device_driver audio_device_##name##_close(avfs_device_major_number major, avfs_device_minor_number minor, void *arg)
#define DECLARE_DEVICE_DRIVER_IOCTL(name) \
avfs_device_driver audio_device_##name##_ioctl(avfs_device_major_number major, avfs_device_minor_number minor, void *arg)
#define DECLARE_DEVICE_DRIVER_READ(name) \
avfs_device_driver audio_device_##name##_read(avfs_device_major_number major, avfs_device_minor_number minor, void *arg)
#define DECLARE_DEVICE_DRIVER_WRITE(name) \
avfs_device_driver audio_device_##name##_write(avfs_device_major_number major, avfs_device_minor_number minor, void *arg)
DECLARE_DEVICE_DRIVER_INIT(mp3dec);
DECLARE_DEVICE_DRIVER_OPEN(mp3dec);
DECLARE_DEVICE_DRIVER_CLOSE(mp3dec);
DECLARE_DEVICE_DRIVER_READ(mp3dec);
DECLARE_DEVICE_DRIVER_WRITE(mp3dec);
DECLARE_DEVICE_DRIVER_IOCTL(mp3dec);
#define DEVICE_TABLE_AUDIO_MP3DEC \
{ \
audio_device_mp3dec_init, \
audio_device_mp3dec_open, \
audio_device_mp3dec_close, \
audio_device_mp3dec_read, \
audio_device_mp3dec_write, \
audio_device_mp3dec_ioctl, \
}
typedef struct {
unsigned pcm_scale;
unsigned bps; // bit per sample 16 or 24
} _audio_codec_config_mp3dec_t;
typedef struct {
unsigned short layer : 2;
unsigned short bitrate : 4;
unsigned short sample_rate : 2;
unsigned short channel : 1;
unsigned short mode : 2;
unsigned short mode_ext : 2;
unsigned short mpeg_2_5_ext : 1;
unsigned short lsf_ext : 1;
unsigned short crc : 1;
} _audio_codec_status_mp3dec_t;
/* Following memory location definition should be accord with the decoder microcode */
/*********************************** memory *****************************/
#define M_SFBWIDTH_TBL (0xd4000)
// 20*9*3 = 540
#define M_BITRATE_TAB (M_SFBWIDTH_TBL+540)
// 3*30 = 90
#define M_SBSAMPLE (M_BITRATE_TAB+90) // 2*36*48
// 2*36*32 24bit words
#define M_SFLEN_TBL (M_SBSAMPLE+2*36*48)
// 16
#define M_RQ_TABLE (M_SFLEN_TBL+16)
// 8207*2
#define M_CS_CA_TABLE (M_RQ_TABLE+8207*2)
// 24
#define M_IMDCT_S_TABLE (M_CS_CA_TABLE+24)
// 54
#define M_WINDOW_S_TABLE (M_IMDCT_S_TABLE+54)
// 18
#define M_WINDOW_L_TABLE (M_WINDOW_S_TABLE+18)
// 54
#define M_D_TABLE (M_WINDOW_L_TABLE+54)
// 17*48
#define M_XR (M_D_TABLE+17*48)
// 2*2*18*32 24bit word
#define M_OVERLAP (M_XR+4*18*48)
// 2*32*18 24bit word
#define M_FILTER (M_OVERLAP+2*48*18)
// 2*16*32 24bit word
#define M_NSFB_TABLE (M_FILTER+2*16*48)
// 6*3*4 24bit word = 72 72*48/32 = 108
#define M_COS_TABLE (M_NSFB_TABLE+108)
// 32 24bit word
#define M_IS_POS_TBL (M_COS_TABLE+48)
// 7 24bit words up to 8
#define M_IS_LSF_TBL (M_IS_POS_TBL+12)
// 30 24bit words up to 32
#define M_LAYER2_TABLE (M_IS_LSF_TBL+48)
// 416 with padding for 624
#define M_WINDOW_L_C (M_LAYER2_TABLE+624)
// 224
#define M_END (M_WINDOW_L_C+288)
/*********************************** code ******************************/
#define MCODE_START_ADDR 0x800
#define MP3_UCODE_START (0xf0000) // 0x3de0000
// 2k code = 0x800*2 = 0x1000
#define MP2_UCODE_START (0xf1000) // 0x3de2000
// 2k code = 0x800*2 = 0x1000
#define MP1_UCODE_START (0xf2000) // 0x3de4000
// 2k code = 0x800*2 = 0x1000
#endif
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?