Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Lyra support #3949

Merged
merged 7 commits into from
Jun 13, 2024
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
118 changes: 118 additions & 0 deletions aconfigure
Original file line number Diff line number Diff line change
Expand Up @@ -658,6 +658,8 @@ ac_webrtc_instset
ac_no_webrtc
ac_no_yuv
ac_no_srtp
ac_lyra_model_path
ac_no_lyra_codec
ac_no_bcg729
opus_present
opus_h_present
Expand Down Expand Up @@ -885,6 +887,8 @@ with_opus
enable_opus
with_bcg729
enable_bcg729
with_lyra
enable_lyra
enable_libsrtp
enable_libyuv
enable_libwebrtc
Expand Down Expand Up @@ -1574,6 +1578,7 @@ Optional Features:
autodetect)

--disable-bcg729 Disable bcg729 (default: not disabled)
--disable-lyra Disable lyra (default: not disabled)
--disable-libsrtp Exclude libsrtp in the build
--disable-libyuv Exclude libyuv in the build
--disable-libwebrtc Exclude libwebrtc in the build
Expand Down Expand Up @@ -1641,6 +1646,7 @@ Optional Packages:
--with-silk=DIR Specify alternate SILK prefix
--with-opus=DIR Specify alternate OPUS prefix
--with-bcg729=DIR Specify alternate bcg729 prefix
--with-lyra=DIR Specify alternate lyra prefix

Some influential environment variables:
CC C compiler command
Expand Down Expand Up @@ -10118,6 +10124,118 @@ fi



# Check whether --with-lyra was given.
if test ${with_lyra+y}
then :
withval=$with_lyra;
else $as_nop
with_lyra=no

fi


if test "x$ac_cross_compile" != "x" -a "x$with_lyra" = "xno"; then
enable_lyra=no
fi



# Check whether --enable-lyra was given.
if test ${enable_lyra+y}
then :
enableval=$enable_lyra;
if test "$enable_lyra" = "no"; then
ac_no_lyra_codec=1
printf "%s\n" "#define PJMEDIA_HAS_LYRA_CODEC 0" >>confdefs.h

{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: Checking if lyra is disabled... yes" >&5
printf "%s\n" "Checking if lyra is disabled... yes" >&6; }
fi

else $as_nop

if test "x$with_lyra" != "xno" -a "x$with_lyra" != "x"; then
LYRA_PREFIX=$with_lyra
LYRA_CPPFLAGS="-DGLOG_DEPRECATED=__attribute__((deprecated)) -DGLOG_EXPORT=__attribute__((visibility(\"default\"))) -DGLOG_NO_EXPORT=__attribute__((visibility(\"default\")))"
LYRA_CXXFLAGS="-std=c++17 -Wno-deprecated-builtins -I$LYRA_PREFIX/include/com_google_absl -I$LYRA_PREFIX/include/gulrak_filesystem -I$LYRA_PREFIX/include/com_google_glog/src -I$LYRA_PREFIX"
LYRA_LDFLAGS="-L$LYRA_PREFIX/lib"
{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: Using lyra prefix... $with_lyra" >&5
printf "%s\n" "Using lyra prefix... $with_lyra" >&6; }
else
LYRA_CXXFLAGS=""
LYRA_LDFLAGS=""
fi

{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking lyra usability" >&5
printf %s "checking lyra usability... " >&6; }

LYRA_LIBS="-llyra"

SAVED_LIBS="$LIBS"
SAVED_LDFLAGS="$LDFLAGS"
SAVED_CXXFLAGS="$CXXFLAGS"
SAVED_CPPFLAGS="$CPPFLAGS"

LIBS="$LYRA_LIBS $LIBS"
LDFLAGS="$LYRA_LDFLAGS $LDFLAGS"
CXXFLAGS="$LYRA_CXXFLAGS $CXXFLAGS"
CPPFLAGS="$LYRA_CPPFLAGS $CPPFLAGS"

ac_ext=cpp
ac_cpp='$CXXCPP $CPPFLAGS'
ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
ac_compiler_gnu=$ac_cv_cxx_compiler_gnu

cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
#include "lyra_decoder.h"

int
main (void)
{
std::unique_ptr<chromemedia::codec::LyraDecoder> dec = chromemedia::codec::LyraDecoder::Create(8000,1,"");

;
return 0;
}
_ACEOF
if ac_fn_cxx_try_link "$LINENO"
then :

ac_lyra_model_path="$LYRA_PREFIX/model_coeffs"
printf "%s\n" "#define PJMEDIA_HAS_LYRA_CODEC 1" >>confdefs.h

