Skip to content
This repository was archived by the owner on Mar 28, 2022. It is now read-only.
Open
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
87 changes: 87 additions & 0 deletions CMakeLists.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1,87 @@
project(echoprint-codegen)
cmake_minimum_required(VERSION 2.8)

set( CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} ${CMAKE_CURRENT_SOURCE_DIR}/cmake/modules )

# Stage 0 - Find dependencies
# Boost
find_package(Boost REQUIRED )

# TagLib
find_package(Taglib REQUIRED)

# Thread library ( pthreads or other )
find_package( Threads REQUIRED )

# FFMPEG
find_package( FFMPEG REQUIRED )

# ZLib
find_package( ZLIB REQUIRED )

# Add library
set ( codegen_SOURCES
src/AudioBufferInput.cxx
src/AudioStreamInput.cxx
src/Base64.cxx
src/Codegen.cxx
src/Fingerprint.cxx
src/MatrixUtility.cxx
src/SubbandAnalysis.cxx
src/Whitening.cxx
)

set ( codegen_HEADERS
src/AudioBufferInput.h
src/AudioStreamInput.h
src/Base64.h
src/Codegen.h
src/Fingerprint.h
src/MatrixUtility.h
src/SubbandAnalysis.h
src/Whitening.h
)

include_directories(
${Boost_INCLUDE_DIRS}
${CMAKE_CURRENT_SOURCE_DIR}/src
${TAGLIB_INCLUDE_DIRS}
${FFMPEG_INCLUDE_DIRS}
${ZLIB_INCLUDE_DIRS}
)

add_library( codegen SHARED ${codegen_SOURCES} )

target_link_libraries( codegen
${CMAKE_THREAD_LIBS_INIT}
${ZLIB_LIBRARIES}
)


# Add executable
set( echoprint_codegen_SOURCES
src/Metadata.cxx
src/main.cxx
)

add_executable( echoprint-codegen
${echoprint_codegen_SOURCES}
)
target_link_libraries(
echoprint-codegen
${TAGLIB_LIBRARIES}
${FFMPEG_LIBRARIES}
codegen
)

# Install library and executable
install( TARGETS echoprint-codegen
RUNTIME DESTINATION bin
)

install( TARGETS codegen
RUNTIME DESTINATION bin
LIBRARY DESTINATION lib
ARCHIVE DESTINATION lib
)

22 changes: 22 additions & 0 deletions cmake/modules/COPYING-CMAKE-SCRIPTS
Original file line number Diff line number Diff line change
@@ -0,0 +1,22 @@
Redistribution and use in source and binary forms, with or without
modification, are permitted provided that the following conditions
are met:

1. Redistributions of source code must retain the copyright
notice, this list of conditions and the following disclaimer.
2. Redistributions in binary form must reproduce the copyright
notice, this list of conditions and the following disclaimer in the
documentation and/or other materials provided with the distribution.
3. The name of the author may not be used to endorse or promote products
derived from this software without specific prior written permission.

THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
213 changes: 213 additions & 0 deletions cmake/modules/FindFFMPEG.cmake
Original file line number Diff line number Diff line change
@@ -0,0 +1,213 @@
# - Try to find FFMPEG
# Once done this will define
#
# FFMPEG_FOUND - system has FFMPEG
# FFMPEG_INCLUDE_DIRS - the FFMPEG include directory
# FFMPEG_LIBRARIES - Link these to use FFMPEG
# FFMPEG_DEFINITIONS - Compiler switches required for using FFMPEG
#
# Copyright (c) 2008 Andreas Schneider <mail@cynapses.org>
# Copyright (c) 2010 Christophe Giboudeaux <cgiboudeaux@gmail.com>
#
# Redistribution and use is allowed according to the terms of the New
# BSD license.
# For details see the accompanying COPYING-CMAKE-SCRIPTS file.
#

if (FFMPEG_LIBRARIES AND FFMPEG_INCLUDE_DIRS)
# in cache already
set(FFMPEG_FOUND TRUE)
else (FFMPEG_LIBRARIES AND FFMPEG_INCLUDE_DIRS)

# use pkg-config to get the directories and then use these values
# in the FIND_PATH() and FIND_LIBRARY() calls
if (NOT WIN32)
include(FindPkgConfig)
pkg_check_modules(_AVCODEC libavcodec)
pkg_check_modules(_AVFORMAT libavformat)
pkg_check_modules(_AVUTIL libavutil)
#pkg_check_modules(_POSTPROC libpostproc)
pkg_check_modules(_SWSCALE libswscale)

endif (NOT WIN32)

find_library(AVCODEC_LIBRARY
NAMES
avcodec
PATHS
${_AVCODEC_LIBDIR}
/usr/lib
/usr/local/lib
/opt/local/lib
/sw/lib
NO_DEFAULT_PATH
)

find_path(AVCODEC_INCLUDE_DIR
NAMES
avcodec.h
PATHS
${_AVCODEC_INCLUDEDIR}
/usr/include
/usr/local/include
/opt/local/include
/sw/include
PATH_SUFFIXES
libavcodec
ffmpeg
NO_DEFAULT_PATH
)

