Fixes a minor issue on CELT->SILK switching

This commit is contained in:
Jean-Marc Valin 2011-10-31 19:51:47 -04:00
parent 38c6a15092
commit 09a84c8e4b
3 changed files with 175 additions and 187 deletions

View file

@ -1,125 +1,125 @@
<?xml version="1.0" encoding="utf-8"?> <?xml version="1.0" encoding="utf-8"?>
<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003"> <Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<ItemGroup Label="ProjectConfigurations"> <ItemGroup Label="ProjectConfigurations">
<ProjectConfiguration Include="Debug|Win32"> <ProjectConfiguration Include="Debug|Win32">
<Configuration>Debug</Configuration> <Configuration>Debug</Configuration>
<Platform>Win32</Platform> <Platform>Win32</Platform>
</ProjectConfiguration> </ProjectConfiguration>
<ProjectConfiguration Include="Release|Win32"> <ProjectConfiguration Include="Release|Win32">
<Configuration>Release</Configuration> <Configuration>Release</Configuration>
<Platform>Win32</Platform> <Platform>Win32</Platform>
</ProjectConfiguration> </ProjectConfiguration>
</ItemGroup> </ItemGroup>
<PropertyGroup Label="Globals"> <PropertyGroup Label="Globals">
<ProjectGuid>{245603E3-F580-41A5-9632-B25FE3372CBF}</ProjectGuid> <ProjectGuid>{245603E3-F580-41A5-9632-B25FE3372CBF}</ProjectGuid>
<Keyword>Win32Proj</Keyword> <Keyword>Win32Proj</Keyword>
<RootNamespace>celt</RootNamespace> <RootNamespace>celt</RootNamespace>
</PropertyGroup> </PropertyGroup>
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" /> <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration"> <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
<ConfigurationType>StaticLibrary</ConfigurationType> <ConfigurationType>StaticLibrary</ConfigurationType>
<UseDebugLibraries>true</UseDebugLibraries> <UseDebugLibraries>true</UseDebugLibraries>
<CharacterSet>Unicode</CharacterSet> <CharacterSet>Unicode</CharacterSet>
</PropertyGroup> </PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration"> <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
<ConfigurationType>StaticLibrary</ConfigurationType> <ConfigurationType>StaticLibrary</ConfigurationType>
<UseDebugLibraries>false</UseDebugLibraries> <UseDebugLibraries>false</UseDebugLibraries>
<WholeProgramOptimization>true</WholeProgramOptimization> <WholeProgramOptimization>true</WholeProgramOptimization>
<CharacterSet>Unicode</CharacterSet> <CharacterSet>Unicode</CharacterSet>
</PropertyGroup> </PropertyGroup>
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" /> <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
<ImportGroup Label="ExtensionSettings"> <ImportGroup Label="ExtensionSettings">
</ImportGroup> </ImportGroup>
<ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'"> <ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" /> <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
</ImportGroup> </ImportGroup>
<ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Release|Win32'"> <ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" /> <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
</ImportGroup> </ImportGroup>
<PropertyGroup Label="UserMacros" /> <PropertyGroup Label="UserMacros" />
<PropertyGroup /> <PropertyGroup />
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'"> <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
<ClCompile> <ClCompile>
<PrecompiledHeader> <PrecompiledHeader>
</PrecompiledHeader> </PrecompiledHeader>
<WarningLevel>Level3</WarningLevel> <WarningLevel>Level3</WarningLevel>
<Optimization>Disabled</Optimization> <Optimization>Disabled</Optimization>
<PreprocessorDefinitions>HAVE_CONFIG_H;WIN32;_DEBUG;_LIB;%(PreprocessorDefinitions)</PreprocessorDefinitions> <PreprocessorDefinitions>HAVE_CONFIG_H;WIN32;_DEBUG;_LIB;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<AdditionalIncludeDirectories>..\win32;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories> <AdditionalIncludeDirectories>../win32;../include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
</ClCompile> </ClCompile>
<Link> <Link>
<SubSystem>Windows</SubSystem> <SubSystem>Windows</SubSystem>
<GenerateDebugInformation>true</GenerateDebugInformation> <GenerateDebugInformation>true</GenerateDebugInformation>
</Link> </Link>
</ItemDefinitionGroup> </ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'"> <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
<ClCompile> <ClCompile>
<WarningLevel>Level3</WarningLevel> <WarningLevel>Level3</WarningLevel>
<PrecompiledHeader> <PrecompiledHeader>
</PrecompiledHeader> </PrecompiledHeader>
<Optimization>MaxSpeed</Optimization> <Optimization>MaxSpeed</Optimization>
<FunctionLevelLinking>true</FunctionLevelLinking> <FunctionLevelLinking>true</FunctionLevelLinking>
<IntrinsicFunctions>true</IntrinsicFunctions> <IntrinsicFunctions>true</IntrinsicFunctions>
<PreprocessorDefinitions>HAVE_CONFIG_H;WIN32;NDEBUG;_LIB;%(PreprocessorDefinitions)</PreprocessorDefinitions> <PreprocessorDefinitions>HAVE_CONFIG_H;WIN32;NDEBUG;_LIB;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<AdditionalIncludeDirectories>..\win32;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories> <AdditionalIncludeDirectories>../win32;../include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
</ClCompile> </ClCompile>
<Link> <Link>
<SubSystem>Windows</SubSystem> <SubSystem>Windows</SubSystem>
<GenerateDebugInformation>true</GenerateDebugInformation> <GenerateDebugInformation>true</GenerateDebugInformation>
<EnableCOMDATFolding>true</EnableCOMDATFolding> <EnableCOMDATFolding>true</EnableCOMDATFolding>
<OptimizeReferences>true</OptimizeReferences> <OptimizeReferences>true</OptimizeReferences>
</Link> </Link>
</ItemDefinitionGroup> </ItemDefinitionGroup>
<ItemGroup> <ItemGroup>
<None Include="ReadMe.txt" /> <None Include="ReadMe.txt" />
</ItemGroup> </ItemGroup>
<ItemGroup> <ItemGroup>
<ClInclude Include="..\..\win32\config.h" /> <ClInclude Include="..\..\win32\config.h" />
<ClInclude Include="arch.h" /> <ClInclude Include="arch.h" />
<ClInclude Include="bands.h" /> <ClInclude Include="bands.h" />
<ClInclude Include="celt.h" /> <ClInclude Include="celt.h" />
<ClInclude Include="celt_header.h" /> <ClInclude Include="celt_header.h" />
<ClInclude Include="celt_types.h" /> <ClInclude Include="celt_types.h" />
<ClInclude Include="cwrs.h" /> <ClInclude Include="cwrs.h" />
<ClInclude Include="ecintrin.h" /> <ClInclude Include="ecintrin.h" />
<ClInclude Include="entcode.h" /> <ClInclude Include="entcode.h" />
<ClInclude Include="entdec.h" /> <ClInclude Include="entdec.h" />
<ClInclude Include="entenc.h" /> <ClInclude Include="entenc.h" />
<ClInclude Include="fixed_debug.h" /> <ClInclude Include="fixed_debug.h" />
<ClInclude Include="fixed_generic.h" /> <ClInclude Include="fixed_generic.h" />
<ClInclude Include="float_cast.h" /> <ClInclude Include="float_cast.h" />
<ClInclude Include="kiss_fft.h" /> <ClInclude Include="kiss_fft.h" />
<ClInclude Include="laplace.h" /> <ClInclude Include="laplace.h" />
<ClInclude Include="mathops.h" /> <ClInclude Include="mathops.h" />
<ClInclude Include="mdct.h" /> <ClInclude Include="mdct.h" />
<ClInclude Include="modes.h" /> <ClInclude Include="modes.h" />
<ClInclude Include="os_support.h" /> <ClInclude Include="os_support.h" />
<ClInclude Include="pitch.h" /> <ClInclude Include="pitch.h" />
<ClInclude Include="celt_lpc.h" /> <ClInclude Include="celt_lpc.h" />
<ClInclude Include="quant_bands.h" /> <ClInclude Include="quant_bands.h" />
<ClInclude Include="rate.h" /> <ClInclude Include="rate.h" />
<ClInclude Include="stack_alloc.h" /> <ClInclude Include="stack_alloc.h" />
<ClInclude Include="vq.h" /> <ClInclude Include="vq.h" />
</ItemGroup> </ItemGroup>
<ItemGroup> <ItemGroup>
<ClCompile Include="bands.c" /> <ClCompile Include="bands.c" />
<ClCompile Include="celt.c" /> <ClCompile Include="celt.c" />
<ClCompile Include="cwrs.c" /> <ClCompile Include="cwrs.c" />
<ClCompile Include="entcode.c" /> <ClCompile Include="entcode.c" />
<ClCompile Include="entdec.c" /> <ClCompile Include="entdec.c" />
<ClCompile Include="entenc.c" /> <ClCompile Include="entenc.c" />
<ClCompile Include="kiss_fft.c" /> <ClCompile Include="kiss_fft.c" />
<ClCompile Include="laplace.c" /> <ClCompile Include="laplace.c" />
<ClCompile Include="mathops.c" /> <ClCompile Include="mathops.c" />
<ClCompile Include="mdct.c" /> <ClCompile Include="mdct.c" />
<ClCompile Include="modes.c" /> <ClCompile Include="modes.c" />
<ClCompile Include="pitch.c" /> <ClCompile Include="pitch.c" />
<ClCompile Include="celt_lpc.c" /> <ClCompile Include="celt_lpc.c" />
<ClCompile Include="quant_bands.c" /> <ClCompile Include="quant_bands.c" />
<ClCompile Include="rate.c" /> <ClCompile Include="rate.c" />
<ClCompile Include="vq.c" /> <ClCompile Include="vq.c" />
</ItemGroup> </ItemGroup>
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" /> <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
<ImportGroup Label="ExtensionTargets"> <ImportGroup Label="ExtensionTargets">
</ImportGroup> </ImportGroup>
</Project> </Project>

