1 /*
2  * Copyright (c) 2021-2021 Huawei Device Co., Ltd.
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 #define MINIMP3_IMPLEMENTATION
17 #define MAX_FRAME_SYNC_MATCHES 3
18 #include "minimp3.h"
19 #include "minimp3_ex.h"
20 #undef MINIMP3_IMPLEMENTATION
21 
22 #include "minimp3_wrapper.h"
23 
Minimp3WrapperMp3decInit(Minimp3WrapperMp3dec * dec)24 void Minimp3WrapperMp3decInit(Minimp3WrapperMp3dec *dec)
25 {
26     mp3dec_init(dec);
27 }
28 
Minimp3WrapperMp3decDecodeFrame(Minimp3WrapperMp3dec * dec,const uint8_t * mp3,int mp3Bytes,Minimp3WrapperMp3dSample * pcm,Minimp3WrapperMp3decFrameInfo * info)29 int Minimp3WrapperMp3decDecodeFrame(Minimp3WrapperMp3dec *dec, const uint8_t *mp3, int mp3Bytes,
30                                     Minimp3WrapperMp3dSample *pcm, Minimp3WrapperMp3decFrameInfo *info)
31 {
32     return mp3dec_decode_frame(dec, mp3, mp3Bytes, pcm, info);
33 }
34 
Minimp3WrapperMp3decDetectBuf(const uint8_t * buf,size_t bufSize)35 int Minimp3WrapperMp3decDetectBuf(const uint8_t *buf, size_t bufSize)
36 {
37     return mp3dec_detect_buf(buf, bufSize);
38 }
39 
Minimp3WrapperMp3decDetectCb(Minimp3WrapperMp3decIO * io,uint8_t * buf,size_t bufSize)40 int Minimp3WrapperMp3decDetectCb(Minimp3WrapperMp3decIO *io, uint8_t *buf, size_t bufSize)
41 {
42     return mp3dec_detect_cb(io, buf, bufSize);
43 }
44 
Minimp3WrapperMp3decIterateBuf(const uint8_t * buf,size_t bufSize,MINIMP3_WRAPPER_MP3D_ITERATE_CB callback,void * userData)45 int Minimp3WrapperMp3decIterateBuf(const uint8_t *buf, size_t bufSize, MINIMP3_WRAPPER_MP3D_ITERATE_CB callback,
46                                    void *userData)
47 {
48     return mp3dec_iterate_buf(buf, bufSize, callback, userData);
49 }
50 
Minimp3WrapperMp3decIterateCb(Minimp3WrapperMp3decIO * io,uint8_t * buf,size_t bufSize,MINIMP3_WRAPPER_MP3D_ITERATE_CB callback,void * userData)51 int Minimp3WrapperMp3decIterateCb(Minimp3WrapperMp3decIO *io, uint8_t *buf, size_t bufSize,
52                                   MINIMP3_WRAPPER_MP3D_ITERATE_CB callback, void *userData)
53 {
54     return mp3dec_iterate_cb(io, buf, bufSize, callback, userData);
55 }
56 
57 Minimp3DemuxerOp minimp3DemuxerOp = {
58     .init         = Minimp3WrapperMp3decInit,
59     .decoderFrame = Minimp3WrapperMp3decDecodeFrame,
60     .detecBuf     = Minimp3WrapperMp3decDetectBuf,
61     .detecCb      = Minimp3WrapperMp3decDetectCb,
62     .iterateBuf   = Minimp3WrapperMp3decIterateBuf,
63     .iterateCb    = Minimp3WrapperMp3decIterateCb
64 };
65 
MiniMp3GetOpt(void)66 Minimp3DemuxerOp MiniMp3GetOpt(void)
67 {
68     return minimp3DemuxerOp;
69 }