HydrogenAudio

Lossy Audio Compression => Ogg Vorbis => Ogg Vorbis - Tech => Topic started by: enzo on 2015-07-27 21:08:52

Title: aoTuV Patches, Vorbis 1.3.5 and Lancer
Post by: enzo on 2015-07-27 21:08:52
I have made a few patches for aoTuV b6.03 (2015) that I would like to share.

The patches apply to the official aoTuV sources (http://www.geocities.jp/aoyoume/aotuv/source_code/libvorbis-aotuv_b6.03_2015.tar.bz2) and must be applied in order.
The patches are used in the Vorbis codec included with fre:ac 20150725 (https://www.freac.org/downloads-mainmenu-33/211-snapshot-20150725). Maybe someone like Rjamorim or lvqcl can compile binaries for other tools using these patches.

Edit: Updated the patches to apply to aoTuV b6.03 (2015). The original post had patches for the 2014 aoTuV release. Note that there is no need to build new binaries if you already built using the original patches.
Edit2: Updated the first patch again on 20150928 to fix a bug in ov_read/ov_read_filter in libvorbisfile. See post #50 (https://www.hydrogenaud.io/forums/index.php?showtopic=109766&view=findpost&p=907728) and following for details.
Edit3: Updated the first patch again on 20161217 to fix a bug when compiling with --disable-shared. See post #71 (https://www.hydrogenaud.io/forums/index.php?showtopic=109766&view=findpost&p=928266) and following for details.
Edit4: Updated the first patch again on 20171024 to fix more bugs when compiling with different settings. See post #75 (https://www.hydrogenaud.io/forums/index.php?showtopic=109766&view=findpost&p=946342) and following for details.
Title: aoTuV Patches, Vorbis 1.3.5 and Lancer
Post by: cloucrio on 2015-08-01 13:35:06
well done enzo, hope the usual suspects hear your call
Title: aoTuV Patches, Vorbis 1.3.5 and Lancer
Post by: john33 on 2015-08-01 17:01:40
I'll try to get to these in the next day, or two.
Title: aoTuV Patches, Vorbis 1.3.5 and Lancer
Post by: dutch109 on 2015-08-02 20:00:10
Build fails here (Ubuntu 14.04, x86_64, GCC 4.8.4). Standard AoTuV without the patches builds fine.

Here is the full log:
Code: [Select]
$ cd /tmp

/tmp $ curl -s 'http://www.geocities.jp/aoyoume/aotuv/source_code/libvorbis-aotuv_b6.03_2014.tar.bz2' | tar -xj

/tmp $ cd aotuv-b6.03_20110424-20140429

/tmp/aotuv-b6.03_20110424-20140429 $ curl -s 'https://freac.org/patches/libvorbis-aotuv_b6.03_2014-1.3.5.patch' | patch -p1
patching file examples/seeking_example.c
patching file lib/barkmel.c
patching file lib/block.c
patching file lib/codebook.c
patching file lib/codebook.h
patching file lib/floor0.c
patching file lib/floor1.c
patching file lib/info.c
patching file lib/lsp.c
patching file lib/mapping0.c
patching file lib/misc.h
patching file lib/os.h
patching file lib/res0.c
patching file lib/sharedbook.c
patching file lib/synthesis.c
patching file lib/vorbisenc.c
patching file lib/vorbisfile.c

/tmp/aotuv-b6.03_20110424-20140429 $ curl -s 'https://freac.org/patches/libvorbis-aotuv_b6.03_2014-1.3.5-lancer.patch' | patch -p1
patching file configure
patching file configure.ac
patching file lib/Makefile.am
patching file lib/Makefile.in
patching file lib/block.c
patching file lib/codebook.c
patching file lib/cpu.c
patching file lib/envelope.c
patching file lib/floor1.c
patching file lib/info.c
patching file lib/mapping0.c
patching file lib/mdct.c
patching file lib/mdct.h
patching file lib/misc.h
patching file lib/psy.c
patching file lib/psy.h
patching file lib/sharedbook.c
patching file lib/smallft.c
patching file lib/vorbisfile.c
patching file lib/window.c
patching file lib/xmmlib.c
patching file lib/xmmlib.h
patching file win32/VS2010/libvorbis/libvorbis_dynamic.vcxproj
patching file win32/VS2010/libvorbis/libvorbis_static.vcxproj
patching file win32/vorbis.def
patching file win32/vorbisenc.def
patching file win32/vorbisfile.def

/tmp/aotuv-b6.03_20110424-20140429 $ curl -s 'https://freac.org/patches/libvorbis-aotuv_b6.03_2014-lancer-x64.patch' | patch -p1
patching file lib/codebook.c
patching file lib/psy.h
patching file lib/xmmlib.c
patching file lib/xmmlib.h

/tmp/aotuv-b6.03_20110424-20140429 $ chmod +x configure

/tmp/aotuv-b6.03_20110424-20140429 $ CFLAGS='-fno-strict-aliasing -march=native' ./configure --prefix=/opt/aotuv --disable-static
checking build system type... x86_64-unknown-linux-gnu
checking host system type... x86_64-unknown-linux-gnu
checking target system type... x86_64-unknown-linux-gnu
checking for a BSD-compatible install... /usr/bin/install -c
checking whether build environment is sane... yes
checking for a thread-safe mkdir -p... /bin/mkdir -p
checking for gawk... gawk
checking whether make sets $(MAKE)... yes
checking whether to enable maintainer-specific portions of Makefiles... no
checking for gcc... gcc
checking whether the C compiler works... yes
checking for C compiler default output file name... a.out
checking for suffix of executables...
checking whether we are cross compiling... no
checking for suffix of object files... o
checking whether we are using the GNU C compiler... yes
checking whether gcc accepts -g... yes
checking for gcc option to accept ISO C89... none needed
checking for style of include used by make... GNU
checking dependency style of gcc... gcc3
checking how to run the C preprocessor... gcc -E
checking for inline... inline
checking how to print strings... printf
checking for a sed that does not truncate output... /bin/sed
checking for grep that handles long lines and -e... /bin/grep
checking for egrep... /bin/grep -E
checking for fgrep... /bin/grep -F
checking for ld used by gcc... /usr/bin/ld
checking if the linker (/usr/bin/ld) is GNU ld... yes
checking for BSD- or MS-compatible name lister (nm)... /usr/bin/nm -B
checking the name lister (/usr/bin/nm -B) interface... BSD nm
checking whether ln -s works... yes
checking the maximum length of command line arguments... 1572864
checking whether the shell understands some XSI constructs... yes
checking whether the shell understands "+="... yes
checking how to convert x86_64-unknown-linux-gnu file names to x86_64-unknown-linux-gnu format... func_convert_file_noop
checking how to convert x86_64-unknown-linux-gnu file names to toolchain format... func_convert_file_noop
checking for /usr/bin/ld option to reload object files... -r
checking for objdump... objdump
checking how to recognize dependent libraries... pass_all
checking for dlltool... dlltool
checking how to associate runtime and link libraries... printf %s\n
checking for ar... ar
checking for archiver @FILE support... @
checking for strip... strip
checking for ranlib... ranlib
checking command to parse /usr/bin/nm -B output from gcc object... ok
checking for sysroot... no
checking for mt... mt
checking if mt is a manifest tool... no
checking for ANSI C header files... yes
checking for sys/types.h... yes
checking for sys/stat.h... yes
checking for stdlib.h... yes
checking for string.h... yes
checking for memory.h... yes
checking for strings.h... yes
checking for inttypes.h... yes
checking for stdint.h... yes
checking for unistd.h... yes
checking for dlfcn.h... yes
checking for objdir... .libs
checking if gcc supports -fno-rtti -fno-exceptions... no
checking for gcc option to produce PIC... -fPIC -DPIC
checking if gcc PIC flag -fPIC -DPIC works... yes
checking if gcc static flag -static works... yes
checking if gcc supports -c -o file.o... yes
checking if gcc supports -c -o file.o... (cached) yes
checking whether the gcc linker (/usr/bin/ld -m elf_x86_64) supports shared libraries... yes
checking whether -lc should be explicitly linked in... no
checking dynamic linker characteristics... GNU/Linux ld.so
checking how to hardcode library paths into programs... immediate
checking whether stripping libraries is possible... yes
checking if libtool supports shared libraries... yes
checking whether to build shared libraries... yes
checking whether to build static libraries... no
checking whether gcc and cc understand -c and -o together... yes
checking GCC version... 4.8
checking if gcc accepts -Wdeclaration-after-statement... yes
checking for memory.h... (cached) yes
checking for cos in -lm... yes
checking for pthread_create in -lpthread... yes
checking for pkg-config... /usr/bin/pkg-config
checking pkg-config is at least version 0.9.0... yes
checking for OGG... yes
checking for size_t... yes
checking for working alloca.h... yes
checking for alloca... yes
checking for working memcmp... yes
configure: creating ./config.status
config.status: creating Makefile
config.status: creating m4/Makefile
config.status: creating lib/Makefile
config.status: creating lib/modes/Makefile
config.status: creating lib/books/Makefile
config.status: creating lib/books/coupled/Makefile
config.status: creating lib/books/uncoupled/Makefile
config.status: creating lib/books/floor/Makefile
config.status: creating doc/Makefile
config.status: creating doc/vorbisfile/Makefile
config.status: creating doc/vorbisenc/Makefile
config.status: creating doc/libvorbis/Makefile
config.status: creating doc/Doxyfile
config.status: creating include/Makefile
config.status: creating include/vorbis/Makefile
config.status: creating examples/Makefile
config.status: creating test/Makefile
config.status: creating vq/Makefile
config.status: creating libvorbis.spec
config.status: creating vorbis.pc
config.status: creating vorbisenc.pc
config.status: creating vorbisfile.pc
config.status: creating vorbis-uninstalled.pc
config.status: creating vorbisenc-uninstalled.pc
config.status: creating vorbisfile-uninstalled.pc
config.status: creating config.h
config.status: executing depfiles commands
config.status: executing libtool commands

/tmp/aotuv-b6.03_20110424-20140429 $ make
make  all-recursive
make[1]: entrant dans le répertoire « /tmp/aotuv-b6.03_20110424-20140429 »
Making all in m4
make[2]: entrant dans le répertoire « /tmp/aotuv-b6.03_20110424-20140429/m4 »
make[2]: Rien à faire pour « all ».
make[2]: quittant le répertoire « /tmp/aotuv-b6.03_20110424-20140429/m4 »
Making all in include
make[2]: entrant dans le répertoire « /tmp/aotuv-b6.03_20110424-20140429/include »
Making all in vorbis
make[3]: entrant dans le répertoire « /tmp/aotuv-b6.03_20110424-20140429/include/vorbis »
make[3]: Rien à faire pour « all ».
make[3]: quittant le répertoire « /tmp/aotuv-b6.03_20110424-20140429/include/vorbis »
make[3]: entrant dans le répertoire « /tmp/aotuv-b6.03_20110424-20140429/include »
make[3]: Rien à faire pour « all-am ».
make[3]: quittant le répertoire « /tmp/aotuv-b6.03_20110424-20140429/include »
make[2]: quittant le répertoire « /tmp/aotuv-b6.03_20110424-20140429/include »
Making all in vq
make[2]: entrant dans le répertoire « /tmp/aotuv-b6.03_20110424-20140429/vq »
make[2]: Rien à faire pour « all ».
make[2]: quittant le répertoire « /tmp/aotuv-b6.03_20110424-20140429/vq »
Making all in lib
make[2]: entrant dans le répertoire « /tmp/aotuv-b6.03_20110424-20140429/lib »
Making all in modes
make[3]: entrant dans le répertoire « /tmp/aotuv-b6.03_20110424-20140429/lib/modes »
make[3]: Rien à faire pour « all ».
make[3]: quittant le répertoire « /tmp/aotuv-b6.03_20110424-20140429/lib/modes »
Making all in books
make[3]: entrant dans le répertoire « /tmp/aotuv-b6.03_20110424-20140429/lib/books »
Making all in coupled
make[4]: entrant dans le répertoire « /tmp/aotuv-b6.03_20110424-20140429/lib/books/coupled »
make[4]: Rien à faire pour « all ».
make[4]: quittant le répertoire « /tmp/aotuv-b6.03_20110424-20140429/lib/books/coupled »
Making all in uncoupled
make[4]: entrant dans le répertoire « /tmp/aotuv-b6.03_20110424-20140429/lib/books/uncoupled »
make[4]: Rien à faire pour « all ».
make[4]: quittant le répertoire « /tmp/aotuv-b6.03_20110424-20140429/lib/books/uncoupled »
Making all in floor
make[4]: entrant dans le répertoire « /tmp/aotuv-b6.03_20110424-20140429/lib/books/floor »
make[4]: Rien à faire pour « all ».
make[4]: quittant le répertoire « /tmp/aotuv-b6.03_20110424-20140429/lib/books/floor »
make[4]: entrant dans le répertoire « /tmp/aotuv-b6.03_20110424-20140429/lib/books »
make[4]: Rien à faire pour « all-am ».
make[4]: quittant le répertoire « /tmp/aotuv-b6.03_20110424-20140429/lib/books »
make[3]: quittant le répertoire « /tmp/aotuv-b6.03_20110424-20140429/lib/books »
make[3]: entrant dans le répertoire « /tmp/aotuv-b6.03_20110424-20140429/lib »
/bin/bash ../libtool --tag=CC  --mode=compile gcc -DHAVE_CONFIG_H -I. -I.. -I../include      -O20 -Wall -Wextra -Wno-unknown-pragmas -ffast-math -D_REENTRANT -fsigned-char -Wdeclaration-after-statement -fno-strict-aliasing -march=native -DUSE_MEMORY_H -MT mdct.lo -MD -MP -MF .deps/mdct.Tpo -c -o mdct.lo mdct.c
libtool: compile:  gcc -DHAVE_CONFIG_H -I. -I.. -I../include -O20 -Wall -Wextra -Wno-unknown-pragmas -ffast-math -D_REENTRANT -fsigned-char -Wdeclaration-after-statement -fno-strict-aliasing -march=native -DUSE_MEMORY_H -MT mdct.lo -MD -MP -MF .deps/mdct.Tpo -c mdct.c  -fPIC -DPIC -o .libs/mdct.o
mv -f .deps/mdct.Tpo .deps/mdct.Plo
/bin/bash ../libtool --tag=CC  --mode=compile gcc -DHAVE_CONFIG_H -I. -I.. -I../include      -O20 -Wall -Wextra -Wno-unknown-pragmas -ffast-math -D_REENTRANT -fsigned-char -Wdeclaration-after-statement -fno-strict-aliasing -march=native -DUSE_MEMORY_H -MT smallft.lo -MD -MP -MF .deps/smallft.Tpo -c -o smallft.lo smallft.c
libtool: compile:  gcc -DHAVE_CONFIG_H -I. -I.. -I../include -O20 -Wall -Wextra -Wno-unknown-pragmas -ffast-math -D_REENTRANT -fsigned-char -Wdeclaration-after-statement -fno-strict-aliasing -march=native -DUSE_MEMORY_H -MT smallft.lo -MD -MP -MF .deps/smallft.Tpo -c smallft.c  -fPIC -DPIC -o .libs/smallft.o
smallft.c: In function `rftfsub':
smallft.c:5436:40: warning: unused parameter `nc' [-Wunused-parameter]
 STIN void rftfsub(int n, float *a, int nc, float *w)
                                        ^
smallft.c: In function `rdft':
smallft.c:5536:6: warning: variable `nw' set but not used [-Wunused-but-set-variable]
  int nw, nc;
      ^
smallft.c: In function `cft1st':
smallft.c:4867:8: warning: `XMM0' is used uninitialized in this function [-Wuninitialized]
  XMM0  = _mm_loadl_pi(XMM0, (__m64*)(a  ));
        ^
smallft.c:4868:8: warning: `XMM2' is used uninitialized in this function [-Wuninitialized]
  XMM2  = _mm_loadl_pi(XMM2, (__m64*)(a+ 2));
        ^
smallft.c:4884:8: warning: `XMM4' is used uninitialized in this function [-Wuninitialized]
  XMM4  = _mm_loadl_pi(XMM4, (__m64*)(a+ 8));
        ^
smallft.c:4885:8: warning: `XMM5' is used uninitialized in this function [-Wuninitialized]
  XMM5  = _mm_loadl_pi(XMM5, (__m64*)(a+10));
        ^
mv -f .deps/smallft.Tpo .deps/smallft.Plo
/bin/bash ../libtool --tag=CC  --mode=compile gcc -DHAVE_CONFIG_H -I. -I.. -I../include      -O20 -Wall -Wextra -Wno-unknown-pragmas -ffast-math -D_REENTRANT -fsigned-char -Wdeclaration-after-statement -fno-strict-aliasing -march=native -DUSE_MEMORY_H -MT block.lo -MD -MP -MF .deps/block.Tpo -c -o block.lo block.c
libtool: compile:  gcc -DHAVE_CONFIG_H -I. -I.. -I../include -O20 -Wall -Wextra -Wno-unknown-pragmas -ffast-math -D_REENTRANT -fsigned-char -Wdeclaration-after-statement -fno-strict-aliasing -march=native -DUSE_MEMORY_H -MT block.lo -MD -MP -MF .deps/block.Tpo -c block.c  -fPIC -DPIC -o .libs/block.o
block.c: In function `vorbis_synthesis_blockin':
block.c:955:3: warning: passing argument 2 of `vorbis_synthesis_blockin_pmadd' discards `const' qualifier from pointer target type [enabled by default]
  vorbis_synthesis_blockin_pmadd(pcm, w, p, n1);
  ^
block.c:848:11: note: expected `float *' but argument is of type `const float *'
 STIN void vorbis_synthesis_blockin_pmadd(float *pcm, float *w, float *p, long count)
          ^
block.c:961:3: warning: passing argument 2 of `vorbis_synthesis_blockin_pmadd' discards `const' qualifier from pointer target type [enabled by default]
  vorbis_synthesis_blockin_pmadd(pcm, w, p, n0);
  ^
block.c:848:11: note: expected `float *' but argument is of type `const float *'
 STIN void vorbis_synthesis_blockin_pmadd(float *pcm, float *w, float *p, long count)
          ^
block.c:969:3: warning: passing argument 2 of `vorbis_synthesis_blockin_pmadd' discards `const' qualifier from pointer target type [enabled by default]
  vorbis_synthesis_blockin_pmadd(pcm, w, p, n0);
  ^
block.c:848:11: note: expected `float *' but argument is of type `const float *'
 STIN void vorbis_synthesis_blockin_pmadd(float *pcm, float *w, float *p, long count)
          ^
block.c:976:3: warning: passing argument 2 of `vorbis_synthesis_blockin_pmadd' discards `const' qualifier from pointer target type [enabled by default]
  vorbis_synthesis_blockin_pmadd(pcm, w, p, n0);
  ^
block.c:848:11: note: expected `float *' but argument is of type `const float *'
 STIN void vorbis_synthesis_blockin_pmadd(float *pcm, float *w, float *p, long count)
          ^
mv -f .deps/block.Tpo .deps/block.Plo
/bin/bash ../libtool --tag=CC  --mode=compile gcc -DHAVE_CONFIG_H -I. -I.. -I../include      -O20 -Wall -Wextra -Wno-unknown-pragmas -ffast-math -D_REENTRANT -fsigned-char -Wdeclaration-after-statement -fno-strict-aliasing -march=native -DUSE_MEMORY_H -MT envelope.lo -MD -MP -MF .deps/envelope.Tpo -c -o envelope.lo envelope.c
libtool: compile:  gcc -DHAVE_CONFIG_H -I. -I.. -I../include -O20 -Wall -Wextra -Wno-unknown-pragmas -ffast-math -D_REENTRANT -fsigned-char -Wdeclaration-after-statement -fno-strict-aliasing -march=native -DUSE_MEMORY_H -MT envelope.lo -MD -MP -MF .deps/envelope.Tpo -c envelope.c  -fPIC -DPIC -o .libs/envelope.o
mv -f .deps/envelope.Tpo .deps/envelope.Plo
/bin/bash ../libtool --tag=CC  --mode=compile gcc -DHAVE_CONFIG_H -I. -I.. -I../include      -O20 -Wall -Wextra -Wno-unknown-pragmas -ffast-math -D_REENTRANT -fsigned-char -Wdeclaration-after-statement -fno-strict-aliasing -march=native -DUSE_MEMORY_H -MT window.lo -MD -MP -MF .deps/window.Tpo -c -o window.lo window.c
libtool: compile:  gcc -DHAVE_CONFIG_H -I. -I.. -I../include -O20 -Wall -Wextra -Wno-unknown-pragmas -ffast-math -D_REENTRANT -fsigned-char -Wdeclaration-after-statement -fno-strict-aliasing -march=native -DUSE_MEMORY_H -MT window.lo -MD -MP -MF .deps/window.Tpo -c window.c  -fPIC -DPIC -o .libs/window.o
mv -f .deps/window.Tpo .deps/window.Plo
/bin/bash ../libtool --tag=CC  --mode=compile gcc -DHAVE_CONFIG_H -I. -I.. -I../include      -O20 -Wall -Wextra -Wno-unknown-pragmas -ffast-math -D_REENTRANT -fsigned-char -Wdeclaration-after-statement -fno-strict-aliasing -march=native -DUSE_MEMORY_H -MT lsp.lo -MD -MP -MF .deps/lsp.Tpo -c -o lsp.lo lsp.c
libtool: compile:  gcc -DHAVE_CONFIG_H -I. -I.. -I../include -O20 -Wall -Wextra -Wno-unknown-pragmas -ffast-math -D_REENTRANT -fsigned-char -Wdeclaration-after-statement -fno-strict-aliasing -march=native -DUSE_MEMORY_H -MT lsp.lo -MD -MP -MF .deps/lsp.Tpo -c lsp.c  -fPIC -DPIC -o .libs/lsp.o
mv -f .deps/lsp.Tpo .deps/lsp.Plo
/bin/bash ../libtool --tag=CC  --mode=compile gcc -DHAVE_CONFIG_H -I. -I.. -I../include      -O20 -Wall -Wextra -Wno-unknown-pragmas -ffast-math -D_REENTRANT -fsigned-char -Wdeclaration-after-statement -fno-strict-aliasing -march=native -DUSE_MEMORY_H -MT lpc.lo -MD -MP -MF .deps/lpc.Tpo -c -o lpc.lo lpc.c
libtool: compile:  gcc -DHAVE_CONFIG_H -I. -I.. -I../include -O20 -Wall -Wextra -Wno-unknown-pragmas -ffast-math -D_REENTRANT -fsigned-char -Wdeclaration-after-statement -fno-strict-aliasing -march=native -DUSE_MEMORY_H -MT lpc.lo -MD -MP -MF .deps/lpc.Tpo -c lpc.c  -fPIC -DPIC -o .libs/lpc.o
mv -f .deps/lpc.Tpo .deps/lpc.Plo
/bin/bash ../libtool --tag=CC  --mode=compile gcc -DHAVE_CONFIG_H -I. -I.. -I../include      -O20 -Wall -Wextra -Wno-unknown-pragmas -ffast-math -D_REENTRANT -fsigned-char -Wdeclaration-after-statement -fno-strict-aliasing -march=native -DUSE_MEMORY_H -MT analysis.lo -MD -MP -MF .deps/analysis.Tpo -c -o analysis.lo analysis.c
libtool: compile:  gcc -DHAVE_CONFIG_H -I. -I.. -I../include -O20 -Wall -Wextra -Wno-unknown-pragmas -ffast-math -D_REENTRANT -fsigned-char -Wdeclaration-after-statement -fno-strict-aliasing -march=native -DUSE_MEMORY_H -MT analysis.lo -MD -MP -MF .deps/analysis.Tpo -c analysis.c  -fPIC -DPIC -o .libs/analysis.o
mv -f .deps/analysis.Tpo .deps/analysis.Plo
/bin/bash ../libtool --tag=CC  --mode=compile gcc -DHAVE_CONFIG_H -I. -I.. -I../include      -O20 -Wall -Wextra -Wno-unknown-pragmas -ffast-math -D_REENTRANT -fsigned-char -Wdeclaration-after-statement -fno-strict-aliasing -march=native -DUSE_MEMORY_H -MT synthesis.lo -MD -MP -MF .deps/synthesis.Tpo -c -o synthesis.lo synthesis.c
libtool: compile:  gcc -DHAVE_CONFIG_H -I. -I.. -I../include -O20 -Wall -Wextra -Wno-unknown-pragmas -ffast-math -D_REENTRANT -fsigned-char -Wdeclaration-after-statement -fno-strict-aliasing -march=native -DUSE_MEMORY_H -MT synthesis.lo -MD -MP -MF .deps/synthesis.Tpo -c synthesis.c  -fPIC -DPIC -o .libs/synthesis.o
mv -f .deps/synthesis.Tpo .deps/synthesis.Plo
/bin/bash ../libtool --tag=CC  --mode=compile gcc -DHAVE_CONFIG_H -I. -I.. -I../include      -O20 -Wall -Wextra -Wno-unknown-pragmas -ffast-math -D_REENTRANT -fsigned-char -Wdeclaration-after-statement -fno-strict-aliasing -march=native -DUSE_MEMORY_H -MT psy.lo -MD -MP -MF .deps/psy.Tpo -c -o psy.lo psy.c
libtool: compile:  gcc -DHAVE_CONFIG_H -I. -I.. -I../include -O20 -Wall -Wextra -Wno-unknown-pragmas -ffast-math -D_REENTRANT -fsigned-char -Wdeclaration-after-statement -fno-strict-aliasing -march=native -DUSE_MEMORY_H -MT psy.lo -MD -MP -MF .deps/psy.Tpo -c psy.c  -fPIC -DPIC -o .libs/psy.o
psy.c: In function `bark_noise_hybridmp':
psy.c:1216:16: warning: unused parameter `tf' [-Wunused-parameter]
        float *tf){
                ^
mv -f .deps/psy.Tpo .deps/psy.Plo
/bin/bash ../libtool --tag=CC  --mode=compile gcc -DHAVE_CONFIG_H -I. -I.. -I../include      -O20 -Wall -Wextra -Wno-unknown-pragmas -ffast-math -D_REENTRANT -fsigned-char -Wdeclaration-after-statement -fno-strict-aliasing -march=native -DUSE_MEMORY_H -MT info.lo -MD -MP -MF .deps/info.Tpo -c -o info.lo info.c
libtool: compile:  gcc -DHAVE_CONFIG_H -I. -I.. -I../include -O20 -Wall -Wextra -Wno-unknown-pragmas -ffast-math -D_REENTRANT -fsigned-char -Wdeclaration-after-statement -fno-strict-aliasing -march=native -DUSE_MEMORY_H -MT info.lo -MD -MP -MF .deps/info.Tpo -c info.c  -fPIC -DPIC -o .libs/info.o
mv -f .deps/info.Tpo .deps/info.Plo
/bin/bash ../libtool --tag=CC  --mode=compile gcc -DHAVE_CONFIG_H -I. -I.. -I../include      -O20 -Wall -Wextra -Wno-unknown-pragmas -ffast-math -D_REENTRANT -fsigned-char -Wdeclaration-after-statement -fno-strict-aliasing -march=native -DUSE_MEMORY_H -MT floor1.lo -MD -MP -MF .deps/floor1.Tpo -c -o floor1.lo floor1.c
libtool: compile:  gcc -DHAVE_CONFIG_H -I. -I.. -I../include -O20 -Wall -Wextra -Wno-unknown-pragmas -ffast-math -D_REENTRANT -fsigned-char -Wdeclaration-after-statement -fno-strict-aliasing -march=native -DUSE_MEMORY_H -MT floor1.lo -MD -MP -MF .deps/floor1.Tpo -c floor1.c  -fPIC -DPIC -o .libs/floor1.o
mv -f .deps/floor1.Tpo .deps/floor1.Plo
/bin/bash ../libtool --tag=CC  --mode=compile gcc -DHAVE_CONFIG_H -I. -I.. -I../include      -O20 -Wall -Wextra -Wno-unknown-pragmas -ffast-math -D_REENTRANT -fsigned-char -Wdeclaration-after-statement -fno-strict-aliasing -march=native -DUSE_MEMORY_H -MT floor0.lo -MD -MP -MF .deps/floor0.Tpo -c -o floor0.lo floor0.c
libtool: compile:  gcc -DHAVE_CONFIG_H -I. -I.. -I../include -O20 -Wall -Wextra -Wno-unknown-pragmas -ffast-math -D_REENTRANT -fsigned-char -Wdeclaration-after-statement -fno-strict-aliasing -march=native -DUSE_MEMORY_H -MT floor0.lo -MD -MP -MF .deps/floor0.Tpo -c floor0.c  -fPIC -DPIC -o .libs/floor0.o
mv -f .deps/floor0.Tpo .deps/floor0.Plo
/bin/bash ../libtool --tag=CC  --mode=compile gcc -DHAVE_CONFIG_H -I. -I.. -I../include      -O20 -Wall -Wextra -Wno-unknown-pragmas -ffast-math -D_REENTRANT -fsigned-char -Wdeclaration-after-statement -fno-strict-aliasing -march=native -DUSE_MEMORY_H -MT res0.lo -MD -MP -MF .deps/res0.Tpo -c -o res0.lo res0.c
libtool: compile:  gcc -DHAVE_CONFIG_H -I. -I.. -I../include -O20 -Wall -Wextra -Wno-unknown-pragmas -ffast-math -D_REENTRANT -fsigned-char -Wdeclaration-after-statement -fno-strict-aliasing -march=native -DUSE_MEMORY_H -MT res0.lo -MD -MP -MF .deps/res0.Tpo -c res0.c  -fPIC -DPIC -o .libs/res0.o
mv -f .deps/res0.Tpo .deps/res0.Plo
/bin/bash ../libtool --tag=CC  --mode=compile gcc -DHAVE_CONFIG_H -I. -I.. -I../include      -O20 -Wall -Wextra -Wno-unknown-pragmas -ffast-math -D_REENTRANT -fsigned-char -Wdeclaration-after-statement -fno-strict-aliasing -march=native -DUSE_MEMORY_H -MT mapping0.lo -MD -MP -MF .deps/mapping0.Tpo -c -o mapping0.lo mapping0.c
libtool: compile:  gcc -DHAVE_CONFIG_H -I. -I.. -I../include -O20 -Wall -Wextra -Wno-unknown-pragmas -ffast-math -D_REENTRANT -fsigned-char -Wdeclaration-after-statement -fno-strict-aliasing -march=native -DUSE_MEMORY_H -MT mapping0.lo -MD -MP -MF .deps/mapping0.Tpo -c mapping0.c  -fPIC -DPIC -o .libs/mapping0.o
In file included from misc.h:55:0,
                from os.h:27,
                from bitrate.h:23,
                from codec_internal.h:59,
                from mapping0.c:24:
mapping0.c: In function `_mm_max_horz':
xmmlib.h:209:5: warning: `y' is used uninitialized in this function [-Wuninitialized]
  y  = _mm_movehl_ps(y, x);
    ^
mv -f .deps/mapping0.Tpo .deps/mapping0.Plo
/bin/bash ../libtool --tag=CC  --mode=compile gcc -DHAVE_CONFIG_H -I. -I.. -I../include      -O20 -Wall -Wextra -Wno-unknown-pragmas -ffast-math -D_REENTRANT -fsigned-char -Wdeclaration-after-statement -fno-strict-aliasing -march=native -DUSE_MEMORY_H -MT registry.lo -MD -MP -MF .deps/registry.Tpo -c -o registry.lo registry.c
libtool: compile:  gcc -DHAVE_CONFIG_H -I. -I.. -I../include -O20 -Wall -Wextra -Wno-unknown-pragmas -ffast-math -D_REENTRANT -fsigned-char -Wdeclaration-after-statement -fno-strict-aliasing -march=native -DUSE_MEMORY_H -MT registry.lo -MD -MP -MF .deps/registry.Tpo -c registry.c  -fPIC -DPIC -o .libs/registry.o
mv -f .deps/registry.Tpo .deps/registry.Plo
/bin/bash ../libtool --tag=CC  --mode=compile gcc -DHAVE_CONFIG_H -I. -I.. -I../include      -O20 -Wall -Wextra -Wno-unknown-pragmas -ffast-math -D_REENTRANT -fsigned-char -Wdeclaration-after-statement -fno-strict-aliasing -march=native -DUSE_MEMORY_H -MT codebook.lo -MD -MP -MF .deps/codebook.Tpo -c -o codebook.lo codebook.c
libtool: compile:  gcc -DHAVE_CONFIG_H -I. -I.. -I../include -O20 -Wall -Wextra -Wno-unknown-pragmas -ffast-math -D_REENTRANT -fsigned-char -Wdeclaration-after-statement -fno-strict-aliasing -march=native -DUSE_MEMORY_H -MT codebook.lo -MD -MP -MF .deps/codebook.Tpo -c codebook.c  -fPIC -DPIC -o .libs/codebook.o
codebook.c:81:6: warning: return type defaults to `int' [-Wreturn-type]
 STIN vorbis_oggpack_write(oggpack_buffer *b, unsigned long value, int bits)
      ^
codebook.c: In function `vorbis_book_decodevv_add':
codebook.c:626:12: warning: unused variable `entry' [-Wunused-variable]
  long i,j,entry;
            ^
codebook.c: In function `vorbis_oggpack_write':
codebook.c:111:1: warning: control reaches end of non-void function [-Wreturn-type]
 }
 ^
mv -f .deps/codebook.Tpo .deps/codebook.Plo
/bin/bash ../libtool --tag=CC  --mode=compile gcc -DHAVE_CONFIG_H -I. -I.. -I../include      -O20 -Wall -Wextra -Wno-unknown-pragmas -ffast-math -D_REENTRANT -fsigned-char -Wdeclaration-after-statement -fno-strict-aliasing -march=native -DUSE_MEMORY_H -MT sharedbook.lo -MD -MP -MF .deps/sharedbook.Tpo -c -o sharedbook.lo sharedbook.c
libtool: compile:  gcc -DHAVE_CONFIG_H -I. -I.. -I../include -O20 -Wall -Wextra -Wno-unknown-pragmas -ffast-math -D_REENTRANT -fsigned-char -Wdeclaration-after-statement -fno-strict-aliasing -march=native -DUSE_MEMORY_H -MT sharedbook.lo -MD -MP -MF .deps/sharedbook.Tpo -c sharedbook.c  -fPIC -DPIC -o .libs/sharedbook.o
mv -f .deps/sharedbook.Tpo .deps/sharedbook.Plo
/bin/bash ../libtool --tag=CC  --mode=compile gcc -DHAVE_CONFIG_H -I. -I.. -I../include      -O20 -Wall -Wextra -Wno-unknown-pragmas -ffast-math -D_REENTRANT -fsigned-char -Wdeclaration-after-statement -fno-strict-aliasing -march=native -DUSE_MEMORY_H -MT lookup.lo -MD -MP -MF .deps/lookup.Tpo -c -o lookup.lo lookup.c
libtool: compile:  gcc -DHAVE_CONFIG_H -I. -I.. -I../include -O20 -Wall -Wextra -Wno-unknown-pragmas -ffast-math -D_REENTRANT -fsigned-char -Wdeclaration-after-statement -fno-strict-aliasing -march=native -DUSE_MEMORY_H -MT lookup.lo -MD -MP -MF .deps/lookup.Tpo -c lookup.c  -fPIC -DPIC -o .libs/lookup.o
mv -f .deps/lookup.Tpo .deps/lookup.Plo
/bin/bash ../libtool --tag=CC  --mode=compile gcc -DHAVE_CONFIG_H -I. -I.. -I../include      -O20 -Wall -Wextra -Wno-unknown-pragmas -ffast-math -D_REENTRANT -fsigned-char -Wdeclaration-after-statement -fno-strict-aliasing -march=native -DUSE_MEMORY_H -MT bitrate.lo -MD -MP -MF .deps/bitrate.Tpo -c -o bitrate.lo bitrate.c
libtool: compile:  gcc -DHAVE_CONFIG_H -I. -I.. -I../include -O20 -Wall -Wextra -Wno-unknown-pragmas -ffast-math -D_REENTRANT -fsigned-char -Wdeclaration-after-statement -fno-strict-aliasing -march=native -DUSE_MEMORY_H -MT bitrate.lo -MD -MP -MF .deps/bitrate.Tpo -c bitrate.c  -fPIC -DPIC -o .libs/bitrate.o
mv -f .deps/bitrate.Tpo .deps/bitrate.Plo
/bin/bash ../libtool --tag=CC  --mode=compile gcc -DHAVE_CONFIG_H -I. -I.. -I../include      -O20 -Wall -Wextra -Wno-unknown-pragmas -ffast-math -D_REENTRANT -fsigned-char -Wdeclaration-after-statement -fno-strict-aliasing -march=native -DUSE_MEMORY_H -MT cpu.lo -MD -MP -MF .deps/cpu.Tpo -c -o cpu.lo cpu.c
libtool: compile:  gcc -DHAVE_CONFIG_H -I. -I.. -I../include -O20 -Wall -Wextra -Wno-unknown-pragmas -ffast-math -D_REENTRANT -fsigned-char -Wdeclaration-after-statement -fno-strict-aliasing -march=native -DUSE_MEMORY_H -MT cpu.lo -MD -MP -MF .deps/cpu.Tpo -c cpu.c  -fPIC -DPIC -o .libs/cpu.o
mv -f .deps/cpu.Tpo .deps/cpu.Plo
/bin/bash ../libtool --tag=CC  --mode=compile gcc -DHAVE_CONFIG_H -I. -I.. -I../include      -O20 -Wall -Wextra -Wno-unknown-pragmas -ffast-math -D_REENTRANT -fsigned-char -Wdeclaration-after-statement -fno-strict-aliasing -march=native -DUSE_MEMORY_H -MT xmmlib.lo -MD -MP -MF .deps/xmmlib.Tpo -c -o xmmlib.lo xmmlib.c
libtool: compile:  gcc -DHAVE_CONFIG_H -I. -I.. -I../include -O20 -Wall -Wextra -Wno-unknown-pragmas -ffast-math -D_REENTRANT -fsigned-char -Wdeclaration-after-statement -fno-strict-aliasing -march=native -DUSE_MEMORY_H -MT xmmlib.lo -MD -MP -MF .deps/xmmlib.Tpo -c xmmlib.c  -fPIC -DPIC -o .libs/xmmlib.o
xmmlib.c: In function `xmm_malloc':
xmmlib.c:130:9: warning: assignment makes pointer from integer without a cast [enabled by default]
  p2[-1] = size;
        ^
mv -f .deps/xmmlib.Tpo .deps/xmmlib.Plo
/bin/bash ../libtool --tag=CC  --mode=link gcc  -O20 -Wall -Wextra -Wno-unknown-pragmas -ffast-math -D_REENTRANT -fsigned-char -Wdeclaration-after-statement -fno-strict-aliasing -march=native -DUSE_MEMORY_H -no-undefined -version-info 4:7:4  -o libvorbis.la -rpath /opt/aotuv/lib mdct.lo smallft.lo block.lo envelope.lo window.lo lsp.lo lpc.lo analysis.lo synthesis.lo psy.lo info.lo floor1.lo floor0.lo res0.lo mapping0.lo registry.lo codebook.lo sharedbook.lo lookup.lo bitrate.lo cpu.lo xmmlib.lo -lm -logg 
libtool: link: gcc -shared  -fPIC -DPIC  .libs/mdct.o .libs/smallft.o .libs/block.o .libs/envelope.o .libs/window.o .libs/lsp.o .libs/lpc.o .libs/analysis.o .libs/synthesis.o .libs/psy.o .libs/info.o .libs/floor1.o .libs/floor0.o .libs/res0.o .libs/mapping0.o .libs/registry.o .libs/codebook.o .libs/sharedbook.o .libs/lookup.o .libs/bitrate.o .libs/cpu.o .libs/xmmlib.o  -lm -logg  -O20 -march=native  -Wl,-soname -Wl,libvorbis.so.0 -o .libs/libvorbis.so.0.4.7
libtool: link: (cd ".libs" && rm -f "libvorbis.so.0" && ln -s "libvorbis.so.0.4.7" "libvorbis.so.0")
libtool: link: (cd ".libs" && rm -f "libvorbis.so" && ln -s "libvorbis.so.0.4.7" "libvorbis.so")
libtool: link: ( cd ".libs" && rm -f "libvorbis.la" && ln -s "../libvorbis.la" "libvorbis.la" )
/bin/bash ../libtool --tag=CC  --mode=compile gcc -DHAVE_CONFIG_H -I. -I.. -I../include      -O20 -Wall -Wextra -Wno-unknown-pragmas -ffast-math -D_REENTRANT -fsigned-char -Wdeclaration-after-statement -fno-strict-aliasing -march=native -DUSE_MEMORY_H -MT vorbisfile.lo -MD -MP -MF .deps/vorbisfile.Tpo -c -o vorbisfile.lo vorbisfile.c
libtool: compile:  gcc -DHAVE_CONFIG_H -I. -I.. -I../include -O20 -Wall -Wextra -Wno-unknown-pragmas -ffast-math -D_REENTRANT -fsigned-char -Wdeclaration-after-statement -fno-strict-aliasing -march=native -DUSE_MEMORY_H -MT vorbisfile.lo -MD -MP -MF .deps/vorbisfile.Tpo -c vorbisfile.c  -fPIC -DPIC -o .libs/vorbisfile.o
mv -f .deps/vorbisfile.Tpo .deps/vorbisfile.Plo
/bin/bash ../libtool --tag=CC  --mode=link gcc  -O20 -Wall -Wextra -Wno-unknown-pragmas -ffast-math -D_REENTRANT -fsigned-char -Wdeclaration-after-statement -fno-strict-aliasing -march=native -DUSE_MEMORY_H -no-undefined -version-info 6:6:3  -o libvorbisfile.la -rpath /opt/aotuv/lib vorbisfile.lo libvorbis.la -logg 
libtool: link: gcc -shared  -fPIC -DPIC  .libs/vorbisfile.o  -Wl,-rpath -Wl,/tmp/aotuv-b6.03_20110424-20140429/lib/.libs -Wl,-rpath -Wl,/opt/aotuv/lib ./.libs/libvorbis.so -lm -logg  -O20 -march=native  -Wl,-soname -Wl,libvorbisfile.so.3 -o .libs/libvorbisfile.so.3.3.6
libtool: link: (cd ".libs" && rm -f "libvorbisfile.so.3" && ln -s "libvorbisfile.so.3.3.6" "libvorbisfile.so.3")
libtool: link: (cd ".libs" && rm -f "libvorbisfile.so" && ln -s "libvorbisfile.so.3.3.6" "libvorbisfile.so")
libtool: link: ( cd ".libs" && rm -f "libvorbisfile.la" && ln -s "../libvorbisfile.la" "libvorbisfile.la" )
/bin/bash ../libtool --tag=CC  --mode=compile gcc -DHAVE_CONFIG_H -I. -I.. -I../include      -O20 -Wall -Wextra -Wno-unknown-pragmas -ffast-math -D_REENTRANT -fsigned-char -Wdeclaration-after-statement -fno-strict-aliasing -march=native -DUSE_MEMORY_H -MT vorbisenc.lo -MD -MP -MF .deps/vorbisenc.Tpo -c -o vorbisenc.lo vorbisenc.c
libtool: compile:  gcc -DHAVE_CONFIG_H -I. -I.. -I../include -O20 -Wall -Wextra -Wno-unknown-pragmas -ffast-math -D_REENTRANT -fsigned-char -Wdeclaration-after-statement -fno-strict-aliasing -march=native -DUSE_MEMORY_H -MT vorbisenc.lo -MD -MP -MF .deps/vorbisenc.Tpo -c vorbisenc.c  -fPIC -DPIC -o .libs/vorbisenc.o
mv -f .deps/vorbisenc.Tpo .deps/vorbisenc.Plo
/bin/bash ../libtool --tag=CC  --mode=link gcc  -O20 -Wall -Wextra -Wno-unknown-pragmas -ffast-math -D_REENTRANT -fsigned-char -Wdeclaration-after-statement -fno-strict-aliasing -march=native -DUSE_MEMORY_H -no-undefined -version-info 2:10:0  -o libvorbisenc.la -rpath /opt/aotuv/lib vorbisenc.lo libvorbis.la -logg 
libtool: link: gcc -shared  -fPIC -DPIC  .libs/vorbisenc.o  -Wl,-rpath -Wl,/tmp/aotuv-b6.03_20110424-20140429/lib/.libs -Wl,-rpath -Wl,/opt/aotuv/lib ./.libs/libvorbis.so -lm -logg  -O20 -march=native  -Wl,-soname -Wl,libvorbisenc.so.2 -o .libs/libvorbisenc.so.2.0.10
libtool: link: (cd ".libs" && rm -f "libvorbisenc.so.2" && ln -s "libvorbisenc.so.2.0.10" "libvorbisenc.so.2")
libtool: link: (cd ".libs" && rm -f "libvorbisenc.so" && ln -s "libvorbisenc.so.2.0.10" "libvorbisenc.so")
libtool: link: ( cd ".libs" && rm -f "libvorbisenc.la" && ln -s "../libvorbisenc.la" "libvorbisenc.la" )
gcc -DHAVE_CONFIG_H -I. -I.. -I../include    -D_V_SELFTEST -O20 -Wall -Wextra -Wno-unknown-pragmas -ffast-math -D_REENTRANT -fsigned-char -Wdeclaration-after-statement -fno-strict-aliasing -march=native -DUSE_MEMORY_H -MT test_sharedbook-sharedbook.o -MD -MP -MF .deps/test_sharedbook-sharedbook.Tpo -c -o test_sharedbook-sharedbook.o `test -f 'sharedbook.c' || echo './'`sharedbook.c
mv -f .deps/test_sharedbook-sharedbook.Tpo .deps/test_sharedbook-sharedbook.Po
/bin/bash ../libtool --tag=CC  --mode=link gcc -D_V_SELFTEST -O20 -Wall -Wextra -Wno-unknown-pragmas -ffast-math -D_REENTRANT -fsigned-char -Wdeclaration-after-statement -fno-strict-aliasing -march=native -DUSE_MEMORY_H  -o test_sharedbook test_sharedbook-sharedbook.o -lm xmmlib.o
libtool: link: gcc -D_V_SELFTEST -O20 -Wall -Wextra -Wno-unknown-pragmas -ffast-math -D_REENTRANT -fsigned-char -Wdeclaration-after-statement -fno-strict-aliasing -march=native -DUSE_MEMORY_H -o test_sharedbook test_sharedbook-sharedbook.o xmmlib.o  -lm
gcc: error: xmmlib.o: No such file or directory
make[3]: *** [test_sharedbook] Erreur 1
make[3]: quittant le répertoire « /tmp/aotuv-b6.03_20110424-20140429/lib »
make[2]: *** [all-recursive] Erreur 1
make[2]: quittant le répertoire « /tmp/aotuv-b6.03_20110424-20140429/lib »
make[1]: *** [all-recursive] Erreur 1
make[1]: quittant le répertoire « /tmp/aotuv-b6.03_20110424-20140429 »
make: *** [all] Erreur 2
Title: aoTuV Patches, Vorbis 1.3.5 and Lancer
Post by: enzo on 2015-08-02 22:16:38
Build fails here (Ubuntu 14.04, x86_64, GCC 4.8.4). Standard AoTuV without the patches builds fine.

This was because of --disable-static, sorry!

I updated the second patch to fix this. Please try again.
Title: aoTuV Patches, Vorbis 1.3.5 and Lancer
Post by: Enig123 on 2015-08-03 01:48:33
The second and third patches are both speed optimizations right?
Title: aoTuV Patches, Vorbis 1.3.5 and Lancer
Post by: enzo on 2015-08-03 10:01:56
The second and third patches are both speed optimizations right?

Yes. Second is speed optimizations, third contains fixes for the second.
Title: aoTuV Patches, Vorbis 1.3.5 and Lancer
Post by: punkrockdude on 2015-08-03 14:45:38
If you manage to compile this on Linux I will be very happy! I miss the Lancer patches on Linux.
Title: aoTuV Patches, Vorbis 1.3.5 and Lancer
Post by: john33 on 2015-08-03 15:12:37
I've compiled and uploaded standard oggenc2 and oggdropXPd compiles to Rarewares but the Lancer builds will have to wait until I return from vacation after 20th August, I'm afraid.
Title: aoTuV Patches, Vorbis 1.3.5 and Lancer
Post by: dutch109 on 2015-08-03 21:37:29
Build fails here (Ubuntu 14.04, x86_64, GCC 4.8.4). Standard AoTuV without the patches builds fine.
This was because of --disable-static, sorry!

I updated the second patch to fix this. Please try again.
If you manage to compile this on Linux I will be very happy! I miss the Lancer patches on Linux.

It now builds on Linux with my configure line, thanks enzo.

Here is a short comparison (1 album) between libvorbis, AoTuV 6.03, and AoTuV 6.03 + patches:

Code: [Select]
$ wvunpack /data/Music\ Archive/Pantera/1992\ -\ Vulgar\ Display\ of\ Power/Vulgar\ Display\ of\ Power.wv -o /tmp/vdop.wav

 WVUNPACK  Hybrid Lossless Audio Decompressor  Linux Version 4.75.0
 Copyright © 1998 - 2015 David Bryant.  All Rights Reserved.

restored /tmp/vdop.wav in 15.52 secs (lossless, 30.48%)

$ time oggenc -Q -q 2 /tmp/vdop.wav -o /tmp/vdop-libvorbis.ogg

real  1m8.906s
user  1m8.730s
sys 0m0.120s

~ $ export LD_PRELOAD='/opt/aotuv/lib/libvorbisfile.so /opt/aotuv/lib/libvorbisenc.so /opt/aotuv/lib/libvorbis.so'

~ $ time oggenc -Q -q 2 /tmp/vdop.wav -o /tmp/vdop-aotuv.ogg

real  1m0.717s
user  1m0.515s
sys 0m0.152s

~ $ export LD_PRELOAD='/opt/aotuv-lancer/lib/libvorbisfile.so /opt/aotuv-lancer/lib/libvorbisenc.so /opt/aotuv-lancer/lib/libvorbis.so'

~ $ time oggenc -Q -q 2 /tmp/vdop.wav -o /tmp/vdop-aotuv-lancer.ogg

real  0m47.082s
user  0m46.855s
sys 0m0.188s

Encoding is ~22% faster than AoTuV and ~32% faster than libvorbis 1.3.2.
I didn't test quality, but file size is very close to vanilla AoTuV.
Title: aoTuV Patches, Vorbis 1.3.5 and Lancer
Post by: taminos on 2015-08-28 15:51:38
I've compiled and uploaded standard oggenc2 and oggdropXPd compiles to Rarewares but the Lancer builds will have to wait until I return from vacation after 20th August, I'm afraid.

any news regarding the lancer builds?
Title: aoTuV Patches, Vorbis 1.3.5 and Lancer
Post by: john33 on 2015-08-28 18:15:02
I'll get to them this weekend, hopefully!
Title: aoTuV Patches, Vorbis 1.3.5 and Lancer
Post by: john33 on 2015-08-31 18:08:23
Code merged and compiles, but I need to sort out compilers before I can generate the different compiles for upload.
Title: aoTuV Patches, Vorbis 1.3.5 and Lancer
Post by: john33 on 2015-09-03 17:03:43
New Lancer builds now available at Rarewares.
Title: aoTuV Patches, Vorbis 1.3.5 and Lancer
Post by: eahm on 2015-09-03 17:59:38
Thanks john33.

Code: [Select]
i7-2700k

D:\Downloads\oggenc2.87-1.3.5-generic>oggenc2.exe "01. Atom Heart Mother.flac"
        File length:  23m 45.0s
        Elapsed time: 0m 41.0s
        Rate:         34.7600
        Average bitrate: 103.0 kb/s

D:\Downloads\oggenc2.87-aoTuVb6.03_2015-generic>oggenc2.exe "01. Atom Heart Mother.flac"
        File length:  23m 45.0s
        Elapsed time: 0m 35.0s
        Rate:         40.7189
        Average bitrate: 109.9 kb/s

D:\Downloads\oggenc2.87-aoTuVb6.03_2015-LancerSSE>oggenc2.exe "01. Atom Heart Mother.flac"
        File length:  23m 45.0s
        Elapsed time: 0m 23.0s
        Rate:         61.9635
        Average bitrate: 109.9 kb/s

D:\Downloads\oggenc2.87-aoTuVb6.03_2015-LancerSSE2>oggenc2.exe "01. Atom Heart Mother.flac"
       File length:  23m 45.0s
        Elapsed time: 0m 23.0s
        Rate:         61.9635
        Average bitrate: 109.9 kb/s

D:\Downloads\oggenc2.87-aoTuVb6.03_2015-LancerSSE3>oggenc2.exe "01. Atom Heart Mother.flac"
        File length:  23m 45.0s
        Elapsed time: 0m 24.0s
        Rate:         59.3817
        Average bitrate: 109.9 kb/s

D:\Downloads\oggenc2.87-1.3.5-x64>oggenc2.exe "01. Atom Heart Mother.flac"
        File length:  23m 45.0s
        Elapsed time: 0m 25.0s
        Rate:         57.0064
        Average bitrate: 103.0 kb/s

D:\Downloads\oggenc2.87-aoTuVb6.03_2015-x64>oggenc2.exe "01. Atom Heart Mother.flac"
        File length:  23m 45.0s
        Elapsed time: 0m 22.0s
        Rate:         64.7800
        Average bitrate: 109.9 kb/s

D:\Downloads\oggenc2.87-aoTuVb6.03_2015-LancerSSE3_x64>oggenc2.exe "01. Atom Heart Mother.flac"
        File length:  23m 45.0s
        Elapsed time: 0m 20.0s
        Rate:         71.2580
        Average bitrate: 109.9 kb/s
Title: aoTuV Patches, Vorbis 1.3.5 and Lancer
Post by: edwardar on 2015-09-03 21:21:25
New Lancer builds now available at Rarewares.


These aren't working for me on Windows XP 32 bit - am I missing something, or is it finally time I upgrade!!

I get a "not a valid Win32 application" error.
Title: aoTuV Patches, Vorbis 1.3.5 and Lancer
Post by: Brazil2 on 2015-09-03 21:48:28
These aren't working for me on Windows XP 32 bit
I get a "not a valid Win32 application" error.

Same here.
Title: aoTuV Patches, Vorbis 1.3.5 and Lancer
Post by: john33 on 2015-09-03 21:59:54
You're both right, they probably won't work on XP. I can re-instate the earlier build that did run on XP (I think), if you wish, although you probably already have that.  As there is no difference in the quality of the output, I'm not too sure that the effort involved in producing XP compatible compiles is worthwhile, particularly as I don't have an XP based system for testing.
Title: aoTuV Patches, Vorbis 1.3.5 and Lancer
Post by: eahm on 2015-09-03 22:32:09
You're both right, they probably won't work on XP. I can re-instate the earlier build that did run on XP (I think), if you wish, although you probably already have that.  As there is no difference in the quality of the output, I'm not too sure that the effort involved in producing XP compatible compiles is worthwhile, particularly as I don't have an XP based system for testing.

It's ok, they shouldn't either. WTF people, XP is a 15 years old OS.
Title: aoTuV Patches, Vorbis 1.3.5 and Lancer
Post by: Merovingian on 2015-09-04 17:02:24
Hi, i am trying to utilize the re-sampler using:
Code: [Select]
oggenc2.exe --ignorelength --resample 44100 -S 0 -q6.0 F:\untitledStereo.wav -o F:\untitledStereo.ogg

It seems 0 (Best) halts the encoding process (it encodes 0.0 secs of audio), while option 1 (Medium) works OK.
Any suggestions?
Title: aoTuV Patches, Vorbis 1.3.5 and Lancer
Post by: john33 on 2015-09-04 18:20:28
Let me check it out and I'll get back to you.
Title: aoTuV Patches, Vorbis 1.3.5 and Lancer
Post by: akapuma on 2015-09-04 21:06:49
Hello john33,

will you update libvorbis.dll, too?

best regards

akapuma
Title: aoTuV Patches, Vorbis 1.3.5 and Lancer
Post by: john33 on 2015-09-06 18:09:17
Let me check it out and I'll get back to you.

I can confirm the problem which seems to have existed ever since I switched to SoxR, but I need to understand it better as SoxRDrop, which uses similar code to set up the resampler, works as expected. Will continue researching this.
Title: aoTuV Patches, Vorbis 1.3.5 and Lancer
Post by: john33 on 2015-09-06 18:09:53
Hello john33,

will you update libvorbis.dll, too?

best regards

akapuma

I will, but I'd like to fix the resampler issue first.
Title: aoTuV Patches, Vorbis 1.3.5 and Lancer
Post by: Tr4shCr4fT on 2015-09-06 19:02:37
It's ok, they shouldn't either. WTF people, XP is a 15 years old OS.

but its still the best os for old single core systems that you dont want to throw away, tough
(seriously, i tested every windows from vista to 10 on my 2005'ish laptop and then kept xp)
Title: aoTuV Patches, Vorbis 1.3.5 and Lancer
Post by: john33 on 2015-09-08 10:53:58
OK, I've located the problem with the resampling and I have fixed and tested it. It will take a while to generate new compiles as all windows compiles of oggdropXPd and oggenc2 are affected. For those who are interested, it turned out to be simply a matter of not feeding the resampler with a sufficient number of samples for the 'best' quality resampler to 'do its stuff'!
Title: aoTuV Patches, Vorbis 1.3.5 and Lancer
Post by: john33 on 2015-09-08 15:52:01
The oggenc2 Lancer builds have been updated with the version number bumped to avoid confusion. I'll get to all other compiles as soon as I'm able.
Title: aoTuV Patches, Vorbis 1.3.5 and Lancer
Post by: Brazil2 on 2015-09-08 17:46:36
You're both right, they probably won't work on XP.
As there is no difference in the quality of the output, I'm not too sure that the effort involved in producing XP compatible compiles is worthwhile, particularly as I don't have an XP based system for testing.

Isn't it just a flag to enable in the build script ?

http://forum.videohelp.com/threads/357754-...l=1#post2362275 (http://forum.videohelp.com/threads/357754-%5BHEVC%5D-x265-EXE-mingw-builds?p=2362275&viewfull=1#post2362275)
Title: aoTuV Patches, Vorbis 1.3.5 and Lancer
Post by: Merovingian on 2015-09-08 18:31:39
Excellent work john33, and a big thanks for the prompt fix. It is interesting how the bug came to be, as i remember oggenc to encode maybe a couple of samples at the beginning of the file,
irrespective of the "ignorelength" setting.
Title: aoTuV Patches, Vorbis 1.3.5 and Lancer
Post by: john33 on 2015-09-08 18:36:30
You're both right, they probably won't work on XP.
As there is no difference in the quality of the output, I'm not too sure that the effort involved in producing XP compatible compiles is worthwhile, particularly as I don't have an XP based system for testing.

Isn't it just a flag to enable in the build script ?

http://forum.videohelp.com/threads/357754-...l=1#post2362275 (http://forum.videohelp.com/threads/357754-%5BHEVC%5D-x265-EXE-mingw-builds?p=2362275&viewfull=1#post2362275)

Different compiler, different build environment.
Title: aoTuV Patches, Vorbis 1.3.5 and Lancer
Post by: lamedude on 2015-09-09 11:35:46
It is in ICC15.
(http://daman6009.home.comcast.net/~daman6009/ICCXP.png)
But if john33 is using ICC14 you have compile in VS2010 to get XP support.
Title: aoTuV Patches, Vorbis 1.3.5 and Lancer
Post by: j7n on 2015-09-09 22:35:55
These aren't working for me on Windows XP 32 bit - am I missing something, or is it finally time I upgrade!!

I get a "not a valid Win32 application" error.

All three builds of oggenc2 2.88 work fine, including resampling, on Windows XP SP2 or later if I change the MajorSubsystemVersion (http://www.msfn.org/board/topic/172970-why-not-a-valid-win32-application-xp-programs/) from 6 to 5. This header field is at 0140h in these particular files. Just overwrite 06000000 with 05000100. oggenc2 doesn't seem to require any Vista/Seven-specific system functions.
Title: aoTuV Patches, Vorbis 1.3.5 and Lancer
Post by: Brazil2 on 2015-09-09 23:33:15
This header field is at 0140h in these particular files. Just overwrite 06000000 with 05000100.

Nice find! It's working fine with this edit.
Thanks for the tip
Title: aoTuV Patches, Vorbis 1.3.5 and Lancer
Post by: john33 on 2015-09-10 13:52:50
All three builds of oggenc2 2.88 work fine, including resampling, on Windows XP SP2 or later if I change the MajorSubsystemVersion (http://www.msfn.org/board/topic/172970-why-not-a-valid-win32-application-xp-programs/) from 6 to 5. This header field is at 0140h in these particular files. Just overwrite 06000000 with 05000100. oggenc2 doesn't seem to require any Vista/Seven-specific system functions.

I have modified the 32 bit builds as indicated above and re-uploaded. Perhaps someone could kindly check that they do indeed work on XP SP2, or greater? They certainly still work with no impact on anything on Win 10 Pro 64 bit.

Thanks for the tip.
Title: aoTuV Patches, Vorbis 1.3.5 and Lancer
Post by: Brazil2 on 2015-09-10 15:51:20
Perhaps someone could kindly check that they do indeed work on XP SP2, or greater?

The oggenc2.88-aoTuVb6.03_2015*.zip are working fine on XP, however the oggenc2.88-aoTuVb6.03_2015-LancerSSE*.zip builds are strictly identical to the previous ones (which is confirmed using CloneSpy) hence still return the "not a valid Win32 application" error message.
Title: aoTuV Patches, Vorbis 1.3.5 and Lancer
Post by: john33 on 2015-09-10 15:54:13
Hmmm, thanks. Let me check again!

Edit: Hopefully I've got that right, this time!!    Fresh uploads of the SSE, SSE2 and SSE3 compiles.
Title: aoTuV Patches, Vorbis 1.3.5 and Lancer
Post by: Brazil2 on 2015-09-10 16:20:58
Fresh uploads of the SSE, SSE2 and SSE3 compiles.

Perfect, all x86 builds are running fine on XP now
Thanks for your work!
Title: aoTuV Patches, Vorbis 1.3.5 and Lancer
Post by: john33 on 2015-09-10 16:29:44
Phew!! Got it right, finally.  Thanks for checking them out.
Title: aoTuV Patches, Vorbis 1.3.5 and Lancer
Post by: ChronoSphere on 2015-09-10 17:19:03
It seems the aotuv source were updated to vorbis 1.3.5. I've tweaked the patches to work with the newest aotuv version, but while it compiles fine, make check fails with:
Code: [Select]
aotuv-b6.03_20110424-20150808-lancer-test/lib/.libs/libvorbis.so: undefined reference to `mdct_butterflies_backward'


I'm not sure if it's because I messed up the patches, or maybe the initial ones had this problem as well?

edit: nvm, seems I broke something somewhere, it's working now. Thanks for the patches!
Title: aoTuV Patches, Vorbis 1.3.5 and Lancer
Post by: john33 on 2015-09-10 19:06:07
Hello john33,

will you update libvorbis.dll, too?

best regards

akapuma

All Lancer dlls have now been updated.  Should all work on XP SP2, or greater.
Title: aoTuV Patches, Vorbis 1.3.5 and Lancer
Post by: ChronoSphere on 2015-09-10 19:13:07
Encoding a CD  in tmpfs on an AMD Phenom II X4 970@3.5GHz using caudec on arch linux x64, vorbis@q5:

Code: [Select]
caudec -c vorbis -O /tmp/vorbis-lancer *.wav
17.43 seconds (read: 1209.9 MB/s, write: 4.1 MB/s, rate: 200.0x)
17.44 seconds (read: 1253.2 MB/s, write: 4.1 MB/s, rate: 200.0x)
17.41 seconds (read: 1260.0 MB/s, write: 4.1 MB/s, rate: 200.3x)

WAV:                586.8 MiB    100.0%
Source:             586.8 MiB    100.0%    1411 kbps
Ogg Vorbis:          67.7 MiB     11.5%     162 kbps

caudec -c vorbis -O /tmp/vorbis-default *.wav
20.73 seconds (read: 1301.0 MB/s, write: 3.2 MB/s, rate: 168.2x)
20.69 seconds (read: 1279.6 MB/s, write: 3.2 MB/s, rate: 168.5x)
20.72 seconds (read: 1280.1 MB/s, write: 3.2 MB/s, rate: 168.3x)

WAV:                586.8 MiB    100.0%
Source:             586.8 MiB    100.0%    1411 kbps
Ogg Vorbis:          63.5 MiB     10.8%     152 kbps
Title: aoTuV Patches, Vorbis 1.3.5 and Lancer
Post by: enzo on 2015-09-10 22:53:05
It seems the aotuv source were updated to vorbis 1.3.5.

Thanks for hinting me at this!

The new official aoTuV sources are identical to my aoTuV-1.3.5 patch except for one additional null pointer check in aoyumi's sources. I'll post updated Lancer patches soon.

Edit: Done! See first post.
Title: aoTuV Patches, Vorbis 1.3.5 and Lancer
Post by: cloucrio on 2015-09-12 08:45:13
again, thanks a lot for your efforts, enzo and john - really appreciated.

here is a short sse3 x64 foobar2000 speed comparison:

oggenc2.87-aoTuVb6.03-Lancer_ICC12.1 (lvqcl) 2012/02:

Total encoding time: 0:29.829, 180.62x realtime


oggenc2.88-aoTuVb6.03_2015-LancerSSE3_x64 (john33) 2015/09:

Total encoding time: 0:32.094, 167.87x realtime
Title: aoTuV Patches, Vorbis 1.3.5 and Lancer
Post by: akapuma on 2015-09-12 20:32:12
All Lancer dlls have now been updated.  Should all work on XP SP2, or greater.


Thank you very much.

I tested the libvorbis.dll. The player MPC-HC shows "Writing library: Lancer 20110424 (UTC 2011-04-24)". Is this old date intended?

Best regards

akapuma
Title: aoTuV Patches, Vorbis 1.3.5 and Lancer
Post by: john33 on 2015-09-13 12:14:19
All Lancer dlls have now been updated.  Should all work on XP SP2, or greater.


Thank you very much.

I tested the libvorbis.dll. The player MPC-HC shows "Writing library: Lancer 20110424 (UTC 2011-04-24)". Is this old date intended?

Best regards

akapuma

Assuming you are using the dll that was created on 10 September, yes, that is correct. The full 'ENCODE_VENDOR_STRING' is "BS; LancerMod(SSE2) (based on aoTuV [20110424][1.3.5])", or SSE/SSE3, but it looks as though MPC-HC is only picking part of the string. The aoTuV version is of the date shown. If you look at the dll in a hex editor, you will be able to find the string in full.
Title: aoTuV Patches, Vorbis 1.3.5 and Lancer
Post by: jarsonic on 2015-09-14 18:19:25
Is rarewares.org down for anyone else?  I'm getting a 404 on the domain.
Title: aoTuV Patches, Vorbis 1.3.5 and Lancer
Post by: exb on 2015-09-14 18:52:44
Is rarewares.org down for anyone else?  I'm getting a 404 on the domain.


Same here.
Title: aoTuV Patches, Vorbis 1.3.5 and Lancer
Post by: john33 on 2015-09-14 19:07:58
Hmmm, I'll try and find out what's going on.

Having just had a look via FileZilla, I see that our main folder is marked: rarewares.org_DISABLED_FOR_MALWARE_CONTACT_DREAMHOST_SUPPORT_cp. I've emailed Roberto to try to get it sorted.
Title: aoTuV Patches, Vorbis 1.3.5 and Lancer
Post by: john33 on 2015-09-14 19:38:02
We're back. There was concern about a file that's been there for years and someone suddenly decided to raise an alarm!! I compiled the file in question, so there is definitely no real problem.
Title: aoTuV Patches, Vorbis 1.3.5 and Lancer
Post by: OggY68 on 2015-09-25 10:51:46
It seems the aotuv source were updated to vorbis 1.3.5.

Thanks for hinting me at this!

The new official aoTuV sources are identical to my aoTuV-1.3.5 patch except for one additional null pointer check in aoyumi's sources. I'll post updated Lancer patches soon.

Edit: Done! See first post.


Thanks Enzo.  Under debian I built the code with the patches for SSE3 without a problem.  Encoding works like a charm.  But when decoding I get a segfault in the function ov_read_filter of vorbisfile. Could it be because the new function "ov_read_float2pcm" is not referenced ?

This is what I have:
strings libvorbisfile.so | grep ov_read
ov_read_float
ov_read_filter
ov_read

Title: aoTuV Patches, Vorbis 1.3.5 and Lancer
Post by: enzo on 2015-09-26 10:16:27
Under debian I built the code with the patches for SSE3 without a problem.  Encoding works like a charm.  But when decoding I get a segfault in the function ov_read_filter of vorbisfile. Could it be because the new function "ov_read_float2pcm" is not referenced ?

ov_read_float2pcm is only used internally by the Lancer code. It's not meant to be exported, so that should not be a problem.

Looking at the ov_read_filter code I noticed that the Lancer code omits vorbis_fpu_setround and vorbis_fpu_restore when reading non-stereo material. This looks like a bug.

Any chance you have been trying to decode mono or multi-channel material when you got the crash? Anyway, attached is a patch that re-adds said function calls. Please try if it fixes the issue.
Title: aoTuV Patches, Vorbis 1.3.5 and Lancer
Post by: OggY68 on 2015-09-27 17:54:42
Under debian I built the code with the patches for SSE3 without a problem.  Encoding works like a charm.  But when decoding I get a segfault in the function ov_read_filter of vorbisfile. Could it be because the new function "ov_read_float2pcm" is not referenced ?
ov_read_float2pcm is only used internally by the Lancer code. It's not meant to be exported, so that should not be a problem.

Looking at the ov_read_filter code I noticed that the Lancer code omits vorbis_fpu_setround and vorbis_fpu_restore when reading non-stereo material. This looks like a bug.

Any chance you have been trying to decode mono or multi-channel material when you got the crash? Anyway, attached is a patch that re-adds said function calls. Please try if it fixes the issue.

Thanks for the patch but unfortunately still the same issue.  The program in question is the latest supertuxkart version 0.9.5 on debian jessie x64.  At the end of the startup when the game waits for user input and should start to play the theme music the program segfaults in libvorbisfile:
Quote
[ 6173.561481] traps: supertuxkart[5123] general protection ip:7fe6fde686f9 sp:7fe6edc23040 error:0 in libvorbisfile.so.3.3.7[7fe6fde60000+b000]

The music files of supertuxkart are all 2 channel.  To dig deeper did some debug under Eclipse CDT and found out that program segfaults and stops here, see the dissasembly code below:

Quote
00007ffff72e060b:  movaps (%rcx,%rdi,4),%xmm0
The above looks like sse code.

Hereunder the full dissasembly list:

Code: [Select]
................ ...
264                  update();
00000000009b324a:  mov -0x8(%rbp),%rax
00000000009b324e:  mov (%rax),%rax
00000000009b3251:  add $0x38,%rax
00000000009b3255:  mov (%rax),%rax
00000000009b3258:  mov -0x8(%rbp),%rdx
00000000009b325c:  mov %rdx,%rdi
00000000009b325f:  callq *%rax
265              }  // updateFaster
00000000009b3261:  leaveq
00000000009b3262:  retq
00000000009b3263:  nop
269              {
                  MusicOggStream::update():
00000000009b3264:  push %rbp
00000000009b3265:  mov %rsp,%rbp
00000000009b3268:  push %rbx
00000000009b3269:  sub $0x38,%rsp
00000000009b326d:  mov %rdi,-0x38(%rbp)
271                  if (m_pausedMusic || m_soundSource == ALuint(-1))
00000000009b3271:  mov -0x38(%rbp),%rax
00000000009b3275:  movzbl 0x3e4(%rax),%eax
00000000009b327c:  test %al,%al
00000000009b327e:  jne 0x9b328f <MusicOggStream::update()+43>
00000000009b3280:  mov -0x38(%rbp),%rax
00000000009b3284:  mov 0x3dc(%rax),%eax
00000000009b328a:  cmp $0xffffffff,%eax
00000000009b328d:  jne 0x9b3294 <MusicOggStream::update()+48>
274                      return;
00000000009b328f:  jmpq 0x9b349e <MusicOggStream::update()+570>
277                  int processed= 0;
00000000009b3294:  movl $0x0,-0x24(%rbp)
278                  bool active= true;
00000000009b329b:  movb $0x1,-0x11(%rbp)
280                  alGetSourcei(m_soundSource, AL_BUFFERS_PROCESSED, &processed);
00000000009b329f:  mov -0x38(%rbp),%rax
00000000009b32a3:  mov 0x3dc(%rax),%eax
00000000009b32a9:  lea -0x24(%rbp),%rdx
00000000009b32ad:  mov $0x1016,%esi
00000000009b32b2:  mov %eax,%edi
00000000009b32b4:  callq 0x989aa0 <alGetSourcei@plt>
282                  while(processed--)
00000000009b32b9:  jmpq 0x9b3374 <MusicOggStream::update()+272>
286                      alSourceUnqueueBuffers(m_soundSource, 1, &buffer);
00000000009b32be:  mov -0x38(%rbp),%rax
00000000009b32c2:  mov 0x3dc(%rax),%eax
00000000009b32c8:  lea -0x28(%rbp),%rdx
00000000009b32cc:  mov $0x1,%esi
00000000009b32d1:  mov %eax,%edi
00000000009b32d3:  callq 0x988ee0 <alSourceUnqueueBuffers@plt>
287                      if(!check("alSourceUnqueueBuffers")) return;
00000000009b32d8:  mov -0x38(%rbp),%rax
00000000009b32dc:  mov $0x11b3790,%esi
00000000009b32e1:  mov %rax,%rdi
00000000009b32e4:  callq 0x9b360c <MusicOggStream::check(char const*)>
00000000009b32e9:  xor $0x1,%eax
00000000009b32ec:  test %al,%al
00000000009b32ee:  je 0x9b32f5 <MusicOggStream::update()+145>
00000000009b32f0:  jmpq 0x9b349e <MusicOggStream::update()+570>
289                      active = streamIntoBuffer(buffer);
00000000009b32f5:  mov -0x28(%rbp),%edx
00000000009b32f8:  mov -0x38(%rbp),%rax
00000000009b32fc:  mov %edx,%esi
00000000009b32fe:  mov %rax,%rdi
00000000009b3301:  callq 0x9b34a6 <MusicOggStream::streamIntoBuffer(unsigned int)>
00000000009b3306:  mov %al,-0x11(%rbp)
290                      if(!active)
00000000009b3309:  movzbl -0x11(%rbp),%eax
00000000009b330d:  xor $0x1,%eax
00000000009b3310:  test %al,%al
00000000009b3312:  je 0x9b333c <MusicOggStream::update()+216>
293                          ov_time_seek(&m_oggStream, 0);
00000000009b3314:  mov -0x38(%rbp),%rax
00000000009b3318:  add $0x18,%rax
00000000009b331c:  pxor %xmm0,%xmm0
00000000009b3320:  mov %rax,%rdi
00000000009b3323:  callq 0x989430 <ov_time_seek@plt>
294                          active = streamIntoBuffer(buffer);//now there really should be data
00000000009b3328:  mov -0x28(%rbp),%edx
00000000009b332b:  mov -0x38(%rbp),%rax
00000000009b332f:  mov %edx,%esi
00000000009b3331:  mov %rax,%rdi
00000000009b3334:  callq 0x9b34a6 <MusicOggStream::streamIntoBuffer(unsigned int)>
00000000009b3339:  mov %al,-0x11(%rbp)
297                      alSourceQueueBuffers(m_soundSource, 1, &buffer);
00000000009b333c:  mov -0x38(%rbp),%rax
00000000009b3340:  mov 0x3dc(%rax),%eax
00000000009b3346:  lea -0x28(%rbp),%rdx
00000000009b334a:  mov $0x1,%esi
00000000009b334f:  mov %eax,%edi
00000000009b3351:  callq 0x988d50 <alSourceQueueBuffers@plt>
298                      if (!check("alSourceQueueBuffers")) return;
00000000009b3356:  mov -0x38(%rbp),%rax
00000000009b335a:  mov $0x11b37de,%esi
00000000009b335f:  mov %rax,%rdi
00000000009b3362:  callq 0x9b360c <MusicOggStream::check(char const*)>
00000000009b3367:  xor $0x1,%eax
00000000009b336a:  test %al,%al
00000000009b336c:  je 0x9b3374 <MusicOggStream::update()+272>
00000000009b336e:  nop
00000000009b336f:  jmpq 0x9b349e <MusicOggStream::update()+570>
282                  while(processed--)
00000000009b3374:  mov -0x24(%rbp),%eax
00000000009b3377:  lea -0x1(%rax),%edx
00000000009b337a:  mov %edx,-0x24(%rbp)
00000000009b337d:  test %eax,%eax
00000000009b337f:  setne %al
00000000009b3382:  test %al,%al
00000000009b3384:  jne 0x9b32be <MusicOggStream::update()+90>
301                  if (active)
00000000009b338a:  cmpb $0x0,-0x11(%rbp)
00000000009b338e:  je 0x9b345d <MusicOggStream::update()+505>
304                      SFXManager::checkError("before source state");
00000000009b3394:  lea -0x12(%rbp),%rax
00000000009b3398:  mov %rax,%rdi
00000000009b339b:  callq 0x988b50 <_ZNSaIcEC1Ev@plt>
00000000009b33a0:  lea -0x12(%rbp),%rdx
00000000009b33a4:  lea -0x20(%rbp),%rax
00000000009b33a8:  mov $0x11b37f3,%esi
00000000009b33ad:  mov %rax,%rdi
00000000009b33b0:  callq 0x988fc0 <_ZNSsC1EPKcRKSaIcE@plt>
00000000009b33b5:  lea -0x20(%rbp),%rax
00000000009b33b9:  mov %rax,%rdi
00000000009b33bc:  callq 0x9b6b5c <SFXManager::checkError(std::string const&)>
00000000009b33c1:  lea -0x20(%rbp),%rax
00000000009b33c5:  mov %rax,%rdi
00000000009b33c8:  callq 0x98a410 <_ZNSsD1Ev@plt>
00000000009b33cd:  lea -0x12(%rbp),%rax
00000000009b33d1:  mov %rax,%rdi
00000000009b33d4:  callq 0x987b90 <_ZNSaIcED1Ev@plt>
307                      alGetSourcei(m_soundSource, AL_SOURCE_STATE, &state);
00000000009b33d9:  mov -0x38(%rbp),%rax
00000000009b33dd:  mov 0x3dc(%rax),%eax
00000000009b33e3:  lea -0x2c(%rbp),%rdx
00000000009b33e7:  mov $0x1010,%esi
00000000009b33ec:  mov %eax,%edi
00000000009b33ee:  callq 0x989aa0 <alGetSourcei@plt>
308                      if (state != AL_PLAYING)
00000000009b33f3:  mov -0x2c(%rbp),%eax
00000000009b33f6:  cmp $0x1012,%eax
00000000009b33fb:  je 0x9b345b <MusicOggStream::update()+503>
312                          count++;
00000000009b33fd:  mov 0xf116d5(%rip),%eax        # 0x18c4ad8 <_ZZN14MusicOggStream6updateEvE5count>
00000000009b3403:  add $0x1,%eax
00000000009b3406:  mov %eax,0xf116cc(%rip)        # 0x18c4ad8 <_ZZN14MusicOggStream6updateEvE5count>
313                          if (count<10)
00000000009b340c:  mov 0xf116c6(%rip),%eax        # 0x18c4ad8 <_ZZN14MusicOggStream6updateEvE5count>
00000000009b3412:  cmp $0x9,%eax
00000000009b3415:  jg 0x9b3430 <MusicOggStream::update()+460>
315                                        "Source state: %d", state);
00000000009b3417:  mov -0x2c(%rbp),%eax
00000000009b341a:  mov %eax,%edx
00000000009b341c:  mov $0x11b3808,%esi
00000000009b3421:  mov $0x11b366f,%edi
00000000009b3426:  mov $0x0,%eax
00000000009b342b:  callq 0x990a3e <Log::warn(char const*, char const*, ...)>
316                          alGetSourcei(m_soundSource, AL_BUFFERS_PROCESSED, &processed);
00000000009b3430:  mov -0x38(%rbp),%rax
00000000009b3434:  mov 0x3dc(%rax),%eax
00000000009b343a:  lea -0x24(%rbp),%rdx
00000000009b343e:  mov $0x1016,%esi
00000000009b3443:  mov %eax,%edi
00000000009b3445:  callq 0x989aa0 <alGetSourcei@plt>
317                          alSourcePlay(m_soundSource);
00000000009b344a:  mov -0x38(%rbp),%rax
00000000009b344e:  mov 0x3dc(%rax),%eax
00000000009b3454:  mov %eax,%edi
00000000009b3456:  callq 0x989fd0 <alSourcePlay@plt>
00000000009b345b:  jmp 0x9b349e <MusicOggStream::update()+570>
323                                            "twice in a row.");
00000000009b345d:  mov $0x11b3840,%esi
00000000009b3462:  mov $0x11b366f,%edi
00000000009b3467:  mov $0x0,%eax
00000000009b346c:  callq 0x990a3e <Log::warn(char const*, char const*, ...)>
00000000009b3471:  jmp 0x9b349e <MusicOggStream::update()+570>
00000000009b3473:  mov %rax,%rbx
00000000009b3476:  lea -0x20(%rbp),%rax
00000000009b347a:  mov %rax,%rdi
00000000009b347d:  callq 0x98a410 <_ZNSsD1Ev@plt>
00000000009b3482:  jmp 0x9b3487 <MusicOggStream::update()+547>
00000000009b3484:  mov %rax,%rbx
00000000009b3487:  lea -0x12(%rbp),%rax
00000000009b348b:  mov %rax,%rdi
00000000009b348e:  callq 0x987b90 <_ZNSaIcED1Ev@plt>
00000000009b3493:  mov %rbx,%rax
00000000009b3496:  mov %rax,%rdi
00000000009b3499:  callq 0x988680 <_Unwind_Resume@plt>
325              }  // update
00000000009b349e:  add $0x38,%rsp
00000000009b34a2:  pop %rbx
00000000009b34a3:  pop %rbp
00000000009b34a4:  retq
00000000009b34a5:  nop
329              {
                  MusicOggStream::streamIntoBuffer(unsigned int):
00000000009b34a6:  push %rbp
00000000009b34a7:  mov %rsp,%rbp
00000000009b34aa:  push %r12
00000000009b34ac:  push %rbx
00000000009b34ad:  sub $0xac70,%rsp
00000000009b34b4:  mov %rdi,-0xac78(%rbp)
00000000009b34bb:  mov %esi,-0xac7c(%rbp)
331                  const int isBigEndian = (IS_LITTLE_ENDIAN ? 0 : 1);
00000000009b34c1:  movzbl 0xf2439c(%rip),%eax        # 0x18d7864 <IS_LITTLE_ENDIAN>
00000000009b34c8:  test %al,%al
00000000009b34ca:  je 0x9b34d3 <MusicOggStream::streamIntoBuffer(unsigned int)+45>
00000000009b34cc:  mov $0x0,%eax
00000000009b34d1:  jmp 0x9b34d8 <MusicOggStream::streamIntoBuffer(unsigned int)+50>
00000000009b34d3:  mov $0x1,%eax
00000000009b34d8:  mov %eax,-0x18(%rbp)
333                  int  size = 0;
00000000009b34db:  movl $0x0,-0x14(%rbp)
337                  while(size < m_buffer_size)
00000000009b34e2:  jmpq 0x9b357d <MusicOggStream::streamIntoBuffer(unsigned int)+215>
340                                        isBigEndian, 2, 1, &portion);
00000000009b34e7:  mov $0xac44,%eax
00000000009b34ec:  sub -0x14(%rbp),%eax
00000000009b34ef:  mov -0x14(%rbp),%edx
00000000009b34f2:  movslq %edx,%rdx
00000000009b34f5:  lea -0xac70(%rbp),%rcx
00000000009b34fc:  lea (%rcx,%rdx,1),%rsi
00000000009b3500:  mov -0xac78(%rbp),%rdx
00000000009b3507:  lea 0x18(%rdx),%rdi
00000000009b350b:  sub $0x8,%rsp
00000000009b350f:  mov -0x18(%rbp),%edx
00000000009b3512:  lea -0x20(%rbp),%rcx
00000000009b3516:  push %rcx
00000000009b3517:  mov $0x1,%r9d
00000000009b351d:  mov $0x2,%r8d
00000000009b3523:  mov %edx,%ecx
00000000009b3525:  mov %eax,%edx
00000000009b3527:  callq 0x9882d0 <ov_read@plt>
00000000009b352c:  add $0x10,%rsp
00000000009b3530:  mov %eax,-0x1c(%rbp)
342                      if(result > 0)
00000000009b3533:  cmpl $0x0,-0x1c(%rbp)
00000000009b3537:  jle 0x9b3541 <MusicOggStream::streamIntoBuffer(unsigned int)+155>
343                          size += result;
00000000009b3539:  mov -0x1c(%rbp),%eax
00000000009b353c:  add %eax,-0x14(%rbp)
00000000009b353f:  jmp 0x9b357d <MusicOggStream::streamIntoBuffer(unsigned int)+215>
345                          if(result < 0)
00000000009b3541:  cmpl $0x0,-0x1c(%rbp)
00000000009b3545:  jns 0x9b357b <MusicOggStream::streamIntoBuffer(unsigned int)+213>
346                              throw errorString(result);
00000000009b3547:  mov $0x8,%edi
00000000009b354c:  callq 0x989600 <__cxa_allocate_exception@plt>
00000000009b3551:  mov %rax,%rbx
00000000009b3554:  mov -0x1c(%rbp),%edx
00000000009b3557:  mov -0xac78(%rbp),%rax
00000000009b355e:  mov %rax,%rsi
00000000009b3561:  mov %rbx,%rdi
00000000009b3564:  callq 0x9b36a8 <MusicOggStream::errorString(int)>
00000000009b3569:  mov $0x98a410,%edx
00000000009b356e:  mov $0x11b3b30,%esi
00000000009b3573:  mov %rbx,%rdi
00000000009b3576:  callq 0x988590 <__cxa_throw@plt>
348                              break;
00000000009b357b:  jmp 0x9b358a <MusicOggStream::streamIntoBuffer(unsigned int)+228>
337                  while(size < m_buffer_size)
00000000009b357d:  cmpl $0xac43,-0x14(%rbp)
00000000009b3584:  jle 0x9b34e7 <MusicOggStream::streamIntoBuffer(unsigned int)+65>
351                  if(size == 0) return false;
00000000009b358a:  cmpl $0x0,-0x14(%rbp)
00000000009b358e:  jne 0x9b3597 <MusicOggStream::streamIntoBuffer(unsigned int)+241>
00000000009b3590:  mov $0x0,%eax
00000000009b3595:  jmp 0x9b3603 <MusicOggStream::streamIntoBuffer(unsigned int)+349>
353                  alBufferData(buffer, nb_channels, pcm, size, m_vorbisInfo->rate);
00000000009b3597:  mov -0xac78(%rbp),%rax
00000000009b359e:  mov 0x3c8(%rax),%rax
00000000009b35a5:  mov 0x8(%rax),%rax
00000000009b35a9:  mov %eax,%edi
00000000009b35ab:  mov -0xac78(%rbp),%rax
00000000009b35b2:  mov 0x3e0(%rax),%esi
00000000009b35b8:  mov -0x14(%rbp),%ecx
00000000009b35bb:  lea -0xac70(%rbp),%rdx
00000000009b35c2:  mov -0xac7c(%rbp),%eax
00000000009b35c8:  mov %edi,%r8d
00000000009b35cb:  mov %eax,%edi
00000000009b35cd:  callq 0x988360 <alBufferData@plt>
354                  check("alBufferData");
00000000009b35d2:  mov -0xac78(%rbp),%rax
00000000009b35d9:  mov $0x11b387b,%esi
00000000009b35de:  mov %rax,%rdi
00000000009b35e1:  callq 0x9b360c <MusicOggStream::check(char const*)>
356                  return true;
00000000009b35e6:  mov $0x1,%eax
................. ...
00007ffff72e0503:  (bad)
00007ffff72e0504:  cvtsd2si %xmm0,%eax
00007ffff72e0508:  cmp $0xffff8000,%eax
00007ffff72e050d:  cmovl %r9d,%eax
00007ffff72e0511:  cmp $0x7fff,%eax
00007ffff72e0516:  cmovg %edi,%eax
00007ffff72e0519:  add $0x4,%rdx
00007ffff72e051d:  add $0x8000,%ax
00007ffff72e0521:  mov %ax,(%rcx)
00007ffff72e0524:  add %rbp,%rcx
00007ffff72e0527:  cmp %rsi,%rdx
00007ffff72e052a:  jne 0x7ffff72e04f8 <ov_read_filter+728>
00007ffff72e052c:  add $0x2,%r10
00007ffff72e0530:  add $0x8,%r11
00007ffff72e0534:  cmp %r13,%r10
00007ffff72e0537:  jne 0x7ffff72e04e6 <ov_read_filter+710>
00007ffff72e0539:  jmpq 0x7ffff72e03ac <ov_read_filter+396>
00007ffff72e053e:  mov $0xffffffffffffff7d,%rax
00007ffff72e0545:  jmpq 0x7ffff72e03fa <ov_read_filter+474>
00007ffff72e054a:  cmp $0x2,%rbp
00007ffff72e054e:  je 0x7ffff72e05e2 <ov_read_filter+962>
00007ffff72e0554:  test %rbp,%rbp
00007ffff72e0557:  jle 0x7ffff72e03ac <ov_read_filter+396>
00007ffff72e055d:  add %rbp,%rbp
00007ffff72e0560:  mov 0x28(%rsp),%r11
00007ffff72e0565:  lea 0x0(,%r8,4),%r12
00007ffff72e056d:  lea (%r15,%rbp,1),%r13
00007ffff72e0571:  mov %r15,%r10
00007ffff72e0574:  mov $0xffff8000,%r9d
00007ffff72e057a:  movss 0xc56(%rip),%xmm1        # 0x7ffff72e11d8
00007ffff72e0582:  mov $0x7fff,%edi
00007ffff72e0587:  mov (%r11),%rdx
00007ffff72e058a:  test %r8,%r8
00007ffff72e058d:  mov %r10,%rcx
00007ffff72e0590:  lea (%rdx,%r12,1),%rsi
00007ffff72e0594:  jle 0x7ffff72e05d0 <ov_read_filter+944>
00007ffff72e0596:  nopw %cs:0x0(%rax,%rax,1)
00007ffff72e05a0:  movss (%rdx),%xmm0
00007ffff72e05a4:  mulss %xmm1,%xmm0
00007ffff72e05a8:  cvtss2sd %xmm0,%xmm0
00007ffff72e05ac:  cvtsd2si %xmm0,%eax
00007ffff72e05b0:  cmp $0xffff8000,%eax
00007ffff72e05b5:  cmovl %r9d,%eax
00007ffff72e05b9:  cmp $0x7fff,%eax
00007ffff72e05be:  cmovg %edi,%eax
00007ffff72e05c1:  add $0x4,%rdx
00007ffff72e05c5:  mov %ax,(%rcx)
00007ffff72e05c8:  add %rbp,%rcx
00007ffff72e05cb:  cmp %rsi,%rdx
00007ffff72e05ce:  jne 0x7ffff72e05a0 <ov_read_filter+896>
00007ffff72e05d0:  add $0x2,%r10
00007ffff72e05d4:  add $0x8,%r11
00007ffff72e05d8:  cmp %r13,%r10
00007ffff72e05db:  jne 0x7ffff72e0587 <ov_read_filter+871>
00007ffff72e05dd:  jmpq 0x7ffff72e03ac <ov_read_filter+396>
00007ffff72e05e2:  mov 0x28(%rsp),%rax
00007ffff72e05e7:  mov %r8d,%esi
00007ffff72e05ea:  mov 0x8(%rax),%rdx
00007ffff72e05ee:  mov (%rax),%rcx
00007ffff72e05f1:  mov %r8d,%eax
00007ffff72e05f4:  and $0xfffffff0,%eax
00007ffff72e05f7:  cltq
00007ffff72e05f9:  test %rax,%rax
00007ffff72e05fc:  jle 0x7ffff72e097f <ov_read_filter+1887>
00007ffff72e0602:  movaps 0xba7(%rip),%xmm2        # 0x7ffff72e11b0 <parm.7799>
00007ffff72e0609:  xor %edi,%edi
00007ffff72e060b:  movaps (%rcx,%rdi,4),%xmm0
00007ffff72e060f:  movaps 0x10(%rcx,%rdi,4),%xmm4
00007ffff72e0614:  mulps %xmm2,%xmm0
00007ffff72e0617:  movaps (%rdx,%rdi,4),%xmm1
00007ffff72e061b:  mulps %xmm2,%xmm4
00007ffff72e061e:  movaps 0x10(%rdx,%rdi,4),%xmm3
00007ffff72e0623:  mulps %xmm2,%xmm1
00007ffff72e0626:  cvtps2dq %xmm0,%xmm0
00007ffff72e062a:  mulps %xmm2,%xmm3
00007ffff72e062d:  cvtps2dq %xmm4,%xmm4
00007ffff72e0631:  packssdw %xmm4,%xmm0
00007ffff72e0635:  cvtps2dq %xmm1,%xmm1
00007ffff72e0639:  cvtps2dq %xmm3,%xmm3
00007ffff72e063d:  packssdw %xmm3,%xmm1
00007ffff72e0641:  movdqa %xmm0,%xmm3
00007ffff72e0645:  punpckhwd %xmm1,%xmm0
00007ffff72e0649:  punpcklwd %xmm1,%xmm3
00007ffff72e064d:  movaps %xmm0,0x10(%r15,%rdi,4)
00007ffff72e0653:  movaps %xmm3,(%r15,%rdi,4)
00007ffff72e0658:  add $0x8,%rdi
00007ffff72e065c:  cmp %rdi,%rax
00007ffff72e065f:  jg 0x7ffff72e060b <ov_read_filter+1003>
00007ffff72e0661:  cmp %r8,%rax
00007ffff72e0664:  jge 0x7ffff72e03af <ov_read_filter+399>
00007ffff72e066a:  mov %r8,%r13
00007ffff72e066d:  sub %rax,%r13
00007ffff72e0670:  lea -0x8(%r13),%r10
00007ffff72e0674:  shr $0x3,%r10
00007ffff72e0678:  add $0x1,%r10
00007ffff72e067c:  lea 0x0(,%r10,8),%rdi
00007ffff72e0684:  mov %rdi,(%rsp)
00007ffff72e0688:  lea -0x1(%r8),%rdi
00007ffff72e068c:  sub %rax,%rdi
00007ffff72e068f:  cmp $0x6,%rdi
00007ffff72e0693:  jbe 0x7ffff72e077f <ov_read_filter+1375>
00007ffff72e0699:  lea 0x0(,%rax,4),%r9
00007ffff72e06a1:  movaps 0xb58(%rip),%xmm5        # 0x7ffff72e1200
00007ffff72e06a8:  xor %edi,%edi
00007ffff72e06aa:  xor %r11d,%r11d
00007ffff72e06ad:  movaps 0xb5c(%rip),%xmm4        # 0x7ffff72e1210
00007ffff72e06b4:  lea (%rcx,%r9,1),%r12
00007ffff72e06b8:  lea (%rdx,%r9,1),%rbp
00007ffff72e06bc:  add %r15,%r9
00007ffff72e06bf:  movaps 0xb5a(%rip),%xmm3        # 0x7ffff72e1220
00007ffff72e06c6:  add $0x1,%r11
00007ffff72e06ca:  movups (%r12,%rdi,1),%xmm0
00007ffff72e06cf:  movups 0x10(%r12,%rdi,1),%xmm1
00007ffff72e06d5:  mulps %xmm5,%xmm0
00007ffff72e06d8:  mulps %xmm5,%xmm1
00007ffff72e06db:  minps %xmm4,%xmm0
00007ffff72e06de:  minps %xmm4,%xmm1
00007ffff72e06e1:  maxps %xmm3,%xmm0
00007ffff72e06e4:  maxps %xmm3,%xmm1
00007ffff72e06e7:  cvttps2dq %xmm0,%xmm0
00007ffff72e06eb:  movdqa %xmm0,%xmm2
00007ffff72e06ef:  cvttps2dq %xmm1,%xmm1
00007ffff72e06f3:  punpcklwd %xmm1,%xmm0
00007ffff72e06f7:  punpckhwd %xmm1,%xmm2
00007ffff72e06fb:  movdqa %xmm0,%xmm1
00007ffff72e06ff:  punpcklwd %xmm2,%xmm0
00007ffff72e0703:  punpckhwd %xmm2,%xmm1
00007ffff72e0707:  movups 0x10(%rbp,%rdi,1),%xmm2
00007ffff72e070c:  mulps %xmm5,%xmm2
00007ffff72e070f:  punpcklwd %xmm1,%xmm0
00007ffff72e0713:  movups 0x0(%rbp,%rdi,1),%xmm1
00007ffff72e0718:  mulps %xmm5,%xmm1
00007ffff72e071b:  minps %xmm4,%xmm2
00007ffff72e071e:  minps %xmm4,%xmm1
00007ffff72e0721:  maxps %xmm3,%xmm2
00007ffff72e0724:  maxps %xmm3,%xmm1
00007ffff72e0727:  cvttps2dq %xmm2,%xmm2
00007ffff72e072b:  cvttps2dq %xmm1,%xmm1
00007ffff72e072f:  movdqa %xmm1,%xmm6
00007ffff72e0733:  punpcklwd %xmm2,%xmm1
00007ffff72e0737:  punpckhwd %xmm2,%xmm6
00007ffff72e073b:  movdqa %xmm1,%xmm2
00007ffff72e073f:  punpcklwd %xmm6,%xmm1
00007ffff72e0743:  punpckhwd %xmm6,%xmm2
00007ffff72e0747:  punpcklwd %xmm2,%xmm1
00007ffff72e074b:  movdqa %xmm0,%xmm2
00007ffff72e074f:  punpckhwd %xmm1,%xmm0
00007ffff72e0753:  punpcklwd %xmm1,%xmm2
00007ffff72e0757:  movups %xmm0,0x10(%r9,%rdi,1)
00007ffff72e075d:  movups %xmm2,(%r9,%rdi,1)
00007ffff72e0762:  add $0x20,%rdi
00007ffff72e0766:  cmp %r11,%r10
00007ffff72e0769:  ja 0x7ffff72e06c6 <ov_read_filter+1190>
00007ffff72e076f:  mov (%rsp),%rdi
00007ffff72e0773:  add %rdi,%rax
00007ffff72e0776:  cmp %rdi,%r13
00007ffff72e0779:  je 0x7ffff72e03af <ov_read_filter+399>
00007ffff72e077f:  movss (%rcx,%rax,4),%xmm4
00007ffff72e0784:  lea 0x0(,%rax,4),%rdi
00007ffff72e078c:  movss 0xa44(%rip),%xmm0        # 0x7ffff72e11d8
00007ffff72e0794:  mulss %xmm0,%xmm4
00007ffff72e0798:  movss 0xa3c(%rip),%xmm2        # 0x7ffff72e11dc
00007ffff72e07a0:  movss 0xa38(%rip),%xmm1        # 0x7ffff72e11e0
00007ffff72e07a8:  movss (%rdx,%rax,4),%xmm3
00007ffff72e07ad:  mulss %xmm0,%xmm3
00007ffff72e07b1:  minss %xmm2,%xmm4
00007ffff72e07b5:  minss %xmm2,%xmm3
00007ffff72e07b9:  maxss %xmm1,%xmm4
00007ffff72e07bd:  maxss %xmm1,%xmm3
00007ffff72e07c1:  cvttss2si %xmm4,%r9d
00007ffff72e07c6:  mov %r9w,(%r15,%rax,4)
00007ffff72e07cb:  cvttss2si %xmm3,%r9d
00007ffff72e07d0:  mov %r9w,0x2(%r15,%rdi,1)
00007ffff72e07d6:  lea 0x1(%rax),%r9
00007ffff72e07da:  cmp %r9,%r8
00007ffff72e07dd:  jle 0x7ffff72e03af <ov_read_filter+399>
00007ffff72e07e3:  movss 0x4(%rcx,%rdi,1),%xmm4
00007ffff72e07e9:  mulss %xmm0,%xmm4
00007ffff72e07ed:  movss 0x4(%rdx,%rdi,1),%xmm3
00007ffff72e07f3:  mulss %xmm0,%xmm3
00007ffff72e07f7:  minss %xmm2,%xmm4
00007ffff72e07fb:  minss %xmm2,%xmm3
00007ffff72e07ff:  maxss %xmm1,%xmm4
00007ffff72e0803:  maxss %xmm1,%xmm3
00007ffff72e0807:  cvttss2si %xmm4,%r9d
00007ffff72e080c:  mov %r9w,0x4(%r15,%rdi,1)
00007ffff72e0812:  cvttss2si %xmm3,%r9d
00007ffff72e0817:  mov %r9w,0x6(%r15,%rdi,1)
00007ffff72e081d:  lea 0x2(%rax),%r9
00007ffff72e0821:  cmp %r9,%r8
00007ffff72e0824:  jle 0x7ffff72e03af <ov_read_filter+399>
00007ffff72e082a:  movss 0x8(%rcx,%rdi,1),%xmm4
00007ffff72e0830:  mulss %xmm0,%xmm4
00007ffff72e0834:  movss 0x8(%rdx,%rdi,1),%xmm3
00007ffff72e083a:  mulss %xmm0,%xmm3
00007ffff72e083e:  minss %xmm2,%xmm4
00007ffff72e0842:  minss %xmm2,%xmm3
00007ffff72e0846:  maxss %xmm1,%xmm4
00007ffff72e084a:  maxss %xmm1,%xmm3
00007ffff72e084e:  cvttss2si %xmm4,%r9d
00007ffff72e0853:  mov %r9w,0x8(%r15,%rdi,1)
00007ffff72e0859:  cvttss2si %xmm3,%r9d
00007ffff72e085e:  mov %r9w,0xa(%r15,%rdi,1)
00007ffff72e0864:  lea 0x3(%rax),%r9
00007ffff72e0868:  cmp %r9,%r8
00007ffff72e086b:  jle 0x7ffff72e03af <ov_read_filter+399>
00007ffff72e0871:  movss 0xc(%rcx,%rdi,1),%xmm4
00007ffff72e0877:  mulss %xmm0,%xmm4
00007ffff72e087b:  movss 0xc(%rdx,%rdi,1),%xmm3
00007ffff72e0881:  mulss %xmm0,%xmm3
00007ffff72e0885:  minss %xmm2,%xmm4
00007ffff72e0889:  minss %xmm2,%xmm3
00007ffff72e088d:  maxss %xmm1,%xmm4
00007ffff72e0891:  maxss %xmm1,%xmm3
00007ffff72e0895:  cvttss2si %xmm4,%r9d
00007ffff72e089a:  mov %r9w,0xc(%r15,%rdi,1)
00007ffff72e08a0:  cvttss2si %xmm3,%r9d
00007ffff72e08a5:  mov %r9w,0xe(%r15,%rdi,1)
00007ffff72e08ab:  lea 0x4(%rax),%r9
00007ffff72e08af:  cmp %r9,%r8
00007ffff72e08b2:  jle 0x7ffff72e03af <ov_read_filter+399>
00007ffff72e08b8:  movss 0x10(%rcx,%rdi,1),%xmm4
00007ffff72e08be:  mulss %xmm0,%xmm4
00007ffff72e08c2:  movss 0x10(%rdx,%rdi,1),%xmm3
00007ffff72e08c8:  mulss %xmm0,%xmm3
00007ffff72e08cc:  minss %xmm2,%xmm4
00007ffff72e08d0:  minss %xmm2,%xmm3
00007ffff72e08d4:  maxss %xmm1,%xmm4
00007ffff72e08d8:  maxss %xmm1,%xmm3
00007ffff72e08dc:  cvttss2si %xmm4,%r9d
00007ffff72e08e1:  mov %r9w,0x10(%r15,%rdi,1)
00007ffff72e08e7:  cvttss2si %xmm3,%r9d
00007ffff72e08ec:  mov %r9w,0x12(%r15,%rdi,1)
00007ffff72e08f2:  lea 0x5(%rax),%r9
00007ffff72e08f6:  cmp %r9,%r8
00007ffff72e08f9:  jle 0x7ffff72e03af <ov_read_filter+399>
00007ffff72e08ff:  movss 0x14(%rcx,%rdi,1),%xmm4
00007ffff72e0905:  add $0x6,%rax
00007ffff72e0909:  mulss %xmm0,%xmm4
00007ffff72e090d:  movss 0x14(%rdx,%rdi,1),%xmm3
00007ffff72e0913:  mulss %xmm0,%xmm3
00007ffff72e0917:  cmp %rax,%r8
00007ffff72e091a:  minss %xmm2,%xmm4
00007ffff72e091e:  minss %xmm2,%xmm3
00007ffff72e0922:  maxss %xmm1,%xmm4
00007ffff72e0926:  maxss %xmm1,%xmm3
00007ffff72e092a:  cvttss2si %xmm4,%r9d
00007ffff72e092f:  mov %r9w,0x14(%r15,%rdi,1)
00007ffff72e0935:  cvttss2si %xmm3,%r9d
00007ffff72e093a:  mov %r9w,0x16(%r15,%rdi,1)
00007ffff72e0940:  jle 0x7ffff72e03af <ov_read_filter+399>
00007ffff72e0946:  movss 0x18(%rcx,%rdi,1),%xmm3
00007ffff72e094c:  mulss %xmm0,%xmm3
00007ffff72e0950:  mulss 0x18(%rdx,%rdi,1),%xmm0
00007ffff72e0956:  minss %xmm2,%xmm3
00007ffff72e095a:  minss %xmm0,%xmm2
00007ffff72e095e:  maxss %xmm1,%xmm3
00007ffff72e0962:  maxss %xmm2,%xmm1
00007ffff72e0966:  cvttss2si %xmm3,%eax
00007ffff72e096a:  mov %ax,0x18(%r15,%rdi,1)
00007ffff72e0970:  cvttss2si %xmm1,%eax
00007ffff72e0974:  mov %ax,0x1a(%r15,%rdi,1)
00007ffff72e097a:  jmpq 0x7ffff72e03af <ov_read_filter+399>
00007ffff72e097f:  xor %eax,%eax
00007ffff72e0981:  jmpq 0x7ffff72e0661 <ov_read_filter+1089>
00007ffff72e0986:  nopw %cs:0x0(%rax,%rax,1)
                  ov_read:
00007ffff72e0990:  sub $0x10,%rsp
00007ffff72e0994:  pushq $0x0
00007ffff72e0996:  pushq $0x0
00007ffff72e0998:  pushq 0x28(%rsp)
00007ffff72e099c:  callq 0x7ffff72dad20 <ov_read_filter@plt>
00007ffff72e09a1:  add $0x28,%rsp
00007ffff72e09a5:  retq
00007ffff72e09a6:  nopw %cs:0x0(%rax,%rax,1)
                  ov_read_float:
00007ffff72e09b0:  mov 0x80(%rdi),%eax
00007ffff72e09b6:  cmp $0x1,%eax
00007ffff72e09b9:  jle 0x7ffff72e0ab9 <ov_read_float+265>
00007ffff72e09bf:  push %r15
00007ffff72e09c1:  push %r14
00007ffff72e09c3:  mov %rsi,%r15
00007ffff72e09c6:  push %r13
00007ffff72e09c8:  push %r12
00007ffff72e09ca:  mov %rcx,%r14
00007ffff72e09cd:  push %rbp
00007ffff72e09ce:  push %rbx
00007ffff72e09cf:  movslq %edx,%r13
00007ffff72e09d2:  mov %rdi,%rbx
00007ffff72e09d5:  lea 0x240(%rdi),%rbp
00007ffff72e09dc:  sub $0x28,%rsp
00007ffff72e09e0:  lea 0x18(%rsp),%r12
00007ffff72e09e5:  jmp 0x7ffff72e0a0f <ov_read_float+95>
00007ffff72e09e7:  nopw 0x0(%rax,%rax,1)
00007ffff72e09f0:  mov %rbx,%rdi
00007ffff72e09f3:  callq 0x7ffff72dc480 <_fetch_and_process_packet.constprop.10>
00007ffff72e09f8:  cmp $0xfffffffe,%eax
00007ffff72e09fb:  je 0x7ffff72e0a90 <ov_read_float+224>
00007ffff72e0a01:  test %eax,%eax
00007ffff72e0a03:  jle 0x7ffff72e0aa8 <ov_read_float+248>
00007ffff72e0a09:  mov 0x80(%rbx),%eax
00007ffff72e0a0f:  cmp $0x4,%eax
00007ffff72e0a12:  jne 0x7ffff72e09f0 <ov_read_float+64>
00007ffff72e0a14:  mov %r12,%rsi
00007ffff72e0a17:  mov %rbp,%rdi
00007ffff72e0a1a:  callq 0x7ffff72dacd0 <vorbis_synthesis_pcmout@plt>
00007ffff72e0a1f:  movslq %eax,%rdx
00007ffff72e0a22:  test %rdx,%rdx
00007ffff72e0a25:  je 0x7ffff72e09f0 <ov_read_float+64>
00007ffff72e0a27:  mov 0x68(%rbx),%rdi
00007ffff72e0a2b:  mov %rdx,0x8(%rsp)
00007ffff72e0a30:  callq 0x7ffff72dad10 <vorbis_synthesis_halfrate_p@plt>
00007ffff72e0a35:  test %r15,%r15
00007ffff72e0a38:  mov %eax,%r12d
00007ffff72e0a3b:  mov 0x8(%rsp),%rdx
00007ffff72e0a40:  je 0x7ffff72e0a4a <ov_read_float+154>
00007ffff72e0a42:  mov 0x18(%rsp),%rax
00007ffff72e0a47:  mov %rax,(%r15)
00007ffff72e0a4a:  cmp %r13,%rdx
00007ffff72e0a4d:  mov %rbp,%rdi
00007ffff72e0a50:  cmovle %rdx,%r13
00007ffff72e0a54:  mov %r13d,%esi
00007ffff72e0a57:  callq 0x7ffff72dadb0 <vorbis_synthesis_read@plt>
00007ffff72e0a5c:  mov %r13,%rax
00007ffff72e0a5f:  mov %r12d,%ecx
00007ffff72e0a62:  shl %cl,%rax
00007ffff72e0a65:  add %rax,0x78(%rbx)
00007ffff72e0a69:  test %r14,%r14
00007ffff72e0a6c:  je 0x7ffff72e0a77 <ov_read_float+199>
00007ffff72e0a6e:  mov 0x90(%rbx),%eax
00007ffff72e0a74:  mov %eax,(%r14)
00007ffff72e0a77:  add $0x28,%rsp
00007ffff72e0a7b:  mov %r13,%rax
00007ffff72e0a7e:  pop %rbx
00007ffff72e0a7f:  pop %rbp
00007ffff72e0a80:  pop %r12
00007ffff72e0a82:  pop %r13
00007ffff72e0a84:  pop %r14
00007ffff72e0a86:  pop %r15
00007ffff72e0a88:  retq
00007ffff72e0a89:  nopl 0x0(%rax)
00007ffff72e0a90:  add $0x28,%rsp
00007ffff72e0a94:  xor %eax,%eax
00007ffff72e0a96:  pop %rbx
00007ffff72e0a97:  pop %rbp
00007ffff72e0a98:  pop %r12
00007ffff72e0a9a:  pop %r13
00007ffff72e0a9c:  pop %r14
00007ffff72e0a9e:  pop %r15
00007ffff72e0aa0:  retq
00007ffff72e0aa1:  nopl 0x0(%rax)
00007ffff72e0aa8:  add $0x28,%rsp
00007ffff72e0aac:  cltq
00007ffff72e0aae:  pop %rbx
00007ffff72e0aaf:  pop %rbp
00007ffff72e0ab0:  pop %r12
00007ffff72e0ab2:  pop %r13
00007ffff72e0ab4:  pop %r14
00007ffff72e0ab6:  pop %r15
00007ffff72e0ab8:  retq
00007ffff72e0ab9:  mov $0xffffffffffffff7d,%rax
00007ffff72e0ac0:  retq
00007ffff72e0ac1:  data32 data32 data32 data32 data32 nopw %cs:0x0(%rax,%rax,1)
                  ov_crosslap:
00007ffff72e0ad0:  cmp %rsi,%rdi
00007ffff72e0ad3:  je 0x7ffff72e1128 <ov_crosslap+1624>
00007ffff72e0ad9:  mov 0x80(%rdi),%eax
00007ffff72e0adf:  cmp $0x1,%eax
00007ffff72e0ae2:  jle 0x7ffff72e1135 <ov_crosslap+1637>
00007ffff72e0ae8:  push %rbp
00007ffff72e0ae9:  mov %rsp,%rbp
00007ffff72e0aec:  push %r15
00007ffff72e0aee:  push %r14
00007ffff72e0af0:  push %r13
00007ffff72e0af2:  push %r12
00007ffff72e0af4:  mov %rsi,%r12
00007ffff72e0af7:  push %rbx
00007ffff72e0af8:  mov %rdi,%rbx
00007ffff72e0afb:  sub $0x48,%rsp
00007ffff72e0aff:  cmpl $0x1,0x80(%rsi)
00007ffff72e0b06:  jg 0x7ffff72e0b2c <ov_crosslap+92>
00007ffff72e0b08:  jmpq 0x7ffff72e112b <ov_crosslap+1627>
00007ffff72e0b0d:  nopl (%rax)
00007ffff72e0b10:  mov %rbx,%rdi
00007ffff72e0b13:  callq 0x7ffff72dbee0 <_fetch_and_process_packet.constprop.11>
00007ffff72e0b18:  cmp $0xfffffffd,%eax
00007ffff72e0b1b:  je 0x7ffff72e0b26 <ov_crosslap+86>
00007ffff72e0b1d:  mov %eax,%edx
00007ffff72e0b1f:  shr $0x1f,%edx
00007ffff72e0b22:  test %dl,%dl
00007ffff72e0b24:  jne 0x7ffff72e0b61 <ov_crosslap+145>
00007ffff72e0b26:  mov 0x80(%rbx),%eax
00007ffff72e0b2c:  cmp $0x4,%eax
00007ffff72e0b2f:  jne 0x7ffff72e0b10 <ov_crosslap+64>
00007ffff72e0b31:  lea 0x240(%r12),%r13
00007ffff72e0b39:  nopl 0x0(%rax)
00007ffff72e0b40:  cmpl $0x4,0x80(%r12)
00007ffff72e0b49:  je 0x7ffff72e0b70 <ov_crosslap+160>
00007ffff72e0b4b:  mov %r12,%rdi
00007ffff72e0b4e:  callq 0x7ffff72dbee0 <_fetch_and_process_packet.constprop.11>
00007ffff72e0b53:  cmp $0xfffffffd,%eax
00007ffff72e0b56:  je 0x7ffff72e0b40 <ov_crosslap+112>
00007ffff72e0b58:  mov %eax,%edx
00007ffff72e0b5a:  shr $0x1f,%edx
00007ffff72e0b5d:  test %dl,%dl
00007ffff72e0b5f:  je 0x7ffff72e0b40 <ov_crosslap+112>
00007ffff72e0b61:  lea -0x28(%rbp),%rsp
00007ffff72e0b65:  pop %rbx
00007ffff72e0b66:  pop %r12
00007ffff72e0b68:  pop %r13
00007ffff72e0b6a:  pop %r14
00007ffff72e0b6c:  pop %r15
00007ffff72e0b6e:  pop %rbp
00007ffff72e0b6f:  retq
00007ffff72e0b70:  xor %esi,%esi
00007ffff72e0b72:  mov %r13,%rdi
00007ffff72e0b75:  callq 0x7ffff72dacd0 <vorbis_synthesis_pcmout@plt>
00007ffff72e0b7a:  test %eax,%eax
00007ffff72e0b7c:  je 0x7ffff72e0b4b <ov_crosslap+123>
00007ffff72e0b7e:  mov $0xffffffff,%esi
00007ffff72e0b83:  mov %rbx,%rdi
00007ffff72e0b86:  callq 0x7ffff72dae00 <ov_info@plt>
00007ffff72e0b8b:  mov $0xffffffff,%esi
00007ffff72e0b90:  mov %r12,%rdi
00007ffff72e0b93:  mov %rax,%r14
00007ffff72e0b96:  callq 0x7ffff72dae00 <ov_info@plt>
00007ffff72e0b9b:  mov %rbx,%rdi
00007ffff72e0b9e:  mov %rax,%r15
00007ffff72e0ba1:  callq 0x7ffff72dac20 <ov_halfrate_p@plt>
00007ffff72e0ba6:  mov %r12,%rdi
00007ffff72e0ba9:  mov %eax,-0x48(%rbp)
00007ffff72e0bac:  callq 0x7ffff72dac20 <ov_halfrate_p@plt>
00007ffff72e0bb1:  mov %eax,%r12d
00007ffff72e0bb4:  movslq 0x4(%r14),%rax
00007ffff72e0bb8:  xor %esi,%esi
00007ffff72e0bba:  mov %r14,%rdi
00007ffff72e0bbd:  lea 0x1e(,%rax,8),%rax
00007ffff72e0bc5:  and $0xfffffffffffffff0,%rax
00007ffff72e0bc9:  sub %rax,%rsp
00007ffff72e0bcc:  lea 0xf(%rsp),%rax
00007ffff72e0bd1:  and $0xfffffffffffffff0,%rax
00007ffff72e0bd5:  mov %rax,-0x50(%rbp)
00007ffff72e0bd9:  callq 0x7ffff72daca0 <vorbis_info_blocksize@plt>
00007ffff72e0bde:  mov -0x48(%rbp),%ecx
00007ffff72e0be1:  mov %eax,%r9d
................. ...
Title: aoTuV Patches, Vorbis 1.3.5 and Lancer
Post by: enzo on 2015-09-27 23:23:20
OK, I will try to reproduce it next week.