View file

@ -119,47 +119,37 @@ opus_int silk_encode_frame_FIX(
/*******************************************/ /*******************************************/
silk_memcpy( x_frame + LA_SHAPE_MS * psEnc->sCmn.fs_kHz, psEnc->sCmn.inputBuf + 1, psEnc->sCmn.frame_length * sizeof( opus_int16 ) ); silk_memcpy( x_frame + LA_SHAPE_MS * psEnc->sCmn.fs_kHz, psEnc->sCmn.inputBuf + 1, psEnc->sCmn.frame_length * sizeof( opus_int16 ) );
/*****************************************/ if( !psEnc->sCmn.prefillFlag ) {
/* Find pitch lags, initial LPC analysis */ /*****************************************/
/*****************************************/ /* Find pitch lags, initial LPC analysis */
silk_find_pitch_lags_FIX( psEnc, &sEncCtrl, res_pitch, x_frame ); /*****************************************/
silk_find_pitch_lags_FIX( psEnc, &sEncCtrl, res_pitch, x_frame );
/************************/ /************************/
/* Noise shape analysis */ /* Noise shape analysis */
/************************/ /************************/
silk_noise_shape_analysis_FIX( psEnc, &sEncCtrl, res_pitch_frame, x_frame ); silk_noise_shape_analysis_FIX( psEnc, &sEncCtrl, res_pitch_frame, x_frame );
/***************************************************/ /***************************************************/
/* Find linear prediction coefficients (LPC + LTP) */ /* Find linear prediction coefficients (LPC + LTP) */
/***************************************************/ /***************************************************/
silk_find_pred_coefs_FIX( psEnc, &sEncCtrl, res_pitch, x_frame, condCoding ); silk_find_pred_coefs_FIX( psEnc, &sEncCtrl, res_pitch, x_frame, condCoding );
/****************************************/ /****************************************/
/* Process gains */ /* Process gains */
/****************************************/ /****************************************/
silk_process_gains_FIX( psEnc, &sEncCtrl, condCoding ); silk_process_gains_FIX( psEnc, &sEncCtrl, condCoding );
/*****************************************/ /*****************************************/
/* Prefiltering for noise shaper */ /* Prefiltering for noise shaper */
/*****************************************/ /*****************************************/
silk_prefilter_FIX( psEnc, &sEncCtrl, xfw, x_frame ); silk_prefilter_FIX( psEnc, &sEncCtrl, xfw, x_frame );
/****************************************/ /****************************************/
/* Low Bitrate Redundant Encoding */ /* Low Bitrate Redundant Encoding */
/****************************************/ /****************************************/
silk_LBRR_encode_FIX( psEnc, &sEncCtrl, xfw, condCoding ); silk_LBRR_encode_FIX( psEnc, &sEncCtrl, xfw, condCoding );
if( psEnc->sCmn.prefillFlag ) {
if( psEnc->sCmn.nStatesDelayedDecision > 1 || psEnc->sCmn.warping_Q16 > 0 ) {
silk_NSQ_del_dec( &psEnc->sCmn, &psEnc->sCmn.sNSQ, &psEnc->sCmn.indices, xfw, psEnc->sCmn.pulses,
sEncCtrl.PredCoef_Q12[ 0 ], sEncCtrl.LTPCoef_Q14, sEncCtrl.AR2_Q13, sEncCtrl.HarmShapeGain_Q14,
sEncCtrl.Tilt_Q14, sEncCtrl.LF_shp_Q14, sEncCtrl.Gains_Q16, sEncCtrl.pitchL, sEncCtrl.Lambda_Q10, sEncCtrl.LTP_scale_Q14 );
} else {
silk_NSQ( &psEnc->sCmn, &psEnc->sCmn.sNSQ, &psEnc->sCmn.indices, xfw, psEnc->sCmn.pulses,
sEncCtrl.PredCoef_Q12[ 0 ], sEncCtrl.LTPCoef_Q14, sEncCtrl.AR2_Q13, sEncCtrl.HarmShapeGain_Q14,
sEncCtrl.Tilt_Q14, sEncCtrl.LF_shp_Q14, sEncCtrl.Gains_Q16, sEncCtrl.pitchL, sEncCtrl.Lambda_Q10, sEncCtrl.LTP_scale_Q14 );
}
} else {
/* Loop over quantizer and entropy coding to control bitrate */ /* Loop over quantizer and entropy coding to control bitrate */
maxIter = 5; maxIter = 5;
gainMult_Q8 = SILK_FIX_CONST( 1, 8 ); gainMult_Q8 = SILK_FIX_CONST( 1, 8 );

View file

@ -128,39 +128,37 @@ opus_int silk_encode_frame_FLP(
x_frame[ LA_SHAPE_MS * psEnc->sCmn.fs_kHz + i * ( psEnc->sCmn.frame_length >> 3 ) ] += ( 1 - ( i & 2 ) ) * 1e-6f; x_frame[ LA_SHAPE_MS * psEnc->sCmn.fs_kHz + i * ( psEnc->sCmn.frame_length >> 3 ) ] += ( 1 - ( i & 2 ) ) * 1e-6f;
} }
/*****************************************/ if( !psEnc->sCmn.prefillFlag ) {
/* Find pitch lags, initial LPC analysis */ /*****************************************/
/*****************************************/ /* Find pitch lags, initial LPC analysis */
silk_find_pitch_lags_FLP( psEnc, &sEncCtrl, res_pitch, x_frame ); /*****************************************/
silk_find_pitch_lags_FLP( psEnc, &sEncCtrl, res_pitch, x_frame );
/************************/ /************************/
/* Noise shape analysis */ /* Noise shape analysis */
/************************/ /************************/
silk_noise_shape_analysis_FLP( psEnc, &sEncCtrl, res_pitch_frame, x_frame ); silk_noise_shape_analysis_FLP( psEnc, &sEncCtrl, res_pitch_frame, x_frame );
/***************************************************/ /***************************************************/
/* Find linear prediction coefficients (LPC + LTP) */ /* Find linear prediction coefficients (LPC + LTP) */
/***************************************************/ /***************************************************/
silk_find_pred_coefs_FLP( psEnc, &sEncCtrl, res_pitch, x_frame, condCoding ); silk_find_pred_coefs_FLP( psEnc, &sEncCtrl, res_pitch, x_frame, condCoding );
/****************************************/ /****************************************/
/* Process gains */ /* Process gains */
/****************************************/ /****************************************/
silk_process_gains_FLP( psEnc, &sEncCtrl, condCoding ); silk_process_gains_FLP( psEnc, &sEncCtrl, condCoding );
/*****************************************/ /*****************************************/
/* Prefiltering for noise shaper */ /* Prefiltering for noise shaper */
/*****************************************/ /*****************************************/
silk_prefilter_FLP( psEnc, &sEncCtrl, xfw, x_frame ); silk_prefilter_FLP( psEnc, &sEncCtrl, xfw, x_frame );
/****************************************/ /****************************************/
/* Low Bitrate Redundant Encoding */ /* Low Bitrate Redundant Encoding */
/****************************************/ /****************************************/
silk_LBRR_encode_FLP( psEnc, &sEncCtrl, xfw, condCoding ); silk_LBRR_encode_FLP( psEnc, &sEncCtrl, xfw, condCoding );
if( psEnc->sCmn.prefillFlag ) {
silk_NSQ_wrapper_FLP( psEnc, &sEncCtrl, &psEnc->sCmn.indices, &psEnc->sCmn.sNSQ, psEnc->sCmn.pulses, xfw );
} else {
/* Loop over quantizer and entroy coding to control bitrate */ /* Loop over quantizer and entroy coding to control bitrate */
maxIter = 5; maxIter = 5;
gainMult_Q8 = SILK_FIX_CONST( 1, 8 ); gainMult_Q8 = SILK_FIX_CONST( 1, 8 );