if(AVCODEC_LIBRARY AND AVCODEC_INCLUDE_DIR)
set(AVCODEC_FOUND TRUE)
mark_as_advanced(AVCODEC_LIBRARY AVCODEC_INCLUDE_DIR)
endif(AVCODEC_LIBRARY AND AVCODEC_INCLUDE_DIR)

find_library(AVFORMAT_LIBRARY
NAMES
avformat
PATHS
${_AVFORMAT_LIBDIR}
/usr/lib
/usr/local/lib
/opt/local/lib
/sw/lib
NO_DEFAULT_PATH
)

find_path(AVFORMAT_INCLUDE_DIR
NAMES
avformat.h
PATHS
${_AVFORMAT_INCLUDEDIR}
/usr/include
/usr/local/include
/opt/local/include
/sw/include
PATH_SUFFIXES
libavformat
ffmpeg
NO_DEFAULT_PATH
)

if(AVFORMAT_LIBRARY AND AVFORMAT_INCLUDE_DIR)
set(AVFORMAT_FOUND TRUE)
mark_as_advanced(AVFORMAT_LIBRARY AVFORMAT_INCLUDE_DIR)
endif(AVFORMAT_LIBRARY AND AVFORMAT_INCLUDE_DIR)

find_library(AVUTIL_LIBRARY
NAMES
avutil
PATHS
${_AVUTIL_LIBDIR}
/usr/lib
/usr/local/lib
/opt/local/lib
/sw/lib
NO_DEFAULT_PATH
)
mark_as_advanced(AVUTIL_LIBRARY)

find_path(AVUTIL_INCLUDE_DIR
NAMES
avutil.h
PATHS
${_AVUTIL_INCLUDEDIR}
/usr/include
/usr/local/include
/opt/local/include
/sw/include
PATH_SUFFIXES
libavutil
ffmpeg
NO_DEFAULT_PATH
)

if(AVUTIL_LIBRARY AND AVUTIL_INCLUDE_DIR)
set(AVUTIL_FOUND TRUE)
mark_as_advanced(AVUTIL_LIBRARY AVUTIL_INCLUDE_DIR)
endif(AVUTIL_LIBRARY AND AVUTIL_INCLUDE_DIR)

find_library(SWSCALE_LIBRARY
NAMES
swscale
PATHS
${_SWSCALE_LIBDIR}
/usr/lib
/usr/local/lib
/opt/local/lib
/sw/lib
NO_DEFAULT_PATH
)

find_path(SWSCALE_INCLUDE_DIR
NAMES
swscale.h
PATHS
${_SWSCALE_INCLUDEDIR}
/usr/include
/usr/local/include
/opt/local/include
/sw/include
PATH_SUFFIXES
libswscale
ffmpeg
NO_DEFAULT_PATH
)

if(SWSCALE_LIBRARY AND SWSCALE_INCLUDE_DIR)
set(SWSCALE_FOUND TRUE)
mark_as_advanced(SWSCALE_LIBRARY SWSCALE_INCLUDE_DIR)
endif(SWSCALE_LIBRARY AND SWSCALE_INCLUDE_DIR)

# find_library(POSTPROC_LIBRARY
# NAMES
# postproc
# PATHS
# ${_POSTPROC_LIBDIR}
# /usr/lib
# /usr/local/lib
# /opt/local/lib
# /sw/lib
# NO_DEFAULT_PATH
# )
# mark_as_advanced(POSTPROC_LIBRARY)

# find_path(POSTPROC_INCLUDE_DIR
# NAMES
# postprocess.h
# PATHS
# ${_POSTPROC_INCLUDEDIR}
# /usr/include/postproc
# /usr/local/include/postproc
# /opt/local/include/postproc
# /sw/include
# PATH_SUFFIXES
# libpostproc
# ffmpeg
# )
# mark_as_advanced(POSTPROC_INCLUDE_DIR)

# if(POSTPROC_LIBRARY AND POSTPROC_INCLUDE_DIR)
# set(SWSCALE_FOUND TRUE)
# mark_as_advanced(POSTPROC_LIBRARY POSTPROC_INCLUDE_DIR)
# endif(POSTPROC_LIBRARY AND POSTPROC_INCLUDE_DIR)

if(AVCODEC_FOUND AND AVFORMAT_FOUND AND AVUTIL_FOUND AND SWSCALE_FOUND)
set (FFMPEG_LIBRARIES
${AVCODEC_LIBRARY}
${AVFORMAT_LIBRARY}
${AVUTIL_LIBRARY}
${SWSCALE_LIBRARY}
)
set(FFMPEG_INCLUDE_DIRS
${AVCODEC_INCLUDE_DIR}
${AVFORMAT_INCLUDE_DIR}
${AVUTIL_INCLUDE_DIR}
${SWSCALE_INCLUDE_DIR}
)
set(FFMPEG_FOUND TRUE)
mark_as_advanced(FFMPEG_INCLUDE_DIRS FFMPEG_LIBRARIES)
endif(AVCODEC_FOUND AND AVFORMAT_FOUND AND AVUTIL_FOUND AND SWSCALE_FOUND)

endif (FFMPEG_LIBRARIES AND FFMPEG_INCLUDE_DIRS)
Loading