rem-0.4.7/ 0000755 0001751 0001751 00000000000 12640750470 013074 5 ustar rkrishnan rkrishnan rem-0.4.7/mk/ 0000755 0001751 0001751 00000000000 12640750470 013503 5 ustar rkrishnan rkrishnan rem-0.4.7/mk/Doxyfile 0000644 0001751 0001751 00000021244 12436611306 015211 0 ustar rkrishnan rkrishnan # Doxyfile 1.4.7
#---------------------------------------------------------------------------
# Project related configuration options
#---------------------------------------------------------------------------
PROJECT_NAME = librem
PROJECT_NUMBER = 0.4.0
OUTPUT_DIRECTORY = ../rem-dox
CREATE_SUBDIRS = NO
OUTPUT_LANGUAGE = English
#USE_WINDOWS_ENCODING = NO
BRIEF_MEMBER_DESC = YES
REPEAT_BRIEF = YES
ABBREVIATE_BRIEF = "The $name class" \
"The $name widget" \
"The $name file" \
is \
provides \
specifies \
contains \
represents \
a \
an \
the
ALWAYS_DETAILED_SEC = NO
INLINE_INHERITED_MEMB = NO
FULL_PATH_NAMES = NO
STRIP_FROM_PATH =
STRIP_FROM_INC_PATH =
SHORT_NAMES = NO
JAVADOC_AUTOBRIEF = YES
MULTILINE_CPP_IS_BRIEF = NO
#DETAILS_AT_TOP = NO
INHERIT_DOCS = YES
SEPARATE_MEMBER_PAGES = NO
TAB_SIZE = 8
ALIASES =
OPTIMIZE_OUTPUT_FOR_C = YES
OPTIMIZE_OUTPUT_JAVA = NO
#BUILTIN_STL_SUPPORT = NO
DISTRIBUTE_GROUP_DOC = NO
SUBGROUPING = YES
#---------------------------------------------------------------------------
# Build related configuration options
#---------------------------------------------------------------------------
EXTRACT_ALL = NO
EXTRACT_PRIVATE = NO
EXTRACT_STATIC = NO
EXTRACT_LOCAL_CLASSES = YES
EXTRACT_LOCAL_METHODS = NO
HIDE_UNDOC_MEMBERS = YES
HIDE_UNDOC_CLASSES = YES
HIDE_FRIEND_COMPOUNDS = NO
HIDE_IN_BODY_DOCS = NO
INTERNAL_DOCS = NO
CASE_SENSE_NAMES = YES
HIDE_SCOPE_NAMES = NO
SHOW_INCLUDE_FILES = YES
INLINE_INFO = YES
SORT_MEMBER_DOCS = YES
SORT_BRIEF_DOCS = NO
SORT_BY_SCOPE_NAME = NO
GENERATE_TODOLIST = YES
GENERATE_TESTLIST = YES
GENERATE_BUGLIST = YES
GENERATE_DEPRECATEDLIST= YES
ENABLED_SECTIONS =
MAX_INITIALIZER_LINES = 30
SHOW_USED_FILES = YES
FILE_VERSION_FILTER =
#---------------------------------------------------------------------------
# configuration options related to warning and progress messages
#---------------------------------------------------------------------------
QUIET = YES
WARNINGS = YES
WARN_IF_UNDOCUMENTED = YES
WARN_IF_DOC_ERROR = YES
WARN_NO_PARAMDOC = YES
WARN_FORMAT = "$file:$line: $text"
WARN_LOGFILE =
#---------------------------------------------------------------------------
# configuration options related to the input files
#---------------------------------------------------------------------------
INPUT = include src
FILE_PATTERNS = *.c \
*.h \
*.dox
RECURSIVE = YES
EXCLUDE = test.c
EXCLUDE_SYMLINKS = NO
EXCLUDE_PATTERNS = */.svn/*
EXAMPLE_PATH =
EXAMPLE_PATTERNS = *
EXAMPLE_RECURSIVE = NO
IMAGE_PATH =
INPUT_FILTER =
FILTER_PATTERNS =
FILTER_SOURCE_FILES = NO
#---------------------------------------------------------------------------
# configuration options related to source browsing
#---------------------------------------------------------------------------
SOURCE_BROWSER = YES
INLINE_SOURCES = NO
STRIP_CODE_COMMENTS = YES
REFERENCED_BY_RELATION = YES
REFERENCES_RELATION = YES
#REFERENCES_LINK_SOURCE = YES
#USE_HTAGS = NO
VERBATIM_HEADERS = YES
#---------------------------------------------------------------------------
# configuration options related to the alphabetical class index
#---------------------------------------------------------------------------
ALPHABETICAL_INDEX = YES
COLS_IN_ALPHA_INDEX = 5
IGNORE_PREFIX =
#---------------------------------------------------------------------------
# configuration options related to the HTML output
#---------------------------------------------------------------------------
GENERATE_HTML = YES
HTML_OUTPUT = html
HTML_FILE_EXTENSION = .html
HTML_HEADER =
HTML_FOOTER =
HTML_STYLESHEET =
GENERATE_HTMLHELP = NO
CHM_FILE =
HHC_LOCATION =
GENERATE_CHI = NO
BINARY_TOC = NO
TOC_EXPAND = NO
DISABLE_INDEX = NO
ENUM_VALUES_PER_LINE = 4
GENERATE_TREEVIEW = NO
TREEVIEW_WIDTH = 250
#---------------------------------------------------------------------------
# configuration options related to the LaTeX output
#---------------------------------------------------------------------------
GENERATE_LATEX = NO
LATEX_OUTPUT = latex
LATEX_CMD_NAME = latex
MAKEINDEX_CMD_NAME = makeindex
COMPACT_LATEX = NO
PAPER_TYPE = a4wide
EXTRA_PACKAGES =
LATEX_HEADER =
PDF_HYPERLINKS = NO
USE_PDFLATEX = NO
LATEX_BATCHMODE = NO
LATEX_HIDE_INDICES = NO
#---------------------------------------------------------------------------
# configuration options related to the RTF output
#---------------------------------------------------------------------------
GENERATE_RTF = NO
RTF_OUTPUT = rtf
COMPACT_RTF = NO
RTF_HYPERLINKS = NO
RTF_STYLESHEET_FILE =
RTF_EXTENSIONS_FILE =
#---------------------------------------------------------------------------
# configuration options related to the man page output
#---------------------------------------------------------------------------
GENERATE_MAN = NO
MAN_OUTPUT = man
MAN_EXTENSION = .3
MAN_LINKS = NO
#---------------------------------------------------------------------------
# configuration options related to the XML output
#---------------------------------------------------------------------------
GENERATE_XML = NO
XML_OUTPUT = xml
XML_PROGRAMLISTING = YES
#---------------------------------------------------------------------------
# configuration options for the AutoGen Definitions output
#---------------------------------------------------------------------------
GENERATE_AUTOGEN_DEF = NO
#---------------------------------------------------------------------------
# configuration options related to the Perl module output
#---------------------------------------------------------------------------
GENERATE_PERLMOD = NO
PERLMOD_LATEX = NO
PERLMOD_PRETTY = YES
PERLMOD_MAKEVAR_PREFIX =
#---------------------------------------------------------------------------
# Configuration options related to the preprocessor
#---------------------------------------------------------------------------
ENABLE_PREPROCESSING = YES
MACRO_EXPANSION = YES
EXPAND_ONLY_PREDEF = YES
SEARCH_INCLUDES = YES
INCLUDE_PATH = include
INCLUDE_FILE_PATTERNS =
PREDEFINED = HAVE_INTTYPES_H HAVE_INET6 HAVE_STDBOOL_H
EXPAND_AS_DEFINED =
SKIP_FUNCTION_MACROS = YES
#---------------------------------------------------------------------------
# Configuration::additions related to external references
#---------------------------------------------------------------------------
TAGFILES =
GENERATE_TAGFILE =
ALLEXTERNALS = NO
EXTERNAL_GROUPS = YES
PERL_PATH = /usr/bin/perl
#---------------------------------------------------------------------------
# Configuration options related to the dot tool
#---------------------------------------------------------------------------
CLASS_DIAGRAMS = YES
HIDE_UNDOC_RELATIONS = YES
HAVE_DOT = YES
CLASS_GRAPH = YES
COLLABORATION_GRAPH = YES
GROUP_GRAPHS = YES
UML_LOOK = NO
TEMPLATE_RELATIONS = NO
INCLUDE_GRAPH = YES
INCLUDED_BY_GRAPH = YES
#CALL_GRAPH = YES todo: disabled to run faster
#CALLER_GRAPH = YES
GRAPHICAL_HIERARCHY = YES
DIRECTORY_GRAPH = YES
DOT_IMAGE_FORMAT = png
DOT_PATH =
DOTFILE_DIRS =
#MAX_DOT_GRAPH_WIDTH = 1024
#MAX_DOT_GRAPH_HEIGHT = 1024
#MAX_DOT_GRAPH_DEPTH = 1000
DOT_TRANSPARENT = NO
DOT_MULTI_TARGETS = NO
GENERATE_LEGEND = YES
DOT_CLEANUP = YES
#---------------------------------------------------------------------------
# Configuration::additions related to the search engine
#---------------------------------------------------------------------------
SEARCHENGINE = NO
rem-0.4.7/mk/symbian/ 0000755 0001751 0001751 00000000000 12640750470 015145 5 ustar rkrishnan rkrishnan rem-0.4.7/mk/symbian/rem.mmp 0000644 0001751 0001751 00000002140 11713036660 016436 0 ustar rkrishnan rkrishnan /**
* @file rem.mmp Symbian makefile for librem
*
* Copyright (C) 2010 Creytiv.com
*/
TARGET rem.lib
TARGETTYPE lib
TARGETPATH system\libs
UID 0x10000fd3 0x200112FF
#ifdef EKA2
VENDORID 0
CAPABILITY NetworkServices
#endif
MACRO HAVE_SYS_TIME_H
MACRO HAVE_UNISTD_H
MACRO HAVE_ACTSCHED
#ifndef EKA2
SOURCEPATH .
SOURCE dll.cpp
#endif
SOURCEPATH ..\..\src\aubuf
SOURCE aubuf.c
SOURCEPATH ..\..\src\aufile
SOURCE aufile.c
SOURCE wave.c
SOURCEPATH ..\..\src\auresamp
SOURCE resamp.c
SOURCEPATH ..\..\src\autone
SOURCE tone.c
SOURCEPATH ..\..\src\g711
SOURCE g711.c
SOURCEPATH ..\..\src\fir
SOURCE fir.c
SOURCEPATH ..\..\src\vid
SOURCE fmt.c
SOURCE frame.c
SOURCEPATH ..\..\src\vidconv
SOURCE vconv.c
USERINCLUDE . ..\..\include
SYSTEMINCLUDE \epoc32\include
SYSTEMINCLUDE \epoc32\include\libc \epoc32\include\re
SYSTEMINCLUDE ..\..\include
#ifndef EKA2
LIBRARY estlib.lib euser.lib
LIBRARY esock.lib insock.lib
#endif
EXPORTUNFROZEN
rem-0.4.7/mk/symbian/bld.inf 0000644 0001751 0001751 00000002050 11722465662 016407 0 ustar rkrishnan rkrishnan /**
* @file bld.inf Symbian build information
*
* Copyright (C) 2010 Creytiv.com
*/
PRJ_EXPORTS
..\..\include\rem.h \epoc32\include\rem\rem.h
..\..\include\rem_au.h \epoc32\include\rem\rem_au.h
..\..\include\rem_aubuf.h \epoc32\include\rem\rem_aubuf.h
..\..\include\rem_audio.h \epoc32\include\rem\rem_audio.h
..\..\include\rem_aufile.h \epoc32\include\rem\rem_aufile.h
..\..\include\rem_aumix.h \epoc32\include\rem\rem_aumix.h
..\..\include\rem_auresamp.h \epoc32\include\rem\rem_auresamp.h
..\..\include\rem_autone.h \epoc32\include\rem\rem_autone.h
..\..\include\rem_dsp.h \epoc32\include\rem\rem_dsp.h
..\..\include\rem_fir.h \epoc32\include\rem\rem_fir.h
..\..\include\rem_g711.h \epoc32\include\rem\rem_g711.h
..\..\include\rem_vid.h \epoc32\include\rem\rem_vid.h
..\..\include\rem_vidconv.h \epoc32\include\rem\rem_vidconv.h
..\..\include\rem_video.h \epoc32\include\rem\rem_video.h
..\..\include\rem_vidmix.h \epoc32\include\rem\rem_vidmix.h
PRJ_MMPFILES
rem.mmp
rem-0.4.7/mk/win32/ 0000755 0001751 0001751 00000000000 12640750470 014445 5 ustar rkrishnan rkrishnan rem-0.4.7/mk/win32/rem.vcproj 0000644 0001751 0001751 00000007740 11713036660 016463 0 ustar rkrishnan rkrishnan
rem-0.4.7/util/ 0000755 0001751 0001751 00000000000 12640750470 014051 5 ustar rkrishnan rkrishnan rem-0.4.7/util/genfir.py 0000644 0001751 0001751 00000000731 11546443317 015701 0 ustar rkrishnan rkrishnan #!/usr/bin/python
import scipy.signal
TAPS = 31
CUTOFF = 8000.0 # Hz
SRATE = 16000.0 # Hz
cutoff = CUTOFF / SRATE
coeffs = scipy.signal.firwin(TAPS, cutoff)
print "/*"
print " * FIR filter with cutoff %dHz, samplerate %dHz" % (CUTOFF, SRATE)
print " */"
print "static const int16_t fir_lowpass[%d] = {" % (TAPS)
i = 0
for c in coeffs:
v = int(c * 32768.0)
print " %5d," % (v),
i += 1
if not (i % 8):
print "\n" ,
print ""
print "};"
rem-0.4.7/Makefile 0000644 0001751 0001751 00000006274 12634535506 014551 0 ustar rkrishnan rkrishnan #
# Makefile
#
# Copyright (C) 2010 Creytiv.com
#
# Master version number
VER_MAJOR := 0
VER_MINOR := 4
VER_PATCH := 7
PROJECT := rem
VERSION := 0.4.7
OPT_SPEED := 1
LIBRE_MK := $(shell [ -f ../re/mk/re.mk ] && \
echo "../re/mk/re.mk")
ifeq ($(LIBRE_MK),)
LIBRE_MK := $(shell [ -f /usr/share/re/re.mk ] && \
echo "/usr/share/re/re.mk")
endif
ifeq ($(LIBRE_MK),)
LIBRE_MK := $(shell [ -f /usr/local/share/re/re.mk ] && \
echo "/usr/local/share/re/re.mk")
endif
include $(LIBRE_MK)
# List of modules
MODULES += fir
MODULES += g711
MODULES += aubuf aufile auresamp autone
MODULES += au auconv
ifneq ($(HAVE_LIBPTHREAD),)
MODULES += aumix vidmix
endif
MODULES += vid vidconv
LIBS += -lm
INSTALL := install
ifeq ($(DESTDIR),)
PREFIX := /usr/local
else
PREFIX := /usr
endif
ifeq ($(LIBDIR),)
LIBDIR := $(PREFIX)/lib
endif
INCDIR := $(PREFIX)/include/rem
CFLAGS += -I$(LIBRE_INC) -Iinclude
# XXX
ifneq ($(HAVE_ARMV6),)
CFLAGS += -DHAVE_ARMV6=1
endif
ifneq ($(HAVE_NEON),)
CFLAGS += -DHAVE_NEON=1
endif
MODMKS := $(patsubst %,src/%/mod.mk,$(MODULES))
SHARED := librem$(LIB_SUFFIX)
STATIC := librem.a
include $(MODMKS)
OBJS ?= $(patsubst %.c,$(BUILD)/%.o,$(filter %.c,$(SRCS)))
OBJS += $(patsubst %.S,$(BUILD)/%.o,$(filter %.S,$(SRCS)))
all: $(SHARED) $(STATIC)
-include $(OBJS:.o=.d)
$(SHARED): $(OBJS)
@echo " LD $@"
@$(LD) $(LFLAGS) $(SH_LFLAGS) $^ -L$(LIBRE_SO) -lre $(LIBS) -o $@
$(STATIC): $(OBJS)
@echo " AR $@"
@$(AR) $(AFLAGS) $@ $^
ifneq ($(RANLIB),)
@$(RANLIB) $@
endif
librem.pc:
@echo 'prefix='$(PREFIX) > librem.pc
@echo 'exec_prefix=$${prefix}' >> librem.pc
@echo 'libdir=$${prefix}/lib' >> librem.pc
@echo 'includedir=$${prefix}/include/rem' >> librem.pc
@echo '' >> librem.pc
@echo 'Name: librem' >> librem.pc
@echo 'Description: Audio and video processing media library' \
>> librem.pc
@echo 'Version: '$(VERSION) >> librem.pc
@echo 'URL: http://creytiv.com/rem.html' >> librem.pc
@echo 'Libs: -L$${libdir} -lrem -lre' >> librem.pc
@echo 'Cflags: -I$${includedir}' >> librem.pc
$(BUILD)/%.o: src/%.c $(BUILD) Makefile $(MK) $(MODMKS)
@echo " CC $@"
@$(CC) $(CFLAGS) -c $< -o $@ $(DFLAGS)
$(BUILD)/%.o: src/%.S $(BUILD) Makefile $(MK) $(MODMKS)
@echo " AS $@"
@$(CC) $(CFLAGS) -c $< -o $@ $(DFLAGS)
$(BUILD): Makefile $(MK) $(MODMKS)
@mkdir -p $(patsubst %,$(BUILD)/%,$(sort $(dir $(SRCS))))
@touch $@
.PHONY: clean
clean:
@rm -rf $(SHARED) $(STATIC) librem.pc test.d test.o test $(BUILD)
install: $(SHARED) $(STATIC) librem.pc
@mkdir -p $(DESTDIR)$(LIBDIR) $(DESTDIR)$(LIBDIR)/pkgconfig \
$(DESTDIR)$(INCDIR)
$(INSTALL) -m 0644 $(shell find include -name "*.h") \
$(DESTDIR)$(INCDIR)
$(INSTALL) -m 0755 $(SHARED) $(DESTDIR)$(LIBDIR)
$(INSTALL) -m 0755 $(STATIC) $(DESTDIR)$(LIBDIR)
$(INSTALL) -m 0644 librem.pc $(DESTDIR)$(LIBDIR)/pkgconfig
.PHONY: uninstall
uninstall:
@rm -rf $(DESTDIR)$(INCDIR)
@rm -f $(DESTDIR)$(LIBDIR)/$(SHARED)
@rm -f $(DESTDIR)$(LIBDIR)/$(STATIC)
@rm -f $(DESTDIR)$(LIBDIR)/pkgconfig/librem.pc
-include test.d
test.o: test.c
@echo " CC $@"
@$(CC) $(CFLAGS) -c $< -o $@ $(DFLAGS)
test$(BIN_SUFFIX): test.o $(SHARED) $(STATIC)
@echo " LD $@"
@$(LD) $(LFLAGS) $< -L. -lrem -lre $(LIBS) -o $@
rem-0.4.7/src/ 0000755 0001751 0001751 00000000000 12640750470 013663 5 ustar rkrishnan rkrishnan rem-0.4.7/src/auconv/ 0000755 0001751 0001751 00000000000 12640750470 015156 5 ustar rkrishnan rkrishnan rem-0.4.7/src/auconv/auconv.c 0000644 0001751 0001751 00000003516 12631242053 016613 0 ustar rkrishnan rkrishnan /**
* @file auconv.c Audio sample format converter
*
* Copyright (C) 2010 Creytiv.com
*/
#include
#include
#include
#include
static inline float ausamp_short2float(int16_t in)
{
float out;
out = (float) (in / (1.0 * 0x8000));
return out;
}
static inline int16_t ausamp_float2short(float in)
{
double value;
int16_t out;
value = in * (8.0 * 0x10000000);
if (value >= (1.0 * 0x7fffffff)) {
out = 32767;
}
else if (value <= (-8.0 * 0x10000000)) {
out = -32768;
}
else
out = (short) (lrint (value) >> 16);
return out;
}
void auconv_from_s16(enum aufmt dst_fmt, void *dst_sampv,
const int16_t *src_sampv, size_t sampc)
{
float *f;
uint8_t *b;
size_t i;
if (!dst_sampv || !src_sampv || !sampc)
return;
switch (dst_fmt) {
case AUFMT_FLOAT:
f = dst_sampv;
for (i=0; i> 8;
b[3*i+1] = s & 0xff;
b[3*i+0] = 0;
}
break;
default:
(void)re_fprintf(stderr, "auconv: sample format %d (%s)"
" not supported\n",
dst_fmt, aufmt_name(dst_fmt));
return;
}
}
void auconv_to_s16(int16_t *dst_sampv, enum aufmt src_fmt,
void *src_sampv, size_t sampc)
{
float *f;
uint8_t *b;
size_t i;
if (!dst_sampv || !src_sampv || !sampc)
return;
switch (src_fmt) {
case AUFMT_FLOAT:
f = src_sampv;
for (i=0; i