Hello David,
I will try to answer your comments.
> a) I am not very familiar or skilled with autotools et, so sorry of this
> is an obvious question. Will everyone have to run autogen.sh every time
> they check out Codec 2?
Basically, yes, and it is a best practice. You see, shipping configure,
ltmain.sh, missing, libtool, etc. scripts together with the source code can
result in confusion and problems if GNU autotools installed on the target
computer are of a different version. For example, your autoconf version is
2.59 and mine is 2.68. 2.68 generates different libtool script on Samsung
Tizen OS, and simply building the project with
./configure
make
fails with "cannot find .Tpo" libtool auxiliary files. So pre-generated
configure is not guaranteed to work on all the Linux systems zoo.
Recommended way is to provide an "autogen.sh" (standard name) script which
runs autotools to create "configure" and installs native scripts like
libtool, missing or compile into the project directory.
But, one can append call to "configure" at the end of autogen.sh, freeing
the developer from executing it by hand. This approach is used in many
Gstreamer projects, for example. Please note that configuring (that is,
building) the project in the same source directory is a really bad practice.
You should never mix source code and object files/binaries/libtool.
> b) Do we still edit to Makefile.am to configure the build system
Yep. This is almost untouched.
Good-ol' configure.in is now configure.ac with exactly the same syntax. I
just modified it a little bit to enable package checking with pkg-config,
remove autotools warnings and add some options (--enable-tizen, etc.) Here
is the description of "configure" life cycle:
configure.ac -> (aclocal) -> configure.in -> (autoconf) -> configure
> c) How have you verified that the changes (in particular to the default
> x86 code) have no effect on the output speech quality? For example are
> the output speech samples identical to the output from rev 947 on x86?
I used the most reliable verification method - bit exactness. I
encoded/decoded a 20-minute radio broadcast with c2demo from vanilla codec2,
then applied my patch to 947 revision, then
1) cd codec2/src
We get to the src directory of codec2
2)find -name '*.c' -exec sed -i -e 's/sinf(/sin(/g' -e 's/cosf(/cos(/g' -e
's/tanf(/tan(/g' -e 's/atan2f(/atan2(/g' -e 's/powf(/pow(/g' -e
's/log10f(/log10(/g' -e 's/floorf(/floor(/g' -e 's/ceilf(/ceil(/g' -e
's/fabsf(/fabs(/g' -e 's/sqrtf(/sqrt(/g' -e 's/fmodf(/fmod(/g' {} \;
This finds all *.c source files and reverts *f math functions to
double-precision variants, e.g. sinf() becomes sin() again.
3)sed -i 's/-ffast-math//' Makefile.am
This cancels "fast math" gcc option.
4)phase.c, near line 96, uncomment
phi_ = -atan2(Pw[b].imag,Pw[b].real);
H[m].real = Am*cos(phi_);
H[m].imag = Am*sin(phi_);
and comment the alternative calculations below.
Now, after the complete codec2 rebuild we repeat c2demo encoding/decoding.
The second file is bit to bit identical to the first one (checked with cmp
[file_before] [file_after]).
So the only changes which affect the sound are 2), 3) and 4). 2) and 3) are
obvious, while 4) just works faster. Personally, with these changes off, I
do not hear any difference.
> Also I am curious - what is your (or your employers) application for
> Codec 2?
We are investigating the possibility of using codec2 as the last resort VoIP
audio codec when the channel bandwidth becomes extremely narrow. In some
application.
Regards,
Vadim Markovtsev,
Engineer, Algorithmic Lab,
Moscow R&D center, Samsung Electronics
> Hello Vadim,
>
> Thank you for that patch, it's clear you have put a lot of work into
> this.
>
> I have had a first look through the patch. It's a lot to absorb for me,
> and I am currently working hard on the fdmdv2 project. So it will be a
> little while before I can work through it all.
>
> Some questions/comments:
>
> Re 1):
>
> a) I am not very familiar or skilled with autotools et, so sorry of this
> is an obvious question. Will everyone have to run autogen.sh every time
> they check out Codec 2?
>
> b) Do we still edit to Makefile.am to configure the build system?
>
> Re (3) & (4) & (5) there are quite a lot of changes. I am sensitive to
> changes in these areas as a small error could introduce hard to find
> errors in the codec output.
>
> c) How have you verified that the changes (in particular to the default
> x86 code) have no effect on the output speech quality? For example are
> the output speech samples identical to the output from rev 947 on x86?
>
> Also I am curious - what is your (or your employers) application for
> Codec 2?
>
> Thanks,
>
> David
------------------------------------------------------------------------------
Monitor your physical, virtual and cloud infrastructure from a single
web console. Get in-depth insight into apps, servers, databases, vmware,
SAP, cloud infrastructure, etc. Download 30-day Free Trial.
Pricing starts from $795 for 25 servers or applications!
http://p.sf.net/sfu/zoho_dev2dev_nov
_______________________________________________
Freetel-codec2 mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/freetel-codec2