003a3b5
From: Peter Lemenkov <lemenkov@gmail.com>
003a3b5
Date: Wed, 16 Nov 2016 18:47:17 +0300
003a3b5
Subject: [PATCH] Use mpg123 if available
003a3b5
003a3b5
Signed-off-by: Peter Lemenkov <lemenkov@gmail.com>
003a3b5
003a3b5
diff --git a/CMakeLists.txt b/CMakeLists.txt
003a3b5
index cf149782..c39eae75 100644
003a3b5
--- a/CMakeLists.txt
003a3b5
+++ b/CMakeLists.txt
003a3b5
@@ -38,7 +38,7 @@ OPTION(SEMS_USE_OPUS          "Build with Opus" OFF)
003a3b5
 OPTION(SEMS_USE_SPANDSP       "Build with spandsp" OFF)
003a3b5
 OPTION(SEMS_USE_LIBSAMPLERATE "Build with libsamplerate" OFF)
003a3b5
 OPTION(SEMS_USE_ZRTP          "Build with ZRTP" OFF)
003a3b5
-OPTION(SEMS_USE_MP3           "Build with Lame MP3" OFF)
003a3b5
+OPTION(SEMS_USE_MP3           "Build with MP3" OFF)
003a3b5
 OPTION(SEMS_USE_ILBC          "Build with iLBC library (fallback to bundled)" ON)
003a3b5
 OPTION(SEMS_USE_G729          "Build with bcg729 library" OFF)
003a3b5
 OPTION(SEMS_USE_TTS           "Build with Text-to-speech support (requires Flite)" OFF)
003a3b5
@@ -134,9 +134,18 @@ ENDIF(SEMS_USE_ZRTP)
003a3b5
 # Lame MP3 support
003a3b5
 IF(SEMS_USE_MP3)
003a3b5
 	FIND_PACKAGE(Lame REQUIRED)
003a3b5
-	MESSAGE(STATUS "Using lame mp3: YES")
003a3b5
+	IF(LAME_FOUND)
003a3b5
+		MESSAGE(STATUS "Using mp3 encoding (LAME library): YES")
003a3b5
+		FIND_PACKAGE(Mpg123)
003a3b5
+		IF(MPG123_FOUND)
003a3b5
+			ADD_DEFINITIONS(-DWITH_MPG123DECODER)
003a3b5
+			MESSAGE(STATUS "Using mp3 decoding (mpg123 library): YES")
003a3b5
+		ELSE(MPG123_FOUND)
003a3b5
+			MESSAGE(STATUS "Using mp3 decoding (mpg123 library): NO")
003a3b5
+		ENDIF(MPG123_FOUND)
003a3b5
+	ENDIF(LAME_FOUND)
003a3b5
 ELSE(SEMS_USE_MP3)
003a3b5
-	MESSAGE(STATUS "Using lame mp3: NO (default)")
003a3b5
+	MESSAGE(STATUS "Using mp3: NO (default)")
003a3b5
 ENDIF(SEMS_USE_MP3)
003a3b5
 
003a3b5
 IF(SEMS_USE_ILBC)
003a3b5
diff --git a/apps/mp3/CMakeLists.txt b/apps/mp3/CMakeLists.txt
003a3b5
index 5cda8a83..dbbced2d 100644
003a3b5
--- a/apps/mp3/CMakeLists.txt
003a3b5
+++ b/apps/mp3/CMakeLists.txt
003a3b5
@@ -7,5 +7,9 @@ mp3.c
003a3b5
 #	module_cflags += -DWITH_MPG123DECODER
003a3b5
 
003a3b5
 SET(sems_module_name mp3)
003a3b5
-SET(sems_module_libs mp3lame)
003a3b5
+IF(MPG123_FOUND)
003a3b5
+	SET(sems_module_libs mp3lame mpg123)
003a3b5
+ELSE(MPG123_FOUND)
003a3b5
+	SET(sems_module_libs mp3lame)
003a3b5
+ENDIF(MPG123_FOUND)
003a3b5
 INCLUDE(${CMAKE_SOURCE_DIR}/cmake/module.rules.txt)
003a3b5
diff --git a/cmake/FindMpg123.cmake b/cmake/FindMpg123.cmake
003a3b5
new file mode 100644
003a3b5
index 00000000..9ffa2c1e
003a3b5
--- /dev/null
003a3b5
+++ b/cmake/FindMpg123.cmake
003a3b5
@@ -0,0 +1,17 @@
003a3b5
+FIND_PATH(MPG123_INCLUDE_DIR mpg123.h)
003a3b5
+FIND_LIBRARY(MPG123_LIBRARIES NAMES mpg123)
003a3b5
+
003a3b5
+IF(MPG123_INCLUDE_DIR AND MPG123_LIBRARIES)
003a3b5
+	SET(MPG123_FOUND TRUE)
003a3b5
+ENDIF(MPG123_INCLUDE_DIR AND MPG123_LIBRARIES)
003a3b5
+
003a3b5
+IF(MPG123_FOUND)
003a3b5
+	IF (NOT Mpg123_FIND_QUIETLY)
003a3b5
+		MESSAGE(STATUS "Found mpg123 includes: ${MPG123_INCLUDE_DIR}/mpg123.h")
003a3b5
+		MESSAGE(STATUS "Found mpg123 library: ${MPG123_LIBRARIES}")
003a3b5
+	ENDIF (NOT Mpg123_FIND_QUIETLY)
003a3b5
+ELSE(MPG123_FOUND)
003a3b5
+	IF (Mpg123_FIND_REQUIRED)
003a3b5
+		MESSAGE(FATAL_ERROR "Could NOT find mpg123 development files")
003a3b5
+	ENDIF (Mpg123_FIND_REQUIRED)
003a3b5
+ENDIF(MPG123_FOUND)