LYRA_CPPFLAGS="'-DGLOG_DEPRECATED=__attribute__((deprecated))' '-DGLOG_EXPORT=__attribute__((visibility(\"default\")))' '-DGLOG_NO_EXPORT=__attribute__((visibility(\"default\")))'"
CXXFLAGS="$LYRA_CPPFLAGS $CXXFLAGS"
{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5
printf "%s\n" "yes" >&6; }

else $as_nop

ac_no_lyra_codec=1
LIBS="$SAVED_LIBS"
LDFLAGS="$SAVED_LDFLAGS"
CXXFLAGS="$SAVED_CXXFLAGS"
{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
printf "%s\n" "no" >&6; }

fi
rm -f core conftest.err conftest.$ac_objext conftest.beam \
conftest$ac_exeext conftest.$ac_ext
ac_ext=c
ac_cpp='$CPP $CPPFLAGS'
ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
ac_compiler_gnu=$ac_cv_c_compiler_gnu

CPPFLAGS="$SAVED_CPPFLAGS"

fi





# Check whether --enable-libsrtp was given.
if test ${enable_libsrtp+y}
Expand Down
78 changes: 78 additions & 0 deletions aconfigure.ac
Original file line number Diff line number Diff line change
Expand Up @@ -2311,6 +2311,84 @@ AC_ARG_ENABLE(bcg729,

])

dnl # lyra prefix
AC_ARG_WITH(lyra,
AS_HELP_STRING([--with-lyra=DIR],
[Specify alternate lyra prefix]),
[],
[with_lyra=no]
)

dnl # Do not use default lyra installation if we are cross-compiling
if test "x$ac_cross_compile" != "x" -a "x$with_lyra" = "xno"; then
enable_lyra=no
fi

dnl # lyra
AC_SUBST(ac_no_lyra_codec)
AC_SUBST(ac_lyra_model_path)
AC_ARG_ENABLE(lyra,
AS_HELP_STRING([--disable-lyra],
[Disable lyra (default: not disabled)]),
[
if test "$enable_lyra" = "no"; then
[ac_no_lyra_codec=1]
AC_DEFINE(PJMEDIA_HAS_LYRA_CODEC,0)
AC_MSG_RESULT([Checking if lyra is disabled... yes])
fi
],
[
if test "x$with_lyra" != "xno" -a "x$with_lyra" != "x"; then
LYRA_PREFIX=$with_lyra
dnl # inside autoconf, single quoted preprocessor definition will raise error
LYRA_CPPFLAGS="-DGLOG_DEPRECATED=__attribute__((deprecated)) -DGLOG_EXPORT=__attribute__((visibility(\"default\"))) -DGLOG_NO_EXPORT=__attribute__((visibility(\"default\")))"
LYRA_CXXFLAGS="-std=c++17 -Wno-deprecated-builtins -I$LYRA_PREFIX/include/com_google_absl -I$LYRA_PREFIX/include/gulrak_filesystem -I$LYRA_PREFIX/include/com_google_glog/src -I$LYRA_PREFIX"
LYRA_LDFLAGS="-L$LYRA_PREFIX/lib"
AC_MSG_RESULT([Using lyra prefix... $with_lyra])
else
LYRA_CXXFLAGS=""
LYRA_LDFLAGS=""
fi

AC_MSG_CHECKING([lyra usability])

LYRA_LIBS="-llyra"

SAVED_LIBS="$LIBS"
SAVED_LDFLAGS="$LDFLAGS"
SAVED_CXXFLAGS="$CXXFLAGS"
SAVED_CPPFLAGS="$CPPFLAGS"

LIBS="$LYRA_LIBS $LIBS"
LDFLAGS="$LYRA_LDFLAGS $LDFLAGS"
CXXFLAGS="$LYRA_CXXFLAGS $CXXFLAGS"
CPPFLAGS="$LYRA_CPPFLAGS $CPPFLAGS"

AC_LANG_PUSH([C++])
AC_LINK_IFELSE([AC_LANG_PROGRAM([[#include "lyra_decoder.h"
]],
[std::unique_ptr<chromemedia::codec::LyraDecoder> dec = chromemedia::codec::LyraDecoder::Create(8000,1,"");]
)],
[
[ac_lyra_model_path="$LYRA_PREFIX/model_coeffs"]
AC_DEFINE(PJMEDIA_HAS_LYRA_CODEC,1)
dnl # use single quoted preprocessor definition
LYRA_CPPFLAGS="'-DGLOG_DEPRECATED=__attribute__((deprecated))' '-DGLOG_EXPORT=__attribute__((visibility(\"default\")))' '-DGLOG_NO_EXPORT=__attribute__((visibility(\"default\")))'"
CXXFLAGS="$LYRA_CPPFLAGS $CXXFLAGS"
AC_MSG_RESULT(yes)
],
[
[ac_no_lyra_codec=1]
LIBS="$SAVED_LIBS"
LDFLAGS="$SAVED_LDFLAGS"
CXXFLAGS="$SAVED_CXXFLAGS"
AC_MSG_RESULT(no)
])
AC_LANG_POP([C++])
CPPFLAGS="$SAVED_CPPFLAGS"
])