This looks like SSE code generated by the compiler (i.e. not the Lancer code). What compiler version and CFLAGS did you use to build the Vorbis libraries?
Title: aoTuV Patches, Vorbis 1.3.5 and Lancer
Post by: lvqcl on 2015-09-28 00:04:20
IMHO it looks like a code from ov_read_float2pcm() if ov_read_filter() calls it with unaligned arguments.

It's possible to change in ov_read_float2pcm() all _mm_load_ps to _mm_loadu_ps (and maybe _mm_store_si128 to _mm_storeu_si128) and test again.
Title: aoTuV Patches, Vorbis 1.3.5 and Lancer
Post by: OggY68 on 2015-09-28 09:54:52
Thanks Enzo and lvqcl,

I'm using the standard gcc 4.9.2 compiler + export CFLAGS="-msse3" (CPU : AMD 64 X2 5000xp)

lvqcl, I will try out your advice today or later this week.

Title: aoTuV Patches, Vorbis 1.3.5 and Lancer
Post by: OggY68 on 2015-09-28 19:51:39
Great, it works now !!! Thank you very much lvqcl and Enzo !
Title: aoTuV Patches, Vorbis 1.3.5 and Lancer
Post by: lvqcl on 2015-09-28 20:42:28
BTW: did you change only _mm_load_ps to _mm_loadu_ps? Or _mm_store_si128 -> _mm_storeu_si128 change was also necessary?
Title: aoTuV Patches, Vorbis 1.3.5 and Lancer
Post by: enzo on 2015-09-28 20:57:13
I just reproduced this issue as well. Both, _mm_load_ps and _mm_store_si128 need to be changed. ov_read_filter has no control over the buffer that receives the data, so it must be assumed to be unaligned.

