[packages/libdv] - rel 7 - add patches from fedora - switch to gtk+2

baggins baggins at pld-linux.org
Mon Jun 1 09:20:42 CEST 2026


commit 7ba6b0049b7f5ce912725b5e7042642d8def3d4b
Author: Jan Rękorajski <baggins at pld-linux.org>
Date:   Mon Jun 1 09:20:14 2026 +0200

    - rel 7
    - add patches from fedora
    - switch to gtk+2

 libdv-dso-linking.patch   |   20 +
 libdv-gcc14.patch         |   32 +
 libdv-gtk2.patch          |   29 +
 libdv-no-exec-stack.patch |  146 ++++
 libdv-pic.patch           | 1640 +++++++++++++++++++++++++++++++++++++++++++++
 libdv.spec                |   22 +-
 6 files changed, 1883 insertions(+), 6 deletions(-)
---
diff --git a/libdv.spec b/libdv.spec
index 5f38506..cd1a461 100644
--- a/libdv.spec
+++ b/libdv.spec
@@ -11,12 +11,17 @@ Summary:	DV video software codec
 Summary(pl.UTF-8):	Biblioteka do obsługi formatu wideo DV
 Name:		libdv
 Version:	1.0.0
-Release:	6
+Release:	7
 License:	LGPL v2.1+
 Group:		Libraries
-Source0:	http://dl.sourceforge.net/libdv/%{name}-%{version}.tar.gz
+Source0:	http://downloads.sourceforge.net/libdv/%{name}-%{version}.tar.gz
 # Source0-md5:	f895162161cfa4bb4a94c070a7caa6c7
 Patch0:		%{name}-include_fix.patch
+Patch1:		%{name}-no-exec-stack.patch
+Patch2:		%{name}-pic.patch
+Patch3:		%{name}-gtk2.patch
+Patch4:		%{name}-dso-linking.patch
+Patch5:		%{name}-gcc14.patch
 URL:		http://libdv.sourceforge.net/
 BuildRequires:	autoconf >= 2.59-9
 BuildRequires:	automake
@@ -26,7 +31,7 @@ BuildRequires:	popt-devel
 BuildRequires:	rpmbuild(macros) >= 1.213
 %if %{with gui}
 BuildRequires:	SDL-devel >= 1.1.6
-BuildRequires:	gtk+-devel >= 1.2.10-3
+BuildRequires:	gtk+2-devel
 BuildRequires:	xorg-lib-libXv-devel
 %endif
 BuildRoot:	%{tmpdir}/%{name}-%{version}-root-%(id -u -n)
@@ -85,6 +90,11 @@ Programy do kodowania i odtwarzania plików DV.
 %prep
 %setup -q
 %patch -P0 -p1
+%patch -P1 -p1
+%patch -P2 -p1
+%patch -P3 -p1
+%patch -P4 -p1
+%patch -P5 -p1
 
 %build
 %{__libtoolize}
@@ -123,12 +133,12 @@ rm -rf $RPM_BUILD_ROOT
 %files
 %defattr(644,root,root,755)
 %doc AUTHORS ChangeLog NEWS README.* TODO
-%attr(755,root,root) %{_libdir}/libdv.so.*.*.*
-%attr(755,root,root) %ghost %{_libdir}/libdv.so.4
+%{_libdir}/libdv.so.*.*.*
+%ghost %{_libdir}/libdv.so.4
 
 %files devel
 %defattr(644,root,root,755)
-%attr(755,root,root) %{_libdir}/libdv.so
+%{_libdir}/libdv.so
 %{_libdir}/libdv.la
 %{_includedir}/libdv
 %{_pkgconfigdir}/libdv.pc