dnl # Include libsrtp
AC_SUBST(ac_no_srtp)
Expand Down
8 changes: 8 additions & 0 deletions pjmedia/build/os-auto.mak.in
Original file line number Diff line number Diff line change
Expand Up @@ -74,6 +74,7 @@ AC_NO_OPENCORE_AMRNB=@ac_no_opencore_amrnb@
AC_NO_OPENCORE_AMRWB=@ac_no_opencore_amrwb@
AC_NO_BCG729=@ac_no_bcg729@
AC_NO_ANDROID_MEDIACODEC=@ac_no_mediacodec@
AC_NO_LYRA_CODEC=@ac_no_lyra_codec@

export CODEC_OBJS=

Expand Down Expand Up @@ -152,6 +153,13 @@ else
export CODEC_OBJS += and_aud_mediacodec.o and_vid_mediacodec.o
endif

ifeq ($(AC_NO_LYRA_CODEC),1)
export CFLAGS += -DPJMEDIA_HAS_LYRA_CODEC=0
else
export CODEC_OBJS += lyra.o
export CFLAGS += -DPJMEDIA_CODEC_LYRA_DEFAULT_MODEL_PATH='"@ac_lyra_model_path@"'
endif

#
# SRTP
#
Expand Down
8 changes: 7 additions & 1 deletion pjmedia/build/pjmedia_codec.vcxproj
Original file line number Diff line number Diff line change
Expand Up @@ -467,7 +467,6 @@
<ClCompile>
<AdditionalIncludeDirectories>../include;../../pjlib/include;../../third_party/speex/include;../../third_party;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
<PreprocessorDefinitions>_LIB;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<PrecompiledHeaderOutputFile />
</ClCompile>
<Lib>
<OutputFile>..\lib\pjmedia-codec-$(TargetCPU)-$(Platform)-vc$(VSVer)-$(Configuration).lib</OutputFile>
Expand Down Expand Up @@ -689,6 +688,12 @@
<ClCompile Include="..\src\pjmedia-codec\ilbc.c" />
<ClCompile Include="..\src\pjmedia-codec\ipp_codecs.c" />
<ClCompile Include="..\src\pjmedia-codec\l16.c" />
<ClCompile Include="..\src\pjmedia-codec\lyra.cpp">
<PreprocessorDefinitions>GLOG_DEPRECATED=__declspec(deprecated);GLOG_EXPORT=;GLOG_NO_ABBREVIATED_SEVERITIES;GLOG_NO_EXPORT=;
EIGEN_MPL2_ONLY;EIGEN_MAX_ALIGN_BYTES=64;XNN_ENABLE_ASSEMBLY=1;XNN_ENABLE_JIT=0;XNN_ENABLE_SPARSE=1;XNN_LOG_LEVEL=2;PTHREADPOOL_NO_DEPRECATED_API;XNN_ENABLE_MEMOPT=1;XNN_WASMSIMD_VERSION=87;EIGEN_ALTIVEC_USE_CUSTOM_PACK=0;TFLITE_BUILD_WITH_XNNPACK_DELEGATE;_USE_MATH_DEFINES;__DATE__="redacted";__TIMESTAMP__="redacted";__TIME__="redacted";NOGDI;__PRETTY_FUNCTION__=__FUNCSIG__;_HAS_DEPRECATED_RESULT_OF=1;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<LanguageStandard>stdcpp17</LanguageStandard>
<DisableSpecificWarnings>4117;4244;4267%(DisableSpecificWarnings)</DisableSpecificWarnings>
</ClCompile>
<ClCompile Include="..\src\pjmedia-codec\opencore_amr.c" />
<ClCompile Include="..\src\pjmedia-codec\openh264.cpp" />
<ClCompile Include="..\src\pjmedia-codec\opus.c" />
Expand All @@ -715,6 +720,7 @@
<ClInclude Include="..\include\pjmedia-codec\ilbc.h" />
<ClInclude Include="..\include\pjmedia-codec\ipp_codecs.h" />
<ClInclude Include="..\include\pjmedia-codec\l16.h" />
<ClInclude Include="..\include\pjmedia-codec\lyra.h" />
<ClInclude Include="..\include\pjmedia-codec\opencore_amr.h" />
<ClInclude Include="..\include\pjmedia-codec\opus.h" />
<ClInclude Include="..\include\pjmedia-codec\passthrough.h" />
Expand Down
6 changes: 6 additions & 0 deletions pjmedia/build/pjmedia_codec.vcxproj.filters
Original file line number Diff line number Diff line change
Expand Up @@ -83,6 +83,9 @@
<ClCompile Include="..\src\pjmedia-codec\vpx_packetizer.c">
<Filter>Source Files</Filter>
</ClCompile>
<ClCompile Include="..\src\pjmedia-codec\lyra.cpp">
<Filter>Source Files</Filter>
</ClCompile>
</ItemGroup>
<ItemGroup>
<ClInclude Include="..\src\pjmedia-codec\g722\g722_dec.h">
Expand Down Expand Up @@ -163,5 +166,8 @@
<ClInclude Include="..\include\pjmedia-codec\vpx_packetizer.h">
<Filter>Header Files</Filter>
</ClInclude>
<ClInclude Include="..\include\pjmedia-codec\lyra.h">
<Filter>Header Files</Filter>
</ClInclude>
</ItemGroup>
</Project>
1 change: 1 addition & 0 deletions pjmedia/include/pjmedia-codec.h
Original file line number Diff line number Diff line change
Expand Up @@ -34,6 +34,7 @@
#include <pjmedia-codec/ilbc.h>
#include <pjmedia-codec/ipp_codecs.h>
#include <pjmedia-codec/l16.h>
#include <pjmedia-codec/lyra.h>
#include <pjmedia-codec/opencore_amr.h>
#include <pjmedia-codec/openh264.h>
#include <pjmedia-codec/opus.h>
Expand Down
69 changes: 69 additions & 0 deletions pjmedia/include/pjmedia-codec/config.h
Original file line number Diff line number Diff line change
Expand Up @@ -540,6 +540,75 @@
#endif


