• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 /*
2  * Copyright (c) 2022 HiSilicon (Shanghai) Technologies CO., LIMITED.
3  * Licensed under the Apache License, Version 2.0 (the "License");
4  * you may not use this file except in compliance with the License.
5  * You may obtain a copy of the License at
6  *
7  *     http://www.apache.org/licenses/LICENSE-2.0
8  *
9  * Unless required by applicable law or agreed to in writing, software
10  * distributed under the License is distributed on an "AS IS" BASIS,
11  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12  * See the License for the specific language governing permissions and
13  * limitations under the License.
14  */
15 
16 #ifndef __AUDIO_MP3_ADP_H__
17 #define __AUDIO_MP3_ADP_H__
18 
19 #include <stdio.h>
20 
21 #include "hi_comm_aio.h"
22 #include "mpi_audio.h"
23 #include "hi_comm_adec.h"
24 #include "mp3dec.h"
25 
26 /* max length of MP3 stream by bytes */
27 #define MAX_MP3_MAINBUF_SIZE    2048*2
28 #define MP3_SAMPLES_PER_FRAME   1152
29 #define NO_ENOUGH_MAIN_DATA_ERROR 11
30 
31 typedef enum hiMP3_BPS_E {
32     MP3_BPS_32K     = 32000,
33     MP3_BPS_40K     = 40000,
34     MP3_BPS_48K     = 48000,
35     MP3_BPS_56K     = 56000,
36     MP3_BPS_64K     = 64000,
37     MP3_BPS_80K     = 80000,
38     MP3_BPS_96K     = 96000,
39     MP3_BPS_112K    = 112000,
40     MP3_BPS_128K    = 128000,
41     MP3_BPS_160K    = 160000,
42     MP3_BPS_192K    = 192000,
43     MP3_BPS_224K    = 224000,
44     MP3_BPS_256K    = 256000,
45     MP3_BPS_320K    = 320000,
46 } MP3_BPS_E;
47 
48 typedef enum hiMP3_LAYER_E {
49     MP3_LAYER_1     = 1,
50     MP3_LAYER_2     = 2,
51     MP3_LAYER_3     = 3,
52 } MP3_LAYER_E;
53 
54 typedef enum hiMP3_VERSION_E {
55     MPEG_1          = 1,
56     MPEG_2          = 0,
57     MPEG_25         = 2,
58 } MP3_VERSION_E;
59 
60 typedef struct hiMP3_FRAME_INFO_S {
61     HI_S32 s32BitRate;
62     HI_S32 s32Chans;                /* 1 or 2 */
63     HI_S32 s32SampRate;
64     HI_S32 s32BitsPerSample;        /* only support 16 bits */
65     HI_S32 s32OutPutSamps;          /* nChans*SamplePerFrame */
66     HI_S32 s32Layer;                /* layer,the infomation of stream's encode profile */
67     HI_S32 s32Version;              /* version,the infomation of stream's encode profile */
68 } MP3_FRAME_INFO_S;
69 
70 typedef struct hiADEC_ATTR_MP3_S {
71     HI_U32 resv;
72 } ADEC_ATTR_MP3_S;
73 
74 typedef struct hiADEC_MP3_DECODER_S {
75     ADEC_ATTR_MP3_S     stMP3Attr;
76     HMP3Decoder         pstMP3State;
77 } ADEC_MP3_DECODER_S;
78 
79 HI_S32 HI_MPI_ADEC_Mp3Init(HI_VOID);
80 
81 #endif
82 
83