diff --git a/libdv-dso-linking.patch b/libdv-dso-linking.patch
new file mode 100644
index 0000000..9117c58
--- /dev/null
+++ b/libdv-dso-linking.patch
@@ -0,0 +1,20 @@
+diff -Naur libdv-1.0.0.old/Makefile.am libdv-1.0.0/Makefile.am
+--- libdv-1.0.0.old/Makefile.am	2022-03-24 20:11:25.269668921 +0100
++++ libdv-1.0.0/Makefile.am	2022-03-24 20:14:29.849878099 +0100
+@@ -5,6 +5,7 @@
+ endif
+ 
+ SUBDIRS                   = libdv encodedv $(gtk_subdirs)
++ACLOCAL_AMFLAGS           = -I m4
+ 
+ AUX_DIST                  = $(ac_aux_dir)/config.guess \
+                                    $(ac_aux_dir)/config.sub \
+diff -Naur libdv-1.0.0.old/playdv/Makefile.am libdv-1.0.0/playdv/Makefile.am
+--- libdv-1.0.0.old/playdv/Makefile.am	2022-03-24 20:11:25.274669008 +0100
++++ libdv-1.0.0/playdv/Makefile.am	2022-03-24 20:14:29.815877508 +0100
+@@ -15,4 +15,4 @@
+ noinst_HEADERS=  display.h oss.h
+ 
+ playdv_SOURCES= playdv.c display.c display.h oss.c
+-playdv_LDADD= $(SDL_LIBS) $(GTK_LIBS) $(XV_LIB) ../libdv/libdv.la $(POPT_LIB)
++playdv_LDADD= $(SDL_LIBS) $(GTK_LIBS) $(XV_LIB) ../libdv/libdv.la $(POPT_LIB) -lX11 -lXext
diff --git a/libdv-gcc14.patch b/libdv-gcc14.patch
new file mode 100644
index 0000000..7b5a0a1
--- /dev/null
+++ b/libdv-gcc14.patch
@@ -0,0 +1,32 @@
+--- a/libdv/dv.orig.c	2024-03-17 21:51:33.216006756 +0100
++++ b/libdv/dv.c	2024-03-17 21:53:50.975829509 +0100
+@@ -35,6 +35,13 @@
+  *  @{
+  */
+ 
++#if defined __GNUC__ && __GNUC__ >= 14
++#pragma GCC diagnostic warning "-Wimplicit-function-declaration"
++#pragma GCC diagnostic warning "-Wincompatible-pointer-types"
++#pragma GCC diagnostic warning "-Wint-conversion"
++#pragma GCC diagnostic warning "-Wreturn-mismatch"
++#endif
++
+ #if HAVE_CONFIG_H
+ # include <config.h>
+ #endif
+--- a/libdv/quant.orig.c	2024-03-17 22:16:58.212228098 +0100
++++ b/libdv/quant.c	2024-03-17 22:18:20.503660888 +0100
+@@ -37,6 +37,13 @@
+  *  @{
+  */
+ 
++#if defined __GNUC__ && __GNUC__ >= 14
++#pragma GCC diagnostic warning "-Wimplicit-function-declaration"
++#pragma GCC diagnostic warning "-Wincompatible-pointer-types"
++#pragma GCC diagnostic warning "-Wint-conversion"
++#pragma GCC diagnostic warning "-Wreturn-mismatch"
++#endif
++
+ #if HAVE_CONFIG_H
+ # include <config.h>
+ #endif
diff --git a/libdv-gtk2.patch b/libdv-gtk2.patch
new file mode 100644
index 0000000..da10646
--- /dev/null
+++ b/libdv-gtk2.patch
@@ -0,0 +1,29 @@
+diff -Naur libdv-1.0.0.old/configure.ac libdv-1.0.0/configure.ac
+--- libdv-1.0.0.old/configure.ac	2022-03-24 20:11:25.268668903 +0100
++++ libdv-1.0.0/configure.ac	2022-03-24 20:14:11.568560254 +0100
+@@ -1,12 +1,14 @@
+ dnl Process this file with autoconf to produce a configure script.
+-AC_INIT(libdv/parse.c)
++AC_INIT(libdv, 1.0.0)
++AC_CONFIG_SRCDIR(libdv/parse.c)
++AC_CONFIG_MACRO_DIRS([m4])
+ dnl AC_CONFIG_AUX_DIR(config)
+ AM_CONFIG_HEADER(config.h)
+ 
+ RPM_RELEASE=1
+ AC_CANONICAL_HOST
+ AC_CANONICAL_TARGET
+-AM_INIT_AUTOMAKE(libdv, 1.0.0)
++AM_INIT_AUTOMAKE
+ 
+ AM_MAINTAINER_MODE
+ AC_LIBTOOL_PICMODE(no)
+@@ -162,7 +164,7 @@
+ dnl Checks for libraries.
+ have_gtk="false"
+ if $use_gtk; then
+-	REQUIRES='glib >= 1.2.4 gtk+ >= 1.2.4'
++	REQUIRES='glib-2.0 >= 2.1.0 gtk+-x11-2.0 >= 2.1.0'
+ 	PKG_CHECK_MODULES(GTK,$REQUIRES,have_gtk="true",have_gtk="false")
+ 	AC_DEFINE(HAVE_GTK)
+ fi
diff --git a/libdv-no-exec-stack.patch b/libdv-no-exec-stack.patch
new file mode 100644
index 0000000..af4bff6
--- /dev/null
+++ b/libdv-no-exec-stack.patch
@@ -0,0 +1,146 @@
+diff -Naur libdv-1.0.0.old/libdv/dct_block_mmx.S libdv-1.0.0/libdv/dct_block_mmx.S
+--- libdv-1.0.0.old/libdv/dct_block_mmx.S	2022-03-24 20:11:25.273668990 +0100
++++ libdv-1.0.0/libdv/dct_block_mmx.S	2022-03-24 20:12:54.495220228 +0100
+@@ -1217,3 +1217,7 @@
+ 	popl	 %esi
+ 	popl	 %ebp
+ 	ret
++
++#ifdef __ELF__
++.section .note.GNU-stack,"", at progbits
++#endif
+diff -Naur libdv-1.0.0.old/libdv/dct_block_mmx_x86_64.S libdv-1.0.0/libdv/dct_block_mmx_x86_64.S
+--- libdv-1.0.0.old/libdv/dct_block_mmx_x86_64.S	2022-03-24 20:11:25.273668990 +0100
++++ libdv-1.0.0/libdv/dct_block_mmx_x86_64.S	2022-03-24 20:12:54.507220437 +0100
+@@ -1207,3 +1207,7 @@
+ 	pop	 %r12
+ 	
+ 	ret
++
++#ifdef __ELF__
++.section .note.GNU-stack,"", at progbits
++#endif
+diff -Naur libdv-1.0.0.old/libdv/encode_x86_64.S libdv-1.0.0/libdv/encode_x86_64.S
+--- libdv-1.0.0.old/libdv/encode_x86_64.S	2022-03-24 20:11:25.273668990 +0100
++++ libdv-1.0.0/libdv/encode_x86_64.S	2022-03-24 20:12:54.508220455 +0100
+@@ -612,3 +612,6 @@
+ 
+ 
+ 
++#ifdef __ELF__
++.section .note.GNU-stack,"", at progbits
++#endif
+diff -Naur libdv-1.0.0.old/libdv/encode_x86.S libdv-1.0.0/libdv/encode_x86.S
+--- libdv-1.0.0.old/libdv/encode_x86.S	2022-03-24 20:11:25.273668990 +0100
++++ libdv-1.0.0/libdv/encode_x86.S	2022-03-24 20:12:54.508220455 +0100
+@@ -611,3 +611,6 @@
+ 
+ 
+ 
++#ifdef __ELF__
++.section .note.GNU-stack,"", at progbits
++#endif
+diff -Naur libdv-1.0.0.old/libdv/idct_block_mmx.S libdv-1.0.0/libdv/idct_block_mmx.S
+--- libdv-1.0.0.old/libdv/idct_block_mmx.S	2022-03-24 20:11:25.273668990 +0100
++++ libdv-1.0.0/libdv/idct_block_mmx.S	2022-03-24 20:12:54.508220455 +0100
+@@ -649,3 +649,6 @@
+ 	.long 0,0
+ 	.align 8
+ 
++#ifdef __ELF__
++.section .note.GNU-stack,"", at progbits
++#endif
+diff -Naur libdv-1.0.0.old/libdv/idct_block_mmx_x86_64.S libdv-1.0.0/libdv/idct_block_mmx_x86_64.S
+--- libdv-1.0.0.old/libdv/idct_block_mmx_x86_64.S	2022-03-24 20:11:25.272668973 +0100
++++ libdv-1.0.0/libdv/idct_block_mmx_x86_64.S	2022-03-24 20:12:54.508220455 +0100
+@@ -654,3 +654,6 @@
+ 	.long 0,0
+ 	.align 8
+ 
++#ifdef __ELF__
++.section .note.GNU-stack,"", at progbits
++#endif
+diff -Naur libdv-1.0.0.old/libdv/quant_x86_64.S libdv-1.0.0/libdv/quant_x86_64.S
+--- libdv-1.0.0.old/libdv/quant_x86_64.S	2022-03-24 20:11:25.272668973 +0100
++++ libdv-1.0.0/libdv/quant_x86_64.S	2022-03-24 20:12:54.509220472 +0100
+@@ -463,3 +463,6 @@
+ 
+ 
+ 
++#ifdef __ELF__
++.section .note.GNU-stack,"", at progbits
++#endif
+diff -Naur libdv-1.0.0.old/libdv/quant_x86.S libdv-1.0.0/libdv/quant_x86.S
+--- libdv-1.0.0.old/libdv/quant_x86.S	2022-03-24 20:11:25.273668990 +0100
++++ libdv-1.0.0/libdv/quant_x86.S	2022-03-24 20:12:54.509220472 +0100
+@@ -458,3 +458,6 @@
+ 
+ 
+ 
++#ifdef __ELF__
++.section .note.GNU-stack,"", at progbits
++#endif
+diff -Naur libdv-1.0.0.old/libdv/rgbtoyuv.S libdv-1.0.0/libdv/rgbtoyuv.S
+--- libdv-1.0.0.old/libdv/rgbtoyuv.S	2022-03-24 20:11:25.273668990 +0100
++++ libdv-1.0.0/libdv/rgbtoyuv.S	2022-03-24 20:12:54.509220472 +0100
+@@ -1451,3 +1451,6 @@
+ 
+ 
+ 
++#ifdef __ELF__
++.section .note.GNU-stack,"", at progbits
++#endif
+diff -Naur libdv-1.0.0.old/libdv/rgbtoyuv_x86_64.S libdv-1.0.0/libdv/rgbtoyuv_x86_64.S
+--- libdv-1.0.0.old/libdv/rgbtoyuv_x86_64.S	2022-03-24 20:11:25.273668990 +0100
++++ libdv-1.0.0/libdv/rgbtoyuv_x86_64.S	2022-03-24 20:12:54.509220472 +0100
+@@ -1391,3 +1391,6 @@
+ 
+ 
+ 
++#ifdef __ELF__
++.section .note.GNU-stack,"", at progbits
++#endif
+diff -Naur libdv-1.0.0.old/libdv/transpose_x86_64.S libdv-1.0.0/libdv/transpose_x86_64.S
+--- libdv-1.0.0.old/libdv/transpose_x86_64.S	2022-03-24 20:11:25.273668990 +0100
++++ libdv-1.0.0/libdv/transpose_x86_64.S	2022-03-24 20:12:54.509220472 +0100
+@@ -190,3 +190,7 @@
+ 	pop	%r12
+ 
+ 	ret     $0
++
++#ifdef __ELF__
++.section .note.GNU-stack,"", at progbits
++#endif
+diff -Naur libdv-1.0.0.old/libdv/transpose_x86.S libdv-1.0.0/libdv/transpose_x86.S
+--- libdv-1.0.0.old/libdv/transpose_x86.S	2022-03-24 20:11:25.273668990 +0100
++++ libdv-1.0.0/libdv/transpose_x86.S	2022-03-24 20:12:54.509220472 +0100
+@@ -190,3 +190,7 @@
+ popl %ebp
+ 
+ ret     $0
++
++#ifdef __ELF__
++.section .note.GNU-stack,"", at progbits
++#endif
+diff -Naur libdv-1.0.0.old/libdv/vlc_x86_64.S libdv-1.0.0/libdv/vlc_x86_64.S
+--- libdv-1.0.0.old/libdv/vlc_x86_64.S	2022-03-24 20:11:25.272668973 +0100
++++ libdv-1.0.0/libdv/vlc_x86_64.S	2022-03-24 20:12:54.510220489 +0100
+@@ -673,3 +673,7 @@
+ 	.align 16
+ const_f_0_0_0:
+ 	.short	0xffff,0,0,0
++
++#ifdef __ELF__
++.section .note.GNU-stack,"", at progbits
++#endif
+diff -Naur libdv-1.0.0.old/libdv/vlc_x86.S libdv-1.0.0/libdv/vlc_x86.S
+--- libdv-1.0.0.old/libdv/vlc_x86.S	2022-03-24 20:11:25.273668990 +0100
++++ libdv-1.0.0/libdv/vlc_x86.S	2022-03-24 20:12:54.510220489 +0100
+@@ -587,3 +587,7 @@
+ 	.align 16
+ const_f_0_0_0:
+ 	.short	0xffff,0,0,0
++
++#ifdef __ELF__
++.section .note.GNU-stack,"", at progbits
++#endif
diff --git a/libdv-pic.patch b/libdv-pic.patch
new file mode 100644
index 0000000..45cf1d0
--- /dev/null
+++ b/libdv-pic.patch
@@ -0,0 +1,1640 @@
+diff -Naur libdv-1.0.0.old/libdv/asm_common.S libdv-1.0.0/libdv/asm_common.S
+--- libdv-1.0.0.old/libdv/asm_common.S	1970-01-01 01:00:00.000000000 +0100
++++ libdv-1.0.0/libdv/asm_common.S	2022-03-24 20:13:32.551881896 +0100
+@@ -0,0 +1,29 @@
++/* public domain, do what you want */
++
++#ifdef __PIC__
++# define MUNG(sym)                 sym##@GOTOFF(%ebp)
++# define MUNG_ARR(sym, args...)    sym##@GOTOFF(%ebp,##args)
++#else
++# define MUNG(sym)                 sym
++# define MUNG_ARR(sym, args...)    sym(,##args)
++#endif
++
++#ifdef __PIC__
++# undef __i686 /* gcc define gets in our way */
++# define LOAD_PIC_REG(reg) \
++	.ifndef  __i686.get_pc_thunk.reg; \
++	.section .gnu.linkonce.t.__i686.get_pc_thunk.reg,"ax", at progbits; \
++	.global  __i686.get_pc_thunk.reg; \
++	.hidden  __i686.get_pc_thunk.reg; \
++	.type    __i686.get_pc_thunk.reg, at function; \
++	__i686.get_pc_thunk.reg: \
++	movl (%esp), %e##reg; \
++	ret; \
++	.size __i686.get_pc_thunk.reg,.-__i686.get_pc_thunk.reg; \
++	.previous; \
++	.endif; \
++	call __i686.get_pc_thunk.reg; \
++	addl $_GLOBAL_OFFSET_TABLE_, %e##reg
++#else
++# define LOAD_PIC_REG(reg)
++#endif
+diff -Naur libdv-1.0.0.old/libdv/dct_block_mmx.S libdv-1.0.0/libdv/dct_block_mmx.S
+--- libdv-1.0.0.old/libdv/dct_block_mmx.S	2022-03-24 20:13:23.543725277 +0100
++++ libdv-1.0.0/libdv/dct_block_mmx.S	2022-03-24 20:13:32.551881896 +0100
+@@ -55,6 +55,8 @@
+ 
+ .section .note.GNU-stack, "", @progbits
+ 
++#include "asm_common.S"
++
+ .text
+ 
+ .align 8	
+@@ -64,10 +66,11 @@
+ _dv_dct_88_block_mmx:
+ 
+ 	pushl   %ebp
+-	movl    %esp, %ebp
+ 	pushl   %esi
+ 
+-	movl    8(%ebp), %esi          # source
++	LOAD_PIC_REG(bp)
++
++	movl    12(%esp), %esi          # source
+ 
+ # column 0
+ 	movq 16*0(%esi), %mm0          # v0
+@@ -90,22 +93,22 @@
+ 
+ 	movq 16*3(%esi), %mm5          # v3
+ 	movq 16*4(%esi), %mm7          # v4
+-	movq  %mm7, scratch1           # scratch1: v4   ; 
++	movq  %mm7, MUNG(scratch1)     # scratch1: v4   ; 
+ 	movq  %mm5, %mm7               # duplicate v3 
+-	paddw scratch1, %mm5           # v03: v3+v4  
+-	psubw scratch1, %mm7           # v04: v3-v4  
+-	movq  %mm5, scratch2           # scratch2: v03
++	paddw MUNG(scratch1), %mm5     # v03: v3+v4  
++	psubw MUNG(scratch1), %mm7     # v04: v3-v4  
++	movq  %mm5, MUNG(scratch2)     # scratch2: v03
+ 	movq  %mm0, %mm5               # mm5: v00
+ 
+-	paddw scratch2, %mm0           # v10: v00+v03   
+-	psubw scratch2, %mm5           # v13: v00-v03   
+-	movq  %mm3, scratch3           # scratch3: v02
++	paddw MUNG(scratch2), %mm0     # v10: v00+v03   
++	psubw MUNG(scratch2), %mm5     # v13: v00-v03   
++	movq  %mm3, MUNG(scratch3)     # scratch3: v02
+ 	movq  %mm1, %mm3               # duplicate v01
+ 
+-	paddw scratch3, %mm1          # v11: v01+v02
+-	psubw scratch3, %mm3          # v12: v01-v02
++	paddw MUNG(scratch3), %mm1    # v11: v01+v02
++	psubw MUNG(scratch3), %mm3    # v12: v01-v02
+ 
+-	movq  %mm6, scratch4           # scratch4: v05
++	movq  %mm6, MUNG(scratch4)     # scratch4: v05
+ 	movq  %mm0, %mm6               # duplicate v10
+ 
+ 	paddw %mm1, %mm0              # v10+v11
+@@ -115,10 +118,10 @@
+ 	movq  %mm6, 16*4(%esi)         # out4: v10-v11 
+ 
+ 	movq  %mm4, %mm0               # mm0: v06
+-	paddw scratch4, %mm4          # v15: v05+v06 
++	paddw MUNG(scratch4), %mm4    # v15: v05+v06 
+ 	paddw  %mm2, %mm0             # v16: v07+v06
+ 
+-	pmulhw WA3, %mm4               # v35~: WA3*v15
++	pmulhw MUNG(WA3), %mm4         # v35~: WA3*v15
+ 	psllw  $1, %mm4                # v35: compensate the coeefient scale
+ 
+ 	movq   %mm4, %mm6              # duplicate v35
+@@ -127,7 +130,7 @@
+ 
+ 	paddw  %mm5, %mm3             # v22: v12+v13
+ 
+-	pmulhw WA1, %mm3               # v32~: WA1*v22
++	pmulhw MUNG(WA1), %mm3         # v32~: WA1*v22
+ 	psllw  $16-NSHIFT, %mm3        # v32: compensate the coeefient scale
+ 	movq   %mm5, %mm6              # duplicate v13
+ 
+@@ -138,13 +141,13 @@
+ 	movq  %mm6, 16*6(%esi)         # out6: v13-v32 
+ 
+ 
+-	paddw  scratch4, %mm7         # v14n: v04+v05
++	paddw  MUNG(scratch4), %mm7   # v14n: v04+v05
+ 	movq   %mm0, %mm5              # duplicate v16
+ 
+ 	psubw  %mm7, %mm0             # va1: v16-v14n
+-	pmulhw WA5, %mm0               # va0~:  va1*WA5
+-	pmulhw WA4, %mm5               # v36~~: v16*WA4
+-	pmulhw WA2, %mm7               # v34~~: v14n*WA2
++	pmulhw MUNG(WA5), %mm0         # va0~:  va1*WA5
++	pmulhw MUNG(WA4), %mm5         # v36~~: v16*WA4
++	pmulhw MUNG(WA2), %mm7         # v34~~: v14n*WA2
+ 	psllw  $16-WA4_SHIFT, %mm5     # v36: compensate the coeefient scale 
+ 	psllw  $16-NSHIFT, %mm7        # v34: compensate the coeefient scale
+ 
+@@ -192,22 +195,22 @@
+ 
+ 	movq 16*3(%esi), %mm5              # v3
+ 	movq 16*4(%esi), %mm7              # v4
+-	movq  %mm7, scratch1                    # scratch1: v4   ; 
++	movq  %mm7, MUNG(scratch1)     # scratch1: v4   ; 
+ 	movq  %mm5, %mm7               # duplicate v3 
+-	paddw scratch1, %mm5           # v03: v3+v4  
+-	psubw scratch1, %mm7           # v04: v3-v4  
+-	movq  %mm5, scratch2        # scratch2: v03
++	paddw MUNG(scratch1), %mm5     # v03: v3+v4  
++	psubw MUNG(scratch1), %mm7     # v04: v3-v4  
++	movq  %mm5, MUNG(scratch2)     # scratch2: v03
+ 	movq  %mm0, %mm5               # mm5: v00
+ 
+-	paddw scratch2, %mm0           # v10: v00+v03   
+-	psubw scratch2, %mm5           # v13: v00-v03   
+-	movq  %mm3, scratch3         # scratc3: v02
++	paddw MUNG(scratch2), %mm0     # v10: v00+v03   
++	psubw MUNG(scratch2), %mm5     # v13: v00-v03   
++	movq  %mm3, MUNG(scratch3)     # scratc3: v02
+ 	movq  %mm1, %mm3               # duplicate v01
+ 
+-	paddw scratch3, %mm1           # v11: v01+v02
+-	psubw scratch3, %mm3           # v12: v01-v02
++	paddw MUNG(scratch3), %mm1     # v11: v01+v02
++	psubw MUNG(scratch3), %mm3     # v12: v01-v02
+ 
+-	movq  %mm6, scratch4         # scratc4: v05
++	movq  %mm6, MUNG(scratch4)     # scratc4: v05
+ 	movq  %mm0, %mm6               # duplicate v10
+ 
+ 	paddw %mm1, %mm0                            # v10+v11
+@@ -217,10 +220,10 @@
+ 	movq  %mm6, 16*4(%esi)          # out4: v10-v11 
+ 
+ 	movq  %mm4, %mm0             # mm0: v06
+-	paddw scratch4, %mm4         # v15: v05+v06 
++	paddw MUNG(scratch4), %mm4     # v15: v05+v06 
+ 	paddw  %mm2, %mm0                       # v16: v07+v06
+ 
+-	pmulhw WA3, %mm4           # v35~: WA3*v15
++	pmulhw MUNG(WA3), %mm4         # v35~: WA3*v15
+ 	psllw  $16-NSHIFT, %mm4       # v35: compensate the coeefient scale
+ 
+ 	movq   %mm4, %mm6            # duplicate v35
+@@ -229,7 +232,7 @@
+ 
+ 	paddw  %mm5, %mm3            # v22: v12+v13
+ 
+-	pmulhw WA1, %mm3           # v32~: WA3*v15
++	pmulhw MUNG(WA1), %mm3         # v32~: WA3*v15
+ 	psllw  $16-NSHIFT, %mm3       # v32: compensate the coeefient scale
+ 	movq   %mm5, %mm6            # duplicate v13
+ 
+@@ -239,13 +242,13 @@
+ 	movq  %mm5, 16*2(%esi)          # out2: v13+v32 
+ 	movq  %mm6, 16*6(%esi)          # out6: v13-v32 
+ 
+-	paddw  scratch4, %mm7                           # v14n: v04+v05
++	paddw  MUNG(scratch4), %mm7     # v14n: v04+v05
+ 	movq   %mm0, %mm5                               # duplicate v16
+ 
+ 	psubw  %mm7, %mm0                               # va1: v16-v14n
+-	pmulhw WA2, %mm7                # v34~~: v14n*WA2
+-	pmulhw WA5, %mm0                # va0~:  va1*WA5
+-	pmulhw WA4, %mm5                        # v36~~: v16*WA4
++	pmulhw MUNG(WA2), %mm7          # v34~~: v14n*WA2
++	pmulhw MUNG(WA5), %mm0          # va0~:  va1*WA5
++	pmulhw MUNG(WA4), %mm5          # v36~~: v16*WA4
+ 	psllw  $16-NSHIFT, %mm7
+ 	psllw  $16-WA4_SHIFT, %mm5      # v36: compensate the coeffient 
+ 		# scale note that WA4 is shifted 1 bit less than the others
+@@ -759,11 +762,12 @@
+ _dv_dct_248_block_mmx:
+ 
+ 	pushl   %ebp
+-	movl    %esp, %ebp
+ 	pushl   %esi
+ 	pushl   %edi
+ 
+-	movl    8(%ebp), %esi          # source
++	LOAD_PIC_REG(bp)
++
++	movl    16(%esp), %esi          # source
+ 
+ # column 0
+ 
+@@ -787,7 +791,7 @@
+ 	paddw %mm1, %mm0	       # v20: v10+v11
+ 	psubw %mm1, %mm3	       # v21: v10-v11
+ 
+-	pmulhw WA1, %mm5               # v32~: WA1*v22
++	pmulhw MUNG(WA1), %mm5         # v32~: WA1*v22
+ 	movq  %mm4, %mm2	
+ 	psllw  $16-NSHIFT, %mm5        # v32: compensate the coeffient scale
+ 
+@@ -826,7 +830,7 @@
+ 	paddw %mm1, %mm0	       # v20: v10+v11
+ 	psubw %mm1, %mm3	       # v21: v10-v11
+ 
+-	pmulhw WA1, %mm5               # v32~: WA1*v22
++	pmulhw MUNG(WA1), %mm5         # v32~: WA1*v22
+ 	movq  %mm4, %mm2	
+ 	psllw  $16-NSHIFT, %mm5        # v32: compensate the coeffient scale
+ 
+@@ -863,7 +867,7 @@
+ 	paddw %mm1, %mm0	       # v20: v10+v11
+ 	psubw %mm1, %mm3	       # v21: v10-v11
+ 
+-	pmulhw WA1, %mm5               # v32~: WA1*v22
++	pmulhw MUNG(WA1), %mm5         # v32~: WA1*v22
+ 	movq  %mm4, %mm2	
+ 	psllw  $16-NSHIFT, %mm5        # v32: compensate the coeffient scale
+ 
+@@ -900,7 +904,7 @@
+ 	paddw %mm1, %mm0	       # v20: v10+v11
+ 	psubw %mm1, %mm3	       # v21: v10-v11
+ 
+-	pmulhw WA1, %mm5               # v32~: WA1*v22
++	pmulhw MUNG(WA1), %mm5         # v32~: WA1*v22
+ 	movq  %mm4, %mm2	
+ 	psllw  $16-NSHIFT, %mm5        # v32: compensate the coeffient scale
+ 
+diff -Naur libdv-1.0.0.old/libdv/dv.c libdv-1.0.0/libdv/dv.c
+--- libdv-1.0.0.old/libdv/dv.c	2022-03-24 20:11:25.271668956 +0100
++++ libdv-1.0.0/libdv/dv.c	2022-03-24 20:13:32.551881896 +0100
+@@ -205,6 +205,9 @@
+ } /* dv_reconfigure */
+ 
+ 
++extern uint8_t dv_quant_offset[4];
++extern uint8_t dv_quant_shifts[22][4];
++
+ static inline void 
+ dv_decode_macroblock(dv_decoder_t *dv, dv_macroblock_t *mb, unsigned int quality) {
+   int i;
+@@ -218,7 +221,7 @@
+       dv_idct_248 (co248, mb->b[i].coeffs);
+     } else {
+ #if ARCH_X86
+-      _dv_quant_88_inverse_x86(mb->b[i].coeffs,mb->qno,mb->b[i].class_no);
++      _dv_quant_88_inverse_x86(mb->b[i].coeffs,mb->qno,mb->b[i].class_no,dv_quant_offset,dv_quant_shifts[0]);
+       _dv_idct_88(mb->b[i].coeffs);
+ #elif ARCH_X86_64
+       _dv_quant_88_inverse_x86_64(mb->b[i].coeffs,mb->qno,mb->b[i].class_no);
+@@ -250,7 +253,7 @@
+ 	dv_idct_248 (co248, mb->b[b].coeffs);
+       } else {
+ #if ARCH_X86
+-	_dv_quant_88_inverse_x86(bl->coeffs,mb->qno,bl->class_no);
++	_dv_quant_88_inverse_x86(bl->coeffs,mb->qno,bl->class_no,dv_quant_offset,dv_quant_shifts[0]);
+ 	_dv_weight_88_inverse(bl->coeffs);
+ 	_dv_idct_88(bl->coeffs);
+ #elif ARCH_X86_64
+diff -Naur libdv-1.0.0.old/libdv/encode.c libdv-1.0.0/libdv/encode.c
+--- libdv-1.0.0.old/libdv/encode.c	2022-03-24 20:11:25.272668973 +0100
++++ libdv-1.0.0/libdv/encode.c	2022-03-24 20:13:32.596882678 +0100
+@@ -521,7 +521,8 @@
+ }
+ 
+ extern unsigned long _dv_vlc_encode_block_mmx(dv_coeff_t* coeffs,
+-					  dv_vlc_entry_t ** out);
++					  dv_vlc_entry_t ** out,
++					  dv_vlc_entry_t * lookup);
+ 
+ extern unsigned long _dv_vlc_encode_block_mmx_x86_64(dv_coeff_t* coeffs,
+ 					  dv_vlc_entry_t ** out);
+@@ -558,7 +559,7 @@
+ #elif ARCH_X86
+ 	int num_bits;
+ 
+-	num_bits = _dv_vlc_encode_block_mmx(coeffs, &o);
++	num_bits = _dv_vlc_encode_block_mmx(coeffs, &o, vlc_encode_lookup);
+ 	emms();
+ #else
+ 	int num_bits;
+@@ -574,7 +575,7 @@
+ 	return num_bits;
+ }
+ 
+-extern unsigned long _dv_vlc_num_bits_block_x86(dv_coeff_t* coeffs);
++extern unsigned long _dv_vlc_num_bits_block_x86(dv_coeff_t* coeffs, unsigned char* lookup);
+ extern unsigned long _dv_vlc_num_bits_block_x86_64(dv_coeff_t* coeffs);
+ 
+ extern unsigned long _dv_vlc_num_bits_block(dv_coeff_t* coeffs)
+@@ -600,7 +601,7 @@
+ #elif ARCH_X86_64
+ 	return _dv_vlc_num_bits_block_x86_64(coeffs);
+ #else
+-	return _dv_vlc_num_bits_block_x86(coeffs);
++	return _dv_vlc_num_bits_block_x86(coeffs, vlc_num_bits_lookup);
+ #endif
+ }
+ 
+diff -Naur libdv-1.0.0.old/libdv/encode_x86.S libdv-1.0.0/libdv/encode_x86.S
+--- libdv-1.0.0.old/libdv/encode_x86.S	2022-03-24 20:13:23.544725294 +0100
++++ libdv-1.0.0/libdv/encode_x86.S	2022-03-24 20:13:32.596882678 +0100
+@@ -23,9 +23,6 @@
+  *  The libdv homepage is http://libdv.sourceforge.net/.  
+  */
+ 
+-.data
+-ALLONE:		.word 1,1,1,1
+-VLCADDMASK:	.byte 255,0,0,0,255,0,0,0
+ 		
+ 
+ .section .note.GNU-stack, "", @progbits
+@@ -50,11 +47,14 @@
+ 
+ 	movl	$63, %ecx
+ 
+-	movl	vlc_encode_lookup, %esi
++	movl	4+4*4+8(%esp), %esi              # vlc_encode_lookup
+ 
+ 	pxor	%mm0, %mm0
+ 	pxor	%mm2, %mm2
+-	movq	VLCADDMASK, %mm1
++	pushl	$0x000000FF                      # these four lines
++	pushl	$0x000000FF                      # load VLCADDMASK
++	movq	(%esp), %mm1                     # into %mm1 off the stack
++	addl	$8, %esp                         #  --> no TEXTRELs
+ 	xorl	%ebp, %ebp
+ 	subl	$8, %edx
+ vlc_encode_block_mmx_loop:
+@@ -128,7 +128,7 @@
+ 	addl	$2, %edi
+ 
+ 	movl	$63, %ecx
+-	movl	vlc_num_bits_lookup, %esi
++	movl	4+4*4+4(%esp), %esi              # vlc_num_bits_lookup
+ 	
+ vlc_num_bits_block_x86_loop:
+ 	movw	(%edi), %ax
+@@ -594,8 +594,11 @@
+ 	paddw	%mm5, %mm1
+ 
+ 	paddw	%mm1, %mm0
+-	
+-	pmaddwd	ALLONE, %mm0	
++
++	pushl	$0x00010001              # these four lines
++	pushl	$0x00010001              # load ALLONE
++	pmaddwd	(%esp), %mm0             # into %mm0 off the stack
++	addl	$8, %esp                 #  --> no TEXTRELs
+ 	movq	%mm0, %mm1
+ 	psrlq	$32, %mm1
+ 	paddd	%mm1, %mm0
+diff -Naur libdv-1.0.0.old/libdv/idct_block_mmx.S libdv-1.0.0/libdv/idct_block_mmx.S
+--- libdv-1.0.0.old/libdv/idct_block_mmx.S	2022-03-24 20:13:23.544725294 +0100
++++ libdv-1.0.0/libdv/idct_block_mmx.S	2022-03-24 20:13:32.597882695 +0100
+@@ -8,6 +8,8 @@
+ 
+ .section .note.GNU-stack, "", @progbits
+ 
++#include "asm_common.S"
++
+ .text
+ 	.align 4
+ .global _dv_idct_block_mmx
+@@ -15,10 +17,12 @@
+ .type   _dv_idct_block_mmx, at function
+ _dv_idct_block_mmx:
+ 	pushl	 %ebp
+-	movl	 %esp,%ebp
+ 	pushl	 %esi
+-	leal	 preSC, %ecx
+-	movl	 8(%ebp),%esi		/* source matrix */
++
++	LOAD_PIC_REG(bp)
++
++	leal	 MUNG(preSC), %ecx
++	movl	 12(%esp),%esi		/* source matrix */
+ 
+ /* 
+  *	column 0: even part
+@@ -36,7 +40,7 @@
+ 	movq %mm1, %mm2			/* added 11/1/96 */
+ 	pmulhw 8*8(%esi),%mm5		/* V8 */
+ 	psubsw %mm0, %mm1		/* V16 */
+-	pmulhw x5a825a825a825a82, %mm1	/* 23170 ->V18 */
++	pmulhw MUNG(x5a825a825a825a82), %mm1	/* 23170 ->V18 */
+ 	paddsw %mm0, %mm2		/* V17 */
+ 	movq %mm2, %mm0			/* duplicate V17 */
+ 	psraw $1, %mm2			/* t75=t82 */
+@@ -77,7 +81,7 @@
+ 	paddsw %mm0, %mm3		/* V29 ; free mm0 */
+ 	movq %mm7, %mm1			/* duplicate V26 */
+ 	psraw $1, %mm3			/* t91=t94 */
+-	pmulhw x539f539f539f539f,%mm7	/* V33 */
++	pmulhw MUNG(x539f539f539f539f),%mm7	/* V33 */
+ 	psraw $1, %mm1			/* t96 */
+ 	movq %mm5, %mm0			/* duplicate V2 */
+ 	psraw $2, %mm4			/* t85=t87 */
+@@ -85,15 +89,15 @@
+ 	psubsw %mm4, %mm0		/* V28 ; free mm4 */
+ 	movq %mm0, %mm2			/* duplicate V28 */
+ 	psraw $1, %mm5			/* t90=t93 */
+-	pmulhw x4546454645464546,%mm0	/* V35 */
++	pmulhw MUNG(x4546454645464546),%mm0	/* V35 */
+ 	psraw $1, %mm2			/* t97 */
+ 	movq %mm5, %mm4			/* duplicate t90=t93 */
+ 	psubsw %mm2, %mm1		/* V32 ; free mm2 */
+-	pmulhw x61f861f861f861f8,%mm1	/* V36 */
++	pmulhw MUNG(x61f861f861f861f8),%mm1	/* V36 */
+ 	psllw $1, %mm7			/* t107 */
+ 	paddsw %mm3, %mm5		/* V31 */
+ 	psubsw %mm3, %mm4		/* V30 ; free mm3 */
+-	pmulhw x5a825a825a825a82,%mm4	/* V34 */
++	pmulhw MUNG(x5a825a825a825a82),%mm4	/* V34 */
+ 	nop
+ 	psubsw %mm1, %mm0		/* V38 */
+ 	psubsw %mm7, %mm1		/* V37 ; free mm7 */
+@@ -160,7 +164,7 @@
+ 	psubsw %mm7, %mm1		/* V50 */
+ 	pmulhw 8*9(%esi), %mm5		/* V9 */
+ 	paddsw %mm7, %mm2		/* V51 */
+-	pmulhw x5a825a825a825a82, %mm1	/* 23170 ->V52 */
++	pmulhw MUNG(x5a825a825a825a82), %mm1	/* 23170 ->V52 */
+ 	movq %mm2, %mm6			/* duplicate V51 */
+ 	psraw $1, %mm2			/* t138=t144 */
+ 	movq %mm3, %mm4			/* duplicate V1 */
+@@ -201,11 +205,11 @@
+  * even more by doing the correction step in a later stage when the number
+  * is actually multiplied by 16
+  */
+-	paddw x0005000200010001, %mm4
++	paddw MUNG(x0005000200010001), %mm4
+ 	psubsw %mm6, %mm3		/* V60 ; free mm6 */
+ 	psraw $1, %mm0			/* t154=t156 */
+ 	movq %mm3, %mm1			/* duplicate V60 */
+-	pmulhw x539f539f539f539f, %mm1	/* V67 */
++	pmulhw MUNG(x539f539f539f539f), %mm1	/* V67 */
+ 	movq %mm5, %mm6			/* duplicate V3 */
+ 	psraw $2, %mm4			/* t148=t150 */
+ 	paddsw %mm4, %mm5		/* V61 */
+@@ -214,13 +218,13 @@
+ 	psllw $1, %mm1			/* t169 */
+ 	paddsw %mm0, %mm5		/* V65 -> result */
+ 	psubsw %mm0, %mm4		/* V64 ; free mm0 */
+-	pmulhw x5a825a825a825a82, %mm4	/* V68 */
++	pmulhw MUNG(x5a825a825a825a82), %mm4	/* V68 */
+ 	psraw $1, %mm3			/* t158 */
+ 	psubsw %mm6, %mm3		/* V66 */
+ 	movq %mm5, %mm2			/* duplicate V65 */
+-	pmulhw x61f861f861f861f8, %mm3	/* V70 */
++	pmulhw MUNG(x61f861f861f861f8), %mm3	/* V70 */
+ 	psllw $1, %mm6			/* t165 */
+-	pmulhw x4546454645464546, %mm6	/* V69 */
++	pmulhw MUNG(x4546454645464546), %mm6	/* V69 */
+ 	psraw $1, %mm2			/* t172 */
+ /* moved from next block */
+ 	movq 8*5(%esi), %mm0		/* V56 */
+@@ -345,7 +349,7 @@
+ *	movq 8*13(%esi), %mm4		tmt13
+ */
+ 	psubsw %mm4, %mm3		/* V134 */
+-	pmulhw x5a825a825a825a82, %mm3	/* 23170 ->V136 */
++	pmulhw MUNG(x5a825a825a825a82), %mm3	/* 23170 ->V136 */
+ 	movq 8*9(%esi), %mm6		/* tmt9 */
+ 	paddsw %mm4, %mm5		/* V135 ; mm4 free */
+ 	movq %mm0, %mm4			/* duplicate tmt1 */
+@@ -374,17 +378,17 @@
+ 	psubsw %mm7, %mm0		/* V144 */
+ 	movq %mm0, %mm3			/* duplicate V144 */
+ 	paddsw %mm7, %mm2		/* V147 ; free mm7 */
+-	pmulhw x539f539f539f539f, %mm0	/* 21407-> V151 */
++	pmulhw MUNG(x539f539f539f539f), %mm0	/* 21407-> V151 */
+ 	movq %mm1, %mm7			/* duplicate tmt3 */
+ 	paddsw %mm5, %mm7		/* V145 */
+ 	psubsw %mm5, %mm1		/* V146 ; free mm5 */
+ 	psubsw %mm1, %mm3		/* V150 */
+ 	movq %mm7, %mm5			/* duplicate V145 */
+-	pmulhw x4546454645464546, %mm1	/* 17734-> V153 */
++	pmulhw MUNG(x4546454645464546), %mm1	/* 17734-> V153 */
+ 	psubsw %mm2, %mm5		/* V148 */
+-	pmulhw x61f861f861f861f8, %mm3	/* 25080-> V154 */
++	pmulhw MUNG(x61f861f861f861f8), %mm3	/* 25080-> V154 */
+ 	psllw $2, %mm0			/* t311 */
+-	pmulhw x5a825a825a825a82, %mm5	/* 23170-> V152 */
++	pmulhw MUNG(x5a825a825a825a82), %mm5	/* 23170-> V152 */
+ 	paddsw %mm2, %mm7		/* V149 ; free mm2 */
+ 	psllw $1, %mm1			/* t313 */
+ 	nop	/* without the nop - freeze here for one clock */
+@@ -410,7 +414,7 @@
+ 	paddsw %mm3, %mm6		/* V164 ; free mm3 */
+ 	movq %mm4, %mm3			/* duplicate V142 */
+ 	psubsw %mm5, %mm4		/* V165 ; free mm5 */
+-	movq %mm2, scratch7		/* out7 */
++	movq %mm2, MUNG(scratch7)		/* out7 */
+ 	psraw $4, %mm6
+ 	psraw $4, %mm4
+ 	paddsw %mm5, %mm3		/* V162 */
+@@ -421,11 +425,11 @@
+  */
+ 	movq %mm6, 8*9(%esi)		/* out9 */
+ 	paddsw %mm1, %mm0		/* V161 */
+-	movq %mm3, scratch5		/* out5 */
++	movq %mm3, MUNG(scratch5)		/* out5 */
+ 	psubsw %mm1, %mm5		/* V166 ; free mm1 */
+ 	movq %mm4, 8*11(%esi)		/* out11 */
+ 	psraw $4, %mm5
+-	movq %mm0, scratch3		/* out3 */
++	movq %mm0, MUNG(scratch3)		/* out3 */
+ 	movq %mm2, %mm4			/* duplicate V140 */
+ 	movq %mm5, 8*13(%esi)		/* out13 */
+ 	paddsw %mm7, %mm2		/* V160 */
+@@ -435,7 +439,7 @@
+ /* moved from the next block */
+ 	movq 8*3(%esi), %mm7
+ 	psraw $4, %mm4
+-	movq %mm2, scratch1		/* out1 */
++	movq %mm2, MUNG(scratch1)		/* out1 */
+ /* moved from the next block */
+ 	movq %mm0, %mm1
+ 	movq %mm4, 8*15(%esi)		/* out15 */
+@@ -492,15 +496,15 @@
+ 	paddsw %mm4, %mm3		/* V113 ; free mm4 */
+ 	movq %mm0, %mm4			/* duplicate V110 */
+ 	paddsw %mm1, %mm2		/* V111 */
+-	pmulhw x539f539f539f539f, %mm0	/* 21407-> V117 */
++	pmulhw MUNG(x539f539f539f539f), %mm0	/* 21407-> V117 */
+ 	psubsw %mm1, %mm5		/* V112 ; free mm1 */
+ 	psubsw %mm5, %mm4		/* V116 */
+ 	movq %mm2, %mm1			/* duplicate V111 */
+-	pmulhw x4546454645464546, %mm5	/* 17734-> V119 */
++	pmulhw MUNG(x4546454645464546), %mm5	/* 17734-> V119 */
+ 	psubsw %mm3, %mm2		/* V114 */
+-	pmulhw x61f861f861f861f8, %mm4	/* 25080-> V120 */
++	pmulhw MUNG(x61f861f861f861f8), %mm4	/* 25080-> V120 */
+ 	paddsw %mm3, %mm1		/* V115 ; free mm3 */
+-	pmulhw x5a825a825a825a82, %mm2	/* 23170-> V118 */
++	pmulhw MUNG(x5a825a825a825a82), %mm2	/* 23170-> V118 */
+ 	psllw $2, %mm0			/* t266 */
+ 	movq %mm1, (%esi)		/* save V115 */
+ 	psllw $1, %mm5			/* t268 */
+@@ -518,7 +522,7 @@
+ 	movq %mm6, %mm3			/* duplicate tmt4 */
+ 	psubsw %mm0, %mm6		/* V100 */
+ 	paddsw %mm0, %mm3		/* V101 ; free mm0 */
+-	pmulhw x5a825a825a825a82, %mm6	/* 23170 ->V102 */
++	pmulhw MUNG(x5a825a825a825a82), %mm6	/* 23170 ->V102 */
+ 	movq %mm7, %mm5			/* duplicate tmt0 */
+ 	movq 8*8(%esi), %mm1		/* tmt8 */
+ 	paddsw %mm1, %mm7		/* V103 */
+@@ -552,10 +556,10 @@
+ 	movq 8*2(%esi), %mm3		/* V123 */
+ 	paddsw %mm4, %mm7		/* out0 */
+ /* moved up from next block */
+-	movq scratch3, %mm0
++	movq MUNG(scratch3), %mm0
+ 	psraw $4, %mm7
+ /* moved up from next block */
+-	movq scratch5, %mm6 
++	movq MUNG(scratch5), %mm6 
+ 	psubsw %mm4, %mm1		/* out14 ; free mm4 */
+ 	paddsw %mm3, %mm5		/* out2 */
+ 	psraw $4, %mm1
+@@ -566,7 +570,7 @@
+ 	movq %mm5, 8*2(%esi)		/* out2 ; free mm5 */
+ 	psraw $4, %mm2
+ /* moved up to the prev block */
+-	movq scratch7, %mm4
++	movq MUNG(scratch7), %mm4
+ /* moved up to the prev block */
+ 	psraw $4, %mm0
+ 	movq %mm2, 8*12(%esi)		/* out12 ; free mm2 */
+@@ -580,7 +584,7 @@
+  *	psraw $4, %mm0
+  *	psraw $4, %mm6
+ */
+-	movq scratch1, %mm1
++	movq MUNG(scratch1), %mm1
+ 	psraw $4, %mm4
+ 	movq %mm0, 8*3(%esi)		/* out3 */
+ 	psraw $4, %mm1
+diff -Naur libdv-1.0.0.old/libdv/parse.c libdv-1.0.0/libdv/parse.c
+--- libdv-1.0.0.old/libdv/parse.c	2022-03-24 20:11:25.272668973 +0100
++++ libdv-1.0.0/libdv/parse.c	2022-03-24 20:13:32.597882695 +0100
+@@ -477,6 +477,13 @@
+   exit(0);
+ #endif
+ } /* dv_parse_ac_coeffs */
++#if defined __GNUC__ && __ELF__
++# define dv_strong_hidden_alias(name, aliasname) \
++    extern __typeof (name) aliasname __attribute__ ((alias (#name), visibility ("hidden")))
++dv_strong_hidden_alias(dv_parse_ac_coeffs, asm_dv_parse_ac_coeffs);
++#else
++int asm_dv_parse_ac_coeffs(dv_videosegment_t *seg) { return dv_parse_ac_coeffs(seg); }
++#endif
+ 
+ /* ---------------------------------------------------------------------------
+  */
+diff -Naur libdv-1.0.0.old/libdv/quant.c libdv-1.0.0/libdv/quant.c
+--- libdv-1.0.0.old/libdv/quant.c	2022-03-24 20:11:25.272668973 +0100
++++ libdv-1.0.0/libdv/quant.c	2022-03-24 20:13:32.597882695 +0100
+@@ -144,7 +144,7 @@
+ uint32_t	dv_quant_248_mul_tab [2] [22] [64];
+ uint32_t dv_quant_88_mul_tab [2] [22] [64];
+ 
+-extern void             _dv_quant_x86(dv_coeff_t *block,int qno,int klass);
++extern void             _dv_quant_x86(dv_coeff_t *block,int qno,int klass,uint8_t *dv_quant_offset,uint8_t *dv_quant_shifts);
+ extern void             _dv_quant_x86_64(dv_coeff_t *block,int qno,int klass);
+ static void quant_248_inverse_std(dv_coeff_t *block,int qno,int klass,dv_248_coeff_t *co);
+ static void quant_248_inverse_mmx(dv_coeff_t *block,int qno,int klass,dv_248_coeff_t *co);
+@@ -210,7 +210,7 @@
+ 		_dv_quant_x86_64(block, qno, klass);
+ 		emms();
+ #else
+-		_dv_quant_x86(block, qno, klass);
++		_dv_quant_x86(block, qno, klass, dv_quant_offset, dv_quant_shifts);
+ 		emms();
+ #endif
+ 	}
+diff -Naur libdv-1.0.0.old/libdv/quant.h libdv-1.0.0/libdv/quant.h
+--- libdv-1.0.0.old/libdv/quant.h	2022-03-24 20:11:25.271668956 +0100
++++ libdv-1.0.0/libdv/quant.h	2022-03-24 20:13:32.597882695 +0100
+@@ -27,7 +27,7 @@
+ extern void _dv_quant_88_inverse(dv_coeff_t *block,int qno,int klass);
+ extern void (*_dv_quant_248_inverse) (dv_coeff_t *block,int qno,int klass,
+                                   dv_248_coeff_t *co);
+-extern void _dv_quant_88_inverse_x86(dv_coeff_t *block,int qno,int klass);
++extern void _dv_quant_88_inverse_x86(dv_coeff_t *block,int qno,int klass, uint8_t *offset, uint8_t (*shifts)[4]);
+ extern void _dv_quant_88_inverse_x86_64(dv_coeff_t *block,int qno,int klass);
+ extern void dv_quant_init (void);
+ #ifdef __cplusplus
+diff -Naur libdv-1.0.0.old/libdv/quant_x86.S libdv-1.0.0/libdv/quant_x86.S
+--- libdv-1.0.0.old/libdv/quant_x86.S	2022-03-24 20:13:23.545725311 +0100
++++ libdv-1.0.0/libdv/quant_x86.S	2022-03-24 20:13:32.598882713 +0100
+@@ -75,10 +75,13 @@
+ 	
+ 	/*  pq = dv_quant_shifts[qno + dv_quant_offset[class]]; */
+ 	movl	ARGn(1),%eax	/* qno */
++	movl	ARGn(3),%ebx	/* dv_quant_offset */
++	addl	ARGn(2),%ebx	/* class */
++	movzbl	(%ebx),%ecx
+ 	movl	ARGn(2),%ebx	/* class */
+-	movzbl	dv_quant_offset(%ebx),%ecx
+ 	addl	%ecx,%eax
+-	leal	dv_quant_shifts(,%eax,4),%edx	/* edx is pq */
++	movl	ARGn(4),%edx	/* dv_quant_shifts */
++	leal	(%edx,%eax,4),%edx	/* edx is pq */
+ 
+ 	/* extra = (class == 3); */
+ 				/*  0   1   2   3 */
+@@ -218,11 +221,13 @@
+ 	
+ 	/*  pq = dv_quant_shifts[qno + dv_quant_offset[class]]; */
+ 	movl	ARGn(1),%eax	/* qno */
++	movl	ARGn(3),%ebx	/* offset */
++	addl	ARGn(2),%ebx	/* class */
++	movzbl	(%ebx),%ecx
+ 	movl	ARGn(2),%ebx	/* class */
+-
+-	movzbl	dv_quant_offset(%ebx),%ecx
++	movl	ARGn(4),%edx	/* shifts */
+ 	addl	%ecx,%eax
+-	leal	dv_quant_shifts(,%eax,4),%edx	/* edx is pq */
++	leal	(%edx,%eax,4),%edx	/* edx is pq */
+ 
+ 	/* extra = (class == 3); */
+ 				/*  0   1   2   3 */
+diff -Naur libdv-1.0.0.old/libdv/rgbtoyuv.S libdv-1.0.0/libdv/rgbtoyuv.S
+--- libdv-1.0.0.old/libdv/rgbtoyuv.S	2022-03-24 20:13:23.545725311 +0100
++++ libdv-1.0.0/libdv/rgbtoyuv.S	2022-03-24 20:13:32.598882713 +0100
+@@ -41,9 +41,6 @@
+ #define DV_WIDTH_SHORT_HALF 720
+ #define DV_WIDTH_BYTE_HALF  360	
+ 		
+-.global _dv_rgbtoycb_mmx
+-# .global yuvtoycb_mmx
+-
+ .data
+ 
+ .align 8
+@@ -110,17 +107,19 @@
+ VBG0B:  .long   0,0
+ 	
+ #endif	
+-	
++
++#include "asm_common.S"
++
+ .section .note.GNU-stack, "", @progbits
+ 
+ .text
+ 
+-#define _inPtr     8
+-#define _rows      12
+-#define _columns   16
+-#define _outyPtr   20
+-#define _outuPtr   24
+-#define _outvPtr   28
++#define _inPtr     24+8
++#define _rows      24+12
++#define _columns   24+16
++#define _outyPtr   24+20
++#define _outuPtr   24+24
++#define _outvPtr   24+28
+ 
+ .global _dv_rgbtoycb_mmx
+ .hidden _dv_rgbtoycb_mmx
+@@ -128,7 +127,6 @@
+ _dv_rgbtoycb_mmx:
+ 
+ 	pushl   %ebp
+-	movl    %esp, %ebp
+ 	pushl   %eax
+ 	pushl   %ebx
+ 	pushl   %ecx
+@@ -136,46 +134,47 @@
+ 	pushl   %esi
+ 	pushl   %edi
+ 
+-	leal    ZEROSX, %eax    #This section gets around a bug
++	LOAD_PIC_REG(bp)
++
++	leal    MUNG(ZEROSX), %eax    #This section gets around a bug
+ 	movq    (%eax), %mm0    #unlikely to persist
+-	movq    %mm0, ZEROS
+-	leal    OFFSETDX, %eax
++	movq    %mm0, MUNG(ZEROS)
++	leal    MUNG(OFFSETDX), %eax
+ 	movq    (%eax), %mm0
+-	movq    %mm0, OFFSETD
+-	leal    OFFSETWX, %eax
++	movq    %mm0, MUNG(OFFSETD)
++	leal    MUNG(OFFSETWX), %eax
+ 	movq    (%eax), %mm0
+-	movq    %mm0, OFFSETW
+-	leal    OFFSETBX, %eax
++	movq    %mm0, MUNG(OFFSETW)
++	leal    MUNG(OFFSETBX), %eax
+ 	movq    (%eax), %mm0
+-	movq    %mm0, OFFSETB
+-	leal    YR0GRX, %eax
++	movq    %mm0, MUNG(OFFSETB)
++	leal    MUNG(YR0GRX), %eax
+ 	movq    (%eax), %mm0
+-	movq    %mm0, YR0GR
+-	leal    YBG0BX, %eax
++	movq    %mm0, MUNG(YR0GR)
++	leal    MUNG(YBG0BX), %eax
+ 	movq    (%eax), %mm0
+-	movq    %mm0, YBG0B
+-	leal    UR0GRX, %eax
++	movq    %mm0, MUNG(YBG0B)
++	leal    MUNG(UR0GRX), %eax
+ 	movq    (%eax), %mm0
+-	movq    %mm0, UR0GR
+-	leal    UBG0BX, %eax
++	movq    %mm0, MUNG(UR0GR)
++	leal    MUNG(UBG0BX), %eax
+ 	movq    (%eax), %mm0
+-	movq    %mm0, UBG0B
+-	leal    VR0GRX, %eax
++	movq    %mm0, MUNG(UBG0B)
++	leal    MUNG(VR0GRX), %eax
+ 	movq    (%eax), %mm0
+-	movq    %mm0, VR0GR
+-	leal    VBG0BX, %eax
++	movq    %mm0, MUNG(VR0GR)
++	leal    MUNG(VBG0BX), %eax
+ 	movq    (%eax), %mm0
+-	movq    %mm0, VBG0B
+-	
+-	movl    _rows(%ebp), %eax
+-	movl    _columns(%ebp), %ebx
++	movq    %mm0, MUNG(VBG0B)
++	movl    _rows(%esp), %eax
++	movl    _columns(%esp), %ebx
+ 	mull    %ebx            #number pixels
+ 	shrl    $3, %eax        #number of loops
+ 	movl    %eax, %edi      #loop counter in edi
+-	movl    _inPtr(%ebp), %eax
+-	movl    _outyPtr(%ebp), %ebx
+-	movl    _outuPtr(%ebp), %ecx
+-	movl    _outvPtr(%ebp), %edx
++	movl    _inPtr(%esp), %eax
++	movl    _outyPtr(%esp), %ebx
++	movl    _outuPtr(%esp), %ecx
++	movl    _outvPtr(%esp), %edx
+ rgbtoycb_mmx_loop: 
+ 	movq    (%eax), %mm1    #load G2R2B1G1R1B0G0R0
+ 	pxor    %mm6, %mm6      #0 -> mm6
+@@ -189,29 +188,29 @@
+ 	punpcklbw %mm6, %mm1     #B1G1R1B0 -> mm1
+ 	movq    %mm0, %mm2      #R1B0G0R0 -> mm2
+ 
+-	pmaddwd YR0GR, %mm0     #yrR1,ygG0+yrR0 -> mm0
++	pmaddwd MUNG(YR0GR), %mm0     #yrR1,ygG0+yrR0 -> mm0
+ 	movq    %mm1, %mm3      #B1G1R1B0 -> mm3
+ 
+-	pmaddwd YBG0B, %mm1     #ybB1+ygG1,ybB0 -> mm1
++	pmaddwd MUNG(YBG0B), %mm1     #ybB1+ygG1,ybB0 -> mm1
+ 	movq    %mm2, %mm4      #R1B0G0R0 -> mm4
+ 
+-	pmaddwd UR0GR, %mm2     #urR1,ugG0+urR0 -> mm2
++	pmaddwd MUNG(UR0GR), %mm2     #urR1,ugG0+urR0 -> mm2
+ 	movq    %mm3, %mm5      #B1G1R1B0 -> mm5
+ 
+-	pmaddwd UBG0B, %mm3     #ubB1+ugG1,ubB0 -> mm3
++	pmaddwd MUNG(UBG0B), %mm3     #ubB1+ugG1,ubB0 -> mm3
+ 	punpckhbw       %mm6, %mm7 #    00G2R2 -> mm7
+ 
+-	pmaddwd VR0GR, %mm4     #vrR1,vgG0+vrR0 -> mm4
++	pmaddwd MUNG(VR0GR), %mm4     #vrR1,vgG0+vrR0 -> mm4
+ 	paddd   %mm1, %mm0      #Y1Y0 -> mm0
+ 
+-	pmaddwd VBG0B, %mm5     #vbB1+vgG1,vbB0 -> mm5
++	pmaddwd MUNG(VBG0B), %mm5     #vbB1+vgG1,vbB0 -> mm5
+ 
+ 	movq    8(%eax), %mm1   #R5B4G4R4B3G3R3B2 -> mm1
+ 	paddd   %mm3, %mm2      #U1U0 -> mm2
+ 
+ 	movq    %mm1, %mm6      #R5B4G4R4B3G3R3B2 -> mm6
+ 
+-	punpcklbw       ZEROS, %mm1     #B3G3R3B2 -> mm1
++	punpcklbw       MUNG(ZEROS), %mm1     #B3G3R3B2 -> mm1
+ 	paddd   %mm5, %mm4      #V1V0 -> mm4
+ 
+ 	movq    %mm1, %mm5      #B3G3R3B2 -> mm5
+@@ -219,29 +218,29 @@
+ 
+ 	paddd   %mm7, %mm1      #R3B200+00G2R2=R3B2G2R2->mm1
+ 
+-	punpckhbw       ZEROS, %mm6     #R5B4G4R3 -> mm6
++	punpckhbw       MUNG(ZEROS), %mm6     #R5B4G4R3 -> mm6
+ 	movq    %mm1, %mm3      #R3B2G2R2 -> mm3
+ 
+-	pmaddwd YR0GR, %mm1     #yrR3,ygG2+yrR2 -> mm1
++	pmaddwd MUNG(YR0GR), %mm1     #yrR3,ygG2+yrR2 -> mm1
+ 	movq    %mm5, %mm7      #B3G3R3B2 -> mm7
+ 
+-	pmaddwd YBG0B, %mm5     #ybB3+ygG3,ybB2 -> mm5
++	pmaddwd MUNG(YBG0B), %mm5     #ybB3+ygG3,ybB2 -> mm5
+ 	psrad   $FIXPSHIFT, %mm0       #32-bit scaled Y1Y0 -> mm0
+ 
+-	movq    %mm6, TEMP0     #R5B4G4R4 -> TEMP0
++	movq    %mm6, MUNG(TEMP0)     #R5B4G4R4 -> TEMP0
+ 	movq    %mm3, %mm6      #R3B2G2R2 -> mm6
+-	pmaddwd UR0GR, %mm6     #urR3,ugG2+urR2 -> mm6
++	pmaddwd MUNG(UR0GR), %mm6     #urR3,ugG2+urR2 -> mm6
+ 	psrad   $FIXPSHIFT, %mm2       #32-bit scaled U1U0 -> mm2
+ 
+ 	paddd   %mm5, %mm1      #Y3Y2 -> mm1
+ 	movq    %mm7, %mm5      #B3G3R3B2 -> mm5
+-	pmaddwd UBG0B, %mm7     #ubB3+ugG3,ubB2
++	pmaddwd MUNG(UBG0B), %mm7     #ubB3+ugG3,ubB2
+ 	psrad   $FIXPSHIFT, %mm1 #32-bit scaled Y3Y2 -> mm1
+ 
+-	pmaddwd VR0GR, %mm3     #vrR3,vgG2+vgR2
++	pmaddwd MUNG(VR0GR), %mm3     #vrR3,vgG2+vgR2
+ 	packssdw        %mm1, %mm0      #Y3Y2Y1Y0 -> mm0
+ 
+-	pmaddwd VBG0B, %mm5     #vbB3+vgG3,vbB2 -> mm5
++	pmaddwd MUNG(VBG0B), %mm5     #vbB3+vgG3,vbB2 -> mm5
+ 	psrad   $FIXPSHIFT, %mm4       #32-bit scaled V1V0 -> mm4
+ 
+ 	movq    16(%eax), %mm1  #B7G7R7B6G6R6B5G5 -> mm7
+@@ -256,58 +255,58 @@
+ 	movq    %mm7, %mm5      #R7B6G6R6B5G500 -> mm5
+ 	psrad   $FIXPSHIFT, %mm3       #32-bit scaled V3V2 -> mm3
+ 
+-	paddw	OFFSETY, %mm0
++	paddw	MUNG(OFFSETY), %mm0
+ 	movq    %mm0, (%ebx)     #store Y3Y2Y1Y0 
+ 	packssdw %mm6, %mm2      #32-bit scaled U3U2U1U0 -> mm2
+ 
+-	movq    TEMP0, %mm0     #R5B4G4R4 -> mm0
++	movq    MUNG(TEMP0), %mm0     #R5B4G4R4 -> mm0
+ 	addl	$8, %ebx
+-	
+-	punpcklbw       ZEROS, %mm7     #B5G500 -> mm7
++
++	punpcklbw       MUNG(ZEROS), %mm7     #B5G500 -> mm7
+ 	movq    %mm0, %mm6      #R5B4G4R4 -> mm6
+ 
+-	movq    %mm2, TEMPU     #32-bit scaled U3U2U1U0 -> TEMPU
++	movq    %mm2, MUNG(TEMPU)     #32-bit scaled U3U2U1U0 -> TEMPU
+ 	psrlq   $32, %mm0       #00R5B4 -> mm0
+ 
+ 	paddw   %mm0, %mm7      #B5G5R5B4 -> mm7
+ 	movq    %mm6, %mm2      #B5B4G4R4 -> mm2
+ 
+-	pmaddwd YR0GR, %mm2     #yrR5,ygG4+yrR4 -> mm2
++	pmaddwd MUNG(YR0GR), %mm2     #yrR5,ygG4+yrR4 -> mm2
+ 	movq    %mm7, %mm0      #B5G5R5B4 -> mm0
+ 
+-	pmaddwd YBG0B, %mm7     #ybB5+ygG5,ybB4 -> mm7
++	pmaddwd MUNG(YBG0B), %mm7     #ybB5+ygG5,ybB4 -> mm7
+ 	packssdw        %mm3, %mm4      #32-bit scaled V3V2V1V0 -> mm4
+ 
+ 	addl    $24, %eax       #increment RGB count
+ 
+-	movq    %mm4, TEMPV     #(V3V2V1V0)/256 -> mm4
++	movq    %mm4, MUNG(TEMPV)     #(V3V2V1V0)/256 -> mm4
+ 	movq    %mm6, %mm4      #B5B4G4R4 -> mm4
+ 
+-	pmaddwd UR0GR, %mm6     #urR5,ugG4+urR4
++	pmaddwd MUNG(UR0GR), %mm6     #urR5,ugG4+urR4
+ 	movq    %mm0, %mm3      #B5G5R5B4 -> mm0
+ 
+-	pmaddwd UBG0B, %mm0     #ubB5+ugG5,ubB4
++	pmaddwd MUNG(UBG0B), %mm0     #ubB5+ugG5,ubB4
+ 	paddd   %mm7, %mm2      #Y5Y4 -> mm2
+ 
+-	pmaddwd         VR0GR, %mm4     #vrR5,vgG4+vrR4 -> mm4
++	pmaddwd         MUNG(VR0GR), %mm4     #vrR5,vgG4+vrR4 -> mm4
+ 	pxor    %mm7, %mm7      #0 -> mm7
+ 
+-	pmaddwd VBG0B, %mm3     #vbB5+vgG5,vbB4 -> mm3
++	pmaddwd MUNG(VBG0B), %mm3     #vbB5+vgG5,vbB4 -> mm3
+ 	punpckhbw       %mm7, %mm1      #B7G7R7B6 -> mm1
+ 
+ 	paddd   %mm6, %mm0      #U5U4 -> mm0
+ 	movq    %mm1, %mm6      #B7G7R7B6 -> mm6
+ 
+-	pmaddwd YBG0B, %mm6     #ybB7+ygG7,ybB6 -> mm6
++	pmaddwd MUNG(YBG0B), %mm6     #ybB7+ygG7,ybB6 -> mm6
+ 	punpckhbw       %mm7, %mm5      #R7B6G6R6 -> mm5
+ 
+ 	movq    %mm5, %mm7      #R7B6G6R6 -> mm7
+ 	paddd   %mm4, %mm3      #V5V4 -> mm3
+ 
+-	pmaddwd YR0GR, %mm5     #yrR7,ygG6+yrR6 -> mm5
++	pmaddwd MUNG(YR0GR), %mm5     #yrR7,ygG6+yrR6 -> mm5
+ 	movq    %mm1, %mm4      #B7G7R7B6 -> mm4
+ 
+-	pmaddwd UBG0B, %mm4     #ubB7+ugG7,ubB6 -> mm4
++	pmaddwd MUNG(UBG0B), %mm4     #ubB7+ugG7,ubB6 -> mm4
+ 	psrad   $FIXPSHIFT, %mm0       #32-bit scaled U5U4 -> mm0
+ 
+ 	psrad   $FIXPSHIFT, %mm2       #32-bit scaled Y5Y4 -> mm2
+@@ -315,25 +314,25 @@
+ 	paddd   %mm5, %mm6      #Y7Y6 -> mm6
+ 	movq    %mm7, %mm5      #R7B6G6R6 -> mm5
+ 
+-	pmaddwd UR0GR, %mm7     #urR7,ugG6+ugR6 -> mm7
++	pmaddwd MUNG(UR0GR), %mm7     #urR7,ugG6+ugR6 -> mm7
+ 	psrad   $FIXPSHIFT, %mm3       #32-bit scaled V5V4 -> mm3
+ 
+-	pmaddwd VBG0B, %mm1     #vbB7+vgG7,vbB6 -> mm1
++	pmaddwd MUNG(VBG0B), %mm1     #vbB7+vgG7,vbB6 -> mm1
+ 	psrad   $FIXPSHIFT, %mm6 #32-bit scaled Y7Y6 -> mm6
+ 
+ 	packssdw %mm6, %mm2     #Y7Y6Y5Y4 -> mm2
+ 
+-	pmaddwd VR0GR, %mm5     #vrR7,vgG6+vrR6 -> mm5
++	pmaddwd MUNG(VR0GR), %mm5     #vrR7,vgG6+vrR6 -> mm5
+ 	paddd   %mm4, %mm7      #U7U6 -> mm7    
+ 
+ 	psrad   $FIXPSHIFT, %mm7       #32-bit scaled U7U6 -> mm7
+-	paddw	OFFSETY, %mm2
++	paddw	MUNG(OFFSETY), %mm2
+ 	movq	%mm2, (%ebx)    #store Y7Y6Y5Y4 
+ 
+-	movq	ALLONE, %mm6
++	movq	MUNG(ALLONE), %mm6
+ 	packssdw %mm7, %mm0     #32-bit scaled U7U6U5U4 -> mm0
+ 
+-	movq    TEMPU, %mm4     #32-bit scaled U3U2U1U0 -> mm4
++	movq    MUNG(TEMPU), %mm4     #32-bit scaled U3U2U1U0 -> mm4
+ 	pmaddwd	%mm6, %mm0      #U7U6U5U4 averaged -> (U7U6)(U5U4)=UU3 UU2->mm0
+ 	
+ 	pmaddwd	%mm6, %mm4      #U3U2U1U0 averaged -> (U3U2)(U1U0)=UU1 UU0->mm4
+@@ -343,8 +342,8 @@
+ 
+ 	psrad   $FIXPSHIFT, %mm1       #32-bit scaled V7V6 -> mm1
+ 	psraw	$1, %mm4 	#divide UU3 UU2 UU1 UU0 by 2 -> mm4
+-		
+-	movq    TEMPV, %mm5     #32-bit scaled V3V2V1V0 -> mm5
++
++	movq    MUNG(TEMPV), %mm5     #32-bit scaled V3V2V1V0 -> mm5
+ 
+ 	movq	%mm4, (%ecx)    # store U	
+ 
+@@ -434,14 +433,15 @@
+ _dv_pgm_copy_y_block_mmx:
+ 
+ 	pushl   %ebp
+-	movl    %esp, %ebp
+ 	pushl   %esi
+ 	pushl	%edi
+-	
+-	movl    8(%ebp), %edi          # dest
+-	movl    12(%ebp), %esi         # src
+ 
+-	movq	OFFSETY, %mm7
++	LOAD_PIC_REG(bp)
++
++	movl    16(%esp), %edi          # dest
++	movl    20(%esp), %esi         # src
++
++	movq	MUNG(OFFSETY), %mm7
+ 	pxor	%mm6, %mm6
+ 	
+ 	movq	(%esi), %mm0
+@@ -578,14 +578,15 @@
+ _dv_video_copy_y_block_mmx:
+ 
+ 	pushl   %ebp
+-	movl    %esp, %ebp
+ 	pushl   %esi
+ 	pushl	%edi
+-	
+-	movl    8(%ebp), %edi          # dest
+-	movl    12(%ebp), %esi         # src
+ 
+-	movq	OFFSETBX, %mm7
++	LOAD_PIC_REG(bp)
++
++	movl    16(%esp), %edi          # dest
++	movl    20(%esp), %esi         # src
++
++	movq	MUNG(OFFSETBX), %mm7
+ 	pxor	%mm6, %mm6
+ 	
+ 	movq	(%esi), %mm0
+@@ -870,16 +871,16 @@
+ _dv_pgm_copy_pal_c_block_mmx:
+ 				
+ 	pushl   %ebp
+-	movl    %esp, %ebp
+ 	pushl   %esi
+ 	pushl	%edi
+ 	pushl	%ebx
+-	
+-	movl    8(%ebp), %edi          # dest
+-	movl    12(%ebp), %esi         # src
+ 
++	LOAD_PIC_REG(bp)
++
++	movl    20(%esp), %edi          # dest
++	movl    24(%esp), %esi         # src
+ 
+-	movq	OFFSETBX, %mm7
++	movq	MUNG(OFFSETBX), %mm7
+ 	pxor	%mm6, %mm6
+ 
+ 	
+@@ -1020,15 +1021,16 @@
+ _dv_video_copy_pal_c_block_mmx:
+ 				
+ 	pushl   %ebp
+-	movl    %esp, %ebp
+ 	pushl   %esi
+ 	pushl	%edi
+ 	pushl	%ebx
+-	
+-	movl    8(%ebp), %edi          # dest
+-	movl    12(%ebp), %esi         # src
+ 
+-	movq	OFFSETBX, %mm7
++	LOAD_PIC_REG(bp)
++
++	movl    20(%esp), %edi          # dest
++	movl    24(%esp), %esi         # src
++
++	movq	MUNG(OFFSETBX), %mm7
+ 	paddw	%mm7, %mm7
+ 	pxor	%mm6, %mm6
+ 
+@@ -1117,18 +1119,18 @@
+ _dv_ppm_copy_ntsc_c_block_mmx:
+ 				
+ 	pushl   %ebp
+-	movl    %esp, %ebp
+ 	pushl   %esi
+ 	pushl	%edi
+ 	pushl	%ebx
+-	
+-	movl    8(%ebp), %edi          # dest
+-	movl    12(%ebp), %esi         # src
++
++	LOAD_PIC_REG(bp)
++
++	movl    20(%esp), %edi          # dest
++	movl    24(%esp), %esi         # src
+ 
+ 	movl	$4, %ebx	
+ 
+-	movq	ALLONE, %mm6
+-	
++	movq	MUNG(ALLONE), %mm6
+ ppm_copy_ntsc_c_block_mmx_loop:	
+ 	
+ 	movq	(%esi), %mm0
+@@ -1192,14 +1194,15 @@
+ _dv_pgm_copy_ntsc_c_block_mmx:
+ 				
+ 	pushl   %ebp
+-	movl    %esp, %ebp
+ 	pushl   %esi
+ 	pushl	%edi
+-	
+-	movl    8(%ebp), %edi          # dest
+-	movl    12(%ebp), %esi         # src
+ 
+-	movq	OFFSETBX, %mm7
++	LOAD_PIC_REG(bp)
++
++	movl    16(%esp), %edi          # dest
++	movl    20(%esp), %esi         # src
++
++	movq	MUNG(OFFSETBX), %mm7
+ 	paddw	%mm7, %mm7
+ 	pxor	%mm6, %mm6
+ 
+@@ -1351,15 +1354,16 @@
+ _dv_video_copy_ntsc_c_block_mmx:
+ 				
+ 	pushl   %ebp
+-	movl    %esp, %ebp
+ 	pushl   %esi
+ 	pushl	%edi
+ 	pushl	%ebx
+-	
+-	movl    8(%ebp), %edi          # dest
+-	movl    12(%ebp), %esi         # src
+ 
+-	movq	OFFSETBX, %mm7
++	LOAD_PIC_REG(bp)
++
++	movl    20(%esp), %edi          # dest
++	movl    24(%esp), %esi         # src
++
++	movq	MUNG(OFFSETBX), %mm7
+ 	paddw	%mm7, %mm7
+ 	pxor	%mm6, %mm6
+ 
+diff -Naur libdv-1.0.0.old/libdv/rgbtoyuv_x86_64.S libdv-1.0.0/libdv/rgbtoyuv_x86_64.S
+--- libdv-1.0.0.old/libdv/rgbtoyuv_x86_64.S	2022-03-24 20:13:23.546725329 +0100
++++ libdv-1.0.0/libdv/rgbtoyuv_x86_64.S	2022-03-24 20:13:32.598882713 +0100
+@@ -41,9 +41,6 @@
+ #define DV_WIDTH_SHORT_HALF 720
+ #define DV_WIDTH_BYTE_HALF  360	
+ 		
+-.global _dv_rgbtoycb_mmx_x86_64
+-# .global yuvtoycb_mmx_x86_64
+-
+ .data
+ 
+ .align 8
+diff -Naur libdv-1.0.0.old/libdv/vlc_x86.S libdv-1.0.0/libdv/vlc_x86.S
+--- libdv-1.0.0.old/libdv/vlc_x86.S	2022-03-24 20:13:23.547725346 +0100
++++ libdv-1.0.0/libdv/vlc_x86.S	2022-03-24 20:13:32.599882730 +0100
+@@ -1,31 +1,39 @@
+ 	#include "asmoff.h"
+ .section .note.GNU-stack, "", @progbits
++	#include "asm_common.S"
+ 
+ .text
+ 	.align 4
+ .globl dv_decode_vlc 
++.globl asm_dv_decode_vlc 
++.hidden asm_dv_decode_vlc
++asm_dv_decode_vlc = dv_decode_vlc
++
+ 	.type	 dv_decode_vlc, at function
+ dv_decode_vlc:
+ 	pushl %ebx
++	pushl %ebp
++
++	LOAD_PIC_REG(bp)
+ 
+-	/* Args are at 8(%esp). */
+-	movl  8(%esp),%eax		/* %eax is bits */
+-	movl  12(%esp),%ebx		/* %ebx is maxbits */
++	/* Args are at 12(%esp). */
++	movl  12(%esp),%eax		/* %eax is bits */
++	movl  16(%esp),%ebx		/* %ebx is maxbits */
+ 	andl  $0x3f,%ebx		/* limit index range STL*/
+ 
+-	movl  dv_vlc_class_index_mask(,%ebx,4),%edx
++	movl  MUNG_ARR(dv_vlc_class_index_mask,%ebx,4),%edx
+ 	andl  %eax,%edx
+-	movl  dv_vlc_class_index_rshift(,%ebx,4),%ecx
++	movl  MUNG_ARR(dv_vlc_class_index_rshift,%ebx,4),%ecx
+ 	sarl  %cl,%edx
+-	movl  dv_vlc_classes(,%ebx,4),%ecx
++	movl  MUNG_ARR(dv_vlc_classes,%ebx,4),%ecx
+ 	movsbl  (%ecx,%edx,1),%edx	/* %edx is class */
+ 			
+-	movl  dv_vlc_index_mask(,%edx,4),%ebx
+-	movl  dv_vlc_index_rshift(,%edx,4),%ecx
++	movl  MUNG_ARR(dv_vlc_index_mask,%edx,4),%ebx
++	movl  MUNG_ARR(dv_vlc_index_rshift,%edx,4),%ecx
+ 	andl  %eax,%ebx
+ 	sarl  %cl,%ebx
+ 
+-	movl  dv_vlc_lookups(,%edx,4),%edx
++	movl  MUNG_ARR(dv_vlc_lookups,%edx,4),%edx
+ 	movl  (%edx,%ebx,4),%edx
+ 
+ 	/* Now %edx holds result, like this:
+@@ -44,7 +52,7 @@
+ 	movl  %edx,%ecx
+ 	sarl  $8,%ecx
+ 	andl  $0xff,%ecx
+-	movl  sign_mask(,%ecx,4),%ebx
++	movl  MUNG_ARR(sign_mask,%ecx,4),%ebx
+ 	andl  %ebx,%eax
+ 	negl  %eax
+ 	sarl  $31,%eax
+@@ -65,14 +73,14 @@
+ 	    *result = broken;
+ 	Note that the 'broken' pattern is all ones (i.e. 0xffffffff)
+ 	*/
+-	movl  12(%esp),%ebx		/* %ebx is maxbits */
++	movl  16(%esp),%ebx		/* %ebx is maxbits */
+ 	subl  %ecx,%ebx
+ 	sbbl  %ebx,%ebx
+ 	orl   %ebx,%edx
+ 
+-	movl  16(%esp),%eax
++	movl  20(%esp),%eax
+ 	movl  %edx,(%eax)
+-	
++	popl  %ebp
+ 	popl  %ebx
+ 	ret
+ 	
+@@ -82,21 +90,28 @@
+ 	.type	 __dv_decode_vlc, at function
+ __dv_decode_vlc:
+ 	pushl %ebx
++	pushl %ebp
++
++	LOAD_PIC_REG(bp)
+ 
+-	/* Args are at 8(%esp). */
+-	movl  8(%esp),%eax		/* %eax is bits */
++	/* Args are at 12(%esp). */
++	movl  12(%esp),%eax		/* %eax is bits */
+ 	
+ 	movl  %eax,%edx			/* %edx is class */
+ 	andl  $0xfe00,%edx
+ 	sarl  $9,%edx
++#ifdef __PIC__
++	movsbl dv_vlc_class_lookup5 at GOTOFF(%ebp,%edx),%edx
++#else
+ 	movsbl dv_vlc_class_lookup5(%edx),%edx
+-	
+-	movl  dv_vlc_index_mask(,%edx,4),%ebx
+-	movl  dv_vlc_index_rshift(,%edx,4),%ecx
++#endif
++
++	movl  MUNG_ARR(dv_vlc_index_mask,%edx,4),%ebx
++	movl  MUNG_ARR(dv_vlc_index_rshift,%edx,4),%ecx
+ 	andl  %eax,%ebx
+ 	sarl  %cl,%ebx
+ 
+-	movl  dv_vlc_lookups(,%edx,4),%edx
++	movl  MUNG_ARR(dv_vlc_lookups,%edx,4),%edx
+ 	movl  (%edx,%ebx,4),%edx
+ 
+ 	/* Now %edx holds result, like this:
+@@ -114,7 +129,7 @@
+ 	movl  %edx,%ecx
+ 	sarl  $8,%ecx
+ 	andl  $0xff,%ecx
+-	movl  sign_mask(,%ecx,4),%ecx
++	movl  MUNG_ARR(sign_mask,%ecx,4),%ecx
+ 	andl  %ecx,%eax
+ 	negl  %eax
+ 	sarl  $31,%eax
+@@ -129,9 +144,9 @@
+ 	xorl  %eax,%edx
+ 	subl  %eax,%edx
+ 
+-	movl  12(%esp),%eax
++	movl  16(%esp),%eax
+ 	movl  %edx,(%eax)
+-	
++	popl  %ebp
+ 	popl  %ebx
+ 	ret
+ 
+@@ -142,6 +157,10 @@
+ */
+ .text
+ 	.align	4
++.globl asm_dv_parse_ac_coeffs_pass0
++.hidden asm_dv_parse_ac_coeffs_pass0
++	asm_dv_parse_ac_coeffs_pass0 = dv_parse_ac_coeffs_pass0
++
+ .globl	dv_parse_ac_coeffs_pass0
+ .type	dv_parse_ac_coeffs_pass0, at function
+ dv_parse_ac_coeffs_pass0:
+@@ -150,6 +169,8 @@
+ 	pushl	%esi
+ 	pushl	%ebp
+ 
++	LOAD_PIC_REG(si)
++
+ #define ARGn(N)  (20+(4*(N)))(%esp)
+ 
+ 	/*
+@@ -162,8 +183,10 @@
+ 	ebp	bl
+ 	*/
+ 	movl    ARGn(2),%ebp
++#ifndef __PIC__
+ 	movl	ARGn(0),%esi
+ 	movl	bitstream_t_buf(%esi),%esi
++#endif
+ 	movl	dv_block_t_offset(%ebp),%edi
+ 	movl	dv_block_t_reorder(%ebp),%ebx
+ 
+@@ -173,7 +196,11 @@
+ 	
+ 	movq    dv_block_t_coeffs(%ebp),%mm1
+ 	pxor    %mm0,%mm0
++#ifdef __PIC__
++	pand    const_f_0_0_0 at GOTOFF(%esi),%mm1
++#else
+ 	pand    const_f_0_0_0,%mm1
++#endif
+ 	movq    %mm1,dv_block_t_coeffs(%ebp)
+ 	movq    %mm0,(dv_block_t_coeffs + 8)(%ebp)
+ 	movq    %mm0,(dv_block_t_coeffs + 16)(%ebp)
+@@ -194,9 +221,17 @@
+ readloop:
+ 	movl	%edi,%ecx
+ 	shrl	$3,%ecx
++#ifdef __PIC__
++	movl    ARGn(0),%eax
++	addl    bitstream_t_buf(%eax),%ecx
++	movzbl  (%ecx),%eax
++	movzbl  1(%ecx),%edx
++	movzbl  2(%ecx),%ecx
++#else
+ 	movzbl  (%esi,%ecx,1),%eax
+ 	movzbl  1(%esi,%ecx,1),%edx
+ 	movzbl  2(%esi,%ecx,1),%ecx
++#endif
+ 	shll	$16,%eax
+ 	shll	$8,%edx
+ 	orl	%ecx,%eax
+@@ -220,7 +255,11 @@
+ 
+ 	/* Attempt to use the shortcut first.  If it hits, then
+ 	   this vlc term has been decoded. */
++#ifdef __PIC__
++	movl	dv_vlc_class1_shortcut at GOTOFF(%esi,%ecx,4),%edx
++#else
+ 	movl	dv_vlc_class1_shortcut(,%ecx,4),%edx
++#endif
+ 	test	$0x80,%edx
+ 	je	done_decode
+ 
+@@ -231,12 +270,19 @@
+ 	movl	%ebx,dv_block_t_reorder(%ebp)
+ 
+ 	/* %eax is bits */
+-	
++#ifdef __PIC__
++	movsbl dv_vlc_class_lookup5 at GOTOFF(%esi,%ecx),%ecx
++
++	movl  dv_vlc_index_mask at GOTOFF(%esi,%ecx,4),%ebx
++	movl  dv_vlc_lookups at GOTOFF(%esi,%ecx,4),%edx
++	movl  dv_vlc_index_rshift at GOTOFF(%esi,%ecx,4),%ecx
++#else
+ 	movsbl dv_vlc_class_lookup5(%ecx),%ecx
+ 
+ 	movl  dv_vlc_index_mask(,%ecx,4),%ebx
+ 	movl  dv_vlc_lookups(,%ecx,4),%edx
+ 	movl  dv_vlc_index_rshift(,%ecx,4),%ecx
++#endif
+ 	andl  %eax,%ebx
+ 	sarl  %cl,%ebx
+ 
+@@ -259,7 +305,11 @@
+ 	movl  %edx,%ecx
+ 	sarl  $8,%ecx
+ 	andl  $0xff,%ecx
++#ifdef __PIC__
++	movl  sign_mask at GOTOFF(%esi,%ecx,4),%ecx
++#else
+ 	movl  sign_mask(,%ecx,4),%ecx
++#endif
+ 	andl  %ecx,%eax
+ 	negl  %eax
+ 	sarl  $31,%eax
+@@ -329,10 +379,16 @@
+ 
+ slowpath:
+ 	/* slow path:	 use dv_decode_vlc */;
++#ifdef __PIC__
++	pushl	%esi
++	leal	vlc at GOTOFF(%esi),%esi
++	xchgl	%esi,(%esp)	/* last parameter is &vlc */
++#else
+ 	pushl	$vlc		/* last parameter is &vlc */
++#endif
+ 	pushl	%edx		/* bits_left */
+ 	pushl	%eax		/* bits */
+-	call	dv_decode_vlc
++	call	asm_dv_decode_vlc
+ 	addl	$12,%esp
+ 	test	$0x80,%edx	/* If (vlc.run < 0) break */
+ 	jne	escape
+@@ -369,6 +425,8 @@
+ 	pushl	%esi
+ 	pushl	%ebp
+ 
++	LOAD_PIC_REG(si)
++
+ #define ARGn(N)  (20+(4*(N)))(%esp)
+ 
+ 	movl	ARGn(1),%eax			/* quality */
+@@ -377,7 +435,11 @@
+ 	jz	its_mono
+ 	movl	$6,%ebx
+ its_mono:
++#ifdef __PIC__
++	movl	%ebx,n_blocks at GOTOFF(%esi)
++#else
+ 	movl	%ebx,n_blocks
++#endif
+ 	
+ 	/*
+ 	 *	ebx	seg/b
+@@ -388,15 +450,22 @@
+ 	 *	ebp	bl
+ 	 */
+ 	movl	ARGn(0),%ebx
++#ifndef __PIC__
+ 	movl	dv_videosegment_t_bs(%ebx),%esi
+ 	movl	bitstream_t_buf(%esi),%esi
++#endif
+ 	leal	dv_videosegment_t_mb(%ebx),%edi
+ 
+ 	movl	$0,%eax
+ 	movl	$0,%ecx
+ macloop:
++#ifdef __PIC__
++	movl	%eax,m at GOTOFF(%esi)
++	movl	%ecx,mb_start at GOTOFF(%esi)
++#else
+ 	movl	%eax,m
+ 	movl	%ecx,mb_start
++#endif
+ 
+ 	movl	ARGn(0),%ebx
+ 	
+@@ -404,7 +473,13 @@
+ 	/* mb->qno = bitstream_get(bs,4); */
+ 	movl	%ecx,%edx
+ 	shr	$3,%edx
++#ifdef __PIC__
++	movl	dv_videosegment_t_bs(%ebx),%ecx
++	movl	bitstream_t_buf(%ecx),%ecx
++	movzbl	3(%ecx,%edx,1),%edx
++#else
+ 	movzbl	3(%esi,%edx,1),%edx
++#endif
+ 	andl	$0xf,%edx
+ 	movl	%edx,dv_macroblock_t_qno(%edi)
+ 
+@@ -415,7 +490,11 @@
+ 	movl	%edx,dv_macroblock_t_eob_count(%edi)
+ 
+ 	/* mb->i = (seg->i + dv_super_map_vertical[m]) % (seg->isPAL?12:10); */
++#ifdef __PIC__
++	movl	dv_super_map_vertical at GOTOFF(%esi,%eax,4),%edx
++#else
+ 	movl	dv_super_map_vertical(,%eax,4),%edx
++#endif
+ 	movl	dv_videosegment_t_i(%ebx),%ecx
+ 	addl	%ecx,%edx
+ 
+@@ -426,11 +505,20 @@
+ 	andl	$1,%ecx
+ 	shll	$5,%ecx		/* ecx = (isPAL ? 32 : 0) */
+ 
++#ifdef __PIC__
++	leal	mod_10 at GOTOFF(%esi),%edx
++	movzbl	(%edx,%ecx,1),%edx	/* uses mod_12 for PAL */
++#else
+ 	movzbl	mod_10(%edx,%ecx,1),%edx	/* uses mod_12 for PAL */
++#endif
+ 	movl	%edx,dv_macroblock_t_i(%edi)
+ 
+ 	/*  mb->j = dv_super_map_horizontal[m]; */	
++#ifdef __PIC__
++	movl	dv_super_map_horizontal at GOTOFF(%esi,%eax,4),%edx
++#else
+ 	movl	dv_super_map_horizontal(,%eax,4),%edx
++#endif
+ 	movl	%edx,dv_macroblock_t_j(%edi)
+ 
+ 	/* mb->k = seg->k; */
+@@ -449,12 +537,28 @@
+ 	        +---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+
+ 	*/
+ 	/* dc = bitstream_get(bs,9); */
++#ifdef __PIC__
++	movl	mb_start at GOTOFF(%esi),%ecx
++#else
+ 	movl	mb_start,%ecx
++#endif
+ 	shr	$3,%ecx
++#ifdef __PIC__
++	movzbl	blk_start at GOTOFF(%esi,%ebx),%edx
++#else
+ 	movzbl	blk_start(%ebx),%edx
++#endif
+ 	addl	%ecx,%edx
++#ifdef __PIC__
++	movl	ARGn(0),%ecx
++	movl	dv_videosegment_t_bs(%ecx),%ecx
++	movl	bitstream_t_buf(%ecx),%ecx
++	movzbl	(%ecx,%edx,1),%eax	/* hi byte */
++	movzbl	1(%ecx,%edx,1),%ecx	/* lo byte */
++#else
+ 	movzbl	(%esi,%edx,1),%eax	/* hi byte */
+ 	movzbl	1(%esi,%edx,1),%ecx	/* lo byte */
++#endif
+ 	shll	$8,%eax
+ 	orl	%ecx,%eax
+ 
+@@ -481,7 +585,11 @@
+ 
+ 	/* bl->reorder = &dv_reorder[bl->dct_mode][1]; */
+ 	shll	$6,%eax
++#ifdef __PIC__
++	leal	dv_reorder at GOTOFF+1(%esi,%eax),%eax
++#else
+ 	addl	$(dv_reorder+1),%eax
++#endif
+ 	movl	%eax,dv_block_t_reorder(%ebp)
+ 
+ 	/* bl->reorder_sentinel = bl->reorder + 63; */
+@@ -489,13 +597,22 @@
+ 	movl	%eax,dv_block_t_reorder_sentinel(%ebp)
+ 
+ 	/* bl->offset= mb_start + dv_parse_bit_start[b]; */
++#ifdef __PIC__
++	movl	mb_start at GOTOFF(%esi),%ecx
++	movl	dv_parse_bit_start at GOTOFF(%esi,%ebx,4),%eax
++#else
+ 	movl	mb_start,%ecx
+ 	movl	dv_parse_bit_start(,%ebx,4),%eax
++#endif
+ 	addl	%ecx,%eax
+ 	movl	%eax,dv_block_t_offset(%ebp)
+ 
+ 	/* bl->end= mb_start + dv_parse_bit_end[b]; */
++#ifdef __PIC__
++	movl	dv_parse_bit_end at GOTOFF(%esi,%ebx,4),%eax
++#else
+ 	movl	dv_parse_bit_end(,%ebx,4),%eax
++#endif
+ 	addl	%ecx,%eax
+ 	movl	%eax,dv_block_t_end(%ebp)
+ 
+@@ -507,7 +624,11 @@
+ 	/* no AC pass.  Just zero out the remaining coeffs */
+ 	movq    dv_block_t_coeffs(%ebp),%mm1
+ 	pxor    %mm0,%mm0
++#ifdef __PIC__
++	pand    const_f_0_0_0 at GOTOFF(%esi),%mm1
++#else
+ 	pand    const_f_0_0_0,%mm1
++#endif
+ 	movq    %mm1,dv_block_t_coeffs(%ebp)
+ 	movq    %mm0,(dv_block_t_coeffs + 8)(%ebp)
+ 	movq    %mm0,(dv_block_t_coeffs + 16)(%ebp)
+@@ -532,18 +653,27 @@
+ 	pushl	%ebp
+ 	pushl	%edi
+ 	pushl	%eax
+-	call	dv_parse_ac_coeffs_pass0
++	call	asm_dv_parse_ac_coeffs_pass0
+ 	addl	$12,%esp
+ done_ac:
+ 
++#ifdef __PIC__
++	movl	n_blocks at GOTOFF(%esi),%eax
++#else
+ 	movl	n_blocks,%eax
++#endif
+ 	addl	$dv_block_t_size,%ebp
+ 	incl	%ebx
+ 	cmpl	%eax,%ebx
+ 	jnz	blkloop
+ 
++#ifdef __PIC__
++	movl	m at GOTOFF(%esi),%eax
++	movl	mb_start at GOTOFF(%esi),%ecx
++#else
+ 	movl	m,%eax
+ 	movl	mb_start,%ecx
++#endif
+ 	addl	$(8 * 80),%ecx
+ 	addl	$dv_macroblock_t_size,%edi
+ 	incl	%eax
+@@ -561,7 +691,7 @@
+ 
+ 	andl	$DV_QUALITY_AC_MASK,%eax
+ 	cmpl	$DV_QUALITY_AC_2,%eax
+-	jz	dv_parse_ac_coeffs
++	jz	asm_dv_parse_ac_coeffs
+ 	movl	$0,%eax
+ 	ret
+ 
================================================================

---- gitweb:

http://git.pld-linux.org/gitweb.cgi/packages/libdv.git/commitdiff/7ba6b0049b7f5ce912725b5e7042642d8def3d4b



More information about the pld-cvs-commit mailing list