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 + -
显示快捷键?