/**
* Enable Lyra codec.
*
* Default: 0
*/
#ifndef PJMEDIA_HAS_LYRA_CODEC
# define PJMEDIA_HAS_LYRA_CODEC 0
#endif

/**
* Lyra default bitrate setting
*
* Default: 3200 (available bitrate:3200, 6000, 9200)
*/
#ifndef PJMEDIA_CODEC_LYRA_DEFAULT_BIT_RATE
# define PJMEDIA_CODEC_LYRA_DEFAULT_BIT_RATE 3200
#endif

/**
* Lyra default model path containing lyra_config.binarypb, lyragan.tflite,
* quantizer.tflite and soundstream_encoder.tflite file. If autoconf is used,
* it will be set to "[lyra src folder]/model_coeffs".
*
* Default: "model_coeffs"
*/
#ifndef PJMEDIA_CODEC_LYRA_DEFAULT_MODEL_PATH
# define PJMEDIA_CODEC_LYRA_DEFAULT_MODEL_PATH "model_coeffs"
#endif

/**
* Settings to enable Lyra codec 8KHz. This option is only used
* when PJMEDIA_HAS_LYRA_CODEC is enabled.
*
* Default: 0
*/
#ifndef PJMEDIA_CODEC_LYRA_HAS_8KHZ
# define PJMEDIA_CODEC_LYRA_HAS_8KHZ 0
#endif

/**
* Settings to enable Lyra codec 16KHz. This option is only used
* when PJMEDIA_HAS_LYRA_CODEC is enabled.
*
* Default: 1
*/
#ifndef PJMEDIA_CODEC_LYRA_HAS_16KHZ
# define PJMEDIA_CODEC_LYRA_HAS_16KHZ 1
#endif

/**
* Settings to enable Lyra codec 32KHz. This option is only used
* when PJMEDIA_HAS_LYRA_CODEC is enabled.
*
* Default: 0
*/
#ifndef PJMEDIA_CODEC_LYRA_HAS_32KHZ
# define PJMEDIA_CODEC_LYRA_HAS_32KHZ 0
#endif

/**
* Settings to enable Lyra codec 48KHz. This option is only used
* when PJMEDIA_HAS_LYRA_CODEC is enabled.
*
* Default: 0
*/
#ifndef PJMEDIA_CODEC_LYRA_HAS_48KHZ
# define PJMEDIA_CODEC_LYRA_HAS_48KHZ 0
#endif

/**
* Specify if FFMPEG codecs are available.
*
Expand Down
Loading
Loading