11bd4fe43Sopenharmony_ci/*
21bd4fe43Sopenharmony_ci * Copyright (c) 2022 HiSilicon (Shanghai) Technologies CO., LIMITED.
31bd4fe43Sopenharmony_ci * Licensed under the Apache License, Version 2.0 (the "License");
41bd4fe43Sopenharmony_ci * you may not use this file except in compliance with the License.
51bd4fe43Sopenharmony_ci * You may obtain a copy of the License at
61bd4fe43Sopenharmony_ci *
71bd4fe43Sopenharmony_ci *     http://www.apache.org/licenses/LICENSE-2.0
81bd4fe43Sopenharmony_ci *
91bd4fe43Sopenharmony_ci * Unless required by applicable law or agreed to in writing, software
101bd4fe43Sopenharmony_ci * distributed under the License is distributed on an "AS IS" BASIS,
111bd4fe43Sopenharmony_ci * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
121bd4fe43Sopenharmony_ci * See the License for the specific language governing permissions and
131bd4fe43Sopenharmony_ci * limitations under the License.
141bd4fe43Sopenharmony_ci */
151bd4fe43Sopenharmony_ci
161bd4fe43Sopenharmony_ci#ifndef __AUDIO_MP3_ADP_H__
171bd4fe43Sopenharmony_ci#define __AUDIO_MP3_ADP_H__
181bd4fe43Sopenharmony_ci
191bd4fe43Sopenharmony_ci#include <stdio.h>
201bd4fe43Sopenharmony_ci
211bd4fe43Sopenharmony_ci#include "hi_comm_aio.h"
221bd4fe43Sopenharmony_ci#include "mpi_audio.h"
231bd4fe43Sopenharmony_ci#include "hi_comm_adec.h"
241bd4fe43Sopenharmony_ci#include "mp3dec.h"
251bd4fe43Sopenharmony_ci
261bd4fe43Sopenharmony_ci/* max length of MP3 stream by bytes */
271bd4fe43Sopenharmony_ci#define MAX_MP3_MAINBUF_SIZE    2048*2
281bd4fe43Sopenharmony_ci#define MP3_SAMPLES_PER_FRAME   1152
291bd4fe43Sopenharmony_ci#define NO_ENOUGH_MAIN_DATA_ERROR 11
301bd4fe43Sopenharmony_ci
311bd4fe43Sopenharmony_citypedef enum hiMP3_BPS_E {
321bd4fe43Sopenharmony_ci    MP3_BPS_32K     = 32000,
331bd4fe43Sopenharmony_ci    MP3_BPS_40K     = 40000,
341bd4fe43Sopenharmony_ci    MP3_BPS_48K     = 48000,
351bd4fe43Sopenharmony_ci    MP3_BPS_56K     = 56000,
361bd4fe43Sopenharmony_ci    MP3_BPS_64K     = 64000,
371bd4fe43Sopenharmony_ci    MP3_BPS_80K     = 80000,
381bd4fe43Sopenharmony_ci    MP3_BPS_96K     = 96000,
391bd4fe43Sopenharmony_ci    MP3_BPS_112K    = 112000,
401bd4fe43Sopenharmony_ci    MP3_BPS_128K    = 128000,
411bd4fe43Sopenharmony_ci    MP3_BPS_160K    = 160000,
421bd4fe43Sopenharmony_ci    MP3_BPS_192K    = 192000,
431bd4fe43Sopenharmony_ci    MP3_BPS_224K    = 224000,
441bd4fe43Sopenharmony_ci    MP3_BPS_256K    = 256000,
451bd4fe43Sopenharmony_ci    MP3_BPS_320K    = 320000,
461bd4fe43Sopenharmony_ci} MP3_BPS_E;
471bd4fe43Sopenharmony_ci
481bd4fe43Sopenharmony_citypedef enum hiMP3_LAYER_E {
491bd4fe43Sopenharmony_ci    MP3_LAYER_1     = 1,
501bd4fe43Sopenharmony_ci    MP3_LAYER_2     = 2,
511bd4fe43Sopenharmony_ci    MP3_LAYER_3     = 3,
521bd4fe43Sopenharmony_ci} MP3_LAYER_E;
531bd4fe43Sopenharmony_ci
541bd4fe43Sopenharmony_citypedef enum hiMP3_VERSION_E {
551bd4fe43Sopenharmony_ci    MPEG_1          = 1,
561bd4fe43Sopenharmony_ci    MPEG_2          = 0,
571bd4fe43Sopenharmony_ci    MPEG_25         = 2,
581bd4fe43Sopenharmony_ci} MP3_VERSION_E;
591bd4fe43Sopenharmony_ci
601bd4fe43Sopenharmony_citypedef struct hiMP3_FRAME_INFO_S {
611bd4fe43Sopenharmony_ci    HI_S32 s32BitRate;
621bd4fe43Sopenharmony_ci    HI_S32 s32Chans;                /* 1 or 2 */
631bd4fe43Sopenharmony_ci    HI_S32 s32SampRate;
641bd4fe43Sopenharmony_ci    HI_S32 s32BitsPerSample;        /* only support 16 bits */
651bd4fe43Sopenharmony_ci    HI_S32 s32OutPutSamps;          /* nChans*SamplePerFrame */
661bd4fe43Sopenharmony_ci    HI_S32 s32Layer;                /* layer,the infomation of stream's encode profile */
671bd4fe43Sopenharmony_ci    HI_S32 s32Version;              /* version,the infomation of stream's encode profile */
681bd4fe43Sopenharmony_ci} MP3_FRAME_INFO_S;
691bd4fe43Sopenharmony_ci
701bd4fe43Sopenharmony_citypedef struct hiADEC_ATTR_MP3_S {
711bd4fe43Sopenharmony_ci    HI_U32 resv;
721bd4fe43Sopenharmony_ci} ADEC_ATTR_MP3_S;
731bd4fe43Sopenharmony_ci
741bd4fe43Sopenharmony_citypedef struct hiADEC_MP3_DECODER_S {
751bd4fe43Sopenharmony_ci    ADEC_ATTR_MP3_S     stMP3Attr;
761bd4fe43Sopenharmony_ci    HMP3Decoder         pstMP3State;
771bd4fe43Sopenharmony_ci} ADEC_MP3_DECODER_S;
781bd4fe43Sopenharmony_ci
791bd4fe43Sopenharmony_ciHI_S32 HI_MPI_ADEC_Mp3Init(HI_VOID);
801bd4fe43Sopenharmony_ci
811bd4fe43Sopenharmony_ci#endif
821bd4fe43Sopenharmony_ci
83