大家好,最近在做一个mp3解码,要求用OpenMax DL层的mp3解码器实现
我现在用的是ARM的DL库,发现里面只有下面这些函数:
OMXResult omxACMP3_UnpackSideInfo_wrapper (
const OMX_U8 **ppBitStream,
OMX_INT *pBitStreamLoc,
OMXMP3SideInfo *pDstSideInfo1,
OMXMP3SideInfo *pDstSideInfo2,
OMXMP3SideInfo *pDstSideInfo3,
OMXMP3SideInfo *pDstSideInfo4,
OMX_INT *pDstMainDataBegin,
OMX_INT *pDstPrivateBits,
OMX_INT *pDstScfsi,
OMXMP3FrameHeader *pFrameHeader
);OMXResult omxACMP3_HuffmanDecode_S32_wrapper(
const OMX_U8 **ppBitStream,
OMX_INT *pBitStreamLoc,
OMX_INT *pOffset,
OMX_S32 *pDstIs,
OMX_INT *pDstNonZeroBound,
OMXMP3SideInfo *pSideInfo,
OMXMP3FrameHeader *pFrameHeader,
OMX_INT hufSize
);OMXResult omxACMP3_HuffmanDecodeSfbMbp_S32_wrapper (
const OMX_U8 **ppBitStream,
OMX_INT *pBitStreamLoc,
OMX_INT *pOffset,
OMX_S32 *pDstIs,
OMX_INT *pDstNonZeroBound,
OMXMP3SideInfo *pSideInfo,
OMXMP3FrameHeader *pFrameHeader,
OMX_INT hufSize,
OMX_S16 *pSfbTableLong,
OMX_S16 *pSfbTableShort,
OMX_S16 *pMbpTable
);
OMXResult omxACMP3_HuffmanDecodeSfb_S32_wrapper (
const OMX_U8 **ppBitStream,
OMX_INT *pBitStreamLoc,
OMX_INT *pOffset,
OMX_S32 *pDstIs,
OMX_INT *pDstNonZeroBound,
OMXMP3SideInfo *pSideInfo,
OMXMP3FrameHeader *pFrameHeader,
OMX_INT hufSize,
OMX_S16 *pSfbTableLong
);
OMXResult omxACMP3_ReQuantizeSfb_S32_I_wrapper(
OMX_S32 *pSrcDstIsXr,
OMX_INT *pNonZeroBound,
OMX_S8 *pScaleFactor,
OMXMP3SideInfo *pSideInfo1,
OMXMP3SideInfo *pSideInfo2,
OMXMP3FrameHeader *pFrameHeader,
OMX_S32 *pBuffer,
OMX_S16 *pSfbTableLong,
OMX_S16 *pSfbTableShort
);OMXResult omxACMP3_ReQuantize_S32_I_wrapper(
OMX_S32 *pSrcDstIsXr,
OMX_INT *pNonZeroBound,
OMX_S8 *pScaleFactor,
OMXMP3SideInfo *pSideInfo1,
OMXMP3SideInfo *pSideInfo2,
OMXMP3FrameHeader *pFrameHeader,
OMX_S32 *pBuffer
);OMXResult omxACMP3_UnpackFrameHeader_wrapper(
const OMX_U8 **ppBitStream,
OMX_INT *pBitStreamLoc,
OMXMP3FrameHeader *pFrameHeader
);OMXResult omxACMP3_UnpackScaleFactors_S8_wrapper (
const OMX_U8 **ppBitStream,
OMX_INT *pBitStreamLoc,
OMX_INT *pOffset,
OMX_S8 *pDstScaleFactor,
OMXMP3SideInfo *pSideInfo,
OMX_INT *pScfsi,
OMXMP3FrameHeader *pFrameHeader,
OMX_INT granule,
OMX_INT channel
);而里面的测试代码也仅仅是针对单个函数的测试,如果要实现解码,那么必须要研究mp3解码的整个流程
现在项目的重点不在mp3解码流程上,所以我想问问是否有这样的一个简单的接口,这个接口调用上面所列的函数实现解码,
我只要调用这个简单的接口即可(比如调用mp3_decode)?感谢大家,麻烦了!!!
我现在用的是ARM的DL库,发现里面只有下面这些函数:
OMXResult omxACMP3_UnpackSideInfo_wrapper (
const OMX_U8 **ppBitStream,
OMX_INT *pBitStreamLoc,
OMXMP3SideInfo *pDstSideInfo1,
OMXMP3SideInfo *pDstSideInfo2,
OMXMP3SideInfo *pDstSideInfo3,
OMXMP3SideInfo *pDstSideInfo4,
OMX_INT *pDstMainDataBegin,
OMX_INT *pDstPrivateBits,
OMX_INT *pDstScfsi,
OMXMP3FrameHeader *pFrameHeader
);OMXResult omxACMP3_HuffmanDecode_S32_wrapper(
const OMX_U8 **ppBitStream,
OMX_INT *pBitStreamLoc,
OMX_INT *pOffset,
OMX_S32 *pDstIs,
OMX_INT *pDstNonZeroBound,
OMXMP3SideInfo *pSideInfo,
OMXMP3FrameHeader *pFrameHeader,
OMX_INT hufSize
);OMXResult omxACMP3_HuffmanDecodeSfbMbp_S32_wrapper (
const OMX_U8 **ppBitStream,
OMX_INT *pBitStreamLoc,
OMX_INT *pOffset,
OMX_S32 *pDstIs,
OMX_INT *pDstNonZeroBound,
OMXMP3SideInfo *pSideInfo,
OMXMP3FrameHeader *pFrameHeader,
OMX_INT hufSize,
OMX_S16 *pSfbTableLong,
OMX_S16 *pSfbTableShort,
OMX_S16 *pMbpTable
);
OMXResult omxACMP3_HuffmanDecodeSfb_S32_wrapper (
const OMX_U8 **ppBitStream,
OMX_INT *pBitStreamLoc,
OMX_INT *pOffset,
OMX_S32 *pDstIs,
OMX_INT *pDstNonZeroBound,
OMXMP3SideInfo *pSideInfo,
OMXMP3FrameHeader *pFrameHeader,
OMX_INT hufSize,
OMX_S16 *pSfbTableLong
);
OMXResult omxACMP3_ReQuantizeSfb_S32_I_wrapper(
OMX_S32 *pSrcDstIsXr,
OMX_INT *pNonZeroBound,
OMX_S8 *pScaleFactor,
OMXMP3SideInfo *pSideInfo1,
OMXMP3SideInfo *pSideInfo2,
OMXMP3FrameHeader *pFrameHeader,
OMX_S32 *pBuffer,
OMX_S16 *pSfbTableLong,
OMX_S16 *pSfbTableShort
);OMXResult omxACMP3_ReQuantize_S32_I_wrapper(
OMX_S32 *pSrcDstIsXr,
OMX_INT *pNonZeroBound,
OMX_S8 *pScaleFactor,
OMXMP3SideInfo *pSideInfo1,
OMXMP3SideInfo *pSideInfo2,
OMXMP3FrameHeader *pFrameHeader,
OMX_S32 *pBuffer
);OMXResult omxACMP3_UnpackFrameHeader_wrapper(
const OMX_U8 **ppBitStream,
OMX_INT *pBitStreamLoc,
OMXMP3FrameHeader *pFrameHeader
);OMXResult omxACMP3_UnpackScaleFactors_S8_wrapper (
const OMX_U8 **ppBitStream,
OMX_INT *pBitStreamLoc,
OMX_INT *pOffset,
OMX_S8 *pDstScaleFactor,
OMXMP3SideInfo *pSideInfo,
OMX_INT *pScfsi,
OMXMP3FrameHeader *pFrameHeader,
OMX_INT granule,
OMX_INT channel
);而里面的测试代码也仅仅是针对单个函数的测试,如果要实现解码,那么必须要研究mp3解码的整个流程
现在项目的重点不在mp3解码流程上,所以我想问问是否有这样的一个简单的接口,这个接口调用上面所列的函数实现解码,
我只要调用这个简单的接口即可(比如调用mp3_decode)?感谢大家,麻烦了!!!
这里面有封装好的,能直接用,可以看一下代码
N年前的arm,就算软件解mp3,对CPU的影响也很小,