Codebase list faad2 / 0c7c3352-f4ee-453c-91d5-f94229f491f6/main
New upstream snapshot. Debian Janitor 2 years ago
82 changed file(s) with 53489 addition(s) and 11365 deletion(s). Raw diff Collapse all Expand all
+0
-21
.gitignore less more
0 *.o
1 *.so
2 *.a
3 *.ncb
4 *.plg
5 *.aps
6 *.opt
7 *.aac
8 *.wav
9 *.lo
10 *.in
11 Makefile
12 *.libs
13 *.deps
14 *.la
15 project/msvc/.vs/
16 project/msvc/bin/
17 project/msvc/intermediate/
18 libfaad/win32_ver.h
19 *.user
20 /libfaad/faad2.pc
0 Installation Instructions
1 *************************
2
3 Copyright (C) 1994-1996, 1999-2002, 2004-2016 Free Software
4 Foundation, Inc.
5
6 Copying and distribution of this file, with or without modification,
7 are permitted in any medium without royalty provided the copyright
8 notice and this notice are preserved. This file is offered as-is,
9 without warranty of any kind.
10
11 Basic Installation
12 ==================
13
14 Briefly, the shell command './configure && make && make install'
15 should configure, build, and install this package. The following
16 more-detailed instructions are generic; see the 'README' file for
17 instructions specific to this package. Some packages provide this
18 'INSTALL' file but do not implement all of the features documented
19 below. The lack of an optional feature in a given package is not
20 necessarily a bug. More recommendations for GNU packages can be found
21 in *note Makefile Conventions: (standards)Makefile Conventions.
22
23 The 'configure' shell script attempts to guess correct values for
24 various system-dependent variables used during compilation. It uses
25 those values to create a 'Makefile' in each directory of the package.
26 It may also create one or more '.h' files containing system-dependent
27 definitions. Finally, it creates a shell script 'config.status' that
28 you can run in the future to recreate the current configuration, and a
29 file 'config.log' containing compiler output (useful mainly for
30 debugging 'configure').
31
32 It can also use an optional file (typically called 'config.cache' and
33 enabled with '--cache-file=config.cache' or simply '-C') that saves the
34 results of its tests to speed up reconfiguring. Caching is disabled by
35 default to prevent problems with accidental use of stale cache files.
36
37 If you need to do unusual things to compile the package, please try
38 to figure out how 'configure' could check whether to do them, and mail
39 diffs or instructions to the address given in the 'README' so they can
40 be considered for the next release. If you are using the cache, and at
41 some point 'config.cache' contains results you don't want to keep, you
42 may remove or edit it.
43
44 The file 'configure.ac' (or 'configure.in') is used to create
45 'configure' by a program called 'autoconf'. You need 'configure.ac' if
46 you want to change it or regenerate 'configure' using a newer version of
47 'autoconf'.
48
49 The simplest way to compile this package is:
50
51 1. 'cd' to the directory containing the package's source code and type
52 './configure' to configure the package for your system.
53
54 Running 'configure' might take a while. While running, it prints
55 some messages telling which features it is checking for.
56
57 2. Type 'make' to compile the package.
58
59 3. Optionally, type 'make check' to run any self-tests that come with
60 the package, generally using the just-built uninstalled binaries.
61
62 4. Type 'make install' to install the programs and any data files and
63 documentation. When installing into a prefix owned by root, it is
64 recommended that the package be configured and built as a regular
65 user, and only the 'make install' phase executed with root
66 privileges.
67
68 5. Optionally, type 'make installcheck' to repeat any self-tests, but
69 this time using the binaries in their final installed location.
70 This target does not install anything. Running this target as a
71 regular user, particularly if the prior 'make install' required
72 root privileges, verifies that the installation completed
73 correctly.
74
75 6. You can remove the program binaries and object files from the
76 source code directory by typing 'make clean'. To also remove the
77 files that 'configure' created (so you can compile the package for
78 a different kind of computer), type 'make distclean'. There is
79 also a 'make maintainer-clean' target, but that is intended mainly
80 for the package's developers. If you use it, you may have to get
81 all sorts of other programs in order to regenerate files that came
82 with the distribution.
83
84 7. Often, you can also type 'make uninstall' to remove the installed
85 files again. In practice, not all packages have tested that
86 uninstallation works correctly, even though it is required by the
87 GNU Coding Standards.
88
89 8. Some packages, particularly those that use Automake, provide 'make
90 distcheck', which can by used by developers to test that all other
91 targets like 'make install' and 'make uninstall' work correctly.
92 This target is generally not run by end users.
93
94 Compilers and Options
95 =====================
96
97 Some systems require unusual options for compilation or linking that
98 the 'configure' script does not know about. Run './configure --help'
99 for details on some of the pertinent environment variables.
100
101 You can give 'configure' initial values for configuration parameters
102 by setting variables in the command line or in the environment. Here is
103 an example:
104
105 ./configure CC=c99 CFLAGS=-g LIBS=-lposix
106
107 *Note Defining Variables::, for more details.
108
109 Compiling For Multiple Architectures
110 ====================================
111
112 You can compile the package for more than one kind of computer at the
113 same time, by placing the object files for each architecture in their
114 own directory. To do this, you can use GNU 'make'. 'cd' to the
115 directory where you want the object files and executables to go and run
116 the 'configure' script. 'configure' automatically checks for the source
117 code in the directory that 'configure' is in and in '..'. This is known
118 as a "VPATH" build.
119
120 With a non-GNU 'make', it is safer to compile the package for one
121 architecture at a time in the source code directory. After you have
122 installed the package for one architecture, use 'make distclean' before
123 reconfiguring for another architecture.
124
125 On MacOS X 10.5 and later systems, you can create libraries and
126 executables that work on multiple system types--known as "fat" or
127 "universal" binaries--by specifying multiple '-arch' options to the
128 compiler but only a single '-arch' option to the preprocessor. Like
129 this:
130
131 ./configure CC="gcc -arch i386 -arch x86_64 -arch ppc -arch ppc64" \
132 CXX="g++ -arch i386 -arch x86_64 -arch ppc -arch ppc64" \
133 CPP="gcc -E" CXXCPP="g++ -E"
134
135 This is not guaranteed to produce working output in all cases, you
136 may have to build one architecture at a time and combine the results
137 using the 'lipo' tool if you have problems.
138
139 Installation Names
140 ==================
141
142 By default, 'make install' installs the package's commands under
143 '/usr/local/bin', include files under '/usr/local/include', etc. You
144 can specify an installation prefix other than '/usr/local' by giving
145 'configure' the option '--prefix=PREFIX', where PREFIX must be an
146 absolute file name.
147
148 You can specify separate installation prefixes for
149 architecture-specific files and architecture-independent files. If you
150 pass the option '--exec-prefix=PREFIX' to 'configure', the package uses
151 PREFIX as the prefix for installing programs and libraries.
152 Documentation and other data files still use the regular prefix.
153
154 In addition, if you use an unusual directory layout you can give
155 options like '--bindir=DIR' to specify different values for particular
156 kinds of files. Run 'configure --help' for a list of the directories
157 you can set and what kinds of files go in them. In general, the default
158 for these options is expressed in terms of '${prefix}', so that
159 specifying just '--prefix' will affect all of the other directory
160 specifications that were not explicitly provided.
161
162 The most portable way to affect installation locations is to pass the
163 correct locations to 'configure'; however, many packages provide one or
164 both of the following shortcuts of passing variable assignments to the
165 'make install' command line to change installation locations without
166 having to reconfigure or recompile.
167
168 The first method involves providing an override variable for each
169 affected directory. For example, 'make install
170 prefix=/alternate/directory' will choose an alternate location for all
171 directory configuration variables that were expressed in terms of
172 '${prefix}'. Any directories that were specified during 'configure',
173 but not in terms of '${prefix}', must each be overridden at install time
174 for the entire installation to be relocated. The approach of makefile
175 variable overrides for each directory variable is required by the GNU
176 Coding Standards, and ideally causes no recompilation. However, some
177 platforms have known limitations with the semantics of shared libraries
178 that end up requiring recompilation when using this method, particularly
179 noticeable in packages that use GNU Libtool.
180
181 The second method involves providing the 'DESTDIR' variable. For
182 example, 'make install DESTDIR=/alternate/directory' will prepend
183 '/alternate/directory' before all installation names. The approach of
184 'DESTDIR' overrides is not required by the GNU Coding Standards, and
185 does not work on platforms that have drive letters. On the other hand,
186 it does better at avoiding recompilation issues, and works well even
187 when some directory options were not specified in terms of '${prefix}'
188 at 'configure' time.
189
190 Optional Features
191 =================
192
193 If the package supports it, you can cause programs to be installed
194 with an extra prefix or suffix on their names by giving 'configure' the
195 option '--program-prefix=PREFIX' or '--program-suffix=SUFFIX'.
196
197 Some packages pay attention to '--enable-FEATURE' options to
198 'configure', where FEATURE indicates an optional part of the package.
199 They may also pay attention to '--with-PACKAGE' options, where PACKAGE
200 is something like 'gnu-as' or 'x' (for the X Window System). The
201 'README' should mention any '--enable-' and '--with-' options that the
202 package recognizes.
203
204 For packages that use the X Window System, 'configure' can usually
205 find the X include and library files automatically, but if it doesn't,
206 you can use the 'configure' options '--x-includes=DIR' and
207 '--x-libraries=DIR' to specify their locations.
208
209 Some packages offer the ability to configure how verbose the
210 execution of 'make' will be. For these packages, running './configure
211 --enable-silent-rules' sets the default to minimal output, which can be
212 overridden with 'make V=1'; while running './configure
213 --disable-silent-rules' sets the default to verbose, which can be
214 overridden with 'make V=0'.
215
216 Particular systems
217 ==================
218
219 On HP-UX, the default C compiler is not ANSI C compatible. If GNU CC
220 is not installed, it is recommended to use the following options in
221 order to use an ANSI C compiler:
222
223 ./configure CC="cc -Ae -D_XOPEN_SOURCE=500"
224
225 and if that doesn't work, install pre-built binaries of GCC for HP-UX.
226
227 HP-UX 'make' updates targets which have the same time stamps as their
228 prerequisites, which makes it generally unusable when shipped generated
229 files such as 'configure' are involved. Use GNU 'make' instead.
230
231 On OSF/1 a.k.a. Tru64, some versions of the default C compiler cannot
232 parse its '<wchar.h>' header file. The option '-nodtk' can be used as a
233 workaround. If GNU CC is not installed, it is therefore recommended to
234 try
235
236 ./configure CC="cc"
237
238 and if that doesn't work, try
239
240 ./configure CC="cc -nodtk"
241
242 On Solaris, don't put '/usr/ucb' early in your 'PATH'. This
243 directory contains several dysfunctional programs; working variants of
244 these programs are available in '/usr/bin'. So, if you need '/usr/ucb'
245 in your 'PATH', put it _after_ '/usr/bin'.
246
247 On Haiku, software installed for all users goes in '/boot/common',
248 not '/usr/local'. It is recommended to use the following options:
249
250 ./configure --prefix=/boot/common
251
252 Specifying the System Type
253 ==========================
254
255 There may be some features 'configure' cannot figure out
256 automatically, but needs to determine by the type of machine the package
257 will run on. Usually, assuming the package is built to be run on the
258 _same_ architectures, 'configure' can figure that out, but if it prints
259 a message saying it cannot guess the machine type, give it the
260 '--build=TYPE' option. TYPE can either be a short name for the system
261 type, such as 'sun4', or a canonical name which has the form:
262
263 CPU-COMPANY-SYSTEM
264
265 where SYSTEM can have one of these forms:
266
267 OS
268 KERNEL-OS
269
270 See the file 'config.sub' for the possible values of each field. If
271 'config.sub' isn't included in this package, then this package doesn't
272 need to know the machine type.
273
274 If you are _building_ compiler tools for cross-compiling, you should
275 use the option '--target=TYPE' to select the type of system they will
276 produce code for.
277
278 If you want to _use_ a cross compiler, that generates code for a
279 platform different from the build platform, you should specify the
280 "host" platform (i.e., that on which the generated programs will
281 eventually be run) with '--host=TYPE'.
282
283 Sharing Defaults
284 ================
285
286 If you want to set default values for 'configure' scripts to share,
287 you can create a site shell script called 'config.site' that gives
288 default values for variables like 'CC', 'cache_file', and 'prefix'.
289 'configure' looks for 'PREFIX/share/config.site' if it exists, then
290 'PREFIX/etc/config.site' if it exists. Or, you can set the
291 'CONFIG_SITE' environment variable to the location of the site script.
292 A warning: not all 'configure' scripts look for a site script.
293
294 Defining Variables
295 ==================
296
297 Variables not defined in a site shell script can be set in the
298 environment passed to 'configure'. However, some packages may run
299 configure again during the build, and the customized values of these
300 variables may be lost. In order to avoid this problem, you should set
301 them in the 'configure' command line, using 'VAR=value'. For example:
302
303 ./configure CC=/usr/local2/bin/gcc
304
305 causes the specified 'gcc' to be used as the C compiler (unless it is
306 overridden in the site shell script).
307
308 Unfortunately, this technique does not work for 'CONFIG_SHELL' due to an
309 Autoconf limitation. Until the limitation is lifted, you can use this
310 workaround:
311
312 CONFIG_SHELL=/bin/bash ./configure CONFIG_SHELL=/bin/bash
313
314 'configure' Invocation
315 ======================
316
317 'configure' recognizes the following options to control how it
318 operates.
319
320 '--help'
321 '-h'
322 Print a summary of all of the options to 'configure', and exit.
323
324 '--help=short'
325 '--help=recursive'
326 Print a summary of the options unique to this package's
327 'configure', and exit. The 'short' variant lists options used only
328 in the top level, while the 'recursive' variant lists options also
329 present in any nested packages.
330
331 '--version'
332 '-V'
333 Print the version of Autoconf used to generate the 'configure'
334 script, and exit.
335
336 '--cache-file=FILE'
337 Enable the cache: use and save the results of the tests in FILE,
338 traditionally 'config.cache'. FILE defaults to '/dev/null' to
339 disable caching.
340
341 '--config-cache'
342 '-C'
343 Alias for '--cache-file=config.cache'.
344
345 '--quiet'
346 '--silent'
347 '-q'
348 Do not print messages saying which checks are being made. To
349 suppress all normal output, redirect it to '/dev/null' (any error
350 messages will still be shown).
351
352 '--srcdir=DIR'
353 Look for the package's source code in directory DIR. Usually
354 'configure' can determine that directory automatically.
355
356 '--prefix=DIR'
357 Use DIR as the installation prefix. *note Installation Names:: for
358 more details, including other options available for fine-tuning the
359 installation locations.
360
361 '--no-create'
362 '-n'
363 Run the configure checks, but stop before creating any output
364 files.
365
366 'configure' also accepts some other, not widely useful, options. Run
367 'configure --help' for more details.
0 # Makefile.in generated by automake 1.16.3 from Makefile.am.
1 # @configure_input@
2
3 # Copyright (C) 1994-2020 Free Software Foundation, Inc.
4
5 # This Makefile.in is free software; the Free Software Foundation
6 # gives unlimited permission to copy and/or distribute it,
7 # with or without modifications, as long as this notice is preserved.
8
9 # This program is distributed in the hope that it will be useful,
10 # but WITHOUT ANY WARRANTY, to the extent permitted by law; without
11 # even the implied warranty of MERCHANTABILITY or FITNESS FOR A
12 # PARTICULAR PURPOSE.
13
14 @SET_MAKE@
15 VPATH = @srcdir@
16 am__is_gnu_make = { \
17 if test -z '$(MAKELEVEL)'; then \
18 false; \
19 elif test -n '$(MAKE_HOST)'; then \
20 true; \
21 elif test -n '$(MAKE_VERSION)' && test -n '$(CURDIR)'; then \
22 true; \
23 else \
24 false; \
25 fi; \
26 }
27 am__make_running_with_option = \
28 case $${target_option-} in \
29 ?) ;; \
30 *) echo "am__make_running_with_option: internal error: invalid" \
31 "target option '$${target_option-}' specified" >&2; \
32 exit 1;; \
33 esac; \
34 has_opt=no; \
35 sane_makeflags=$$MAKEFLAGS; \
36 if $(am__is_gnu_make); then \
37 sane_makeflags=$$MFLAGS; \
38 else \
39 case $$MAKEFLAGS in \
40 *\\[\ \ ]*) \
41 bs=\\; \
42 sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \
43 | sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \
44 esac; \
45 fi; \
46 skip_next=no; \
47 strip_trailopt () \
48 { \
49 flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \
50 }; \
51 for flg in $$sane_makeflags; do \
52 test $$skip_next = yes && { skip_next=no; continue; }; \
53 case $$flg in \
54 *=*|--*) continue;; \
55 -*I) strip_trailopt 'I'; skip_next=yes;; \
56 -*I?*) strip_trailopt 'I';; \
57 -*O) strip_trailopt 'O'; skip_next=yes;; \
58 -*O?*) strip_trailopt 'O';; \
59 -*l) strip_trailopt 'l'; skip_next=yes;; \
60 -*l?*) strip_trailopt 'l';; \
61 -[dEDm]) skip_next=yes;; \
62 -[JT]) skip_next=yes;; \
63 esac; \
64 case $$flg in \
65 *$$target_option*) has_opt=yes; break;; \
66 esac; \
67 done; \
68 test $$has_opt = yes
69 am__make_dryrun = (target_option=n; $(am__make_running_with_option))
70 am__make_keepgoing = (target_option=k; $(am__make_running_with_option))
71 pkgdatadir = $(datadir)/@PACKAGE@
72 pkgincludedir = $(includedir)/@PACKAGE@
73 pkglibdir = $(libdir)/@PACKAGE@
74 pkglibexecdir = $(libexecdir)/@PACKAGE@
75 am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
76 install_sh_DATA = $(install_sh) -c -m 644
77 install_sh_PROGRAM = $(install_sh) -c
78 install_sh_SCRIPT = $(install_sh) -c
79 INSTALL_HEADER = $(INSTALL_DATA)
80 transform = $(program_transform_name)
81 NORMAL_INSTALL = :
82 PRE_INSTALL = :
83 POST_INSTALL = :
84 NORMAL_UNINSTALL = :
85 PRE_UNINSTALL = :
86 POST_UNINSTALL = :
87 build_triplet = @build@
88 host_triplet = @host@
89 subdir = .
90 ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
91 am__aclocal_m4_deps = $(top_srcdir)/configure.ac
92 am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
93 $(ACLOCAL_M4)
94 DIST_COMMON = $(srcdir)/Makefile.am $(top_srcdir)/configure \
95 $(am__configure_deps) $(am__DIST_COMMON)
96 am__CONFIG_DISTCLEAN_FILES = config.status config.cache config.log \
97 configure.lineno config.status.lineno
98 mkinstalldirs = $(install_sh) -d
99 CONFIG_HEADER = config.h
100 CONFIG_CLEAN_FILES = faad2.spec
101 CONFIG_CLEAN_VPATH_FILES =
102 AM_V_P = $(am__v_P_@AM_V@)
103 am__v_P_ = $(am__v_P_@AM_DEFAULT_V@)
104 am__v_P_0 = false
105 am__v_P_1 = :
106 AM_V_GEN = $(am__v_GEN_@AM_V@)
107 am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@)
108 am__v_GEN_0 = @echo " GEN " $@;
109 am__v_GEN_1 =
110 AM_V_at = $(am__v_at_@AM_V@)
111 am__v_at_ = $(am__v_at_@AM_DEFAULT_V@)
112 am__v_at_0 = @
113 am__v_at_1 =
114 SOURCES =
115 DIST_SOURCES =
116 RECURSIVE_TARGETS = all-recursive check-recursive cscopelist-recursive \
117 ctags-recursive dvi-recursive html-recursive info-recursive \
118 install-data-recursive install-dvi-recursive \
119 install-exec-recursive install-html-recursive \
120 install-info-recursive install-pdf-recursive \
121 install-ps-recursive install-recursive installcheck-recursive \
122 installdirs-recursive pdf-recursive ps-recursive \
123 tags-recursive uninstall-recursive
124 am__can_run_installinfo = \
125 case $$AM_UPDATE_INFO_DIR in \
126 n|no|NO) false;; \
127 *) (install-info --version) >/dev/null 2>&1;; \
128 esac
129 RECURSIVE_CLEAN_TARGETS = mostlyclean-recursive clean-recursive \
130 distclean-recursive maintainer-clean-recursive
131 am__recursive_targets = \
132 $(RECURSIVE_TARGETS) \
133 $(RECURSIVE_CLEAN_TARGETS) \
134 $(am__extra_recursive_targets)
135 AM_RECURSIVE_TARGETS = $(am__recursive_targets:-recursive=) TAGS CTAGS \
136 cscope distdir distdir-am dist dist-all distcheck
137 am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP) \
138 config.h.in
139 # Read a list of newline-separated strings from the standard input,
140 # and print each of them once, without duplicates. Input order is
141 # *not* preserved.
142 am__uniquify_input = $(AWK) '\
143 BEGIN { nonempty = 0; } \
144 { items[$$0] = 1; nonempty = 1; } \
145 END { if (nonempty) { for (i in items) print i; }; } \
146 '
147 # Make sure the list of sources is unique. This is necessary because,
148 # e.g., the same source file might be shared among _SOURCES variables
149 # for different programs/libraries.
150 am__define_uniq_tagged_files = \
151 list='$(am__tagged_files)'; \
152 unique=`for i in $$list; do \
153 if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
154 done | $(am__uniquify_input)`
155 ETAGS = etags
156 CTAGS = ctags
157 CSCOPE = cscope
158 DIST_SUBDIRS = $(SUBDIRS)
159 am__DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/config.h.in \
160 $(srcdir)/faad2.spec.in AUTHORS COPYING ChangeLog INSTALL NEWS \
161 README TODO compile config.guess config.sub install-sh \
162 ltmain.sh missing
163 DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
164 distdir = $(PACKAGE)-$(VERSION)
165 top_distdir = $(distdir)
166 am__remove_distdir = \
167 if test -d "$(distdir)"; then \
168 find "$(distdir)" -type d ! -perm -200 -exec chmod u+w {} ';' \
169 && rm -rf "$(distdir)" \
170 || { sleep 5 && rm -rf "$(distdir)"; }; \
171 else :; fi
172 am__post_remove_distdir = $(am__remove_distdir)
173 am__relativize = \
174 dir0=`pwd`; \
175 sed_first='s,^\([^/]*\)/.*$$,\1,'; \
176 sed_rest='s,^[^/]*/*,,'; \
177 sed_last='s,^.*/\([^/]*\)$$,\1,'; \
178 sed_butlast='s,/*[^/]*$$,,'; \
179 while test -n "$$dir1"; do \
180 first=`echo "$$dir1" | sed -e "$$sed_first"`; \
181 if test "$$first" != "."; then \
182 if test "$$first" = ".."; then \
183 dir2=`echo "$$dir0" | sed -e "$$sed_last"`/"$$dir2"; \
184 dir0=`echo "$$dir0" | sed -e "$$sed_butlast"`; \
185 else \
186 first2=`echo "$$dir2" | sed -e "$$sed_first"`; \
187 if test "$$first2" = "$$first"; then \
188 dir2=`echo "$$dir2" | sed -e "$$sed_rest"`; \
189 else \
190 dir2="../$$dir2"; \
191 fi; \
192 dir0="$$dir0"/"$$first"; \
193 fi; \
194 fi; \
195 dir1=`echo "$$dir1" | sed -e "$$sed_rest"`; \
196 done; \
197 reldir="$$dir2"
198 DIST_ARCHIVES = $(distdir).tar.gz
199 GZIP_ENV = --best
200 DIST_TARGETS = dist-gzip
201 # Exists only to be overridden by the user if desired.
202 AM_DISTCHECK_DVI_TARGET = dvi
203 distuninstallcheck_listfiles = find . -type f -print
204 am__distuninstallcheck_listfiles = $(distuninstallcheck_listfiles) \
205 | sed 's|^\./|$(prefix)/|' | grep -v '$(infodir)/dir$$'
206 distcleancheck_listfiles = find . -type f -print
207 ACLOCAL = @ACLOCAL@
208 AMTAR = @AMTAR@
209 AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@
210 AR = @AR@
211 AUTOCONF = @AUTOCONF@
212 AUTOHEADER = @AUTOHEADER@
213 AUTOMAKE = @AUTOMAKE@
214 AWK = @AWK@
215 CC = @CC@
216 CCDEPMODE = @CCDEPMODE@
217 CFLAGS = @CFLAGS@
218 CPP = @CPP@
219 CPPFLAGS = @CPPFLAGS@
220 CXX = @CXX@
221 CXXCPP = @CXXCPP@
222 CXXDEPMODE = @CXXDEPMODE@
223 CXXFLAGS = @CXXFLAGS@
224 CYGPATH_W = @CYGPATH_W@
225 DEFS = @DEFS@
226 DEPDIR = @DEPDIR@
227 DLLTOOL = @DLLTOOL@
228 DSYMUTIL = @DSYMUTIL@
229 DUMPBIN = @DUMPBIN@
230 ECHO_C = @ECHO_C@
231 ECHO_N = @ECHO_N@
232 ECHO_T = @ECHO_T@
233 EGREP = @EGREP@
234 EXEEXT = @EXEEXT@
235 FGREP = @FGREP@
236 GREP = @GREP@
237 GTK_CONFIG = @GTK_CONFIG@
238 INSTALL = @INSTALL@
239 INSTALL_DATA = @INSTALL_DATA@
240 INSTALL_PROGRAM = @INSTALL_PROGRAM@
241 INSTALL_SCRIPT = @INSTALL_SCRIPT@
242 INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
243 LD = @LD@
244 LDFLAGS = @LDFLAGS@
245 LIBOBJS = @LIBOBJS@
246 LIBS = @LIBS@
247 LIBTOOL = @LIBTOOL@
248 LIBTOOL_DEPS = @LIBTOOL_DEPS@
249 LIPO = @LIPO@
250 LN_S = @LN_S@
251 LTLIBOBJS = @LTLIBOBJS@
252 LT_SYS_LIBRARY_PATH = @LT_SYS_LIBRARY_PATH@
253 MAKEINFO = @MAKEINFO@
254 MANIFEST_TOOL = @MANIFEST_TOOL@
255 MKDIR_P = @MKDIR_P@
256 MP4FF_LIBS = @MP4FF_LIBS@
257 NM = @NM@
258 NMEDIT = @NMEDIT@
259 OBJDUMP = @OBJDUMP@
260 OBJEXT = @OBJEXT@
261 OTOOL = @OTOOL@
262 OTOOL64 = @OTOOL64@
263 PACKAGE = @PACKAGE@
264 PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
265 PACKAGE_NAME = @PACKAGE_NAME@
266 PACKAGE_STRING = @PACKAGE_STRING@
267 PACKAGE_TARNAME = @PACKAGE_TARNAME@
268 PACKAGE_URL = @PACKAGE_URL@
269 PACKAGE_VERSION = @PACKAGE_VERSION@
270 PATH_SEPARATOR = @PATH_SEPARATOR@
271 RANLIB = @RANLIB@
272 RPMBUILD = @RPMBUILD@
273 SED = @SED@
274 SET_MAKE = @SET_MAKE@
275 SHELL = @SHELL@
276 STRIP = @STRIP@
277 VERSION = @VERSION@
278 XMMS_CONFIG = @XMMS_CONFIG@
279 abs_builddir = @abs_builddir@
280 abs_srcdir = @abs_srcdir@
281 abs_top_builddir = @abs_top_builddir@
282 abs_top_srcdir = @abs_top_srcdir@
283 ac_ct_AR = @ac_ct_AR@
284 ac_ct_CC = @ac_ct_CC@
285 ac_ct_CXX = @ac_ct_CXX@
286 ac_ct_DUMPBIN = @ac_ct_DUMPBIN@
287 am__include = @am__include@
288 am__leading_dot = @am__leading_dot@
289 am__quote = @am__quote@
290 am__tar = @am__tar@
291 am__untar = @am__untar@
292 bindir = @bindir@
293 build = @build@
294 build_alias = @build_alias@
295 build_cpu = @build_cpu@
296 build_os = @build_os@
297 build_vendor = @build_vendor@
298 builddir = @builddir@
299 datadir = @datadir@
300 datarootdir = @datarootdir@
301 docdir = @docdir@
302 dvidir = @dvidir@
303 exec_prefix = @exec_prefix@
304 external_mp4v2 = @external_mp4v2@
305 host = @host@
306 host_alias = @host_alias@
307 host_cpu = @host_cpu@
308 host_os = @host_os@
309 host_vendor = @host_vendor@
310 htmldir = @htmldir@
311 includedir = @includedir@
312 infodir = @infodir@
313 install_sh = @install_sh@
314 libdir = @libdir@
315 libexecdir = @libexecdir@
316 localedir = @localedir@
317 localstatedir = @localstatedir@
318 mandir = @mandir@
319 mkdir_p = @mkdir_p@
320 oldincludedir = @oldincludedir@
321 pdfdir = @pdfdir@
322 prefix = @prefix@
323 program_transform_name = @program_transform_name@
324 psdir = @psdir@
325 runstatedir = @runstatedir@
326 sbindir = @sbindir@
327 sharedstatedir = @sharedstatedir@
328 srcdir = @srcdir@
329 sysconfdir = @sysconfdir@
330 target_alias = @target_alias@
331 top_build_prefix = @top_build_prefix@
332 top_builddir = @top_builddir@
333 top_srcdir = @top_srcdir@
334 SUBDIRS = libfaad frontend plugins
335 EXTRA_DIST = faad2.spec docs/libfaad.3 project utils
336 all: config.h
337 $(MAKE) $(AM_MAKEFLAGS) all-recursive
338
339 .SUFFIXES:
340 am--refresh: Makefile
341 @:
342 $(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps)
343 @for dep in $?; do \
344 case '$(am__configure_deps)' in \
345 *$$dep*) \
346 echo ' cd $(srcdir) && $(AUTOMAKE) --gnu'; \
347 $(am__cd) $(srcdir) && $(AUTOMAKE) --gnu \
348 && exit 0; \
349 exit 1;; \
350 esac; \
351 done; \
352 echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu Makefile'; \
353 $(am__cd) $(top_srcdir) && \
354 $(AUTOMAKE) --gnu Makefile
355 Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
356 @case '$?' in \
357 *config.status*) \
358 echo ' $(SHELL) ./config.status'; \
359 $(SHELL) ./config.status;; \
360 *) \
361 echo ' cd $(top_builddir) && $(SHELL) ./config.status $@ $(am__maybe_remake_depfiles)'; \
362 cd $(top_builddir) && $(SHELL) ./config.status $@ $(am__maybe_remake_depfiles);; \
363 esac;
364
365 $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
366 $(SHELL) ./config.status --recheck
367
368 $(top_srcdir)/configure: $(am__configure_deps)
369 $(am__cd) $(srcdir) && $(AUTOCONF)
370 $(ACLOCAL_M4): $(am__aclocal_m4_deps)
371 $(am__cd) $(srcdir) && $(ACLOCAL) $(ACLOCAL_AMFLAGS)
372 $(am__aclocal_m4_deps):
373
374 config.h: stamp-h1
375 @test -f $@ || rm -f stamp-h1
376 @test -f $@ || $(MAKE) $(AM_MAKEFLAGS) stamp-h1
377
378 stamp-h1: $(srcdir)/config.h.in $(top_builddir)/config.status
379 @rm -f stamp-h1
380 cd $(top_builddir) && $(SHELL) ./config.status config.h
381 $(srcdir)/config.h.in: $(am__configure_deps)
382 ($(am__cd) $(top_srcdir) && $(AUTOHEADER))
383 rm -f stamp-h1
384 touch $@
385
386 distclean-hdr:
387 -rm -f config.h stamp-h1
388 faad2.spec: $(top_builddir)/config.status $(srcdir)/faad2.spec.in
389 cd $(top_builddir) && $(SHELL) ./config.status $@
390
391 mostlyclean-libtool:
392 -rm -f *.lo
393
394 clean-libtool:
395 -rm -rf .libs _libs
396
397 distclean-libtool:
398 -rm -f libtool config.lt
399
400 # This directory's subdirectories are mostly independent; you can cd
401 # into them and run 'make' without going through this Makefile.
402 # To change the values of 'make' variables: instead of editing Makefiles,
403 # (1) if the variable is set in 'config.status', edit 'config.status'
404 # (which will cause the Makefiles to be regenerated when you run 'make');
405 # (2) otherwise, pass the desired values on the 'make' command line.
406 $(am__recursive_targets):
407 @fail=; \
408 if $(am__make_keepgoing); then \
409 failcom='fail=yes'; \
410 else \
411 failcom='exit 1'; \
412 fi; \
413 dot_seen=no; \
414 target=`echo $@ | sed s/-recursive//`; \
415 case "$@" in \
416 distclean-* | maintainer-clean-*) list='$(DIST_SUBDIRS)' ;; \
417 *) list='$(SUBDIRS)' ;; \
418 esac; \
419 for subdir in $$list; do \
420 echo "Making $$target in $$subdir"; \
421 if test "$$subdir" = "."; then \
422 dot_seen=yes; \
423 local_target="$$target-am"; \
424 else \
425 local_target="$$target"; \
426 fi; \
427 ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \
428 || eval $$failcom; \
429 done; \
430 if test "$$dot_seen" = "no"; then \
431 $(MAKE) $(AM_MAKEFLAGS) "$$target-am" || exit 1; \
432 fi; test -z "$$fail"
433
434 ID: $(am__tagged_files)
435 $(am__define_uniq_tagged_files); mkid -fID $$unique
436 tags: tags-recursive
437 TAGS: tags
438
439 tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files)
440 set x; \
441 here=`pwd`; \
442 if ($(ETAGS) --etags-include --version) >/dev/null 2>&1; then \
443 include_option=--etags-include; \
444 empty_fix=.; \
445 else \
446 include_option=--include; \
447 empty_fix=; \
448 fi; \
449 list='$(SUBDIRS)'; for subdir in $$list; do \
450 if test "$$subdir" = .; then :; else \
451 test ! -f $$subdir/TAGS || \
452 set "$$@" "$$include_option=$$here/$$subdir/TAGS"; \
453 fi; \
454 done; \
455 $(am__define_uniq_tagged_files); \
456 shift; \
457 if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \
458 test -n "$$unique" || unique=$$empty_fix; \
459 if test $$# -gt 0; then \
460 $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
461 "$$@" $$unique; \
462 else \
463 $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
464 $$unique; \
465 fi; \
466 fi
467 ctags: ctags-recursive
468
469 CTAGS: ctags
470 ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files)
471 $(am__define_uniq_tagged_files); \
472 test -z "$(CTAGS_ARGS)$$unique" \
473 || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \
474 $$unique
475
476 GTAGS:
477 here=`$(am__cd) $(top_builddir) && pwd` \
478 && $(am__cd) $(top_srcdir) \
479 && gtags -i $(GTAGS_ARGS) "$$here"
480 cscope: cscope.files
481 test ! -s cscope.files \
482 || $(CSCOPE) -b -q $(AM_CSCOPEFLAGS) $(CSCOPEFLAGS) -i cscope.files $(CSCOPE_ARGS)
483 clean-cscope:
484 -rm -f cscope.files
485 cscope.files: clean-cscope cscopelist
486 cscopelist: cscopelist-recursive
487
488 cscopelist-am: $(am__tagged_files)
489 list='$(am__tagged_files)'; \
490 case "$(srcdir)" in \
491 [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \
492 *) sdir=$(subdir)/$(srcdir) ;; \
493 esac; \
494 for i in $$list; do \
495 if test -f "$$i"; then \
496 echo "$(subdir)/$$i"; \
497 else \
498 echo "$$sdir/$$i"; \
499 fi; \
500 done >> $(top_builddir)/cscope.files
501
502 distclean-tags:
503 -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
504 -rm -f cscope.out cscope.in.out cscope.po.out cscope.files
505
506 distdir: $(BUILT_SOURCES)
507 $(MAKE) $(AM_MAKEFLAGS) distdir-am
508
509 distdir-am: $(DISTFILES)
510 $(am__remove_distdir)
511 test -d "$(distdir)" || mkdir "$(distdir)"
512 @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
513 topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
514 list='$(DISTFILES)'; \
515 dist_files=`for file in $$list; do echo $$file; done | \
516 sed -e "s|^$$srcdirstrip/||;t" \
517 -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \
518 case $$dist_files in \
519 */*) $(MKDIR_P) `echo "$$dist_files" | \
520 sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \
521 sort -u` ;; \
522 esac; \
523 for file in $$dist_files; do \
524 if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
525 if test -d $$d/$$file; then \
526 dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
527 if test -d "$(distdir)/$$file"; then \
528 find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
529 fi; \
530 if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
531 cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \
532 find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
533 fi; \
534 cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \
535 else \
536 test -f "$(distdir)/$$file" \
537 || cp -p $$d/$$file "$(distdir)/$$file" \
538 || exit 1; \
539 fi; \
540 done
541 @list='$(DIST_SUBDIRS)'; for subdir in $$list; do \
542 if test "$$subdir" = .; then :; else \
543 $(am__make_dryrun) \
544 || test -d "$(distdir)/$$subdir" \
545 || $(MKDIR_P) "$(distdir)/$$subdir" \
546 || exit 1; \
547 dir1=$$subdir; dir2="$(distdir)/$$subdir"; \
548 $(am__relativize); \
549 new_distdir=$$reldir; \
550 dir1=$$subdir; dir2="$(top_distdir)"; \
551 $(am__relativize); \
552 new_top_distdir=$$reldir; \
553 echo " (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) top_distdir="$$new_top_distdir" distdir="$$new_distdir" \\"; \
554 echo " am__remove_distdir=: am__skip_length_check=: am__skip_mode_fix=: distdir)"; \
555 ($(am__cd) $$subdir && \
556 $(MAKE) $(AM_MAKEFLAGS) \
557 top_distdir="$$new_top_distdir" \
558 distdir="$$new_distdir" \
559 am__remove_distdir=: \
560 am__skip_length_check=: \
561 am__skip_mode_fix=: \
562 distdir) \
563 || exit 1; \
564 fi; \
565 done
566 -test -n "$(am__skip_mode_fix)" \
567 || find "$(distdir)" -type d ! -perm -755 \
568 -exec chmod u+rwx,go+rx {} \; -o \
569 ! -type d ! -perm -444 -links 1 -exec chmod a+r {} \; -o \
570 ! -type d ! -perm -400 -exec chmod a+r {} \; -o \
571 ! -type d ! -perm -444 -exec $(install_sh) -c -m a+r {} {} \; \
572 || chmod -R a+r "$(distdir)"
573 dist-gzip: distdir
574 tardir=$(distdir) && $(am__tar) | eval GZIP= gzip $(GZIP_ENV) -c >$(distdir).tar.gz
575 $(am__post_remove_distdir)
576
577 dist-bzip2: distdir
578 tardir=$(distdir) && $(am__tar) | BZIP2=$${BZIP2--9} bzip2 -c >$(distdir).tar.bz2
579 $(am__post_remove_distdir)
580
581 dist-lzip: distdir
582 tardir=$(distdir) && $(am__tar) | lzip -c $${LZIP_OPT--9} >$(distdir).tar.lz
583 $(am__post_remove_distdir)
584
585 dist-xz: distdir
586 tardir=$(distdir) && $(am__tar) | XZ_OPT=$${XZ_OPT--e} xz -c >$(distdir).tar.xz
587 $(am__post_remove_distdir)
588
589 dist-zstd: distdir
590 tardir=$(distdir) && $(am__tar) | zstd -c $${ZSTD_CLEVEL-$${ZSTD_OPT--19}} >$(distdir).tar.zst
591 $(am__post_remove_distdir)
592
593 dist-tarZ: distdir
594 @echo WARNING: "Support for distribution archives compressed with" \
595 "legacy program 'compress' is deprecated." >&2
596 @echo WARNING: "It will be removed altogether in Automake 2.0" >&2
597 tardir=$(distdir) && $(am__tar) | compress -c >$(distdir).tar.Z
598 $(am__post_remove_distdir)
599
600 dist-shar: distdir
601 @echo WARNING: "Support for shar distribution archives is" \
602 "deprecated." >&2
603 @echo WARNING: "It will be removed altogether in Automake 2.0" >&2
604 shar $(distdir) | eval GZIP= gzip $(GZIP_ENV) -c >$(distdir).shar.gz
605 $(am__post_remove_distdir)
606
607 dist-zip: distdir
608 -rm -f $(distdir).zip
609 zip -rq $(distdir).zip $(distdir)
610 $(am__post_remove_distdir)
611
612 dist dist-all:
613 $(MAKE) $(AM_MAKEFLAGS) $(DIST_TARGETS) am__post_remove_distdir='@:'
614 $(am__post_remove_distdir)
615
616 # This target untars the dist file and tries a VPATH configuration. Then
617 # it guarantees that the distribution is self-contained by making another
618 # tarfile.
619 distcheck: dist
620 case '$(DIST_ARCHIVES)' in \
621 *.tar.gz*) \
622 eval GZIP= gzip $(GZIP_ENV) -dc $(distdir).tar.gz | $(am__untar) ;;\
623 *.tar.bz2*) \
624 bzip2 -dc $(distdir).tar.bz2 | $(am__untar) ;;\
625 *.tar.lz*) \
626 lzip -dc $(distdir).tar.lz | $(am__untar) ;;\
627 *.tar.xz*) \
628 xz -dc $(distdir).tar.xz | $(am__untar) ;;\
629 *.tar.Z*) \
630 uncompress -c $(distdir).tar.Z | $(am__untar) ;;\
631 *.shar.gz*) \
632 eval GZIP= gzip $(GZIP_ENV) -dc $(distdir).shar.gz | unshar ;;\
633 *.zip*) \
634 unzip $(distdir).zip ;;\
635 *.tar.zst*) \
636 zstd -dc $(distdir).tar.zst | $(am__untar) ;;\
637 esac
638 chmod -R a-w $(distdir)
639 chmod u+w $(distdir)
640 mkdir $(distdir)/_build $(distdir)/_build/sub $(distdir)/_inst
641 chmod a-w $(distdir)
642 test -d $(distdir)/_build || exit 0; \
643 dc_install_base=`$(am__cd) $(distdir)/_inst && pwd | sed -e 's,^[^:\\/]:[\\/],/,'` \
644 && dc_destdir="$${TMPDIR-/tmp}/am-dc-$$$$/" \
645 && am__cwd=`pwd` \
646 && $(am__cd) $(distdir)/_build/sub \
647 && ../../configure \
648 $(AM_DISTCHECK_CONFIGURE_FLAGS) \
649 $(DISTCHECK_CONFIGURE_FLAGS) \
650 --srcdir=../.. --prefix="$$dc_install_base" \
651 && $(MAKE) $(AM_MAKEFLAGS) \
652 && $(MAKE) $(AM_MAKEFLAGS) $(AM_DISTCHECK_DVI_TARGET) \
653 && $(MAKE) $(AM_MAKEFLAGS) check \
654 && $(MAKE) $(AM_MAKEFLAGS) install \
655 && $(MAKE) $(AM_MAKEFLAGS) installcheck \
656 && $(MAKE) $(AM_MAKEFLAGS) uninstall \
657 && $(MAKE) $(AM_MAKEFLAGS) distuninstallcheck_dir="$$dc_install_base" \
658 distuninstallcheck \
659 && chmod -R a-w "$$dc_install_base" \
660 && ({ \
661 (cd ../.. && umask 077 && mkdir "$$dc_destdir") \
662 && $(MAKE) $(AM_MAKEFLAGS) DESTDIR="$$dc_destdir" install \
663 && $(MAKE) $(AM_MAKEFLAGS) DESTDIR="$$dc_destdir" uninstall \
664 && $(MAKE) $(AM_MAKEFLAGS) DESTDIR="$$dc_destdir" \
665 distuninstallcheck_dir="$$dc_destdir" distuninstallcheck; \
666 } || { rm -rf "$$dc_destdir"; exit 1; }) \
667 && rm -rf "$$dc_destdir" \
668 && $(MAKE) $(AM_MAKEFLAGS) dist \
669 && rm -rf $(DIST_ARCHIVES) \
670 && $(MAKE) $(AM_MAKEFLAGS) distcleancheck \
671 && cd "$$am__cwd" \
672 || exit 1
673 $(am__post_remove_distdir)
674 @(echo "$(distdir) archives ready for distribution: "; \
675 list='$(DIST_ARCHIVES)'; for i in $$list; do echo $$i; done) | \
676 sed -e 1h -e 1s/./=/g -e 1p -e 1x -e '$$p' -e '$$x'
677 distuninstallcheck:
678 @test -n '$(distuninstallcheck_dir)' || { \
679 echo 'ERROR: trying to run $@ with an empty' \
680 '$$(distuninstallcheck_dir)' >&2; \
681 exit 1; \
682 }; \
683 $(am__cd) '$(distuninstallcheck_dir)' || { \
684 echo 'ERROR: cannot chdir into $(distuninstallcheck_dir)' >&2; \
685 exit 1; \
686 }; \
687 test `$(am__distuninstallcheck_listfiles) | wc -l` -eq 0 \
688 || { echo "ERROR: files left after uninstall:" ; \
689 if test -n "$(DESTDIR)"; then \
690 echo " (check DESTDIR support)"; \
691 fi ; \
692 $(distuninstallcheck_listfiles) ; \
693 exit 1; } >&2
694 distcleancheck: distclean
695 @if test '$(srcdir)' = . ; then \
696 echo "ERROR: distcleancheck can only run from a VPATH build" ; \
697 exit 1 ; \
698 fi
699 @test `$(distcleancheck_listfiles) | wc -l` -eq 0 \
700 || { echo "ERROR: files left in build directory after distclean:" ; \
701 $(distcleancheck_listfiles) ; \
702 exit 1; } >&2
703 check-am: all-am
704 check: check-recursive
705 all-am: Makefile config.h
706 installdirs: installdirs-recursive
707 installdirs-am:
708 install: install-recursive
709 install-exec: install-exec-recursive
710 install-data: install-data-recursive
711 uninstall: uninstall-recursive
712
713 install-am: all-am
714 @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
715
716 installcheck: installcheck-recursive
717 install-strip:
718 if test -z '$(STRIP)'; then \
719 $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
720 install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
721 install; \
722 else \
723 $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
724 install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
725 "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \
726 fi
727 mostlyclean-generic:
728
729 clean-generic:
730
731 distclean-generic:
732 -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
733 -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES)
734
735 maintainer-clean-generic:
736 @echo "This command is intended for maintainers to use"
737 @echo "it deletes files that may require special tools to rebuild."
738 clean: clean-recursive
739
740 clean-am: clean-generic clean-libtool mostlyclean-am
741
742 distclean: distclean-recursive
743 -rm -f $(am__CONFIG_DISTCLEAN_FILES)
744 -rm -f Makefile
745 distclean-am: clean-am distclean-generic distclean-hdr \
746 distclean-libtool distclean-tags
747
748 dvi: dvi-recursive
749
750 dvi-am:
751
752 html: html-recursive
753
754 html-am:
755
756 info: info-recursive
757
758 info-am:
759
760 install-data-am:
761
762 install-dvi: install-dvi-recursive
763
764 install-dvi-am:
765
766 install-exec-am:
767
768 install-html: install-html-recursive
769
770 install-html-am:
771
772 install-info: install-info-recursive
773
774 install-info-am:
775
776 install-man:
777
778 install-pdf: install-pdf-recursive
779
780 install-pdf-am:
781
782 install-ps: install-ps-recursive
783
784 install-ps-am:
785
786 installcheck-am:
787
788 maintainer-clean: maintainer-clean-recursive
789 -rm -f $(am__CONFIG_DISTCLEAN_FILES)
790 -rm -rf $(top_srcdir)/autom4te.cache
791 -rm -f Makefile
792 maintainer-clean-am: distclean-am maintainer-clean-generic
793
794 mostlyclean: mostlyclean-recursive
795
796 mostlyclean-am: mostlyclean-generic mostlyclean-libtool
797
798 pdf: pdf-recursive
799
800 pdf-am:
801
802 ps: ps-recursive
803
804 ps-am:
805
806 uninstall-am:
807
808 .MAKE: $(am__recursive_targets) all install-am install-strip
809
810 .PHONY: $(am__recursive_targets) CTAGS GTAGS TAGS all all-am \
811 am--refresh check check-am clean clean-cscope clean-generic \
812 clean-libtool cscope cscopelist-am ctags ctags-am dist \
813 dist-all dist-bzip2 dist-gzip dist-lzip dist-shar dist-tarZ \
814 dist-xz dist-zip dist-zstd distcheck distclean \
815 distclean-generic distclean-hdr distclean-libtool \
816 distclean-tags distcleancheck distdir distuninstallcheck dvi \
817 dvi-am html html-am info info-am install install-am \
818 install-data install-data-am install-dvi install-dvi-am \
819 install-exec install-exec-am install-html install-html-am \
820 install-info install-info-am install-man install-pdf \
821 install-pdf-am install-ps install-ps-am install-strip \
822 installcheck installcheck-am installdirs installdirs-am \
823 maintainer-clean maintainer-clean-generic mostlyclean \
824 mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \
825 tags tags-am uninstall uninstall-am
826
827 .PRECIOUS: Makefile
828
829
830 rpm: Makefile
831 make dist
832 $(RPMBUILD) -ta $(PACKAGE)-$(VERSION).tar.gz
833 rm $(PACKAGE)-$(VERSION).tar.gz
834
835 # Tell versions [3.59,3.63) of GNU make to not export all variables.
836 # Otherwise a system limit (for SysV at least) may be exceeded.
837 .NOEXPORT:
00
11 Freeware Advanced Audio (AAC) Decoder including SBR decoding
2 http://www.audiocoding.com/
32
43 FAAD2 is a HE, LC, MAIN and LTP profile, MPEG2 and MPEG-4 AAC decoder.
54 FAAD2 includes code for SBR (HE AAC) decoding.
+0
-15
README.linux less more
0 To compile under Linux.
1 ----------------------
2 just run :
3
4 ./configure --with-mp4v2
5 make
6 sudo make install
7
8
9 about the xmms plugin.
10 ---------------------
11 The xmms plugin need to be build after the install of the faad project.
12 so after you have installed correctly faad (--with-xmms options) you need
13 to configure and build the xmms plugin part in the plugins/xmms directory.
14 Read the README and INSTALL files into the xmms directory.
+0
-214
aacDECdrop/Script.rc less more
0 // Microsoft Visual C++ generated resource script.
1 //
2 #include "resource.h"
3
4 #define APSTUDIO_READONLY_SYMBOLS
5 /////////////////////////////////////////////////////////////////////////////
6 //
7 // Generated from the TEXTINCLUDE 2 resource.
8 //
9 #include "winres.h"
10
11 /////////////////////////////////////////////////////////////////////////////
12 #undef APSTUDIO_READONLY_SYMBOLS
13
14 /////////////////////////////////////////////////////////////////////////////
15 // English (U.S.) resources
16
17 #if !defined(AFX_RESOURCE_DLL) || defined(AFX_TARG_ENU)
18 #ifdef _WIN32
19 LANGUAGE LANG_NEUTRAL, SUBLANG_NEUTRAL
20 #pragma code_page(1252)
21 #endif //_WIN32
22
23 /////////////////////////////////////////////////////////////////////////////
24 //
25 // Bitmap
26 //
27
28 IDB_TF01 BITMAP "resource/AAC01.bmp"
29 IDB_TF02 BITMAP "resource/AAC02.bmp"
30 IDB_TF03 BITMAP "resource/AAC03.bmp"
31 IDB_TF04 BITMAP "resource/AAC04.bmp"
32 IDB_TF05 BITMAP "resource/AAC05.bmp"
33 IDB_TF06 BITMAP "resource/AAC06.bmp"
34 IDB_TF07 BITMAP "resource/AAC07.bmp"
35 IDB_TF08 BITMAP "resource/AAC08.bmp"
36
37 #ifdef APSTUDIO_INVOKED
38 /////////////////////////////////////////////////////////////////////////////
39 //
40 // TEXTINCLUDE
41 //
42
43 1 TEXTINCLUDE
44 BEGIN
45 "resource.h\0"
46 END
47
48 2 TEXTINCLUDE
49 BEGIN
50 "#include ""winres.h""\r\n"
51 "\0"
52 END
53
54 3 TEXTINCLUDE
55 BEGIN
56 "\r\n"
57 "\0"
58 END
59
60 #endif // APSTUDIO_INVOKED
61
62
63 /////////////////////////////////////////////////////////////////////////////
64 //
65 // Menu
66 //
67
68 IDR_MENU1 MENU
69 BEGIN
70 POPUP "Menu"
71 BEGIN
72 MENUITEM "&Decoder Options", IDM_VOLUME
73 MENUITEM "&Stop Decoding", IDM_STOP_DEC
74 MENUITEM "&About", IDM_ABOUT
75 MENUITEM SEPARATOR
76 MENUITEM "&Errors to Log File", IDM_LOGERR
77 MENUITEM "&Always on Top", IDM_ONTOP
78 MENUITEM SEPARATOR
79 MENUITEM "E&xit\tAlt+F4", IDM_QUIT
80 END
81 MENUITEM SEPARATOR
82 END
83
84
85 /////////////////////////////////////////////////////////////////////////////
86 //
87 // Icon
88 //
89
90 // Icon with lowest ID value placed first to ensure application icon
91 // remains consistent on all systems.
92 IDI_ICON1 ICON "resource/AAC01.ico"
93
94 /////////////////////////////////////////////////////////////////////////////
95 //
96 // Dialog
97 //
98
99 IDD_VOLUME DIALOGEX 0, 0, 255, 257
100 STYLE DS_SETFONT | DS_MODALFRAME | DS_CENTER | WS_POPUP | WS_CAPTION |
101 WS_SYSMENU
102 CAPTION "Decoder Options V1.2"
103 FONT 8, "MS Sans Serif", 0, 0, 0x0
104 BEGIN
105 GROUPBOX "Decoding Settings",IDC_STATIC,7,7,241,23
106 CONTROL "Playback",IDC_PLAYBACK,"Button",BS_AUTORADIOBUTTON |
107 WS_GROUP,15,17,55,10
108 CONTROL "Decode to File",IDC_DECODE,"Button",BS_AUTORADIOBUTTON,
109 125,17,65,10
110 GROUPBOX "Output Format Settings",IDC_STATIC,7,31,241,50
111 CONTROL "Microsoft WAV",IDC_WAV,"Button",BS_AUTORADIOBUTTON |
112 WS_GROUP,15,45,65,10
113 CONTROL "Apple/SGI AIFF",IDC_AIFF,"Button",BS_AUTORADIOBUTTON |
114 WS_DISABLED,125,45,65,10
115 CONTROL "Sun/NeXT AU",IDC_SUNAU,"Button",BS_AUTORADIOBUTTON |
116 WS_DISABLED,15,60,65,10
117 CONTROL "DEC AU",IDC_DECAU,"Button",BS_AUTORADIOBUTTON |
118 WS_DISABLED,125,60,65,10
119 GROUPBOX "Output Sample Format Settings",IDC_STATIC,7,82,241,91
120 CONTROL "16 bit PCM",IDC_16BIT,"Button",BS_AUTORADIOBUTTON |
121 WS_GROUP,15,96,65,10
122 CONTROL "24 bit PCM",IDC_24BIT,"Button",BS_AUTORADIOBUTTON,125,
123 96,65,10
124 CONTROL "32 bit PCM",IDC_32BIT,"Button",BS_AUTORADIOBUTTON,15,
125 111,65,10
126 CONTROL "32 bit floats",IDC_FLOATS,"Button",BS_AUTORADIOBUTTON,
127 125,111,65,10
128 CONTROL "16 bit PCM - Dithered",IDC_16BIT_DITHER,"Button",
129 BS_AUTORADIOBUTTON,15,126,83,10
130 CONTROL "16 bit PCM - Dithered with",IDC_16BIT_L_SHAPE,"Button",
131 BS_AUTORADIOBUTTON,125,126,98,10
132 CONTROL "16 bit PCM - Dithered with",IDC_16BIT_M_SHAPE,"Button",
133 BS_AUTORADIOBUTTON,15,146,98,10
134 CONTROL "16 bit PCM - Dithered with",IDC_16BIT_H_SHAPE,"Button",
135 BS_AUTORADIOBUTTON,125,146,98,10
136 LTEXT "LIGHT Noise Shaping",IDC_STATIC,138,136,70,8
137 LTEXT "HEAVY Noise Shaping",IDC_STATIC,138,156,73,8
138 LTEXT "MEDIUM Noise Shaping",IDC_STATIC,28,156,78,8
139 GROUPBOX "Object Type Settings",IDC_STATIC,7,174,241,50
140 CONTROL "Main",IDC_MAIN,"Button",BS_AUTORADIOBUTTON | WS_GROUP,
141 15,188,65,10
142 CONTROL "Low Complexity",IDC_LC,"Button",BS_AUTORADIOBUTTON,125,
143 188,65,10
144 CONTROL "Long Term Prediction",IDC_LTP,"Button",
145 BS_AUTORADIOBUTTON,15,203,85,10
146 CONTROL "Low Delay",IDC_LD,"Button",BS_AUTORADIOBUTTON,125,203,
147 65,10
148 DEFPUSHBUTTON "Accept",IDC_BUTTON1,102,233,50,16
149 END
150
151 IDD_ABOUT DIALOGEX 0, 0, 255, 194
152 STYLE DS_SETFONT | DS_MODALFRAME | DS_CENTER | WS_POPUP | WS_CAPTION |
153 WS_SYSMENU
154 CAPTION "About aacDECdrop V1.22"
155 FONT 8, "MS Sans Serif", 0, 0, 0x0
156 BEGIN
157 GROUPBOX "",IDC_STATIC,7,5,241,157
158 CTEXT "A decoder to decode/playback aac/Mpeg4 files.",
159 IDC_STATIC,70,13,155,8
160 CTEXT "Copyright 2002 John Edwards.",IDC_STATIC,70,30,97,8
161 CTEXT "Utilises standard libfaad2 from Menno Bakker.",
162 IDC_STATIC,70,46,145,8
163 LTEXT "This program is free software; you can redistribute it and/or modify it",
164 IDC_STATIC,13,62,212,8
165 LTEXT "under the terms of the GNU Public Licence as published by the Free",
166 IDC_STATIC,13,72,215,8
167 LTEXT "Software Foundation; either version 2 of the Licence, or (at your option)",
168 IDC_STATIC,13,82,224,8
169 LTEXT "any later version.",IDC_STATIC,13,92,54,8
170 LTEXT "This program is distributed in the hope that it will be useful, but",
171 IDC_STATIC,13,112,195,8
172 LTEXT "WITHOUT ANY WARRANTY; without even the implied warranty of",
173 IDC_STATIC,13,122,213,8
174 LTEXT "MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.",
175 IDC_STATIC,13,132,218,8
176 LTEXT "See the GNU General Public Licence for more details.",
177 IDC_STATIC,13,142,170,8
178 DEFPUSHBUTTON "OK",IDC_BUTTON6,102,171,50,16
179 CONTROL 112,IDC_STATIC,"Static",SS_BITMAP | SS_SUNKEN,12,13,43,
180 40
181 END
182
183
184 /////////////////////////////////////////////////////////////////////////////
185 //
186 // DESIGNINFO
187 //
188
189 #ifdef APSTUDIO_INVOKED
190 GUIDELINES DESIGNINFO
191 BEGIN
192 IDD_VOLUME, DIALOG
193 BEGIN
194 BOTTOMMARGIN, 256
195 END
196 END
197 #endif // APSTUDIO_INVOKED
198
199 #endif // English (U.S.) resources
200 /////////////////////////////////////////////////////////////////////////////
201
202
203
204 #ifndef APSTUDIO_INVOKED
205 /////////////////////////////////////////////////////////////////////////////
206 //
207 // Generated from the TEXTINCLUDE 3 resource.
208 //
209
210
211 /////////////////////////////////////////////////////////////////////////////
212 #endif // not APSTUDIO_INVOKED
213
+0
-33
aacDECdrop/aacDECdrop/aacDECdrop.sln less more
0 Microsoft Visual Studio Solution File, Format Version 9.00
1 # Visual C++ Express 2005
2 Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "aacDECdrop", "aacDECdrop.vcproj", "{C23A88D7-4997-4026-BBDB-5B0B2B22FDFF}"
3 ProjectSection(ProjectDependencies) = postProject
4 {F470BB4A-7675-4D6A-B310-41F33AC6F987} = {F470BB4A-7675-4D6A-B310-41F33AC6F987}
5 {BC3EFE27-9015-4C9C-AD3C-72B3B7ED2114} = {BC3EFE27-9015-4C9C-AD3C-72B3B7ED2114}
6 EndProjectSection
7 EndProject
8 Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "libfaad", "..\..\libfaad\libfaad.vcproj", "{BC3EFE27-9015-4C9C-AD3C-72B3B7ED2114}"
9 EndProject
10 Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "mp4ff", "..\..\common\mp4ff\mp4ff.vcproj", "{F470BB4A-7675-4D6A-B310-41F33AC6F987}"
11 EndProject
12 Global
13 GlobalSection(SolutionConfigurationPlatforms) = preSolution
14 Debug|Win32 = Debug|Win32
15 Release|Win32 = Release|Win32
16 EndGlobalSection
17 GlobalSection(ProjectConfigurationPlatforms) = postSolution
18 {C23A88D7-4997-4026-BBDB-5B0B2B22FDFF}.Debug|Win32.ActiveCfg = Debug|Win32
19 {C23A88D7-4997-4026-BBDB-5B0B2B22FDFF}.Debug|Win32.Build.0 = Debug|Win32
20 {C23A88D7-4997-4026-BBDB-5B0B2B22FDFF}.Release|Win32.ActiveCfg = Release|Win32
21 {C23A88D7-4997-4026-BBDB-5B0B2B22FDFF}.Release|Win32.Build.0 = Release|Win32
22 {BC3EFE27-9015-4C9C-AD3C-72B3B7ED2114}.Debug|Win32.ActiveCfg = Debug|Win32
23 {BC3EFE27-9015-4C9C-AD3C-72B3B7ED2114}.Release|Win32.ActiveCfg = Release|Win32
24 {F470BB4A-7675-4D6A-B310-41F33AC6F987}.Debug|Win32.ActiveCfg = Debug|Win32
25 {F470BB4A-7675-4D6A-B310-41F33AC6F987}.Debug|Win32.Build.0 = Debug|Win32
26 {F470BB4A-7675-4D6A-B310-41F33AC6F987}.Release|Win32.ActiveCfg = Release|Win32
27 {F470BB4A-7675-4D6A-B310-41F33AC6F987}.Release|Win32.Build.0 = Release|Win32
28 EndGlobalSection
29 GlobalSection(SolutionProperties) = preSolution
30 HideSolutionNode = FALSE
31 EndGlobalSection
32 EndGlobal
+0
-335
aacDECdrop/aacDECdrop/aacDECdrop.vcproj less more
0 <?xml version="1.0" encoding="Windows-1252"?>
1 <VisualStudioProject
2 ProjectType="Visual C++"
3 Version="8,00"
4 Name="aacDECdrop"
5 ProjectGUID="{C23A88D7-4997-4026-BBDB-5B0B2B22FDFF}"
6 RootNamespace="aacDECdrop"
7 >
8 <Platforms>
9 <Platform
10 Name="Win32"
11 />
12 </Platforms>
13 <ToolFiles>
14 </ToolFiles>
15 <Configurations>
16 <Configuration
17 Name="Release|Win32"
18 OutputDirectory=".\Release"
19 IntermediateDirectory=".\Release"
20 ConfigurationType="1"
21 InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC71.vsprops"
22 UseOfMFC="0"
23 ATLMinimizesCRunTimeLibraryUsage="false"
24 CharacterSet="2"
25 >
26 <Tool
27 Name="VCPreBuildEventTool"
28 />
29 <Tool
30 Name="VCCustomBuildTool"
31 />
32 <Tool
33 Name="VCXMLDataGeneratorTool"
34 />
35 <Tool
36 Name="VCWebServiceProxyGeneratorTool"
37 />
38 <Tool
39 Name="VCMIDLTool"
40 PreprocessorDefinitions="NDEBUG"
41 MkTypLibCompatible="true"
42 SuppressStartupBanner="true"
43 TargetEnvironment="1"
44 TypeLibraryName=".\Release/aacDECdrop.tlb"
45 />
46 <Tool
47 Name="VCCLCompilerTool"
48 Optimization="2"
49 InlineFunctionExpansion="1"
50 EnableIntrinsicFunctions="true"
51 FavorSizeOrSpeed="1"
52 AdditionalIncludeDirectories="..\..\include;..\..\common\mp4ff"
53 PreprocessorDefinitions="WIN32,NDEBUG,_WINDOWS"
54 StringPooling="true"
55 RuntimeLibrary="2"
56 UsePrecompiledHeader="0"
57 PrecompiledHeaderFile=".\Release/aacDECdrop.pch"
58 AssemblerListingLocation=".\Release/"
59 ObjectFile=".\Release/"
60 ProgramDataBaseFileName=".\Release/"
61 WarningLevel="3"
62 SuppressStartupBanner="true"
63 CompileAs="0"
64 />
65 <Tool
66 Name="VCManagedResourceCompilerTool"
67 />
68 <Tool
69 Name="VCResourceCompilerTool"
70 PreprocessorDefinitions="NDEBUG"
71 Culture="2057"
72 />
73 <Tool
74 Name="VCPreLinkEventTool"
75 />
76 <Tool
77 Name="VCLinkerTool"
78 AdditionalOptions="/MACHINE:I386"
79 AdditionalDependencies="advapi32.lib shell32.lib gdi32.lib odbc32.lib odbccp32.lib winmm.lib ws2_32.lib user32.lib"
80 OutputFile=".\Release/aacDECdrop.exe"
81 LinkIncremental="1"
82 SuppressStartupBanner="true"
83 IgnoreDefaultLibraryNames=""
84 ProgramDatabaseFile=".\Release/aacDECdrop.pdb"
85 SubSystem="2"
86 />
87 <Tool
88 Name="VCALinkTool"
89 />
90 <Tool
91 Name="VCManifestTool"
92 />
93 <Tool
94 Name="VCXDCMakeTool"
95 />
96 <Tool
97 Name="VCBscMakeTool"
98 />
99 <Tool
100 Name="VCFxCopTool"
101 />
102 <Tool
103 Name="VCAppVerifierTool"
104 />
105 <Tool
106 Name="VCWebDeploymentTool"
107 />
108 <Tool
109 Name="VCPostBuildEventTool"
110 Description="Compressing using UPX..."
111 CommandLine="upx --best .\release\aacDECdrop.exe"
112 />
113 </Configuration>
114 <Configuration
115 Name="Debug|Win32"
116 OutputDirectory=".\Debug"
117 IntermediateDirectory=".\Debug"
118 ConfigurationType="1"
119 InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC71.vsprops"
120 UseOfMFC="0"
121 ATLMinimizesCRunTimeLibraryUsage="false"
122 CharacterSet="2"
123 >
124 <Tool
125 Name="VCPreBuildEventTool"
126 />
127 <Tool
128 Name="VCCustomBuildTool"
129 />
130 <Tool
131 Name="VCXMLDataGeneratorTool"
132 />
133 <Tool
134 Name="VCWebServiceProxyGeneratorTool"
135 />
136 <Tool
137 Name="VCMIDLTool"
138 PreprocessorDefinitions="_DEBUG"
139 MkTypLibCompatible="true"
140 SuppressStartupBanner="true"
141 TargetEnvironment="1"
142 TypeLibraryName=".\Debug/aacDECdrop.tlb"
143 />
144 <Tool
145 Name="VCCLCompilerTool"
146 Optimization="0"
147 AdditionalIncludeDirectories="..\..\include;..\..\common\mp4ff"
148 PreprocessorDefinitions="WIN32,_DEBUG,_WINDOWS"
149 BasicRuntimeChecks="3"
150 RuntimeLibrary="3"
151 UsePrecompiledHeader="0"
152 PrecompiledHeaderFile=".\Debug/aacDECdrop.pch"
153 AssemblerListingLocation=".\Debug/"
154 ObjectFile=".\Debug/"
155 ProgramDataBaseFileName=".\Debug/"
156 WarningLevel="3"
157 SuppressStartupBanner="true"
158 DebugInformationFormat="4"
159 CompileAs="0"
160 />
161 <Tool
162 Name="VCManagedResourceCompilerTool"
163 />
164 <Tool
165 Name="VCResourceCompilerTool"
166 PreprocessorDefinitions="_DEBUG"
167 Culture="2057"
168 />
169 <Tool
170 Name="VCPreLinkEventTool"
171 />
172 <Tool
173 Name="VCLinkerTool"
174 AdditionalOptions="/MACHINE:I386"
175 AdditionalDependencies="advapi32.lib shell32.lib gdi32.lib odbc32.lib odbccp32.lib winmm.lib ws2_32.lib user32.lib"
176 OutputFile=".\Debug/aacDECdrop.exe"
177 LinkIncremental="2"
178 SuppressStartupBanner="true"
179 GenerateDebugInformation="true"
180 ProgramDatabaseFile=".\Debug/aacDECdrop.pdb"
181 SubSystem="2"
182 />
183 <Tool
184 Name="VCALinkTool"
185 />
186 <Tool
187 Name="VCManifestTool"
188 />
189 <Tool
190 Name="VCXDCMakeTool"
191 />
192 <Tool
193 Name="VCBscMakeTool"
194 />
195 <Tool
196 Name="VCFxCopTool"
197 />
198 <Tool
199 Name="VCAppVerifierTool"
200 />
201 <Tool
202 Name="VCWebDeploymentTool"
203 />
204 <Tool
205 Name="VCPostBuildEventTool"
206 />
207 </Configuration>
208 </Configurations>
209 <References>
210 </References>
211 <Files>
212 <Filter
213 Name="Source Files"
214 Filter="cpp;c;cxx;rc;def;r;odl;idl;hpj;bat"
215 >
216 <File
217 RelativePath="..\audio.c"
218 >
219 </File>
220 <File
221 RelativePath="..\decode.c"
222 >
223 </File>
224 <File
225 RelativePath="..\decthread.c"
226 >
227 </File>
228 <File
229 RelativePath="..\main.c"
230 >
231 </File>
232 <File
233 RelativePath="..\misc.c"
234 >
235 </File>
236 <File
237 RelativePath="..\wave_out.c"
238 >
239 </File>
240 </Filter>
241 <Filter
242 Name="Header Files"
243 Filter="h;hpp;hxx;hm;inl"
244 >
245 <File
246 RelativePath="..\audio.h"
247 >
248 </File>
249 <File
250 RelativePath="..\decode.h"
251 >
252 </File>
253 <File
254 RelativePath="..\decthread.h"
255 >
256 </File>
257 <File
258 RelativePath="..\misc.h"
259 >
260 </File>
261 <File
262 RelativePath="..\resource.h"
263 >
264 </File>
265 <File
266 RelativePath="..\wave_out.h"
267 >
268 </File>
269 </Filter>
270 <Filter
271 Name="Resource Files"
272 Filter="ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe"
273 >
274 <File
275 RelativePath="..\resource\AAC01.bmp"
276 >
277 </File>
278 <File
279 RelativePath="..\resource\AAC01.ico"
280 >
281 </File>
282 <File
283 RelativePath="..\resource\AAC02.bmp"
284 >
285 </File>
286 <File
287 RelativePath="..\resource\AAC03.bmp"
288 >
289 </File>
290 <File
291 RelativePath="..\resource\AAC04.bmp"
292 >
293 </File>
294 <File
295 RelativePath="..\resource\AAC05.bmp"
296 >
297 </File>
298 <File
299 RelativePath="..\resource\AAC06.bmp"
300 >
301 </File>
302 <File
303 RelativePath="..\resource\AAC07.bmp"
304 >
305 </File>
306 <File
307 RelativePath="..\resource\AAC08.bmp"
308 >
309 </File>
310 <File
311 RelativePath="..\Script.rc"
312 >
313 <FileConfiguration
314 Name="Release|Win32"
315 >
316 <Tool
317 Name="VCResourceCompilerTool"
318 AdditionalIncludeDirectories="\aac\cvsrep\faad2\aacDECdrop;$(NoInherit)"
319 />
320 </FileConfiguration>
321 <FileConfiguration
322 Name="Debug|Win32"
323 >
324 <Tool
325 Name="VCResourceCompilerTool"
326 AdditionalIncludeDirectories="\aac\cvsrep\faad2\aacDECdrop;$(NoInherit)"
327 />
328 </FileConfiguration>
329 </File>
330 </Filter>
331 </Files>
332 <Globals>
333 </Globals>
334 </VisualStudioProject>
+0
-494
aacDECdrop/audio.c less more
0 /*
1 ** FAAD2 - Freeware Advanced Audio (AAC) Decoder including SBR decoding
2 ** Copyright (C) 2003-2004 M. Bakker, Ahead Software AG, http://www.nero.com
3 **
4 ** This program is free software; you can redistribute it and/or modify
5 ** it under the terms of the GNU General Public License as published by
6 ** the Free Software Foundation; either version 2 of the License, or
7 ** (at your option) any later version.
8 **
9 ** This program is distributed in the hope that it will be useful,
10 ** but WITHOUT ANY WARRANTY; without even the implied warranty of
11 ** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12 ** GNU General Public License for more details.
13 **
14 ** You should have received a copy of the GNU General Public License
15 ** along with this program; if not, write to the Free Software
16 ** Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
17 **
18 ** Any non-GPL usage of this software or parts of this software is strictly
19 ** forbidden.
20 **
21 ** Commercial non-GPL licensing of this software is possible.
22 ** For more info contact Ahead Software through Mpeg4AAClicense@nero.com.
23 **
24 ** $Id: audio.c,v 1.11 2004/02/06 10:23:27 menno Exp $
25 **/
26
27 #ifdef _WIN32
28 #include <io.h>
29 #endif
30 #include <stdlib.h>
31 #include <stdio.h>
32 #include <fcntl.h>
33 #include <math.h>
34 #include <faad.h>
35 #include "audio.h"
36
37
38 audio_file *open_audio_file(char *infile, int samplerate, int channels,
39 int outputFormat, int fileType, long channelMask)
40 {
41 audio_file *aufile = malloc(sizeof(audio_file));
42
43 aufile->outputFormat = outputFormat;
44
45 aufile->samplerate = samplerate;
46 aufile->channels = channels;
47 aufile->total_samples = 0;
48 aufile->fileType = fileType;
49 aufile->channelMask = channelMask;
50
51 switch (outputFormat)
52 {
53 case FAAD_FMT_16BIT:
54 aufile->bits_per_sample = 16;
55 break;
56 case FAAD_FMT_24BIT:
57 aufile->bits_per_sample = 24;
58 break;
59 case FAAD_FMT_32BIT:
60 case FAAD_FMT_FLOAT:
61 aufile->bits_per_sample = 32;
62 break;
63 default:
64 if (aufile) free(aufile);
65 return NULL;
66 }
67
68 if(infile[0] == '-')
69 {
70 #ifdef _WIN32
71 setmode(fileno(stdout), O_BINARY);
72 #endif
73 aufile->sndfile = stdout;
74 } else {
75 aufile->sndfile = fopen(infile, "wb");
76 }
77
78 if (aufile->sndfile == NULL)
79 {
80 if (aufile) free(aufile);
81 return NULL;
82 }
83
84 if (aufile->fileType == OUTPUT_WAV)
85 {
86 if (aufile->channelMask)
87 write_wav_extensible_header(aufile, aufile->channelMask);
88 else
89 write_wav_header(aufile);
90 }
91
92 return aufile;
93 }
94
95 int write_audio_file(audio_file *aufile, void *sample_buffer, int samples, int offset)
96 {
97 char *buf = (char *)sample_buffer;
98 switch (aufile->outputFormat)
99 {
100 case FAAD_FMT_16BIT:
101 return write_audio_16bit(aufile, buf + offset*2, samples);
102 case FAAD_FMT_24BIT:
103 return write_audio_24bit(aufile, buf + offset*4, samples);
104 case FAAD_FMT_32BIT:
105 return write_audio_32bit(aufile, buf + offset*4, samples);
106 case FAAD_FMT_FLOAT:
107 return write_audio_float(aufile, buf + offset*4, samples);
108 default:
109 return 0;
110 }
111
112 return 0;
113 }
114
115 void close_audio_file(audio_file *aufile)
116 {
117 if (aufile->fileType == OUTPUT_WAV)
118 {
119 fseek(aufile->sndfile, 0, SEEK_SET);
120
121 if (aufile->channelMask)
122 write_wav_extensible_header(aufile, aufile->channelMask);
123 else
124 write_wav_header(aufile);
125 }
126
127 fclose(aufile->sndfile);
128
129 if (aufile) free(aufile);
130 }
131
132 static int write_wav_header(audio_file *aufile)
133 {
134 unsigned char header[44];
135 unsigned char* p = header;
136 unsigned int bytes = (aufile->bits_per_sample + 7) / 8;
137 float data_size = (float)bytes * aufile->total_samples;
138 unsigned long word32;
139
140 *p++ = 'R'; *p++ = 'I'; *p++ = 'F'; *p++ = 'F';
141
142 word32 = (data_size + (44 - 8) < (float)MAXWAVESIZE) ?
143 (unsigned long)data_size + (44 - 8) : (unsigned long)MAXWAVESIZE;
144 *p++ = (unsigned char)(word32 >> 0);
145 *p++ = (unsigned char)(word32 >> 8);
146 *p++ = (unsigned char)(word32 >> 16);
147 *p++ = (unsigned char)(word32 >> 24);
148
149 *p++ = 'W'; *p++ = 'A'; *p++ = 'V'; *p++ = 'E';
150
151 *p++ = 'f'; *p++ = 'm'; *p++ = 't'; *p++ = ' ';
152
153 *p++ = 0x10; *p++ = 0x00; *p++ = 0x00; *p++ = 0x00;
154
155 if (aufile->outputFormat == FAAD_FMT_FLOAT)
156 {
157 *p++ = 0x03; *p++ = 0x00;
158 } else {
159 *p++ = 0x01; *p++ = 0x00;
160 }
161
162 *p++ = (unsigned char)(aufile->channels >> 0);
163 *p++ = (unsigned char)(aufile->channels >> 8);
164
165 word32 = (unsigned long)(aufile->samplerate + 0.5);
166 *p++ = (unsigned char)(word32 >> 0);
167 *p++ = (unsigned char)(word32 >> 8);
168 *p++ = (unsigned char)(word32 >> 16);
169 *p++ = (unsigned char)(word32 >> 24);
170
171 word32 = aufile->samplerate * bytes * aufile->channels;
172 *p++ = (unsigned char)(word32 >> 0);
173 *p++ = (unsigned char)(word32 >> 8);
174 *p++ = (unsigned char)(word32 >> 16);
175 *p++ = (unsigned char)(word32 >> 24);
176
177 word32 = bytes * aufile->channels;
178 *p++ = (unsigned char)(word32 >> 0);
179 *p++ = (unsigned char)(word32 >> 8);
180
181 *p++ = (unsigned char)(aufile->bits_per_sample >> 0);
182 *p++ = (unsigned char)(aufile->bits_per_sample >> 8);
183
184 *p++ = 'd'; *p++ = 'a'; *p++ = 't'; *p++ = 'a';
185
186 word32 = data_size < MAXWAVESIZE ?
187 (unsigned long)data_size : (unsigned long)MAXWAVESIZE;
188 *p++ = (unsigned char)(word32 >> 0);
189 *p++ = (unsigned char)(word32 >> 8);
190 *p++ = (unsigned char)(word32 >> 16);
191 *p++ = (unsigned char)(word32 >> 24);
192
193 return fwrite(header, sizeof(header), 1, aufile->sndfile);
194 }
195
196 static int write_wav_extensible_header(audio_file *aufile, long channelMask)
197 {
198 unsigned char header[68];
199 unsigned char* p = header;
200 unsigned int bytes = (aufile->bits_per_sample + 7) / 8;
201 float data_size = (float)bytes * aufile->total_samples;
202 unsigned long word32;
203
204 *p++ = 'R'; *p++ = 'I'; *p++ = 'F'; *p++ = 'F';
205
206 word32 = (data_size + (68 - 8) < (float)MAXWAVESIZE) ?
207 (unsigned long)data_size + (68 - 8) : (unsigned long)MAXWAVESIZE;
208 *p++ = (unsigned char)(word32 >> 0);
209 *p++ = (unsigned char)(word32 >> 8);
210 *p++ = (unsigned char)(word32 >> 16);
211 *p++ = (unsigned char)(word32 >> 24);
212
213 *p++ = 'W'; *p++ = 'A'; *p++ = 'V'; *p++ = 'E';
214
215 *p++ = 'f'; *p++ = 'm'; *p++ = 't'; *p++ = ' ';
216
217 *p++ = /*0x10*/0x28; *p++ = 0x00; *p++ = 0x00; *p++ = 0x00;
218
219 /* WAVE_FORMAT_EXTENSIBLE */
220 *p++ = 0xFE; *p++ = 0xFF;
221
222 *p++ = (unsigned char)(aufile->channels >> 0);
223 *p++ = (unsigned char)(aufile->channels >> 8);
224
225 word32 = (unsigned long)(aufile->samplerate + 0.5);
226 *p++ = (unsigned char)(word32 >> 0);
227 *p++ = (unsigned char)(word32 >> 8);
228 *p++ = (unsigned char)(word32 >> 16);
229 *p++ = (unsigned char)(word32 >> 24);
230
231 word32 = aufile->samplerate * bytes * aufile->channels;
232 *p++ = (unsigned char)(word32 >> 0);
233 *p++ = (unsigned char)(word32 >> 8);
234 *p++ = (unsigned char)(word32 >> 16);
235 *p++ = (unsigned char)(word32 >> 24);
236
237 word32 = bytes * aufile->channels;
238 *p++ = (unsigned char)(word32 >> 0);
239 *p++ = (unsigned char)(word32 >> 8);
240
241 *p++ = (unsigned char)(aufile->bits_per_sample >> 0);
242 *p++ = (unsigned char)(aufile->bits_per_sample >> 8);
243
244 /* cbSize */
245 *p++ = (unsigned char)(22);
246 *p++ = (unsigned char)(0);
247
248 /* WAVEFORMATEXTENSIBLE */
249
250 /* wValidBitsPerSample */
251 *p++ = (unsigned char)(aufile->bits_per_sample >> 0);
252 *p++ = (unsigned char)(aufile->bits_per_sample >> 8);
253
254 /* dwChannelMask */
255 word32 = channelMask;
256 *p++ = (unsigned char)(word32 >> 0);
257 *p++ = (unsigned char)(word32 >> 8);
258 *p++ = (unsigned char)(word32 >> 16);
259 *p++ = (unsigned char)(word32 >> 24);
260
261 /* SubFormat */
262 if (aufile->outputFormat == FAAD_FMT_FLOAT)
263 {
264 /* KSDATAFORMAT_SUBTYPE_IEEE_FLOAT: 00000003-0000-0010-8000-00aa00389b71 */
265 *p++ = 0x03;
266 *p++ = 0x00;
267 *p++ = 0x00;
268 *p++ = 0x00;
269 *p++ = 0x00; *p++ = 0x00; *p++ = 0x10; *p++ = 0x00; *p++ = 0x80; *p++ = 0x00;
270 *p++ = 0x00; *p++ = 0xaa; *p++ = 0x00; *p++ = 0x38; *p++ = 0x9b; *p++ = 0x71;
271 } else {
272 /* KSDATAFORMAT_SUBTYPE_PCM: 00000001-0000-0010-8000-00aa00389b71 */
273 *p++ = 0x01;
274 *p++ = 0x00;
275 *p++ = 0x00;
276 *p++ = 0x00;
277 *p++ = 0x00; *p++ = 0x00; *p++ = 0x10; *p++ = 0x00; *p++ = 0x80; *p++ = 0x00;
278 *p++ = 0x00; *p++ = 0xaa; *p++ = 0x00; *p++ = 0x38; *p++ = 0x9b; *p++ = 0x71;
279 }
280
281 /* end WAVEFORMATEXTENSIBLE */
282
283 *p++ = 'd'; *p++ = 'a'; *p++ = 't'; *p++ = 'a';
284
285 word32 = data_size < MAXWAVESIZE ?
286 (unsigned long)data_size : (unsigned long)MAXWAVESIZE;
287 *p++ = (unsigned char)(word32 >> 0);
288 *p++ = (unsigned char)(word32 >> 8);
289 *p++ = (unsigned char)(word32 >> 16);
290 *p++ = (unsigned char)(word32 >> 24);
291
292 return fwrite(header, sizeof(header), 1, aufile->sndfile);
293 }
294
295 static int write_audio_16bit(audio_file *aufile, void *sample_buffer,
296 unsigned int samples)
297 {
298 int ret;
299 unsigned int i;
300 short *sample_buffer16 = (short*)sample_buffer;
301 char *data = malloc(samples*aufile->bits_per_sample*sizeof(char)/8);
302
303 aufile->total_samples += samples;
304
305 if (aufile->channels == 6 && aufile->channelMask)
306 {
307 for (i = 0; i < samples; i += aufile->channels)
308 {
309 short r1, r2, r3, r4, r5, r6;
310 r1 = sample_buffer16[i];
311 r2 = sample_buffer16[i+1];
312 r3 = sample_buffer16[i+2];
313 r4 = sample_buffer16[i+3];
314 r5 = sample_buffer16[i+4];
315 r6 = sample_buffer16[i+5];
316 sample_buffer16[i] = r2;
317 sample_buffer16[i+1] = r3;
318 sample_buffer16[i+2] = r1;
319 sample_buffer16[i+3] = r6;
320 sample_buffer16[i+4] = r4;
321 sample_buffer16[i+5] = r5;
322 }
323 }
324
325 for (i = 0; i < samples; i++)
326 {
327 data[i*2] = (char)(sample_buffer16[i] & 0xFF);
328 data[i*2+1] = (char)((sample_buffer16[i] >> 8) & 0xFF);
329 }
330
331 ret = fwrite(data, samples, aufile->bits_per_sample/8, aufile->sndfile);
332
333 if (data) free(data);
334
335 return ret;
336 }
337
338 static int write_audio_24bit(audio_file *aufile, void *sample_buffer,
339 unsigned int samples)
340 {
341 int ret;
342 unsigned int i;
343 long *sample_buffer24 = (long*)sample_buffer;
344 char *data = malloc(samples*aufile->bits_per_sample*sizeof(char)/8);
345
346 aufile->total_samples += samples;
347
348 if (aufile->channels == 6 && aufile->channelMask)
349 {
350 for (i = 0; i < samples; i += aufile->channels)
351 {
352 long r1, r2, r3, r4, r5, r6;
353 r1 = sample_buffer24[i];
354 r2 = sample_buffer24[i+1];
355 r3 = sample_buffer24[i+2];
356 r4 = sample_buffer24[i+3];
357 r5 = sample_buffer24[i+4];
358 r6 = sample_buffer24[i+5];
359 sample_buffer24[i] = r2;
360 sample_buffer24[i+1] = r3;
361 sample_buffer24[i+2] = r1;
362 sample_buffer24[i+3] = r6;
363 sample_buffer24[i+4] = r4;
364 sample_buffer24[i+5] = r5;
365 }
366 }
367
368 for (i = 0; i < samples; i++)
369 {
370 data[i*3] = (char)(sample_buffer24[i] & 0xFF);
371 data[i*3+1] = (char)((sample_buffer24[i] >> 8) & 0xFF);
372 data[i*3+2] = (char)((sample_buffer24[i] >> 16) & 0xFF);
373 }
374
375 ret = fwrite(data, samples, aufile->bits_per_sample/8, aufile->sndfile);
376
377 if (data) free(data);
378
379 return ret;
380 }
381
382 static int write_audio_32bit(audio_file *aufile, void *sample_buffer,
383 unsigned int samples)
384 {
385 int ret;
386 unsigned int i;
387 long *sample_buffer32 = (long*)sample_buffer;
388 char *data = malloc(samples*aufile->bits_per_sample*sizeof(char)/8);
389
390 aufile->total_samples += samples;
391
392 if (aufile->channels == 6 && aufile->channelMask)
393 {
394 for (i = 0; i < samples; i += aufile->channels)
395 {
396 long r1, r2, r3, r4, r5, r6;
397 r1 = sample_buffer32[i];
398 r2 = sample_buffer32[i+1];
399 r3 = sample_buffer32[i+2];
400 r4 = sample_buffer32[i+3];
401 r5 = sample_buffer32[i+4];
402 r6 = sample_buffer32[i+5];
403 sample_buffer32[i] = r2;
404 sample_buffer32[i+1] = r3;
405 sample_buffer32[i+2] = r1;
406 sample_buffer32[i+3] = r6;
407 sample_buffer32[i+4] = r4;
408 sample_buffer32[i+5] = r5;
409 }
410 }
411
412 for (i = 0; i < samples; i++)
413 {
414 data[i*4] = (char)(sample_buffer32[i] & 0xFF);
415 data[i*4+1] = (char)((sample_buffer32[i] >> 8) & 0xFF);
416 data[i*4+2] = (char)((sample_buffer32[i] >> 16) & 0xFF);
417 data[i*4+3] = (char)((sample_buffer32[i] >> 24) & 0xFF);
418 }
419
420 ret = fwrite(data, samples, aufile->bits_per_sample/8, aufile->sndfile);
421
422 if (data) free(data);
423
424 return ret;
425 }
426
427 static int write_audio_float(audio_file *aufile, void *sample_buffer,
428 unsigned int samples)
429 {
430 int ret;
431 unsigned int i;
432 float *sample_buffer_f = (float*)sample_buffer;
433 unsigned char *data = malloc(samples*aufile->bits_per_sample*sizeof(char)/8);
434
435 aufile->total_samples += samples;
436
437 if (aufile->channels == 6 && aufile->channelMask)
438 {
439 for (i = 0; i < samples; i += aufile->channels)
440 {
441 float r1, r2, r3, r4, r5, r6;
442 r1 = sample_buffer_f[i];
443 r2 = sample_buffer_f[i+1];
444 r3 = sample_buffer_f[i+2];
445 r4 = sample_buffer_f[i+3];
446 r5 = sample_buffer_f[i+4];
447 r6 = sample_buffer_f[i+5];
448 sample_buffer_f[i] = r2;
449 sample_buffer_f[i+1] = r3;
450 sample_buffer_f[i+2] = r1;
451 sample_buffer_f[i+3] = r6;
452 sample_buffer_f[i+4] = r4;
453 sample_buffer_f[i+5] = r5;
454 }
455 }
456
457 for (i = 0; i < samples; i++)
458 {
459 int exponent, mantissa, negative = 0 ;
460 float in = sample_buffer_f[i];
461
462 data[i*4] = 0; data[i*4+1] = 0; data[i*4+2] = 0; data[i*4+3] = 0;
463 if (in == 0.0)
464 continue;
465
466 if (in < 0.0)
467 {
468 in *= -1.0;
469 negative = 1;
470 }
471 in = (float)frexp(in, &exponent);
472 exponent += 126;
473 in *= (float)0x1000000;
474 mantissa = (((int)in) & 0x7FFFFF);
475
476 if (negative)
477 data[i*4+3] |= 0x80;
478
479 if (exponent & 0x01)
480 data[i*4+2] |= 0x80;
481
482 data[i*4] = mantissa & 0xFF;
483 data[i*4+1] = (mantissa >> 8) & 0xFF;
484 data[i*4+2] |= (mantissa >> 16) & 0x7F;
485 data[i*4+3] |= (exponent >> 1) & 0x7F;
486 }
487
488 ret = fwrite(data, samples, aufile->bits_per_sample/8, aufile->sndfile);
489
490 if (data) free(data);
491
492 return ret;
493 }
+0
-71
aacDECdrop/audio.h less more
0 /*
1 ** FAAD2 - Freeware Advanced Audio (AAC) Decoder including SBR decoding
2 ** Copyright (C) 2003-2004 M. Bakker, Ahead Software AG, http://www.nero.com
3 **
4 ** This program is free software; you can redistribute it and/or modify
5 ** it under the terms of the GNU General Public License as published by
6 ** the Free Software Foundation; either version 2 of the License, or
7 ** (at your option) any later version.
8 **
9 ** This program is distributed in the hope that it will be useful,
10 ** but WITHOUT ANY WARRANTY; without even the implied warranty of
11 ** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12 ** GNU General Public License for more details.
13 **
14 ** You should have received a copy of the GNU General Public License
15 ** along with this program; if not, write to the Free Software
16 ** Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
17 **
18 ** Any non-GPL usage of this software or parts of this software is strictly
19 ** forbidden.
20 **
21 ** Commercial non-GPL licensing of this software is possible.
22 ** For more info contact Ahead Software through Mpeg4AAClicense@nero.com.
23 **
24 ** $Id: audio.h,v 1.9 2004/02/06 10:23:27 menno Exp $
25 **/
26
27 #ifndef AUDIO_H_INCLUDED
28 #define AUDIO_H_INCLUDED
29
30 #ifdef __cplusplus
31 extern "C" {
32 #endif
33
34 #define MAXWAVESIZE 4294967040LU
35
36 #define OUTPUT_WAV 1
37 #define OUTPUT_RAW 2
38
39 typedef struct
40 {
41 int outputFormat;
42 FILE *sndfile;
43 unsigned int fileType;
44 unsigned long samplerate;
45 unsigned int bits_per_sample;
46 unsigned int channels;
47 unsigned long total_samples;
48 long channelMask;
49 } audio_file;
50
51 audio_file *open_audio_file(char *infile, int samplerate, int channels,
52 int outputFormat, int fileType, long channelMask);
53 int write_audio_file(audio_file *aufile, void *sample_buffer, int samples, int offset);
54 void close_audio_file(audio_file *aufile);
55 static int write_wav_header(audio_file *aufile);
56 static int write_wav_extensible_header(audio_file *aufile, long channelMask);
57 static int write_audio_16bit(audio_file *aufile, void *sample_buffer,
58 unsigned int samples);
59 static int write_audio_24bit(audio_file *aufile, void *sample_buffer,
60 unsigned int samples);
61 static int write_audio_32bit(audio_file *aufile, void *sample_buffer,
62 unsigned int samples);
63 static int write_audio_float(audio_file *aufile, void *sample_buffer,
64 unsigned int samples);
65
66
67 #ifdef __cplusplus
68 }
69 #endif
70 #endif
+0
-566
aacDECdrop/decode.c less more
0 /*
1 ** FAAD - Freeware Advanced Audio Decoder
2 ** Copyright (C) 2002 M. Bakker
3 **
4 ** This program is free software; you can redistribute it and/or modify
5 ** it under the terms of the GNU General Public License as published by
6 ** the Free Software Foundation; either version 2 of the License, or
7 ** (at your option) any later version.
8 **
9 ** This program is distributed in the hope that it will be useful,
10 ** but WITHOUT ANY WARRANTY; without even the implied warranty of
11 ** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12 ** GNU General Public License for more details.
13 **
14 ** You should have received a copy of the GNU General Public License
15 ** along with this program; if not, write to the Free Software
16 ** Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
17 **
18 ** $Id: decode.c,v 1.16 2004/04/03 19:08:37 menno Exp $
19 ** $Id: decode.c,v 1.16 2004/04/03 19:08:37 menno Exp $
20 **/
21
22 #ifdef _WIN32
23 #define WIN32_LEAN_AND_MEAN
24 #include <windows.h>
25 #define off_t __int64
26 #else
27 #include <time.h>
28 #endif
29
30 #include <stdio.h>
31 #include <stdlib.h>
32
33 #include <neaacdec.h>
34 #include <mp4ff.h>
35
36 #include "audio.h"
37 #include "decode.h"
38 #include "misc.h"
39 #include "wave_out.h"
40
41 #ifndef min
42 #define min(a,b) ( (a) < (b) ? (a) : (b) )
43 #endif
44
45 #define MAX_CHANNELS 8 /* make this higher to support files with
46 more channels */
47
48 /* FAAD file buffering routines */
49 /* declare buffering variables */
50 #define DEC_BUFF_VARS \
51 int fileread, bytesconsumed, k; \
52 int buffercount = 0, buffer_index = 0; \
53 unsigned char *buffer; \
54 unsigned int bytes_in_buffer = 0;
55
56 /* initialise buffering */
57 #define INIT_BUFF(file) \
58 fseek(file, 0, SEEK_END); \
59 fileread = ftell(file); \
60 fseek(file, 0, SEEK_SET); \
61 buffer = (unsigned char*)malloc(FAAD_MIN_STREAMSIZE*MAX_CHANNELS); \
62 memset(buffer, 0, FAAD_MIN_STREAMSIZE*MAX_CHANNELS); \
63 bytes_in_buffer = fread(buffer, 1, FAAD_MIN_STREAMSIZE*MAX_CHANNELS, file);
64
65 /* skip bytes in buffer */
66 #define UPDATE_BUFF_SKIP(bytes) \
67 fseek(infile, bytes, SEEK_SET); \
68 buffer_index += bytes; \
69 buffercount = 0; \
70 bytes_in_buffer = fread(buffer, 1, FAAD_MIN_STREAMSIZE*MAX_CHANNELS, infile);
71
72 /* update buffer */
73 #define UPDATE_BUFF_READ \
74 if (bytesconsumed > 0) { \
75 for (k = 0; k < (FAAD_MIN_STREAMSIZE*MAX_CHANNELS - bytesconsumed); k++) \
76 buffer[k] = buffer[k + bytesconsumed]; \
77 bytes_in_buffer += fread(buffer + (FAAD_MIN_STREAMSIZE*MAX_CHANNELS) - bytesconsumed, 1, bytesconsumed, infile); \
78 bytesconsumed = 0; \
79 }
80
81 /* update buffer indices after NeAACDecDecode */
82 #define UPDATE_BUFF_IDX(frame) \
83 bytesconsumed += frame.bytesconsumed; \
84 buffer_index += frame.bytesconsumed; \
85 bytes_in_buffer -= frame.bytesconsumed;
86
87 /* true if decoding has to stop because of EOF */
88 #define IS_FILE_END buffer_index >= fileread
89
90 /* end buffering */
91 #define END_BUFF if (buffer) free(buffer);
92
93
94
95 /* globals */
96 char *progName;
97 extern int stop_decoding;
98
99 int id3v2_tag(unsigned char *buffer)
100 {
101 if (strncmp(buffer, "ID3", 3) == 0) {
102 unsigned long tagsize;
103
104 /* high bit is not used */
105 tagsize = (buffer[6] << 21) | (buffer[7] << 14) |
106 (buffer[8] << 7) | (buffer[9] << 0);
107
108 tagsize += 10;
109
110 return tagsize;
111 } else {
112 return 0;
113 }
114 }
115
116 char *file_ext[] =
117 {
118 NULL,
119 ".wav",
120 ".aif",
121 ".au",
122 ".au",
123 NULL
124 };
125
126 /* MicroSoft channel definitions */
127 #define SPEAKER_FRONT_LEFT 0x1
128 #define SPEAKER_FRONT_RIGHT 0x2
129 #define SPEAKER_FRONT_CENTER 0x4
130 #define SPEAKER_LOW_FREQUENCY 0x8
131 #define SPEAKER_BACK_LEFT 0x10
132 #define SPEAKER_BACK_RIGHT 0x20
133 #define SPEAKER_FRONT_LEFT_OF_CENTER 0x40
134 #define SPEAKER_FRONT_RIGHT_OF_CENTER 0x80
135 #define SPEAKER_BACK_CENTER 0x100
136 #define SPEAKER_SIDE_LEFT 0x200
137 #define SPEAKER_SIDE_RIGHT 0x400
138 #define SPEAKER_TOP_CENTER 0x800
139 #define SPEAKER_TOP_FRONT_LEFT 0x1000
140 #define SPEAKER_TOP_FRONT_CENTER 0x2000
141 #define SPEAKER_TOP_FRONT_RIGHT 0x4000
142 #define SPEAKER_TOP_BACK_LEFT 0x8000
143 #define SPEAKER_TOP_BACK_CENTER 0x10000
144 #define SPEAKER_TOP_BACK_RIGHT 0x20000
145 #define SPEAKER_RESERVED 0x80000000
146
147 long aacChannelConfig2wavexChannelMask(NeAACDecFrameInfo *hInfo)
148 {
149 if (hInfo->channels == 6 && hInfo->num_lfe_channels)
150 {
151 return SPEAKER_FRONT_LEFT + SPEAKER_FRONT_RIGHT +
152 SPEAKER_FRONT_CENTER + SPEAKER_LOW_FREQUENCY +
153 SPEAKER_BACK_LEFT + SPEAKER_BACK_RIGHT;
154 } else {
155 return 0;
156 }
157 }
158
159 int decodeAACfile(char *sndfile, int def_srate, aac_dec_opt *opt)
160 {
161 int tagsize;
162 unsigned long samplerate;
163 unsigned char channels;
164 void *sample_buffer;
165
166 FILE *infile;
167
168 audio_file *aufile;
169
170 NeAACDecHandle hDecoder;
171 NeAACDecFrameInfo frameInfo;
172 NeAACDecConfigurationPtr config;
173
174 int first_time = 1;
175
176
177 /* declare variables for buffering */
178 DEC_BUFF_VARS
179
180 infile = fopen(opt->filename, "rb");
181 if (infile == NULL)
182 {
183 /* unable to open file */
184 error_handler("Error opening file: %s\n", opt->filename);
185 return 1;
186 }
187 INIT_BUFF(infile)
188
189 tagsize = id3v2_tag(buffer);
190 if (tagsize)
191 {
192 UPDATE_BUFF_SKIP(tagsize)
193 }
194
195 hDecoder = NeAACDecOpen();
196
197 /* Set the default object type and samplerate */
198 /* This is useful for RAW AAC files */
199 config = NeAACDecGetCurrentConfiguration(hDecoder);
200 if (def_srate)
201 config->defSampleRate = def_srate;
202 config->defObjectType = opt->object_type;
203 config->outputFormat = opt->output_format;
204
205 NeAACDecSetConfiguration(hDecoder, config);
206
207 if ((bytesconsumed = NeAACDecInit(hDecoder, buffer, bytes_in_buffer,
208 &samplerate, &channels)) < 0)
209 {
210 /* If some error initializing occured, skip the file */
211 error_handler("Error initializing decoder library.\n");
212 END_BUFF
213 NeAACDecClose(hDecoder);
214 fclose(infile);
215 return 1;
216 }
217 buffer_index += bytesconsumed;
218
219 do
220 {
221 /* update buffer */
222 UPDATE_BUFF_READ
223
224 sample_buffer = NeAACDecDecode(hDecoder, &frameInfo, buffer, bytes_in_buffer);
225
226 /* update buffer indices */
227 UPDATE_BUFF_IDX(frameInfo)
228
229 if (frameInfo.error > 0)
230 {
231 error_handler("Error: %s\n",
232 NeAACDecGetErrorMessage(frameInfo.error));
233 }
234
235 opt->progress_update((long)fileread, buffer_index);
236
237 /* open the sound file now that the number of channels are known */
238 if (first_time && !frameInfo.error)
239 {
240 if(opt->decode_mode == 0)
241 {
242 if (Set_WIN_Params (INVALID_FILEDESC, samplerate, SAMPLE_SIZE,
243 frameInfo.channels) < 0)
244 {
245 error_handler("\nCan't access %s\n", "WAVE OUT");
246 END_BUFF
247 NeAACDecClose(hDecoder);
248 fclose(infile);
249 return (0);
250 }
251 }
252 else
253 {
254 aufile = open_audio_file(sndfile, samplerate, frameInfo.channels,
255 opt->output_format, opt->file_type, aacChannelConfig2wavexChannelMask(&frameInfo));
256
257 if (aufile == NULL)
258 {
259 END_BUFF
260 NeAACDecClose(hDecoder);
261 fclose(infile);
262 return 0;
263 }
264 }
265 first_time = 0;
266 }
267
268 if ((frameInfo.error == 0) && (frameInfo.samples > 0))
269 {
270 if(opt->decode_mode == 0)
271 WIN_Play_Samples((short*)sample_buffer, frameInfo.channels*frameInfo.samples);
272 else
273 write_audio_file(aufile, sample_buffer, frameInfo.samples, 0);
274 }
275
276 if (buffer_index >= fileread)
277 sample_buffer = NULL; /* to make sure it stops now */
278
279 if(stop_decoding)
280 break;
281
282 } while (sample_buffer != NULL);
283
284 NeAACDecClose(hDecoder);
285
286 fclose(infile);
287
288 if(opt->decode_mode == 0)
289 WIN_Audio_close();
290 else
291 {
292 if (!first_time)
293 close_audio_file(aufile);
294 }
295
296 END_BUFF
297
298 return frameInfo.error;
299 }
300
301 int GetAACTrack(mp4ff_t *infile)
302 {
303 /* find AAC track */
304 int i, rc;
305 int numTracks = mp4ff_total_tracks(infile);
306
307 for (i = 0; i < numTracks; i++)
308 {
309 unsigned char *buff = NULL;
310 int buff_size = 0;
311 mp4AudioSpecificConfig mp4ASC;
312
313 mp4ff_get_decoder_config(infile, i, &buff, &buff_size);
314
315 if (buff)
316 {
317 rc = NeAACDecAudioSpecificConfig(buff, buff_size, &mp4ASC);
318 free(buff);
319
320 if (rc < 0)
321 continue;
322 return i;
323 }
324 }
325
326 /* can't decode this */
327 return -1;
328 }
329
330 unsigned long srates[] =
331 {
332 96000, 88200, 64000, 48000, 44100, 32000, 24000, 22050, 16000,
333 12000, 11025, 8000
334 };
335
336 uint32_t read_callback(void *user_data, void *buffer, uint32_t length)
337 {
338 return fread(buffer, 1, length, (FILE*)user_data);
339 }
340
341 uint32_t seek_callback(void *user_data, uint64_t position)
342 {
343 return fseek((FILE*)user_data, position, SEEK_SET);
344 }
345
346 int decodeMP4file(char *sndfile, aac_dec_opt *opt)
347 {
348 int track;
349 unsigned long samplerate;
350 unsigned char channels;
351 void *sample_buffer;
352
353 mp4ff_t *infile;
354 FILE *mp4File;
355 int sampleId, numSamples;
356
357 audio_file *aufile;
358
359 NeAACDecHandle hDecoder;
360 NeAACDecFrameInfo frameInfo;
361
362 unsigned char *buffer;
363 int buffer_size;
364
365 int first_time = 1;
366
367 /* initialise the callback structure */
368 mp4ff_callback_t *mp4cb = malloc(sizeof(mp4ff_callback_t));
369
370 mp4File = fopen(opt->filename, "rb");
371 mp4cb->read = read_callback;
372 mp4cb->seek = seek_callback;
373 mp4cb->user_data = mp4File;
374
375 infile = mp4ff_open_read(mp4cb);
376 if (!infile)
377 {
378 /* unable to open file */
379 error_handler("Error opening file: %s\n", opt->filename);
380 return 1;
381 }
382
383 if ((track = GetAACTrack(infile)) < 0)
384 {
385 error_handler("Unable to find correct AAC sound track in the MP4 file.\n");
386 mp4ff_close(infile);
387 free(mp4cb);
388 fclose(mp4File);
389 return 1;
390 }
391
392 buffer = NULL;
393 buffer_size = 0;
394 mp4ff_get_decoder_config(infile, track, &buffer, &buffer_size);
395
396 hDecoder = NeAACDecOpen();
397
398 if(NeAACDecInit2(hDecoder, buffer, buffer_size, &samplerate, &channels) < 0)
399 {
400 /* If some error initializing occured, skip the file */
401 error_handler("Error initializing decoder library.\n");
402 NeAACDecClose(hDecoder);
403 mp4ff_close(infile);
404 free(mp4cb);
405 fclose(mp4File);
406 return 1;
407 }
408 if (buffer)
409 free(buffer);
410
411 numSamples = mp4ff_num_samples(infile, track);
412
413 for (sampleId = 0; sampleId < numSamples; sampleId++)
414 {
415 int rc;
416
417 /* get access unit from MP4 file */
418 buffer = NULL;
419 buffer_size = 0;
420
421 rc = mp4ff_read_sample(infile, track, sampleId, &buffer, &buffer_size);
422 if (rc == 0)
423 {
424 error_handler("Reading from MP4 file failed.\n");
425 NeAACDecClose(hDecoder);
426 mp4ff_close(infile);
427 free(mp4cb);
428 fclose(mp4File);
429 return 1;
430 }
431
432 sample_buffer = NeAACDecDecode(hDecoder, &frameInfo, buffer, buffer_size);
433
434 if (buffer)
435 free(buffer);
436
437 opt->progress_update((long)numSamples, sampleId);
438
439 /* open the sound file now that the number of channels are known */
440 if (first_time && !frameInfo.error)
441 {
442 if(opt->decode_mode == 0)
443 {
444 if (Set_WIN_Params (INVALID_FILEDESC, samplerate, SAMPLE_SIZE,
445 frameInfo.channels) < 0)
446 {
447 error_handler("\nCan't access %s\n", "WAVE OUT");
448 NeAACDecClose(hDecoder);
449 mp4ff_close(infile);
450 free(mp4cb);
451 fclose(mp4File);
452 return (0);
453 }
454 }
455 else
456 {
457 aufile = open_audio_file(sndfile, samplerate, frameInfo.channels,
458 opt->output_format, opt->file_type, aacChannelConfig2wavexChannelMask(&frameInfo));
459
460 if (aufile == NULL)
461 {
462 NeAACDecClose(hDecoder);
463 mp4ff_close(infile);
464 free(mp4cb);
465 fclose(mp4File);
466 return 0;
467 }
468 }
469 first_time = 0;
470 }
471
472 if ((frameInfo.error == 0) && (frameInfo.samples > 0))
473 {
474 if(opt->decode_mode == 0)
475 WIN_Play_Samples((short*)sample_buffer, frameInfo.channels*frameInfo.samples);
476 else
477 write_audio_file(aufile, sample_buffer, frameInfo.samples, 0);
478 }
479
480 if (frameInfo.error > 0)
481 {
482 error_handler("Error: %s\n",
483 NeAACDecGetErrorMessage(frameInfo.error));
484 break;
485 }
486 if(stop_decoding)
487 break;
488 }
489
490
491 NeAACDecClose(hDecoder);
492
493
494 mp4ff_close(infile);
495 free(mp4cb);
496 fclose(mp4File);
497
498 if(opt->decode_mode == 0)
499 WIN_Audio_close();
500 else
501 {
502 if (!first_time)
503 close_audio_file(aufile);
504 }
505
506 return frameInfo.error;
507 }
508
509 int str_no_case_comp(char const *str1, char const *str2, unsigned long len)
510 {
511 signed int c1 = 0, c2 = 0;
512
513 while (len--)
514 {
515 c1 = tolower(*str1++);
516 c2 = tolower(*str2++);
517
518 if (c1 == 0 || c1 != c2)
519 break;
520 }
521
522 return c1 - c2;
523 }
524
525 int aac_decode(aac_dec_opt *opt)
526 {
527 int result;
528 int def_srate = 0;
529 int outfile_set = 0;
530 int mp4file = 0;
531 char *fnp;
532 char audioFileName[MAX_PATH];
533 unsigned char header[8];
534 FILE *hMP4File;
535
536
537 /* point to the specified file name */
538 strcpy(audioFileName, opt->filename);
539 fnp = (char *)strrchr(audioFileName,'.');
540 if (fnp)
541 fnp[0] = '\0';
542 strcat(audioFileName, file_ext[opt->file_type]);
543
544 mp4file = 0;
545 hMP4File = fopen(opt->filename, "rb");
546 if (!hMP4File)
547 {
548 return 1;
549 }
550 fread(header, 1, 8, hMP4File);
551 fclose(hMP4File);
552 if (header[4] == 'f' && header[5] == 't' && header[6] == 'y' && header[7] == 'p')
553 mp4file = 1;
554
555 if (mp4file)
556 {
557 result = decodeMP4file(audioFileName, opt);
558 }
559 else
560 {
561 result = decodeAACfile(audioFileName, def_srate, opt);
562 }
563
564 return 0;
565 }
+0
-55
aacDECdrop/decode.h less more
0 /*
1 * function: Header file for aacDECdrop
2 *
3 * This program is distributed under the GNU General Public License, version 2.
4 * A copy of this license is included with this source.
5 *
6 * Copyright (C) 2002 John Edwards
7 */
8
9 #ifndef __DECODE_H__
10 #define __DECODE_H__
11
12 #include <stdio.h>
13
14 typedef void (*progress_func)(long totalsamples, long samples);
15 typedef void (*error_func)(char *errormessage);
16
17 typedef struct
18 {
19 progress_func progress_update;
20 error_func error;
21 int decode_mode;
22 int output_format;
23 int file_type;
24 int object_type;
25 char *filename;
26 } aac_dec_opt;
27
28
29 int aac_decode(aac_dec_opt *opt);
30
31 /*
32 * Put this here for convenience
33 */
34
35 typedef struct {
36 char TitleFormat[32];
37 int window_x;
38 int window_y;
39 int always_on_top;
40 int logerr;
41 int decode_mode;
42 int outputFormat;
43 int fileType;
44 int object_type;
45 } SettingsAAC;
46
47 /*
48 * GLOBALS
49 */
50
51 extern SettingsAAC iniSettings;
52
53
54 #endif /* __DECODE_H__ */
+0
-194
aacDECdrop/decthread.c less more
0 /*
1 * function: Decoding thread for aacDECdrop
2 *
3 * This program is distributed under the GNU General Public License, version 2.
4 * A copy of this license is included with this source.
5 *
6 * Copyright (C) 2002 John Edwards
7 *
8 * last mod: aacDecdrop decoder last updated 2002-03-14
9 */
10
11 #include <windows.h>
12 #include <time.h>
13 #include <string.h>
14
15 #include "wave_out.h"
16 #include "decode.h"
17 #include "misc.h"
18
19 extern int decoding_done;
20 extern int animate;
21 extern double file_complete;
22 extern int totalfiles;
23 extern int numfiles;
24 int dec_mode;
25 int outputFormat;
26 int fileType;
27 int object_type;
28 extern char* fileName;
29 int stop_decoding;
30
31 typedef struct enclist_tag {
32 char *filename;
33 struct enclist_tag *next;
34 } enclist_t;
35
36 enclist_t *head = NULL;
37
38 CRITICAL_SECTION mutex;
39
40 DWORD WINAPI decode_thread(LPVOID arg);
41
42 void decthread_init(void)
43 {
44 int thread_id;
45 HANDLE thand;
46
47 numfiles = 0;
48 totalfiles = 0;
49 file_complete = 0.0;
50
51 InitializeCriticalSection(&mutex);
52
53 thand = CreateThread(NULL, 0, decode_thread, NULL, 0, &thread_id);
54 if (thand == NULL) {
55 // something bad happened, might want to deal with that, maybe...
56 }
57 }
58
59 void decthread_addfile(char *file)
60 {
61 char *filename;
62 enclist_t *entry, *node;
63
64 if (file == NULL) return;
65
66 // create entry
67 filename = strdup(file);
68 entry = (enclist_t *)malloc(sizeof(enclist_t));
69
70 entry->filename = filename;
71 entry->next = NULL;
72
73 EnterCriticalSection(&mutex);
74
75 // insert entry
76 if (head == NULL) {
77 head = entry;
78 } else {
79 node = head;
80 while (node->next != NULL)
81 node = node->next;
82
83 node->next = entry;
84 }
85 numfiles++;
86 totalfiles++;
87
88 LeaveCriticalSection(&mutex);
89 }
90
91 /*
92 * the caller is responsible for deleting the pointer
93 */
94
95 char *_getfile()
96 {
97 char *filename;
98 enclist_t *entry;
99
100 EnterCriticalSection(&mutex);
101
102 if (head == NULL) {
103 LeaveCriticalSection(&mutex);
104 return NULL;
105 }
106
107 // pop entry
108 entry = head;
109 head = head->next;
110
111 filename = entry->filename;
112 free(entry);
113
114 LeaveCriticalSection(&mutex);
115
116 return filename;
117 }
118
119 void decthread_set_decode_mode(int decode_mode)
120 {
121 dec_mode = decode_mode;
122 }
123
124 void decthread_set_outputFormat(int output_format)
125 {
126 outputFormat = output_format;
127 }
128
129 void decthread_set_fileType(int file_type)
130 {
131 fileType = file_type;
132 }
133
134 void decthread_set_object_type(int object_type)
135 {
136 object_type = object_type;
137 }
138
139 void _error(char *errormessage)
140 {
141 // do nothing
142 }
143
144 void _update(long total, long done)
145 {
146 file_complete = (double)done / (double)total;
147 }
148
149 DWORD WINAPI decode_thread(LPVOID arg)
150 {
151 char *in_file;
152
153 while (!decoding_done)
154 {
155 while (in_file = _getfile())
156 {
157 aac_dec_opt dec_opts;
158 animate = 1;
159
160 if(stop_decoding){
161 numfiles--;
162 break;
163 }
164 set_filename(in_file);
165
166 dec_opts.progress_update = _update;
167 dec_opts.filename = in_file;
168 dec_opts.decode_mode = dec_mode;
169 dec_opts.output_format = outputFormat;
170 dec_opts.file_type = fileType;
171 dec_opts.object_type = object_type;
172 fileName = in_file;
173
174 aac_decode(&dec_opts);
175
176 numfiles--;
177 } /* Finished this file, loop around to next... */
178
179 file_complete = 0.0;
180 animate = 0;
181 totalfiles = 0;
182 numfiles = 0;
183
184 Sleep(500);
185 }
186
187 DeleteCriticalSection(&mutex);
188
189 return 0;
190 }
191
192 /******************************** end of decthread.c ********************************/
193
+0
-19
aacDECdrop/decthread.h less more
0 /*
1 * function: Header file for decthread.c
2 *
3 * This program is distributed under the GNU General Public License, version 2.
4 * A copy of this license is included with this source.
5 *
6 * Copyright (C) 2002 John Edwards
7 */
8 #ifndef __DECTHREAD_H__
9 #define __DECTHREAD_H__
10
11 void decthread_init(void);
12 void decthread_addfile(char *file);
13 void decthread_set_decode_mode(int decode_mode);
14 void decthread_set_outputFormat(int output_format);
15 void decthread_set_fileType(int file_type);
16 void decthread_set_object_type(int object_type);
17
18 #endif /* __DECTHREAD_H__ */
+0
-678
aacDECdrop/main.c less more
0 /*
1 * function: Main control program for aacDECdrop
2 *
3 * This program is distributed under the GNU General Public License, version 2.
4 * A copy of this license is included with this source.
5 *
6 * Copyright (C) 2002 John Edwards
7 *
8 * last mod: aacDECdrop decoder last updated 2002-03-14
9 */
10
11 #include <windows.h>
12 #include <shellapi.h>
13 #include <string.h>
14 #include <stdio.h>
15 #include <commctrl.h>
16
17 #include "resource.h"
18 #include "decthread.h"
19 #include "decode.h"
20 #include "misc.h"
21
22 #define LOSHORT(l) ((SHORT)(l))
23 #define HISHORT(l) ((SHORT)(((DWORD)(l) >> 16) & 0xFFFF))
24
25 #define INI_FILE "aacDECdrop.ini"
26
27 #define CREATEFONT(sz) \
28 CreateFont((sz), 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
29 VARIABLE_PITCH | FF_SWISS, "")
30
31 HANDLE event = NULL;
32 int width = 130, height = 130;
33 RECT bar1, bar2, vbrBR;
34 int prog1 = 0, prog2 = 0;
35 int moving = 0;
36 POINT pt;
37 HINSTANCE hinst;
38 int frame = 0;
39 HBITMAP hbm[12], temp;
40 HMENU menu;
41 int decoding_done = 0;
42 int stop_decoding = 0;
43 double file_complete;
44 int totalfiles;
45 int numfiles;
46 HWND g_hwnd;
47 HWND qcwnd;
48 HFONT font2;
49 char *fileName;
50
51 SettingsAAC iniSettings; // iniSettings holds the parameters for the aacDECdrop configuration
52
53 int animate = 0;
54
55 LRESULT CALLBACK WndProc(HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam);
56
57 BOOL CALLBACK QCProc(HWND hwndDlg, UINT message, WPARAM wParam, LPARAM lParam) ;
58
59
60 /*
61 * Write the .ini file using the current aacDECdrop settings
62 */
63
64 int
65 WriteIniFile ( const char* Filename )
66 {
67 FILE* fp;
68
69 if ( (fp = fopen (Filename, "w")) == NULL )
70 return EOF; // could not open file
71
72 fprintf (fp, "[aacDECdrop]\n");
73 fprintf (fp, "Window_X=%i\n" , iniSettings.window_x );
74 fprintf (fp, "Window_Y=%i\n" , iniSettings.window_y );
75 fprintf (fp, "Always_on_top=%i\n" , iniSettings.always_on_top);
76 fprintf (fp, "Logerr=%i\n" , iniSettings.logerr );
77 fprintf (fp, "DecodeMode=%i\n" , iniSettings.decode_mode );
78 fprintf (fp, "OutputFormat=%i\n" , iniSettings.outputFormat );
79 fprintf (fp, "FileType=%i\n" , iniSettings.fileType );
80 fprintf (fp, "ObjectType=%i\n" , iniSettings.object_type );
81 return fclose (fp);
82 }
83
84 /*
85 * Read the .ini file and set the aacDECdrop settings
86 */
87
88 int
89 ReadIniFile ( FILE* fp )
90 {
91 char buff [256];
92 int val;
93
94 rewind ( fp );
95 fgets ( buff, sizeof buff, fp );
96
97 if ( 0 != memcmp ( buff, "[aacDECdrop]", 12 ) )
98 return EOF;
99
100 while ( fgets ( buff, sizeof buff, fp ) != NULL ) {
101 if ( 1 == sscanf ( buff, "Window_X=%d" , &val ) ) iniSettings.window_x = val;
102 else if ( 1 == sscanf ( buff, "Window_Y=%d" , &val ) ) iniSettings.window_y = val;
103 else if ( 1 == sscanf ( buff, "Always_on_top=%d", &val ) ) iniSettings.always_on_top = val;
104 else if ( 1 == sscanf ( buff, "Logerr=%d" , &val ) ) iniSettings.logerr = val;
105 else if ( 1 == sscanf ( buff, "DecodeMode=%d" , &val ) ) iniSettings.decode_mode = val;
106 else if ( 1 == sscanf ( buff, "OutputFormat=%d" , &val ) ) iniSettings.outputFormat = val;
107 else if ( 1 == sscanf ( buff, "FileType=%d" , &val ) ) iniSettings.fileType = val;
108 else if ( 1 == sscanf ( buff, "ObjectType=%d" , &val ) ) iniSettings.object_type = val;
109 }
110
111 return 0;
112 }
113
114
115 /*
116 * Get aacDECdrop settings at startup, writes .ini file, if not present
117 */
118
119 void
120 GetAACdecSettings ( void )
121 {
122 FILE* fp = NULL;
123 char PathAndName [] = {INI_FILE};
124
125 // set default values
126 iniSettings.window_x = 64; // default box position (x co-ord)
127 iniSettings.window_y = 64; // default box position (y co-ord)
128 iniSettings.always_on_top = 8; // default = on
129 iniSettings.logerr = 0; // default = off
130 iniSettings.decode_mode = 1; // default = 1 (decode to file)
131 iniSettings.outputFormat = 1; // default = 1 (16 bit PCM)
132 iniSettings.fileType = 1; // default = 1 (Microsoft WAV)
133 iniSettings.object_type = 1; // default = 1 (Low Complexity)
134
135 // Read INI_FILE
136 if ( (fp = fopen (PathAndName, "r")) == NULL ) { // file does not exist: write it!
137 WriteIniFile ( PathAndName );
138 }
139 else { // file does exist: read it!
140 ReadIniFile (fp);
141 fclose (fp);
142 }
143
144 return;
145 }
146
147 void set_always_on_top(HWND hwnd, int v)
148 {
149 CheckMenuItem(menu, IDM_ONTOP, v ? MF_CHECKED : MF_UNCHECKED);
150 SetWindowPos(hwnd, v ? HWND_TOPMOST : HWND_NOTOPMOST, 0, 0, 0, 0, SWP_NOSIZE | SWP_SHOWWINDOW | SWP_NOMOVE);
151 iniSettings.always_on_top = v;
152 }
153
154 void set_logerr(HWND hwnd, int v)
155 {
156 CheckMenuItem(menu, IDM_LOGERR, v ? MF_CHECKED : MF_UNCHECKED);
157 iniSettings.logerr = v;
158 set_use_dialogs(v);
159 }
160
161 void set_decode_mode(int v)
162 {
163 decthread_set_decode_mode(v);
164 iniSettings.decode_mode = v;
165 }
166
167 void set_outputFormat(int v)
168 {
169 decthread_set_outputFormat(v);
170 iniSettings.outputFormat = v;
171 }
172
173 void set_fileType(int v)
174 {
175 decthread_set_fileType(v);
176 iniSettings.fileType = v;
177 }
178
179 void set_object_type(int v)
180 {
181 decthread_set_object_type(v);
182 iniSettings.object_type = v;
183 }
184
185 int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, PSTR szCmdLine, int iCmdShow)
186 {
187 static char szAppName[] = "aacDECdrop";
188 HWND hwnd;
189 MSG msg;
190 WNDCLASS wndclass;
191 const int width = 130;
192 const int height = 130;
193 int x;
194 int y;
195
196 hinst = hInstance;
197
198 wndclass.style = CS_HREDRAW | CS_VREDRAW;
199 wndclass.lpfnWndProc = WndProc;
200 wndclass.cbClsExtra = 0;
201 wndclass.cbWndExtra = 0;
202 wndclass.hInstance = hInstance;
203 wndclass.hIcon = LoadIcon(hinst, MAKEINTRESOURCE(IDI_ICON1));
204 wndclass.hCursor = LoadCursor(NULL, IDC_ARROW);
205 wndclass.hbrBackground = (HBRUSH)GetStockObject(WHITE_BRUSH);
206 wndclass.lpszMenuName = NULL;
207 wndclass.lpszClassName = szAppName;
208
209 RegisterClass(&wndclass);
210
211 GetAACdecSettings();
212
213 x = max(min(iniSettings.window_x, GetSystemMetrics(SM_CXSCREEN) - width), 0);
214 y = max(min(iniSettings.window_y, GetSystemMetrics(SM_CYSCREEN) - height), 0);
215
216 hwnd = CreateWindow(szAppName, "aacDECdrop", WS_POPUP | WS_DLGFRAME, x, y,
217 width, height, NULL, NULL, hInstance, NULL);
218
219 g_hwnd = hwnd;
220
221 ShowWindow(hwnd, iCmdShow);
222 UpdateWindow(hwnd);
223
224 font2 = CREATEFONT(10);
225
226 SetTimer(hwnd, 1, 80, NULL);
227
228 set_always_on_top(hwnd, iniSettings.always_on_top);
229 set_logerr(hwnd, iniSettings.logerr);
230 set_decode_mode(iniSettings.decode_mode);
231 set_outputFormat(iniSettings.outputFormat);
232 set_fileType(iniSettings.fileType);
233 set_object_type(iniSettings.object_type);
234
235 for (frame = 0; frame < 8; frame++)
236 hbm[frame] = LoadImage(hinst, MAKEINTRESOURCE(IDB_TF01 + frame), IMAGE_BITMAP, 0, 0, LR_CREATEDIBSECTION);
237 frame = 0;
238
239 while (GetMessage(&msg, NULL, 0, 0))
240 {
241 TranslateMessage(&msg);
242 DispatchMessage(&msg);
243 }
244
245 for (frame = 0; frame < 8; frame++)
246 DeleteObject(hbm[frame]);
247
248 return msg.wParam;
249 }
250
251 void HandleDrag(HWND hwnd, HDROP hDrop)
252 {
253 int cFiles, i;
254 char szFile[MAX_PATH];
255 char *ext;
256 int flag = 0;
257
258 cFiles = DragQueryFile(hDrop, 0xFFFFFFFF, NULL, 0);
259 for (i = 0; i < cFiles; i++)
260 {
261 DragQueryFile(hDrop, i, szFile, sizeof(szFile));
262
263 if (ext = strrchr(szFile, '.'))
264 {
265 if (stricmp(ext, ".aac") == 0 || stricmp(ext, ".mp4") == 0 ||
266 stricmp(ext, ".m4a") == 0 || stricmp(ext, ".m4p") == 0)
267 {
268 flag = 1;
269 decthread_addfile(szFile);
270 stop_decoding = 0;
271 }
272 }
273 }
274
275 DragFinish(hDrop);
276