Regarding the source, the internal Vorbis synthesis buffer is 16 byte aligned, but the pointer returned by vorbis_synthesis_pcmout may point to the middle of a 16 byte block if an uneven number of samples has been read before and thus be 8 byte aligned. That's why _mm_loadu_ps is needed.

Thanks lvqcl for your hint! I've updated the patches accordingly.
Title: aoTuV Patches, Vorbis 1.3.5 and Lancer
Post by: OggY68 on 2015-09-28 21:47:57
BTW: did you change only _mm_load_ps to _mm_loadu_ps? Or _mm_store_si128 -> _mm_storeu_si128 change was also necessary?


I changed directly both , to be sure ...
Title: aoTuV Patches, Vorbis 1.3.5 and Lancer
Post by: soundping on 2015-09-29 00:19:14
Will this get posted on rarewares?
Title: aoTuV Patches, Vorbis 1.3.5 and Lancer
Post by: john33 on 2015-09-29 07:58:34
Yes.
Title: aoTuV Patches, Vorbis 1.3.5 and Lancer
Post by: john33 on 2015-10-02 12:34:34
I've amended the code, but I'm away this weekend so I'm afraid the compiles won't get updated until early next week.
Title: aoTuV Patches, Vorbis 1.3.5 and Lancer
Post by: soundping on 2015-10-03 14:41:05
Thanks. 
Title: aoTuV Patches, Vorbis 1.3.5 and Lancer
Post by: o-l-a-v on 2015-10-22 11:25:16
Any news about new compiles John?
Title: aoTuV Patches, Vorbis 1.3.5 and Lancer
Post by: akapuma on 2015-12-12 18:43:52
Hello,

