aboutsummaryrefslogtreecommitdiffstatshomepage
path: root/libraries/edje/src/modules/eet_snd_reader
diff options
context:
space:
mode:
Diffstat (limited to 'libraries/edje/src/modules/eet_snd_reader')
-rw-r--r--libraries/edje/src/modules/eet_snd_reader/Makefile.am17
-rw-r--r--libraries/edje/src/modules/eet_snd_reader/Makefile.in634
-rw-r--r--libraries/edje/src/modules/eet_snd_reader/eet_snd_reader.c498
3 files changed, 1149 insertions, 0 deletions
diff --git a/libraries/edje/src/modules/eet_snd_reader/Makefile.am b/libraries/edje/src/modules/eet_snd_reader/Makefile.am
new file mode 100644
index 0000000..c154dc2
--- /dev/null
+++ b/libraries/edje/src/modules/eet_snd_reader/Makefile.am
@@ -0,0 +1,17 @@
1MAINTAINERCLEANFILES = Makefile.in
2
3pkglibdir = $(REMIX_PLUGIN_DIR)
4
5AM_CPPFLAGS = \
6-I. \
7-DPACKAGE_LIB_DIR=\"$(libdir)/remix\" \
8-DPACKAGE_DATA_DIR=\"$(datadir)/remix\" \
9@EDJE_CFLAGS@ \
10@REMIX_CFLAGS@
11
12pkgdir = $(REMIX_PLUGIN_DIR)
13pkg_LTLIBRARIES = libeet_sndfile_reader.la
14
15libeet_sndfile_reader_la_SOURCES = eet_snd_reader.c
16libeet_sndfile_reader_la_LDFLAGS = -no-undefined @lt_enable_auto_import@ -module -avoid-version @EDJE_LIBS@ @REMIX_LIBS@
17libeet_sndfile_reader_la_LIBTOOLFLAGS = --tag=disable-static
diff --git a/libraries/edje/src/modules/eet_snd_reader/Makefile.in b/libraries/edje/src/modules/eet_snd_reader/Makefile.in
new file mode 100644
index 0000000..f4d99bb
--- /dev/null
+++ b/libraries/edje/src/modules/eet_snd_reader/Makefile.in
@@ -0,0 +1,634 @@
1# Makefile.in generated by automake 1.11.1 from Makefile.am.
2# @configure_input@
3
4# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
5# 2003, 2004, 2005, 2006, 2007, 2008, 2009 Free Software Foundation,
6# Inc.
7# This Makefile.in is free software; the Free Software Foundation
8# gives unlimited permission to copy and/or distribute it,
9# with or without modifications, as long as this notice is preserved.
10
11# This program is distributed in the hope that it will be useful,
12# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
13# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
14# PARTICULAR PURPOSE.
15
16@SET_MAKE@
17
18VPATH = @srcdir@
19pkgdatadir = $(datadir)/@PACKAGE@
20pkgincludedir = $(includedir)/@PACKAGE@
21pkglibexecdir = $(libexecdir)/@PACKAGE@
22am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
23install_sh_DATA = $(install_sh) -c -m 644
24install_sh_PROGRAM = $(install_sh) -c
25install_sh_SCRIPT = $(install_sh) -c
26INSTALL_HEADER = $(INSTALL_DATA)
27transform = $(program_transform_name)
28NORMAL_INSTALL = :
29PRE_INSTALL = :
30POST_INSTALL = :
31NORMAL_UNINSTALL = :
32PRE_UNINSTALL = :
33POST_UNINSTALL = :
34build_triplet = @build@
35host_triplet = @host@
36subdir = src/modules/eet_snd_reader
37DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in
38ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
39am__aclocal_m4_deps = $(top_srcdir)/m4/ac_attribute.m4 \
40 $(top_srcdir)/m4/efl_binary.m4 \
41 $(top_srcdir)/m4/efl_coverage.m4 \
42 $(top_srcdir)/m4/efl_doxygen.m4 \
43 $(top_srcdir)/m4/efl_path_max.m4 $(top_srcdir)/m4/efl_tests.m4 \
44 $(top_srcdir)/m4/libtool.m4 $(top_srcdir)/m4/ltoptions.m4 \
45 $(top_srcdir)/m4/ltsugar.m4 $(top_srcdir)/m4/ltversion.m4 \
46 $(top_srcdir)/m4/lt~obsolete.m4 $(top_srcdir)/configure.ac
47am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
48 $(ACLOCAL_M4)
49mkinstalldirs = $(install_sh) -d
50CONFIG_HEADER = $(top_builddir)/config.h
51CONFIG_CLEAN_FILES =
52CONFIG_CLEAN_VPATH_FILES =
53am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`;
54am__vpath_adj = case $$p in \
55 $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \
56 *) f=$$p;; \
57 esac;
58am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`;
59am__install_max = 40
60am__nobase_strip_setup = \
61 srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'`
62am__nobase_strip = \
63 for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||"
64am__nobase_list = $(am__nobase_strip_setup); \
65 for p in $$list; do echo "$$p $$p"; done | \
66 sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \
67 $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \
68 if (++n[$$2] == $(am__install_max)) \
69 { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \
70 END { for (dir in files) print dir, files[dir] }'
71am__base_list = \
72 sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \
73 sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g'
74am__installdirs = "$(DESTDIR)$(pkgdir)"
75LTLIBRARIES = $(pkg_LTLIBRARIES)
76libeet_sndfile_reader_la_LIBADD =
77am_libeet_sndfile_reader_la_OBJECTS = \
78 libeet_sndfile_reader_la-eet_snd_reader.lo
79libeet_sndfile_reader_la_OBJECTS = \
80 $(am_libeet_sndfile_reader_la_OBJECTS)
81AM_V_lt = $(am__v_lt_$(V))
82am__v_lt_ = $(am__v_lt_$(AM_DEFAULT_VERBOSITY))
83am__v_lt_0 = --silent
84libeet_sndfile_reader_la_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC \
85 $(libeet_sndfile_reader_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \
86 --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \
87 $(libeet_sndfile_reader_la_LDFLAGS) $(LDFLAGS) -o $@
88DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir)
89depcomp = $(SHELL) $(top_srcdir)/depcomp
90am__depfiles_maybe = depfiles
91am__mv = mv -f
92COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \
93 $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
94LTCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \
95 $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) \
96 $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \
97 $(AM_CFLAGS) $(CFLAGS)
98AM_V_CC = $(am__v_CC_$(V))
99am__v_CC_ = $(am__v_CC_$(AM_DEFAULT_VERBOSITY))
100am__v_CC_0 = @echo " CC " $@;
101AM_V_at = $(am__v_at_$(V))
102am__v_at_ = $(am__v_at_$(AM_DEFAULT_VERBOSITY))
103am__v_at_0 = @
104CCLD = $(CC)
105LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \
106 $(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \
107 $(AM_LDFLAGS) $(LDFLAGS) -o $@
108AM_V_CCLD = $(am__v_CCLD_$(V))
109am__v_CCLD_ = $(am__v_CCLD_$(AM_DEFAULT_VERBOSITY))
110am__v_CCLD_0 = @echo " CCLD " $@;
111AM_V_GEN = $(am__v_GEN_$(V))
112am__v_GEN_ = $(am__v_GEN_$(AM_DEFAULT_VERBOSITY))
113am__v_GEN_0 = @echo " GEN " $@;
114SOURCES = $(libeet_sndfile_reader_la_SOURCES)
115DIST_SOURCES = $(libeet_sndfile_reader_la_SOURCES)
116ETAGS = etags
117CTAGS = ctags
118DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
119pkglibdir = $(REMIX_PLUGIN_DIR)
120ACLOCAL = @ACLOCAL@
121ALLOCA = @ALLOCA@
122ALSA_CFLAGS = @ALSA_CFLAGS@
123ALSA_LIBS = @ALSA_LIBS@
124AMTAR = @AMTAR@
125AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@
126AR = @AR@
127AS = @AS@
128AUTOCONF = @AUTOCONF@
129AUTOHEADER = @AUTOHEADER@
130AUTOMAKE = @AUTOMAKE@
131AWK = @AWK@
132CC = @CC@
133CCDEPMODE = @CCDEPMODE@
134CFLAGS = @CFLAGS@
135CHECK_CFLAGS = @CHECK_CFLAGS@
136CHECK_LIBS = @CHECK_LIBS@
137CPP = @CPP@
138CPPFLAGS = @CPPFLAGS@
139CYGPATH_W = @CYGPATH_W@
140DEFS = @DEFS@
141DEPDIR = @DEPDIR@
142DLLTOOL = @DLLTOOL@
143DSYMUTIL = @DSYMUTIL@
144DUMPBIN = @DUMPBIN@
145ECHO_C = @ECHO_C@
146ECHO_N = @ECHO_N@
147ECHO_T = @ECHO_T@
148ECORE_IMF_CFLAGS = @ECORE_IMF_CFLAGS@
149ECORE_IMF_LIBS = @ECORE_IMF_LIBS@
150EDJE_CC_CFLAGS = @EDJE_CC_CFLAGS@
151EDJE_CC_LIBS = @EDJE_CC_LIBS@
152EDJE_CC_PRG = @EDJE_CC_PRG@
153EDJE_CFLAGS = @EDJE_CFLAGS@
154EDJE_DECC_CFLAGS = @EDJE_DECC_CFLAGS@
155EDJE_DECC_LIBS = @EDJE_DECC_LIBS@
156EDJE_DECC_PRG = @EDJE_DECC_PRG@
157EDJE_EXTERNAL_INSPECTOR_CFLAGS = @EDJE_EXTERNAL_INSPECTOR_CFLAGS@
158EDJE_EXTERNAL_INSPECTOR_LIBS = @EDJE_EXTERNAL_INSPECTOR_LIBS@
159EDJE_EXTERNAL_INSPECTOR_PRG = @EDJE_EXTERNAL_INSPECTOR_PRG@
160EDJE_INSPECTOR_CFLAGS = @EDJE_INSPECTOR_CFLAGS@
161EDJE_INSPECTOR_LIBS = @EDJE_INSPECTOR_LIBS@
162EDJE_INSPECTOR_PRG = @EDJE_INSPECTOR_PRG@
163EDJE_LIBS = @EDJE_LIBS@
164EDJE_PLAYER_CFLAGS = @EDJE_PLAYER_CFLAGS@
165EDJE_PLAYER_LIBS = @EDJE_PLAYER_LIBS@
166EDJE_PLAYER_PRG = @EDJE_PLAYER_PRG@
167EDJE_RECC_PRG = @EDJE_RECC_PRG@
168EFL_COVERAGE_CFLAGS = @EFL_COVERAGE_CFLAGS@
169EFL_COVERAGE_LIBS = @EFL_COVERAGE_LIBS@
170EFL_EDJE_BUILD = @EFL_EDJE_BUILD@
171EGREP = @EGREP@
172EVIL_CFLAGS = @EVIL_CFLAGS@
173EVIL_LIBS = @EVIL_LIBS@
174EXEEXT = @EXEEXT@
175FGREP = @FGREP@
176FLAC_CFLAGS = @FLAC_CFLAGS@
177FLAC_LIBS = @FLAC_LIBS@
178GREP = @GREP@
179INSTALL = @INSTALL@
180INSTALL_DATA = @INSTALL_DATA@
181INSTALL_PROGRAM = @INSTALL_PROGRAM@
182INSTALL_SCRIPT = @INSTALL_SCRIPT@
183INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
184LD = @LD@
185LDFLAGS = @LDFLAGS@
186LIBOBJS = @LIBOBJS@
187LIBS = @LIBS@
188LIBTOOL = @LIBTOOL@
189LIPO = @LIPO@
190LN_S = @LN_S@
191LTLIBOBJS = @LTLIBOBJS@
192LUA_CFLAGS = @LUA_CFLAGS@
193LUA_LIBS = @LUA_LIBS@
194MAKEINFO = @MAKEINFO@
195MINIMAL_CFLAGS = @MINIMAL_CFLAGS@
196MINIMAL_LIBS = @MINIMAL_LIBS@
197MKDIR_P = @MKDIR_P@
198MODULE_ARCH = @MODULE_ARCH@
199NM = @NM@
200NMEDIT = @NMEDIT@
201OBJDUMP = @OBJDUMP@
202OBJEXT = @OBJEXT@
203OTOOL = @OTOOL@
204OTOOL64 = @OTOOL64@
205PACKAGE = @PACKAGE@
206PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
207PACKAGE_NAME = @PACKAGE_NAME@
208PACKAGE_STRING = @PACKAGE_STRING@
209PACKAGE_TARNAME = @PACKAGE_TARNAME@
210PACKAGE_URL = @PACKAGE_URL@
211PACKAGE_VERSION = @PACKAGE_VERSION@
212PATH_SEPARATOR = @PATH_SEPARATOR@
213PKG_CONFIG = @PKG_CONFIG@
214PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@
215PKG_CONFIG_PATH = @PKG_CONFIG_PATH@
216PYTHON = @PYTHON@
217PYTHON_EXEC_PREFIX = @PYTHON_EXEC_PREFIX@
218PYTHON_PLATFORM = @PYTHON_PLATFORM@
219PYTHON_PREFIX = @PYTHON_PREFIX@
220PYTHON_VERSION = @PYTHON_VERSION@
221RANLIB = @RANLIB@
222REMIX_CFLAGS = @REMIX_CFLAGS@
223REMIX_LIBS = @REMIX_LIBS@
224REMIX_PLUGIN_DIR = @REMIX_PLUGIN_DIR@
225SED = @SED@
226SET_MAKE = @SET_MAKE@
227SHELL = @SHELL@
228SNDFILE_CFLAGS = @SNDFILE_CFLAGS@
229SNDFILE_LIBS = @SNDFILE_LIBS@
230STRIP = @STRIP@
231VERSION = @VERSION@
232VMAJ = @VMAJ@
233VORBISENC_CFLAGS = @VORBISENC_CFLAGS@
234VORBISENC_LIBS = @VORBISENC_LIBS@
235abs_builddir = @abs_builddir@
236abs_srcdir = @abs_srcdir@
237abs_top_builddir = @abs_top_builddir@
238abs_top_srcdir = @abs_top_srcdir@
239ac_ct_CC = @ac_ct_CC@
240ac_ct_DUMPBIN = @ac_ct_DUMPBIN@
241am__include = @am__include@
242am__leading_dot = @am__leading_dot@
243am__quote = @am__quote@
244am__tar = @am__tar@
245am__untar = @am__untar@
246bindir = @bindir@
247build = @build@
248build_alias = @build_alias@
249build_cpu = @build_cpu@
250build_os = @build_os@
251build_vendor = @build_vendor@
252builddir = @builddir@
253datadir = @datadir@
254datarootdir = @datarootdir@
255docdir = @docdir@
256dvidir = @dvidir@
257edje_cc = @edje_cc@
258efl_doxygen = @efl_doxygen@
259efl_have_doxygen = @efl_have_doxygen@
260exec_prefix = @exec_prefix@
261have_lcov = @have_lcov@
262host = @host@
263host_alias = @host_alias@
264host_cpu = @host_cpu@
265host_os = @host_os@
266host_vendor = @host_vendor@
267htmldir = @htmldir@
268includedir = @includedir@
269infodir = @infodir@
270install_sh = @install_sh@
271libdir = @libdir@
272libexecdir = @libexecdir@
273localedir = @localedir@
274localstatedir = @localstatedir@
275lt_ECHO = @lt_ECHO@
276lt_enable_auto_import = @lt_enable_auto_import@
277lua_libs = @lua_libs@
278mandir = @mandir@
279mkdir_p = @mkdir_p@
280oldincludedir = @oldincludedir@
281pdfdir = @pdfdir@
282pkgconfig_requires_private = @pkgconfig_requires_private@
283pkgpyexecdir = @pkgpyexecdir@
284pkgpythondir = @pkgpythondir@
285prefix = @prefix@
286program_transform_name = @program_transform_name@
287psdir = @psdir@
288pyexecdir = @pyexecdir@
289pythondir = @pythondir@
290release_info = @release_info@
291requirement_edje = @requirement_edje@
292sbindir = @sbindir@
293sharedstatedir = @sharedstatedir@
294srcdir = @srcdir@
295sysconfdir = @sysconfdir@
296target_alias = @target_alias@
297top_build_prefix = @top_build_prefix@
298top_builddir = @top_builddir@
299top_srcdir = @top_srcdir@
300version_info = @version_info@
301vimdir = @vimdir@
302MAINTAINERCLEANFILES = Makefile.in
303AM_CPPFLAGS = \
304-I. \
305-DPACKAGE_LIB_DIR=\"$(libdir)/remix\" \
306-DPACKAGE_DATA_DIR=\"$(datadir)/remix\" \
307@EDJE_CFLAGS@ \
308@REMIX_CFLAGS@
309
310pkgdir = $(REMIX_PLUGIN_DIR)
311pkg_LTLIBRARIES = libeet_sndfile_reader.la
312libeet_sndfile_reader_la_SOURCES = eet_snd_reader.c
313libeet_sndfile_reader_la_LDFLAGS = -no-undefined @lt_enable_auto_import@ -module -avoid-version @EDJE_LIBS@ @REMIX_LIBS@
314libeet_sndfile_reader_la_LIBTOOLFLAGS = --tag=disable-static
315all: all-am
316
317.SUFFIXES:
318.SUFFIXES: .c .lo .o .obj
319$(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps)
320 @for dep in $?; do \
321 case '$(am__configure_deps)' in \
322 *$$dep*) \
323 ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \
324 && { if test -f $@; then exit 0; else break; fi; }; \
325 exit 1;; \
326 esac; \
327 done; \
328 echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu src/modules/eet_snd_reader/Makefile'; \
329 $(am__cd) $(top_srcdir) && \
330 $(AUTOMAKE) --gnu src/modules/eet_snd_reader/Makefile
331.PRECIOUS: Makefile
332Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
333 @case '$?' in \
334 *config.status*) \
335 cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \
336 *) \
337 echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \
338 cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \
339 esac;
340
341$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
342 cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
343
344$(top_srcdir)/configure: $(am__configure_deps)
345 cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
346$(ACLOCAL_M4): $(am__aclocal_m4_deps)
347 cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
348$(am__aclocal_m4_deps):
349install-pkgLTLIBRARIES: $(pkg_LTLIBRARIES)
350 @$(NORMAL_INSTALL)
351 test -z "$(pkgdir)" || $(MKDIR_P) "$(DESTDIR)$(pkgdir)"
352 @list='$(pkg_LTLIBRARIES)'; test -n "$(pkgdir)" || list=; \
353 list2=; for p in $$list; do \
354 if test -f $$p; then \
355 list2="$$list2 $$p"; \
356 else :; fi; \
357 done; \
358 test -z "$$list2" || { \
359 echo " $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 '$(DESTDIR)$(pkgdir)'"; \
360 $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 "$(DESTDIR)$(pkgdir)"; \
361 }
362
363uninstall-pkgLTLIBRARIES:
364 @$(NORMAL_UNINSTALL)
365 @list='$(pkg_LTLIBRARIES)'; test -n "$(pkgdir)" || list=; \
366 for p in $$list; do \
367 $(am__strip_dir) \
368 echo " $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=uninstall rm -f '$(DESTDIR)$(pkgdir)/$$f'"; \
369 $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=uninstall rm -f "$(DESTDIR)$(pkgdir)/$$f"; \
370 done
371
372clean-pkgLTLIBRARIES:
373 -test -z "$(pkg_LTLIBRARIES)" || rm -f $(pkg_LTLIBRARIES)
374 @list='$(pkg_LTLIBRARIES)'; for p in $$list; do \
375 dir="`echo $$p | sed -e 's|/[^/]*$$||'`"; \
376 test "$$dir" != "$$p" || dir=.; \
377 echo "rm -f \"$${dir}/so_locations\""; \
378 rm -f "$${dir}/so_locations"; \
379 done
380libeet_sndfile_reader.la: $(libeet_sndfile_reader_la_OBJECTS) $(libeet_sndfile_reader_la_DEPENDENCIES)
381 $(AM_V_CCLD)$(libeet_sndfile_reader_la_LINK) -rpath $(pkgdir) $(libeet_sndfile_reader_la_OBJECTS) $(libeet_sndfile_reader_la_LIBADD) $(LIBS)
382
383mostlyclean-compile:
384 -rm -f *.$(OBJEXT)
385
386distclean-compile:
387 -rm -f *.tab.c
388
389@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libeet_sndfile_reader_la-eet_snd_reader.Plo@am__quote@
390
391.c.o:
392@am__fastdepCC_TRUE@ $(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $<
393@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
394@am__fastdepCC_FALSE@ $(AM_V_CC) @AM_BACKSLASH@
395@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
396@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
397@am__fastdepCC_FALSE@ $(COMPILE) -c $<
398
399.c.obj:
400@am__fastdepCC_TRUE@ $(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'`
401@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
402@am__fastdepCC_FALSE@ $(AM_V_CC) @AM_BACKSLASH@
403@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
404@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
405@am__fastdepCC_FALSE@ $(COMPILE) -c `$(CYGPATH_W) '$<'`
406
407.c.lo:
408@am__fastdepCC_TRUE@ $(AM_V_CC)$(LTCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $<
409@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo
410@am__fastdepCC_FALSE@ $(AM_V_CC) @AM_BACKSLASH@
411@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@
412@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
413@am__fastdepCC_FALSE@ $(LTCOMPILE) -c -o $@ $<
414
415libeet_sndfile_reader_la-eet_snd_reader.lo: eet_snd_reader.c
416@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(libeet_sndfile_reader_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libeet_sndfile_reader_la-eet_snd_reader.lo -MD -MP -MF $(DEPDIR)/libeet_sndfile_reader_la-eet_snd_reader.Tpo -c -o libeet_sndfile_reader_la-eet_snd_reader.lo `test -f 'eet_snd_reader.c' || echo '$(srcdir)/'`eet_snd_reader.c
417@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libeet_sndfile_reader_la-eet_snd_reader.Tpo $(DEPDIR)/libeet_sndfile_reader_la-eet_snd_reader.Plo
418@am__fastdepCC_FALSE@ $(AM_V_CC) @AM_BACKSLASH@
419@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='eet_snd_reader.c' object='libeet_sndfile_reader_la-eet_snd_reader.lo' libtool=yes @AMDEPBACKSLASH@
420@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
421@am__fastdepCC_FALSE@ $(LIBTOOL) $(AM_V_lt) --tag=CC $(libeet_sndfile_reader_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libeet_sndfile_reader_la-eet_snd_reader.lo `test -f 'eet_snd_reader.c' || echo '$(srcdir)/'`eet_snd_reader.c
422
423mostlyclean-libtool:
424 -rm -f *.lo
425
426clean-libtool:
427 -rm -rf .libs _libs
428
429ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES)
430 list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
431 unique=`for i in $$list; do \
432 if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
433 done | \
434 $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
435 END { if (nonempty) { for (i in files) print i; }; }'`; \
436 mkid -fID $$unique
437tags: TAGS
438
439TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \
440 $(TAGS_FILES) $(LISP)
441 set x; \
442 here=`pwd`; \
443 list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
444 unique=`for i in $$list; do \
445 if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
446 done | \
447 $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
448 END { if (nonempty) { for (i in files) print i; }; }'`; \
449 shift; \
450 if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \
451 test -n "$$unique" || unique=$$empty_fix; \
452 if test $$# -gt 0; then \
453 $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
454 "$$@" $$unique; \
455 else \
456 $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
457 $$unique; \
458 fi; \
459 fi
460ctags: CTAGS
461CTAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \
462 $(TAGS_FILES) $(LISP)
463 list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
464 unique=`for i in $$list; do \
465 if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
466 done | \
467 $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
468 END { if (nonempty) { for (i in files) print i; }; }'`; \
469 test -z "$(CTAGS_ARGS)$$unique" \
470 || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \
471 $$unique
472
473GTAGS:
474 here=`$(am__cd) $(top_builddir) && pwd` \
475 && $(am__cd) $(top_srcdir) \
476 && gtags -i $(GTAGS_ARGS) "$$here"
477
478distclean-tags:
479 -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
480
481distdir: $(DISTFILES)
482 @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
483 topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
484 list='$(DISTFILES)'; \
485 dist_files=`for file in $$list; do echo $$file; done | \
486 sed -e "s|^$$srcdirstrip/||;t" \
487 -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \
488 case $$dist_files in \
489 */*) $(MKDIR_P) `echo "$$dist_files" | \
490 sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \
491 sort -u` ;; \
492 esac; \
493 for file in $$dist_files; do \
494 if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
495 if test -d $$d/$$file; then \
496 dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
497 if test -d "$(distdir)/$$file"; then \
498 find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
499 fi; \
500 if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
501 cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \
502 find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
503 fi; \
504 cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \
505 else \
506 test -f "$(distdir)/$$file" \
507 || cp -p $$d/$$file "$(distdir)/$$file" \
508 || exit 1; \
509 fi; \
510 done
511check-am: all-am
512check: check-am
513all-am: Makefile $(LTLIBRARIES)
514installdirs:
515 for dir in "$(DESTDIR)$(pkgdir)"; do \
516 test -z "$$dir" || $(MKDIR_P) "$$dir"; \
517 done
518install: install-am
519install-exec: install-exec-am
520install-data: install-data-am
521uninstall: uninstall-am
522
523install-am: all-am
524 @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
525
526installcheck: installcheck-am
527install-strip:
528 $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
529 install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
530 `test -z '$(STRIP)' || \
531 echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install
532mostlyclean-generic:
533
534clean-generic:
535
536distclean-generic:
537 -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
538 -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES)
539
540maintainer-clean-generic:
541 @echo "This command is intended for maintainers to use"
542 @echo "it deletes files that may require special tools to rebuild."
543 -test -z "$(MAINTAINERCLEANFILES)" || rm -f $(MAINTAINERCLEANFILES)
544clean: clean-am
545
546clean-am: clean-generic clean-libtool clean-pkgLTLIBRARIES \
547 mostlyclean-am
548
549distclean: distclean-am
550 -rm -rf ./$(DEPDIR)
551 -rm -f Makefile
552distclean-am: clean-am distclean-compile distclean-generic \
553 distclean-tags
554
555dvi: dvi-am
556
557dvi-am:
558
559html: html-am
560
561html-am:
562
563info: info-am
564
565info-am:
566
567install-data-am: install-pkgLTLIBRARIES
568
569install-dvi: install-dvi-am
570
571install-dvi-am:
572
573install-exec-am:
574
575install-html: install-html-am
576
577install-html-am:
578
579install-info: install-info-am
580
581install-info-am:
582
583install-man:
584
585install-pdf: install-pdf-am
586
587install-pdf-am:
588
589install-ps: install-ps-am
590
591install-ps-am:
592
593installcheck-am:
594
595maintainer-clean: maintainer-clean-am
596 -rm -rf ./$(DEPDIR)
597 -rm -f Makefile
598maintainer-clean-am: distclean-am maintainer-clean-generic
599
600mostlyclean: mostlyclean-am
601
602mostlyclean-am: mostlyclean-compile mostlyclean-generic \
603 mostlyclean-libtool
604
605pdf: pdf-am
606
607pdf-am:
608
609ps: ps-am
610
611ps-am:
612
613uninstall-am: uninstall-pkgLTLIBRARIES
614
615.MAKE: install-am install-strip
616
617.PHONY: CTAGS GTAGS all all-am check check-am clean clean-generic \
618 clean-libtool clean-pkgLTLIBRARIES ctags distclean \
619 distclean-compile distclean-generic distclean-libtool \
620 distclean-tags distdir dvi dvi-am html html-am info info-am \
621 install install-am install-data install-data-am install-dvi \
622 install-dvi-am install-exec install-exec-am install-html \
623 install-html-am install-info install-info-am install-man \
624 install-pdf install-pdf-am install-pkgLTLIBRARIES install-ps \
625 install-ps-am install-strip installcheck installcheck-am \
626 installdirs maintainer-clean maintainer-clean-generic \
627 mostlyclean mostlyclean-compile mostlyclean-generic \
628 mostlyclean-libtool pdf pdf-am ps ps-am tags uninstall \
629 uninstall-am uninstall-pkgLTLIBRARIES
630
631
632# Tell versions [3.59,3.63) of GNU make to not export all variables.
633# Otherwise a system limit (for SysV at least) may be exceeded.
634.NOEXPORT:
diff --git a/libraries/edje/src/modules/eet_snd_reader/eet_snd_reader.c b/libraries/edje/src/modules/eet_snd_reader/eet_snd_reader.c
new file mode 100644
index 0000000..4e2dec9
--- /dev/null
+++ b/libraries/edje/src/modules/eet_snd_reader/eet_snd_reader.c
@@ -0,0 +1,498 @@
1/*
2 * RemixSnd_eetfile: a libsnd EET Virtual file handler
3 *
4 * Govindaraju SM <govi.sm@samsung.com>, August 2011
5 * Prince Kumar Dubey <prince.dubey@samsung.com>, August 2011
6 */
7
8#include "config.h"
9#include <math.h>
10#include <sndfile.h>
11#include <remix/remix.h>
12#include <Eet.h>
13
14#define PATH_KEY 1
15#define SOUND_ID_KEY 2
16#define SPEED_KEY 3
17#define BLOCK_FRAMES 8192
18
19static RemixBase *remix_eet_sndfile_optimise(RemixEnv *env, RemixBase *sndfile);
20
21typedef struct _VIO_DATA VIO_DATA;
22typedef struct _SndInstanceData SndInstanceData;
23
24struct _VIO_DATA
25{
26 sf_count_t offset, length;
27 const char *data;
28};
29
30struct _SndInstanceData
31{
32 /* plugin parameters */
33 char *path;
34 char *sound_id;
35 double speed;
36
37 /* Edj & Sndfile Reader */
38 Eet_File *efp;
39 SNDFILE *pcm_fp;
40 SF_INFO *snd_info;
41 VIO_DATA *vio_data;
42
43 /* PCM buffers */
44 RemixPCM *readbuf;
45 RemixPCM *inbuf;
46 RemixPCM *outbuf;
47
48 /* Resample stuffs */
49 RemixPCM prevreadbuf[2];
50 int enable_resample;
51 double rs_ratio;
52 RemixCount resample_len;
53 RemixCount in_avail;
54 RemixCount out_generated;
55 RemixCount required_resamples;
56};
57
58static sf_count_t
59eet_snd_file_get_length(void *user_data)
60{
61 VIO_DATA *vf = user_data;
62 return vf->length;
63}
64
65static sf_count_t
66eet_snd_file_seek(sf_count_t offset, int whence, void *user_data)
67{
68 VIO_DATA *vf = user_data;
69
70 switch (whence)
71 {
72 case SEEK_SET:
73 vf->offset = offset;
74 break;
75 case SEEK_CUR:
76 vf->offset += offset;
77 break;
78 case SEEK_END:
79 vf->offset = vf->length + offset;
80 break;
81 default:
82 break;
83 }
84 return vf->offset;
85}
86
87static sf_count_t
88eet_snd_file_read(void *ptr, sf_count_t count, void *user_data)
89{
90 VIO_DATA *vf = user_data;
91
92 if ((vf->offset + count) > vf->length)
93 count = vf->length - vf->offset;
94 memcpy(ptr, vf->data + vf->offset, count);
95 vf->offset += count;
96 return count;
97}
98
99static sf_count_t
100eet_snd_file_tell(void *user_data)
101{
102 VIO_DATA *vf = user_data;
103 return vf->offset;
104}
105
106static int
107remix_init_resampler_data(RemixEnv *env, RemixBase *base)
108{
109 SndInstanceData *si = remix_base_get_instance_data(env, base);
110
111 si->rs_ratio = remix_get_samplerate(env) / si->snd_info->samplerate;
112 si->rs_ratio /= si->speed;
113 si->resample_len = (si->snd_info->frames * si->rs_ratio);
114
115 si->outbuf = malloc(sizeof(RemixPCM) * BLOCK_FRAMES * 2);
116 if (!si->outbuf) return 0;
117 if ((si->rs_ratio == 1.0)/* && (si->snd_info->channels == 2)*/)
118 {
119 si->enable_resample = 0;
120 return 1;
121 }
122 else
123 si->enable_resample = 1;
124
125 si->in_avail = 0;
126 si->out_generated = 0;
127 si->inbuf = malloc(sizeof(RemixPCM) * BLOCK_FRAMES *
128 si->snd_info->channels);
129 if (!si->inbuf) return 0;
130 return 1;
131}
132
133static RemixBase *
134remix_eet_sndfile_create(RemixEnv *env, RemixBase *sndfile, const char *path, const char *sound_id, const double speed)
135{
136 SF_VIRTUAL_IO *eet_vio = NULL;
137 SndInstanceData *si;
138 const void *sound_data;
139 int sound_size;
140
141 if ((!path) || (!sound_id)) return NULL;
142
143 si = calloc(1, sizeof(SndInstanceData));
144 if (!si) goto err;
145 remix_base_set_instance_data(env, sndfile, si);
146
147 si->path = strdup(path);
148 si->sound_id = strdup(sound_id);
149 si->speed = speed;
150
151 si->efp = eet_open(path, EET_FILE_MODE_READ);
152 if (!si->efp) goto err;
153
154 // xxx: eet_read_direct does not work on Threads, using eet_read.
155 sound_data = eet_read(si->efp, sound_id, &(sound_size));
156 eet_close(si->efp);
157 si->efp = NULL;
158 if (sound_data == NULL) goto err;
159
160 eet_vio = calloc(1, sizeof(SF_VIRTUAL_IO));
161 if (!eet_vio) goto err;
162
163 /* Set up func pointers to read snd file directly from EET. */
164 eet_vio->get_filelen = eet_snd_file_get_length;
165 eet_vio->seek = eet_snd_file_seek;
166 eet_vio->read = eet_snd_file_read;
167 eet_vio->tell = eet_snd_file_tell;
168
169 si->vio_data = calloc(1, sizeof(VIO_DATA));
170 if (!si->vio_data) goto err;
171 si->vio_data->offset = 0;
172 si->vio_data->length = sound_size;
173 si->vio_data->data = sound_data;
174
175 si->snd_info = calloc(1, sizeof(SF_INFO));
176 if (!si->snd_info) goto err;
177
178 si->pcm_fp = sf_open_virtual(eet_vio, SFM_READ, si->snd_info, si->vio_data);
179 if (!si->pcm_fp) goto err;
180 free(eet_vio);
181 eet_vio = NULL;
182
183 if (!remix_init_resampler_data(env, sndfile)) goto err;
184 si->out_generated = 0;
185
186 return sndfile;
187
188err:
189 if (eet_vio) free(eet_vio);
190 remix_set_error(env, REMIX_ERROR_SYSTEM);
191 remix_destroy(env, (RemixBase *)sndfile);
192 return RemixNone;
193}
194
195static RemixBase *
196remix_eet_sndfile_reader_init(RemixEnv *env, RemixBase *base, CDSet *parameters)
197{
198 char *file_path, *sound_id;
199 double speed;
200
201 file_path = (cd_set_find(env, parameters, PATH_KEY)).s_string;
202 sound_id = (cd_set_find(env, parameters, SOUND_ID_KEY)).s_string;
203 speed = (cd_set_find(env, parameters, SPEED_KEY)).s_double;
204
205 if (!remix_eet_sndfile_create(env, base, file_path, sound_id, speed))
206 return RemixNone;
207 remix_eet_sndfile_optimise (env, base);
208 return base;
209}
210
211static RemixBase *
212remix_eet_sndfile_clone(RemixEnv *env, RemixBase *base)
213{
214 SndInstanceData *si = remix_base_get_instance_data(env, base);
215 RemixBase *new_sndfile = remix_base_new(env);
216
217 remix_eet_sndfile_create(env, new_sndfile, si->path, si->sound_id, si->speed);
218 remix_eet_sndfile_optimise(env, new_sndfile);
219 return new_sndfile;
220}
221
222static int
223remix_eet_sndfile_destroy(RemixEnv *env, RemixBase *base)
224{
225 SndInstanceData *si = remix_base_get_instance_data(env, base);
226 if (si)
227 {
228 sf_close (si->pcm_fp);
229 eet_close(si->efp);
230 if (si->path) free(si->path);
231 if (si->sound_id) free(si->sound_id);
232 if (si->snd_info) free(si->snd_info);
233 if (si->efp) eet_close(si->efp);
234 if (si->inbuf) free(si->inbuf);
235 if (si->outbuf) free(si->outbuf);
236 if (si->vio_data) free(si->vio_data);
237 free(si);
238 }
239 if (base) free (base);
240 return 0;
241}
242
243static int
244remix_pcm_resample(SndInstanceData *si)
245{
246 RemixPCM *src, *dst, *srcbase;
247 int i = 0, in_samples, pos, total, chnum, reqsamp, avail;
248 int interp = 1;
249
250 dst = si->outbuf + (si->out_generated * 2);
251 in_samples = (double)si->required_resamples / si->rs_ratio;
252 chnum = si->snd_info->channels;
253 reqsamp = si->required_resamples;
254 avail = si->in_avail;
255 srcbase = si->readbuf;
256 if ((interp) && (si->rs_ratio >= 1.0))
257 {
258 // linear interpolation of resampling for lower quality samples
259 // so they don't get high requency aliasing effects
260 for (i = 0; i < reqsamp; i++)
261 {
262 float fpos, fpos1;
263 RemixPCM psam[2];
264
265 fpos = (float)(i * in_samples) / (float)reqsamp;
266 pos = fpos;
267 if (pos >= avail) break;
268 fpos -= pos;
269 fpos1 = 1.0 - fpos;
270 src = srcbase + (pos * chnum);
271 if (chnum == 2)
272 {
273 if (pos == 0)
274 {
275 psam[0] = si->prevreadbuf[0];
276 psam[1] = si->prevreadbuf[1];
277 }
278 else
279 {
280 psam[0] = src[0 - 2];
281 psam[1] = src[1 - 2];
282 }
283 *dst++ = (src[0] * fpos) + (psam[0] * fpos1);
284 *dst++ = (src[1] * fpos) + (psam[1] * fpos1);
285 }
286 else
287 {
288 if (pos == 0)
289 psam[0] = si->prevreadbuf[0];
290 else
291 psam[0] = src[0 - 1];
292 *dst++ = (src[0] * fpos) + (psam[0] * fpos1);
293 }
294 }
295 }
296 else
297 {
298 // simple sample-picking/nearest. faster and simpler
299 for (i = 0; i < reqsamp; i++)
300 {
301 pos = (i * in_samples) / reqsamp;
302 if (pos >= avail) break;
303 src = srcbase + (pos * chnum);
304 if (chnum == 2)
305 {
306 *dst++ = src[0];
307 *dst++ = src[1];
308 }
309 else
310 *dst++ = src[0];
311 }
312 }
313 si->out_generated += i;
314 total = (i * in_samples) / reqsamp;
315 si->readbuf += total * chnum;
316 si->in_avail -= total;
317 return total;
318}
319
320/* An RemixChunkFunc for creating sndfile */
321static RemixCount
322remix_eet_sndfile_read_update(RemixEnv *env, RemixBase *sndfile, RemixCount count)
323{
324 SndInstanceData *si = remix_base_get_instance_data(env, sndfile);
325
326 si->out_generated = 0;
327 if (si->enable_resample)
328 {
329 RemixCount gen = 0;
330
331 while (gen < count)
332 {
333 if (si->in_avail <= 0)
334 {
335 si->in_avail = sf_readf_float(si->pcm_fp, si->inbuf, BLOCK_FRAMES);
336 si->readbuf = si->inbuf;
337 }
338 si->required_resamples = (count - gen);
339 remix_pcm_resample(si);
340 if (si->snd_info->channels == 2)
341 {
342 si->prevreadbuf[0] = si->readbuf[-2];
343 si->prevreadbuf[1] = si->readbuf[-1];
344 }
345 else
346 {
347 si->prevreadbuf[0] = si->readbuf[-1];
348 }
349 gen += si->out_generated;
350 }
351 si->out_generated = gen;
352 }
353 else
354 {
355 si->out_generated = sf_readf_float(si->pcm_fp, si->outbuf, count);
356 }
357 return si->out_generated;
358}
359
360static RemixCount
361remix_eet_sndfile_read_into_chunk(RemixEnv *env, RemixChunk *chunk, RemixCount offset, RemixCount count, int channelname, void *data)
362{
363 RemixBase *sndfile = data;
364 SndInstanceData *si = remix_base_get_instance_data(env, sndfile);
365 RemixPCM *d, *p;
366 RemixCount remaining = count, written = 0, n, i;
367
368 d = &chunk->data[offset];
369 n = MIN(remaining, BLOCK_FRAMES);
370 // Need parameter support to advance the data reading
371 if (channelname == 0)
372 remix_eet_sndfile_read_update(env, sndfile, n);
373 n = MIN(si->out_generated, remaining);
374 p = si->outbuf;
375 if (si->snd_info->channels > 1) p += channelname;
376 for (i = 0; i < n; i++)
377 {
378 *d++ = *p;
379 p += si->snd_info->channels;
380 }
381 if (n == 0) n = _remix_pcm_set(d, 0.0, remaining);
382 remaining -= n;
383 written += n;
384 return written;
385}
386
387static RemixCount
388remix_eet_sndfile_reader_process(RemixEnv *env, RemixBase *base, RemixCount count, RemixStream *input __UNUSED__, RemixStream *output)
389{
390 return remix_stream_chunkfuncify(env, output, count,
391 remix_eet_sndfile_read_into_chunk,
392 base);
393}
394
395static RemixCount
396remix_eet_sndfile_length(RemixEnv *env, RemixBase *base)
397{
398 SndInstanceData *si = remix_base_get_instance_data(env, base);
399 return si->resample_len;
400}
401
402static RemixCount
403remix_eet_sndfile_seek(RemixEnv *env, RemixBase *base, RemixCount offset)
404{
405 SndInstanceData *si = remix_base_get_instance_data(env, base);
406 return sf_seek(si->pcm_fp, offset, SEEK_SET);
407}
408
409static struct _RemixMethods _remix_eet_sndfile_reader_methods =
410{
411 remix_eet_sndfile_clone,
412 remix_eet_sndfile_destroy,
413 NULL, /* ready */
414 NULL, /* prepare */
415 remix_eet_sndfile_reader_process,
416 remix_eet_sndfile_length,
417 remix_eet_sndfile_seek,
418 NULL, /* flush */
419};
420
421static RemixBase *
422remix_eet_sndfile_optimise(RemixEnv *env, RemixBase *sndfile)
423{
424 remix_base_set_methods(env, sndfile, &_remix_eet_sndfile_reader_methods);
425 return sndfile;
426}
427
428static struct _RemixParameterScheme path_scheme =
429{
430 "path",
431 "Path to sound file",
432 REMIX_TYPE_STRING,
433 REMIX_CONSTRAINT_TYPE_NONE,
434 {NULL},
435 REMIX_HINT_FILENAME,
436};
437
438static struct _RemixParameterScheme sound_id_scheme =
439{
440 "sound_id",
441 "Sound Id (Key) inside EET",
442 REMIX_TYPE_STRING,
443 REMIX_CONSTRAINT_TYPE_NONE,
444 {NULL},
445 REMIX_HINT_DEFAULT,
446};
447
448static struct _RemixParameterScheme speed_scheme =
449{
450 "speed",
451 "Sound Play Speed",
452 REMIX_TYPE_FLOAT,
453 REMIX_CONSTRAINT_TYPE_NONE,
454 {NULL},
455 REMIX_HINT_DEFAULT,
456};
457
458static struct _RemixMetaText eet_sndfile_reader_metatext =
459{
460 "eet_sndfile_reader",
461 "File:: Sound file Reader from EET",
462 "Reads PCM audio files from EET bundle using libsndfile",
463 "Copyright (C) 2011, Samsung Electronics Co., Ltd.",
464 "http://www.samsung.com",
465 REMIX_ONE_AUTHOR ("govi.sm@samsung.com", "prince.dubey@samsung.com"),
466};
467
468static struct _RemixPlugin eet_sndfile_reader_plugin =
469{
470 &eet_sndfile_reader_metatext,
471 REMIX_FLAGS_NONE,
472 CD_EMPTY_SET, /* init scheme */
473 remix_eet_sndfile_reader_init,
474 CD_EMPTY_SET, /* process scheme */
475 NULL, /* suggests */
476 NULL, /* plugin data */
477 NULL /* destroy */
478};
479
480EAPI CDList *
481remix_load(RemixEnv *env)
482{
483 CDList *plugins = cd_list_new(env);
484
485 eet_sndfile_reader_plugin.init_scheme =
486 cd_set_insert(env, eet_sndfile_reader_plugin.init_scheme, PATH_KEY,
487 CD_POINTER(&path_scheme));
488 eet_sndfile_reader_plugin.init_scheme =
489 cd_set_insert(env, eet_sndfile_reader_plugin.init_scheme, SOUND_ID_KEY,
490 CD_POINTER(&sound_id_scheme));
491 eet_sndfile_reader_plugin.init_scheme =
492 cd_set_insert(env, eet_sndfile_reader_plugin.init_scheme, SPEED_KEY,
493 CD_POINTER(&speed_scheme));
494
495 plugins = cd_list_prepend(env, plugins,
496 CD_POINTER(&eet_sndfile_reader_plugin));
497 return plugins;
498}