Loading Workspace_msvc/lib_rend.vcxproj +12 −3 Original line number Diff line number Diff line Loading @@ -89,7 +89,7 @@ </Midl> <ClCompile> <Optimization>Disabled</Optimization> <AdditionalIncludeDirectories>..\lib_com;..\lib_debug;..\lib_dec;..\lib_enc;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories> <AdditionalIncludeDirectories>ivas_cldfb_trans_codec;..\lib_com;..\lib_debug;..\lib_dec;..\lib_enc;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories> <PreprocessorDefinitions>_CRT_SECURE_NO_WARNINGS;$(Macros);WIN32;%(PreprocessorDefinitions)</PreprocessorDefinitions> <ExceptionHandling /> <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks> Loading Loading @@ -126,7 +126,7 @@ </Midl> <ClCompile> <Optimization>Disabled</Optimization> <AdditionalIncludeDirectories>..\lib_com;..\lib_debug;..\lib_dec;..\lib_enc;..\lib_util;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories> <AdditionalIncludeDirectories>ivas_cldfb_trans_codec;..\lib_com;..\lib_debug;..\lib_dec;..\lib_enc;..\lib_util;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories> <PreprocessorDefinitions>_CRT_SECURE_NO_WARNINGS;$(Macros);WIN32;%(PreprocessorDefinitions)</PreprocessorDefinitions> <ExceptionHandling> </ExceptionHandling> Loading Loading @@ -169,7 +169,7 @@ <FavorSizeOrSpeed>Neither</FavorSizeOrSpeed> <OmitFramePointers>false</OmitFramePointers> <EnableFiberSafeOptimizations>false</EnableFiberSafeOptimizations> <AdditionalIncludeDirectories>..\lib_com;..\lib_debug;..\lib_dec;..\lib_enc;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories> <AdditionalIncludeDirectories>ivas_cldfb_trans_codec;..\lib_com;..\lib_debug;..\lib_dec;..\lib_enc;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories> <PreprocessorDefinitions>_CRT_SECURE_NO_WARNINGS;$(Macros);WIN32;%(PreprocessorDefinitions)</PreprocessorDefinitions> <StringPooling>true</StringPooling> <ExceptionHandling /> Loading Loading @@ -197,6 +197,15 @@ </Lib> </ItemDefinitionGroup> <ItemGroup> <ClCompile Include="..\lib_rend\ivas_cldfb_trans_codec\Bitstream.c" /> <ClCompile Include="..\lib_rend\ivas_cldfb_trans_codec\CQMFDecoder.c" /> <ClCompile Include="..\lib_rend\ivas_cldfb_trans_codec\CQMFEncoder.c" /> <ClCompile Include="..\lib_rend\ivas_cldfb_trans_codec\CQMFHuff.c" /> <ClCompile Include="..\lib_rend\ivas_cldfb_trans_codec\NoiseGen.c" /> <ClCompile Include="..\lib_rend\ivas_cldfb_trans_codec\PerceptualModel.c" /> <ClCompile Include="..\lib_rend\ivas_cldfb_trans_codec\RMSEnvDeltaHuff.c" /> <ClCompile Include="..\lib_rend\ivas_cldfb_trans_codec\RMSEnvGrouping.c" /> <ClCompile Include="..\lib_rend\ivas_cldfb_trans_codec\Tables.c" /> <ClCompile Include="..\lib_rend\ivas_sba_rendering.c" /> <ClCompile Include="..\lib_rend\ivas_allrad_dec.c" /> <ClCompile Include="..\lib_rend\ivas_binauralRenderer.c" /> Loading Workspace_msvc/renderer.vcxproj +3 −3 Original line number Diff line number Diff line Loading @@ -86,7 +86,7 @@ </Midl> <ClCompile> <Optimization>Disabled</Optimization> <AdditionalIncludeDirectories>..\lib_com;..\lib_debug;..\lib_dec;..\lib_enc;..\lib_util;..\lib_rend;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories> <AdditionalIncludeDirectories>..\lib_com;..\lib_debug;..\lib_dec;..\lib_enc;..\lib_util;..\lib_rend;..\lib_rend\ivas_cldfb_trans_codec;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories> <PreprocessorDefinitions>_CRT_SECURE_NO_WARNINGS;WIN32;$(Macros);%(PreprocessorDefinitions)</PreprocessorDefinitions> <ExceptionHandling /> <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks> Loading Loading @@ -130,7 +130,7 @@ </Midl> <ClCompile> <Optimization>Disabled</Optimization> <AdditionalIncludeDirectories>..\lib_com;..\lib_debug;..\lib_dec;..\lib_enc;..\lib_util;..\lib_rend;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories> <AdditionalIncludeDirectories>..\lib_com;..\lib_debug;..\lib_dec;..\lib_enc;..\lib_util;..\lib_rend;..\lib_rend\ivas_cldfb_trans_codec;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories> <PreprocessorDefinitions>_CRT_SECURE_NO_WARNINGS;WIN32;$(Macros);%(PreprocessorDefinitions)</PreprocessorDefinitions> <ExceptionHandling> </ExceptionHandling> Loading Loading @@ -180,7 +180,7 @@ <FavorSizeOrSpeed>Neither</FavorSizeOrSpeed> <OmitFramePointers>false</OmitFramePointers> <EnableFiberSafeOptimizations>false</EnableFiberSafeOptimizations> <AdditionalIncludeDirectories>..\lib_com;..\lib_debug;..\lib_dec;..\lib_enc;..\lib_util;..\lib_rend;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories> <AdditionalIncludeDirectories>..\lib_com;..\lib_debug;..\lib_dec;..\lib_enc;..\lib_util;..\lib_rend;..\lib_rend\ivas_cldfb_trans_codec;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories> <PreprocessorDefinitions>_CRT_SECURE_NO_WARNINGS;$(Macros);%(PreprocessorDefinitions)</PreprocessorDefinitions> <StringPooling>true</StringPooling> <ExceptionHandling /> Loading lib_com/ivas_prot.h +7 −2 Original line number Diff line number Diff line Loading @@ -4680,7 +4680,10 @@ void ivas_split_renderer_close( SPLIT_REND_WRAPPER *hSplitBinRend); ivas_error ivas_splitBinLCLDEncOpen( BIN_HR_SPLIT_LCLD_ENC_HANDLE *hSplitBinLCLDEnc ); BIN_HR_SPLIT_LCLD_ENC_HANDLE *hSplitBinLCLDEnc, int32_t iSampleRate, int32_t iChannels, int32_t iDataRate ); void ivas_splitBinLCLDEncClose( BIN_HR_SPLIT_LCLD_ENC_HANDLE *hSplitBinLCLDEnc ); Loading @@ -4692,7 +4695,9 @@ void ivas_splitBinLCLDEncProcess( ivas_split_rend_bits_t *pBits ); ivas_error ivas_splitBinLCLDDecOpen( BIN_HR_SPLIT_LCLD_DEC_HANDLE *hSplitBinLCLDDec ); BIN_HR_SPLIT_LCLD_DEC_HANDLE *hSplitBinLCLDDec, int32_t iSampleRate, int32_t iChannels ); void ivas_splitBinLCLDDecClose( BIN_HR_SPLIT_LCLD_DEC_HANDLE *hSplitBinLCLDDec ); Loading lib_dec/ivas_stat_dec.h +20 −0 Original line number Diff line number Diff line Loading @@ -42,6 +42,10 @@ #include "ivas_stat_rend.h" #include "common_api_types.h" // VE2AT: don't we want to avoid this include in the library? I admit that the rules hefre are not 100% clear to me but introducing it just for IVAS_QUATERNION is not necessry I think #ifdef SPLIT_REND_WITH_HEAD_ROT #include "ivas_cldfb_trans_codec/CQMFEncoder.h" #include "ivas_cldfb_trans_codec/CQMFDecoder.h" #endif /*----------------------------------------------------------------------------------* * Output configuration for renderer (e.g. DirAC, MASA, Binaural Renderer...) Loading Loading @@ -1344,11 +1348,27 @@ typedef struct ivas_binaural_head_rot_split_post_rendering_struct typedef struct ivas_binaural_head_rot_split_rendering_lcld_enc_struct { void *pLcld_enc; int32_t iChannels; CQMFEncoder *psCQMFEncoder; float ***pppfCQMFReal; float ***pppfCQMFImag; #ifdef CLDFB_DEBUG FILE *cldfbIn; int numFrame; #endif } BIN_HR_SPLIT_LCLD_ENC, *BIN_HR_SPLIT_LCLD_ENC_HANDLE; typedef struct ivas_binaural_head_rot_split_rendering_lcld_dec_struct { void *pLcld_dec; int32_t iChannels; CQMFDecoder *psCQMFDecoder; float ***pppfDecCQMFReal; float ***pppfDecCQMFImag; #ifdef CLDFB_DEBUG FILE *cldfbOut; int numFrame; #endif } BIN_HR_SPLIT_LCLD_DEC, *BIN_HR_SPLIT_LCLD_DEC_HANDLE; typedef struct Loading lib_rend/ivas_cldfb_trans_codec/Bitstream.c 0 → 100644 +226 −0 Original line number Diff line number Diff line #include "Bitstream.h" #include <stdlib.h> #include <memory.h> #include "wmops.h" #define MAX_BUFFER 1024 static const unsigned int MASKS[] = { 0x00000000, 0x00000001, 0x00000003, 0x00000007, 0x0000000f, 0x0000001f, 0x0000003f, 0x0000007f, 0x000000ff, 0x000001ff, 0x000003ff, 0x000007ff, 0x00000fff, 0x00001fff, 0x00003fff, 0x00007fff, 0x0000ffff, 0x0001ffff, 0x0003ffff, 0x0007ffff, 0x000fffff, 0x001fffff, 0x003fffff, 0x007fffff, 0x00ffffff, 0x01ffffff, 0x03ffffff, 0x07ffffff, 0x0fffffff, 0x1fffffff, 0x3fffffff, 0x7fffffff, }; Bitstream* CreateBitstream(const int iDirection, const int iMaxBuffer) { int n; Bitstream *psBitstream; psBitstream = (Bitstream*)malloc(sizeof(Bitstream)); psBitstream->iDirection =iDirection; psBitstream->iMaxBuffer = iMaxBuffer; psBitstream->iIndex = 0; psBitstream->iBufferEnd = 0; psBitstream->iBufferStart = 0; psBitstream->iError = BS_ERROR_NONE; if(psBitstream->iMaxBuffer == -1){ psBitstream->iMaxBuffer = MAX_BUFFER; } psBitstream->puchBuffer = (unsigned char*)malloc(sizeof(unsigned char) * psBitstream->iMaxBuffer); for(n = 0; n < psBitstream->iMaxBuffer; n ++){ psBitstream->puchBuffer[n] = 0; } return psBitstream; } void DeleteBitstream(Bitstream *psBitstream) { free(psBitstream->puchBuffer); free(psBitstream); } void BSFlushBuffer(Bitstream *psBitstream) { memset(psBitstream->puchBuffer,0,psBitstream->iMaxBuffer); psBitstream->iIndex = 0; psBitstream->iBufferEnd = 0; psBitstream->iBufferStart = 0; psBitstream->iError = BS_ERROR_NONE; } int BSPutBytes(Bitstream *psBitstream, const unsigned char *puchBytes, const int iByteCount) { int n; for(n = 0; n < iByteCount; n ++){ psBitstream->puchBuffer[psBitstream->iBufferEnd] = puchBytes[n]; psBitstream->iBufferEnd ++; } if(psBitstream->iDirection != BS_READ){ psBitstream->iError = BS_ERROR_FAIL; } return psBitstream->iError; } int BSGetBytes(Bitstream *psBitstream, unsigned char *puchBytes, int iByteCount) { int n; for(n = 0; n < iByteCount; n++){ puchBytes[n] = psBitstream->puchBuffer[psBitstream->iBufferStart]; psBitstream->puchBuffer[psBitstream->iBufferStart] = 0; psBitstream->iBufferStart ++; } if(psBitstream->iDirection != BS_WRITE){ psBitstream->iError = BS_ERROR_FAIL; } return psBitstream->iError; } int BSByteAlign(Bitstream *psBitstream) { if(psBitstream->iDirection == BS_WRITE){ if(psBitstream->iIndex & 0x7){ int iByte; int iRem; iByte = psBitstream->iIndex >> 3; iRem = 8 - (psBitstream->iIndex - (iByte<<3)); psBitstream->puchBuffer[iByte] &= (0xff ^ MASKS[iRem]); psBitstream->iIndex += iRem; } } else{ if(psBitstream->iIndex & 0x7){ int iByte; int iRem; iByte = psBitstream->iIndex >> 3; iRem = 8 - (psBitstream->iIndex - (iByte<<3)); psBitstream->iIndex += iRem; } } return psBitstream->iError; } int BSPutBits(Bitstream *psBitstream, int iValue, int iBitCount) { iValue &= MASKS[iBitCount]; while(iBitCount){ int iByte; int iRem; int iShift; iByte = psBitstream->iIndex >> 3; iRem = 8 - (psBitstream->iIndex - (iByte<<3)); //8 - psBitstream->iIndex & 0x7; iShift = iBitCount-iRem; if(iShift <= 0){ iShift *= -1; psBitstream->puchBuffer[iByte] += (unsigned char) (iValue<<iShift); psBitstream->iIndex += iBitCount; iBitCount = 0; } else{ psBitstream->puchBuffer[iByte] += (unsigned char) (iValue>>iShift); iValue &= MASKS[iShift]; psBitstream->iIndex += iRem; iBitCount -= iRem; } } if(psBitstream->iDirection != BS_WRITE){ psBitstream->iError = BS_ERROR_FAIL; } return psBitstream->iError; } int BSGetBits(Bitstream *psBitstream, int iBitCount) { int iValue = 0; while(iBitCount){ unsigned char uchByte; int iByte; int iRem; int iShift; iByte = psBitstream->iIndex >> 3; iRem = 8 - (psBitstream->iIndex - (iByte << 3)); //8 - psBitstream->iIndex & 0x7; uchByte = psBitstream->puchBuffer[iByte]; iShift = iBitCount - iRem; if(iShift <= 0){ iShift *= -1; iValue += (int)((uchByte >> iShift) & MASKS[iBitCount]); psBitstream->iIndex += iBitCount; iBitCount = 0; } else{ uchByte &= MASKS[iRem]; iValue += (((int)uchByte)<<iShift); psBitstream->iIndex += iRem; iBitCount -= iRem; } } if(psBitstream->iDirection != BS_READ){ psBitstream->iError = BS_ERROR_FAIL; } return iValue; } int BSForceBack(Bitstream *psBitstream, int iValue, int iBitCount) { psBitstream->iIndex -= iBitCount; return (iValue>>iBitCount); } int BSGetByteCount(Bitstream *psBitstream) { int iBytes; iBytes = psBitstream->iIndex>>3; if((iBytes << 3) != psBitstream->iIndex){ iBytes ++; } return iBytes; } unsigned char* BSGetBuffer(Bitstream *psBitstream) { return psBitstream->puchBuffer; } int BSGetAvailableBytes(Bitstream *psBitstream) { return psBitstream->iBufferEnd; } int BSGetError(Bitstream *psBitstream) { return psBitstream->iError; } Loading
Workspace_msvc/lib_rend.vcxproj +12 −3 Original line number Diff line number Diff line Loading @@ -89,7 +89,7 @@ </Midl> <ClCompile> <Optimization>Disabled</Optimization> <AdditionalIncludeDirectories>..\lib_com;..\lib_debug;..\lib_dec;..\lib_enc;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories> <AdditionalIncludeDirectories>ivas_cldfb_trans_codec;..\lib_com;..\lib_debug;..\lib_dec;..\lib_enc;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories> <PreprocessorDefinitions>_CRT_SECURE_NO_WARNINGS;$(Macros);WIN32;%(PreprocessorDefinitions)</PreprocessorDefinitions> <ExceptionHandling /> <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks> Loading Loading @@ -126,7 +126,7 @@ </Midl> <ClCompile> <Optimization>Disabled</Optimization> <AdditionalIncludeDirectories>..\lib_com;..\lib_debug;..\lib_dec;..\lib_enc;..\lib_util;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories> <AdditionalIncludeDirectories>ivas_cldfb_trans_codec;..\lib_com;..\lib_debug;..\lib_dec;..\lib_enc;..\lib_util;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories> <PreprocessorDefinitions>_CRT_SECURE_NO_WARNINGS;$(Macros);WIN32;%(PreprocessorDefinitions)</PreprocessorDefinitions> <ExceptionHandling> </ExceptionHandling> Loading Loading @@ -169,7 +169,7 @@ <FavorSizeOrSpeed>Neither</FavorSizeOrSpeed> <OmitFramePointers>false</OmitFramePointers> <EnableFiberSafeOptimizations>false</EnableFiberSafeOptimizations> <AdditionalIncludeDirectories>..\lib_com;..\lib_debug;..\lib_dec;..\lib_enc;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories> <AdditionalIncludeDirectories>ivas_cldfb_trans_codec;..\lib_com;..\lib_debug;..\lib_dec;..\lib_enc;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories> <PreprocessorDefinitions>_CRT_SECURE_NO_WARNINGS;$(Macros);WIN32;%(PreprocessorDefinitions)</PreprocessorDefinitions> <StringPooling>true</StringPooling> <ExceptionHandling /> Loading Loading @@ -197,6 +197,15 @@ </Lib> </ItemDefinitionGroup> <ItemGroup> <ClCompile Include="..\lib_rend\ivas_cldfb_trans_codec\Bitstream.c" /> <ClCompile Include="..\lib_rend\ivas_cldfb_trans_codec\CQMFDecoder.c" /> <ClCompile Include="..\lib_rend\ivas_cldfb_trans_codec\CQMFEncoder.c" /> <ClCompile Include="..\lib_rend\ivas_cldfb_trans_codec\CQMFHuff.c" /> <ClCompile Include="..\lib_rend\ivas_cldfb_trans_codec\NoiseGen.c" /> <ClCompile Include="..\lib_rend\ivas_cldfb_trans_codec\PerceptualModel.c" /> <ClCompile Include="..\lib_rend\ivas_cldfb_trans_codec\RMSEnvDeltaHuff.c" /> <ClCompile Include="..\lib_rend\ivas_cldfb_trans_codec\RMSEnvGrouping.c" /> <ClCompile Include="..\lib_rend\ivas_cldfb_trans_codec\Tables.c" /> <ClCompile Include="..\lib_rend\ivas_sba_rendering.c" /> <ClCompile Include="..\lib_rend\ivas_allrad_dec.c" /> <ClCompile Include="..\lib_rend\ivas_binauralRenderer.c" /> Loading
Workspace_msvc/renderer.vcxproj +3 −3 Original line number Diff line number Diff line Loading @@ -86,7 +86,7 @@ </Midl> <ClCompile> <Optimization>Disabled</Optimization> <AdditionalIncludeDirectories>..\lib_com;..\lib_debug;..\lib_dec;..\lib_enc;..\lib_util;..\lib_rend;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories> <AdditionalIncludeDirectories>..\lib_com;..\lib_debug;..\lib_dec;..\lib_enc;..\lib_util;..\lib_rend;..\lib_rend\ivas_cldfb_trans_codec;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories> <PreprocessorDefinitions>_CRT_SECURE_NO_WARNINGS;WIN32;$(Macros);%(PreprocessorDefinitions)</PreprocessorDefinitions> <ExceptionHandling /> <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks> Loading Loading @@ -130,7 +130,7 @@ </Midl> <ClCompile> <Optimization>Disabled</Optimization> <AdditionalIncludeDirectories>..\lib_com;..\lib_debug;..\lib_dec;..\lib_enc;..\lib_util;..\lib_rend;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories> <AdditionalIncludeDirectories>..\lib_com;..\lib_debug;..\lib_dec;..\lib_enc;..\lib_util;..\lib_rend;..\lib_rend\ivas_cldfb_trans_codec;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories> <PreprocessorDefinitions>_CRT_SECURE_NO_WARNINGS;WIN32;$(Macros);%(PreprocessorDefinitions)</PreprocessorDefinitions> <ExceptionHandling> </ExceptionHandling> Loading Loading @@ -180,7 +180,7 @@ <FavorSizeOrSpeed>Neither</FavorSizeOrSpeed> <OmitFramePointers>false</OmitFramePointers> <EnableFiberSafeOptimizations>false</EnableFiberSafeOptimizations> <AdditionalIncludeDirectories>..\lib_com;..\lib_debug;..\lib_dec;..\lib_enc;..\lib_util;..\lib_rend;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories> <AdditionalIncludeDirectories>..\lib_com;..\lib_debug;..\lib_dec;..\lib_enc;..\lib_util;..\lib_rend;..\lib_rend\ivas_cldfb_trans_codec;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories> <PreprocessorDefinitions>_CRT_SECURE_NO_WARNINGS;$(Macros);%(PreprocessorDefinitions)</PreprocessorDefinitions> <StringPooling>true</StringPooling> <ExceptionHandling /> Loading
lib_com/ivas_prot.h +7 −2 Original line number Diff line number Diff line Loading @@ -4680,7 +4680,10 @@ void ivas_split_renderer_close( SPLIT_REND_WRAPPER *hSplitBinRend); ivas_error ivas_splitBinLCLDEncOpen( BIN_HR_SPLIT_LCLD_ENC_HANDLE *hSplitBinLCLDEnc ); BIN_HR_SPLIT_LCLD_ENC_HANDLE *hSplitBinLCLDEnc, int32_t iSampleRate, int32_t iChannels, int32_t iDataRate ); void ivas_splitBinLCLDEncClose( BIN_HR_SPLIT_LCLD_ENC_HANDLE *hSplitBinLCLDEnc ); Loading @@ -4692,7 +4695,9 @@ void ivas_splitBinLCLDEncProcess( ivas_split_rend_bits_t *pBits ); ivas_error ivas_splitBinLCLDDecOpen( BIN_HR_SPLIT_LCLD_DEC_HANDLE *hSplitBinLCLDDec ); BIN_HR_SPLIT_LCLD_DEC_HANDLE *hSplitBinLCLDDec, int32_t iSampleRate, int32_t iChannels ); void ivas_splitBinLCLDDecClose( BIN_HR_SPLIT_LCLD_DEC_HANDLE *hSplitBinLCLDDec ); Loading
lib_dec/ivas_stat_dec.h +20 −0 Original line number Diff line number Diff line Loading @@ -42,6 +42,10 @@ #include "ivas_stat_rend.h" #include "common_api_types.h" // VE2AT: don't we want to avoid this include in the library? I admit that the rules hefre are not 100% clear to me but introducing it just for IVAS_QUATERNION is not necessry I think #ifdef SPLIT_REND_WITH_HEAD_ROT #include "ivas_cldfb_trans_codec/CQMFEncoder.h" #include "ivas_cldfb_trans_codec/CQMFDecoder.h" #endif /*----------------------------------------------------------------------------------* * Output configuration for renderer (e.g. DirAC, MASA, Binaural Renderer...) Loading Loading @@ -1344,11 +1348,27 @@ typedef struct ivas_binaural_head_rot_split_post_rendering_struct typedef struct ivas_binaural_head_rot_split_rendering_lcld_enc_struct { void *pLcld_enc; int32_t iChannels; CQMFEncoder *psCQMFEncoder; float ***pppfCQMFReal; float ***pppfCQMFImag; #ifdef CLDFB_DEBUG FILE *cldfbIn; int numFrame; #endif } BIN_HR_SPLIT_LCLD_ENC, *BIN_HR_SPLIT_LCLD_ENC_HANDLE; typedef struct ivas_binaural_head_rot_split_rendering_lcld_dec_struct { void *pLcld_dec; int32_t iChannels; CQMFDecoder *psCQMFDecoder; float ***pppfDecCQMFReal; float ***pppfDecCQMFImag; #ifdef CLDFB_DEBUG FILE *cldfbOut; int numFrame; #endif } BIN_HR_SPLIT_LCLD_DEC, *BIN_HR_SPLIT_LCLD_DEC_HANDLE; typedef struct Loading
lib_rend/ivas_cldfb_trans_codec/Bitstream.c 0 → 100644 +226 −0 Original line number Diff line number Diff line #include "Bitstream.h" #include <stdlib.h> #include <memory.h> #include "wmops.h" #define MAX_BUFFER 1024 static const unsigned int MASKS[] = { 0x00000000, 0x00000001, 0x00000003, 0x00000007, 0x0000000f, 0x0000001f, 0x0000003f, 0x0000007f, 0x000000ff, 0x000001ff, 0x000003ff, 0x000007ff, 0x00000fff, 0x00001fff, 0x00003fff, 0x00007fff, 0x0000ffff, 0x0001ffff, 0x0003ffff, 0x0007ffff, 0x000fffff, 0x001fffff, 0x003fffff, 0x007fffff, 0x00ffffff, 0x01ffffff, 0x03ffffff, 0x07ffffff, 0x0fffffff, 0x1fffffff, 0x3fffffff, 0x7fffffff, }; Bitstream* CreateBitstream(const int iDirection, const int iMaxBuffer) { int n; Bitstream *psBitstream; psBitstream = (Bitstream*)malloc(sizeof(Bitstream)); psBitstream->iDirection =iDirection; psBitstream->iMaxBuffer = iMaxBuffer; psBitstream->iIndex = 0; psBitstream->iBufferEnd = 0; psBitstream->iBufferStart = 0; psBitstream->iError = BS_ERROR_NONE; if(psBitstream->iMaxBuffer == -1){ psBitstream->iMaxBuffer = MAX_BUFFER; } psBitstream->puchBuffer = (unsigned char*)malloc(sizeof(unsigned char) * psBitstream->iMaxBuffer); for(n = 0; n < psBitstream->iMaxBuffer; n ++){ psBitstream->puchBuffer[n] = 0; } return psBitstream; } void DeleteBitstream(Bitstream *psBitstream) { free(psBitstream->puchBuffer); free(psBitstream); } void BSFlushBuffer(Bitstream *psBitstream) { memset(psBitstream->puchBuffer,0,psBitstream->iMaxBuffer); psBitstream->iIndex = 0; psBitstream->iBufferEnd = 0; psBitstream->iBufferStart = 0; psBitstream->iError = BS_ERROR_NONE; } int BSPutBytes(Bitstream *psBitstream, const unsigned char *puchBytes, const int iByteCount) { int n; for(n = 0; n < iByteCount; n ++){ psBitstream->puchBuffer[psBitstream->iBufferEnd] = puchBytes[n]; psBitstream->iBufferEnd ++; } if(psBitstream->iDirection != BS_READ){ psBitstream->iError = BS_ERROR_FAIL; } return psBitstream->iError; } int BSGetBytes(Bitstream *psBitstream, unsigned char *puchBytes, int iByteCount) { int n; for(n = 0; n < iByteCount; n++){ puchBytes[n] = psBitstream->puchBuffer[psBitstream->iBufferStart]; psBitstream->puchBuffer[psBitstream->iBufferStart] = 0; psBitstream->iBufferStart ++; } if(psBitstream->iDirection != BS_WRITE){ psBitstream->iError = BS_ERROR_FAIL; } return psBitstream->iError; } int BSByteAlign(Bitstream *psBitstream) { if(psBitstream->iDirection == BS_WRITE){ if(psBitstream->iIndex & 0x7){ int iByte; int iRem; iByte = psBitstream->iIndex >> 3; iRem = 8 - (psBitstream->iIndex - (iByte<<3)); psBitstream->puchBuffer[iByte] &= (0xff ^ MASKS[iRem]); psBitstream->iIndex += iRem; } } else{ if(psBitstream->iIndex & 0x7){ int iByte; int iRem; iByte = psBitstream->iIndex >> 3; iRem = 8 - (psBitstream->iIndex - (iByte<<3)); psBitstream->iIndex += iRem; } } return psBitstream->iError; } int BSPutBits(Bitstream *psBitstream, int iValue, int iBitCount) { iValue &= MASKS[iBitCount]; while(iBitCount){ int iByte; int iRem; int iShift; iByte = psBitstream->iIndex >> 3; iRem = 8 - (psBitstream->iIndex - (iByte<<3)); //8 - psBitstream->iIndex & 0x7; iShift = iBitCount-iRem; if(iShift <= 0){ iShift *= -1; psBitstream->puchBuffer[iByte] += (unsigned char) (iValue<<iShift); psBitstream->iIndex += iBitCount; iBitCount = 0; } else{ psBitstream->puchBuffer[iByte] += (unsigned char) (iValue>>iShift); iValue &= MASKS[iShift]; psBitstream->iIndex += iRem; iBitCount -= iRem; } } if(psBitstream->iDirection != BS_WRITE){ psBitstream->iError = BS_ERROR_FAIL; } return psBitstream->iError; } int BSGetBits(Bitstream *psBitstream, int iBitCount) { int iValue = 0; while(iBitCount){ unsigned char uchByte; int iByte; int iRem; int iShift; iByte = psBitstream->iIndex >> 3; iRem = 8 - (psBitstream->iIndex - (iByte << 3)); //8 - psBitstream->iIndex & 0x7; uchByte = psBitstream->puchBuffer[iByte]; iShift = iBitCount - iRem; if(iShift <= 0){ iShift *= -1; iValue += (int)((uchByte >> iShift) & MASKS[iBitCount]); psBitstream->iIndex += iBitCount; iBitCount = 0; } else{ uchByte &= MASKS[iRem]; iValue += (((int)uchByte)<<iShift); psBitstream->iIndex += iRem; iBitCount -= iRem; } } if(psBitstream->iDirection != BS_READ){ psBitstream->iError = BS_ERROR_FAIL; } return iValue; } int BSForceBack(Bitstream *psBitstream, int iValue, int iBitCount) { psBitstream->iIndex -= iBitCount; return (iValue>>iBitCount); } int BSGetByteCount(Bitstream *psBitstream) { int iBytes; iBytes = psBitstream->iIndex>>3; if((iBytes << 3) != psBitstream->iIndex){ iBytes ++; } return iBytes; } unsigned char* BSGetBuffer(Bitstream *psBitstream) { return psBitstream->puchBuffer; } int BSGetAvailableBytes(Bitstream *psBitstream) { return psBitstream->iBufferEnd; } int BSGetError(Bitstream *psBitstream) { return psBitstream->iError; }