are the current builds on rarewares stable? Or should we wait for an updated build from john33?

Best regards

akapuma
Title: aoTuV Patches, Vorbis 1.3.5 and Lancer
Post by: punkrockdude on 2016-01-08 01:45:36
Is it possible to upload this to github or somewhere else with an easy explanation how to apply patches to source? I have mostly compiled using Arch's makepkg and Debian's system that have everything preconfigured. Thanks!

On a side not, why can't Xiph include this in the official version? Is it the instructions that can be a problem on older processors? If so, can't it be programmed to sense what CPU is used and use generic code then?
Title: aoTuV Patches, Vorbis 1.3.5 and Lancer
Post by: ChronoSphere on 2016-01-08 20:22:47
By "Arch's makepkg" do you mean this AUR package (https://aur.archlinux.org/packages/libvorbis-aotuv-lancer/)? Cause if yes, then it already has all patches applied. The PKGBUILD will also tell you how to apply the patch, for generating just look at man patch.
Title: Re: aoTuV Patches, Vorbis 1.3.5 and Lancer
Post by: punkrockdude on 2016-01-11 10:54:35
By "Arch's makepkg" do you mean this AUR package (https://aur.archlinux.org/packages/libvorbis-aotuv-lancer/)? Cause if yes, then it already has all patches applied. The PKGBUILD will also tell you how to apply the patch, for generating just look at man patch.
I had missed that they had updated the package. I am not using Arch at the moment so I will look in the PKGBUILD like you said. Thanks!
Title: Re: aoTuV Patches, Vorbis 1.3.5 and Lancer
Post by: cloucrio on 2016-01-14 14:29:36
I've amended the code, but I'm away this weekend so I'm afraid the compiles won't get updated until early next week.
hi john, any news regarding the new compiles?
Title: Re: aoTuV Patches, Vorbis 1.3.5 and Lancer
Post by: morbit on 2016-02-13 08:38:55
Hello.

Just wanted to thank you for the patches, I've compiled those on FreeBSD with clang 3.4.1 and encoding is on average 22% faster than
baseline (using the same flags, -O3 -march=native)

Files are not bit identical e.g.

Code: [Select]
Prior:

Done encoding file "audio_07.ogg"

        File length:  9m 03.0s
        Elapsed time: 0m 17.7s
        Rate:         30.7803
        Average bitrate: 239.9 kb/s

ogginfo

AO; aoTuV [20110424] (based on Xiph.Org's libVorbis)

Vorbis stream 1:
        Total data length: 16289845 bytes
        Playback length: 9m:03.333s
        Average bitrate: 239,850479 kb/s

Post:

Done encoding file "audio_07.ogg"

        File length:  9m 03.0s
        Elapsed time: 0m 13.7s
        Rate:         39.6077
        Average bitrate: 239.8 kb/s

ogginfo

BS; LancerMod(SSE3) (based on aoTuV [20110424])

Vorbis stream 1:
        Total data length: 16289693 bytes
        Playback length: 9m:03.333s
        Average bitrate: 239,848240 kb/s

That was expected though. Thanks!
Title: Re: aoTuV Patches, Vorbis 1.3.5 and Lancer
Post by: Elbart on 2016-04-17 14:38:16
Anybody tried to compile oggenc2 aotuv with normal Visual Studio compiler and not ICC?
What would be the expected speed-penalty?
Title: Re: aoTuV Patches, Vorbis 1.3.5 and Lancer
Post by: SPV82 on 2016-09-18 06:54:01
Hello. Can anyone help - where to get xmmlib sources for Ubuntu linux?

Code: [Select]
gcc: error: .libs/xmmlib.o: No such file or directory

Building aoTuV without patches works.
Title: Re: aoTuV Patches, Vorbis 1.3.5 and Lancer
Post by: SPV82 on 2016-09-18 16:35:39
Please see full log here: http://pastebin.com/1yfuYh3K
Title: Re: aoTuV Patches, Vorbis 1.3.5 and Lancer
Post by: SPV82 on 2016-09-18 19:27:16
Please see full log here: http://pastebin.com/1yfuYh3K
Building fails because of "--disable-shared --enable-static". I guess it would be useful if enzo can apply fix for static build.
Title: Re: aoTuV Patches, Vorbis 1.3.5 and Lancer
Post by: enzo on 2016-12-17 12:01:53
Building fails because of "--disable-shared --enable-static". I guess it would be useful if enzo can apply fix for static build.
Sorry, I've seen this only now. The patches are now updated to fix this.
Title: Re: aoTuV Patches, Vorbis 1.3.5 and Lancer
Post by: Isayama on 2017-10-18 17:05:11
I am using the Archlinux AUR package (https://aur.archlinux.org/packages/libvorbis-aotuv-lancer). After updating the pkgsums to match the updated patch, the build fails on:

Code: [Select]
gcc: error: xmmlib.o: No such file or directory
(Full build log (https://framabin.org/?b36babca2b010c40#e1qujfyTHf1bd04anWSu9EKVxiF9ghZ7n+WPnjn7QQI=))

The build function uses:
Code: [Select]
./configure --prefix=/usr --disable-static

I removed "--disable-static" and then it worked.
Any insight?
Title: Re: aoTuV Patches, Vorbis 1.3.5 and Lancer
Post by: Triza on 2017-10-19 23:50:33
Hello Isayama,

Great that few of us still enjoy this good mature format.

I have not looked into this in detail, but I have the old working version. The difference between old and new is this
Code: [Select]
diff libvorbis-aotuv_b6.03_2015-lancer.patch libvorbis-aotuv_b6.03_2015-lancer-v2.patch 
141c141
< +++ aotuv-b6.03_20110424-20150808-lancer/lib/Makefile.am 2015-09-11 15:18:53 +0000
---
> +++ aotuv-b6.03_20110424-20150808-lancer/lib/Makefile.am 2016-12-17 11:46:45 +0000
163c163
< +test_sharedbook_LDADD = @VORBIS_LIBS@ .libs/xmmlib.o
---
> +test_sharedbook_LDADD = @VORBIS_LIBS@ xmmlib.o
169c169
< +++ aotuv-b6.03_20110424-20150808-lancer/lib/Makefile.in 2015-09-11 15:12:20 +0000
---
> +++ aotuv-b6.03_20110424-20150808-lancer/lib/Makefile.in 2016-12-17 11:46:31 +0000
200c200
< +test_sharedbook_LDADD = @VORBIS_LIBS@ .libs/xmmlib.o
---
> +test_sharedbook_LDADD = @VORBIS_LIBS@ xmmlib.o

Enzo made the change for a guy who wanted to compile with 
Code: [Select]
--disable-shared --enable-static
parameters and for that we need this change. See Enzo's Edit3. Sounds like no-one tested that it does not work with original settings. Better would have been to version the patches.

Having said that if you patch the patch backward using this diff it should be good.

Having said that I am not sure... maybe even your current compile is just as good.

Triza
Title: Re: aoTuV Patches, Vorbis 1.3.5 and Lancer
Post by: Triza on 2017-10-20 00:07:42
They are great patches (thanks Enzo). I did not spot any issues with the encodes. I did not train my ears for artifacts (deliberately) and I enjoy quality 3. Amazing that ~100 kbps produces quality which feels like transparent. Obviously this could not be the case without Aoyumi's tireless efforts.
Title: Re: aoTuV Patches, Vorbis 1.3.5 and Lancer
Post by: enzo on 2017-10-24 20:53:42
The first patch has been updated again to fix the issues when compiling with different --[dis|en]able-[shared|static] options.

I regenerated lib/Makefile.in this time instead of modifying it by hand. This should fix all potential issues caused by the inclusion of new files in the patch (cpu.c and xmmlib.c).
Title: Re: aoTuV Patches, Vorbis 1.3.5 and Lancer
Post by: Isayama on 2017-11-06 20:15:53
Thanks a lot Triza & enzo, I confirm the build is successful after the fix with the aforementioned AUR package. Cheers!
Title: Re: aoTuV Patches, Vorbis 1.3.5 and Lancer
Post by: gorman on 2018-02-28 12:35:40
Anybody has made a build with these patches for FFMPEG?
Title: Re: aoTuV Patches, Vorbis 1.3.5 and Lancer
Post by: dutch109 on 2018-02-28 22:25:50
Any FFmpeg build dynamically linked with libvorbis (which is the default), is able to transparently use the patched libvorbis.
Title: Re: aoTuV Patches, Vorbis 1.3.5 and Lancer
Post by: madmax on 2018-03-29 13:25:19
btw, there's vorbis 1.3.6 available.

libvorbis 1.3.6 (2018-03-16) -- "Xiph.Org libVorbis I 20180316 (Now 100% fewer shells)"

* Fix CVE-2018-5146 - out-of-bounds write on codebook decoding.
* Fix CVE-2017-14632 - free() on unitialized data
* Fix CVE-2017-14633 - out-of-bounds read
* Fix bitrate metadata parsing.
* Fix out-of-bounds read in codebook parsing.
* Fix residue vector size in Vorbis I spec.
* Appveyor support
* Travis CI support
* Add secondary CMake build system.
* Build system fixes
Title: Re: aoTuV Patches, Vorbis 1.3.5 and Lancer
Post by: enzo on 2018-03-29 14:30:01
btw, there's vorbis 1.3.6 available.
Yes, I noticed. I'm working on updated aoTuV and Lancer patches. They should be ready this weekend.
Title: Re: aoTuV Patches, Vorbis 1.3.5 and Lancer
Post by: madmax on 2018-03-29 16:47:15
easy mr. enzo, take your time.