head 1.8; access; symbols pkgsrc-2026Q1:1.8.0.138 pkgsrc-2026Q1-base:1.8 pkgsrc-2025Q4:1.8.0.136 pkgsrc-2025Q4-base:1.8 pkgsrc-2025Q3:1.8.0.134 pkgsrc-2025Q3-base:1.8 pkgsrc-2025Q2:1.8.0.132 pkgsrc-2025Q2-base:1.8 pkgsrc-2025Q1:1.8.0.130 pkgsrc-2025Q1-base:1.8 pkgsrc-2024Q4:1.8.0.128 pkgsrc-2024Q4-base:1.8 pkgsrc-2024Q3:1.8.0.126 pkgsrc-2024Q3-base:1.8 pkgsrc-2024Q2:1.8.0.124 pkgsrc-2024Q2-base:1.8 pkgsrc-2024Q1:1.8.0.122 pkgsrc-2024Q1-base:1.8 pkgsrc-2023Q4:1.8.0.120 pkgsrc-2023Q4-base:1.8 pkgsrc-2023Q3:1.8.0.118 pkgsrc-2023Q3-base:1.8 pkgsrc-2023Q2:1.8.0.116 pkgsrc-2023Q2-base:1.8 pkgsrc-2023Q1:1.8.0.114 pkgsrc-2023Q1-base:1.8 pkgsrc-2022Q4:1.8.0.112 pkgsrc-2022Q4-base:1.8 pkgsrc-2022Q3:1.8.0.110 pkgsrc-2022Q3-base:1.8 pkgsrc-2022Q2:1.8.0.108 pkgsrc-2022Q2-base:1.8 pkgsrc-2022Q1:1.8.0.106 pkgsrc-2022Q1-base:1.8 pkgsrc-2021Q4:1.8.0.104 pkgsrc-2021Q4-base:1.8 pkgsrc-2021Q3:1.8.0.102 pkgsrc-2021Q3-base:1.8 pkgsrc-2021Q2:1.8.0.100 pkgsrc-2021Q2-base:1.8 pkgsrc-2021Q1:1.8.0.98 pkgsrc-2021Q1-base:1.8 pkgsrc-2020Q4:1.8.0.96 pkgsrc-2020Q4-base:1.8 pkgsrc-2020Q3:1.8.0.94 pkgsrc-2020Q3-base:1.8 pkgsrc-2020Q2:1.8.0.90 pkgsrc-2020Q2-base:1.8 pkgsrc-2020Q1:1.8.0.70 pkgsrc-2020Q1-base:1.8 pkgsrc-2019Q4:1.8.0.92 pkgsrc-2019Q4-base:1.8 pkgsrc-2019Q3:1.8.0.88 pkgsrc-2019Q3-base:1.8 pkgsrc-2019Q2:1.8.0.86 pkgsrc-2019Q2-base:1.8 pkgsrc-2019Q1:1.8.0.84 pkgsrc-2019Q1-base:1.8 pkgsrc-2018Q4:1.8.0.82 pkgsrc-2018Q4-base:1.8 pkgsrc-2018Q3:1.8.0.80 pkgsrc-2018Q3-base:1.8 pkgsrc-2018Q2:1.8.0.78 pkgsrc-2018Q2-base:1.8 pkgsrc-2018Q1:1.8.0.76 pkgsrc-2018Q1-base:1.8 pkgsrc-2017Q4:1.8.0.74 pkgsrc-2017Q4-base:1.8 pkgsrc-2017Q3:1.8.0.72 pkgsrc-2017Q3-base:1.8 pkgsrc-2017Q2:1.8.0.68 pkgsrc-2017Q2-base:1.8 pkgsrc-2017Q1:1.8.0.66 pkgsrc-2017Q1-base:1.8 pkgsrc-2016Q4:1.8.0.64 pkgsrc-2016Q4-base:1.8 pkgsrc-2016Q3:1.8.0.62 pkgsrc-2016Q3-base:1.8 pkgsrc-2016Q2:1.8.0.60 pkgsrc-2016Q2-base:1.8 pkgsrc-2016Q1:1.8.0.58 pkgsrc-2016Q1-base:1.8 pkgsrc-2015Q4:1.8.0.56 pkgsrc-2015Q4-base:1.8 pkgsrc-2015Q3:1.8.0.54 pkgsrc-2015Q3-base:1.8 pkgsrc-2015Q2:1.8.0.52 pkgsrc-2015Q2-base:1.8 pkgsrc-2015Q1:1.8.0.50 pkgsrc-2015Q1-base:1.8 pkgsrc-2014Q4:1.8.0.48 pkgsrc-2014Q4-base:1.8 pkgsrc-2014Q3:1.8.0.46 pkgsrc-2014Q3-base:1.8 pkgsrc-2014Q2:1.8.0.44 pkgsrc-2014Q2-base:1.8 pkgsrc-2014Q1:1.8.0.42 pkgsrc-2014Q1-base:1.8 pkgsrc-2013Q4:1.8.0.40 pkgsrc-2013Q4-base:1.8 pkgsrc-2013Q3:1.8.0.38 pkgsrc-2013Q3-base:1.8 pkgsrc-2013Q2:1.8.0.36 pkgsrc-2013Q2-base:1.8 pkgsrc-2013Q1:1.8.0.34 pkgsrc-2013Q1-base:1.8 pkgsrc-2012Q4:1.8.0.32 pkgsrc-2012Q4-base:1.8 pkgsrc-2012Q3:1.8.0.30 pkgsrc-2012Q3-base:1.8 pkgsrc-2012Q2:1.8.0.28 pkgsrc-2012Q2-base:1.8 pkgsrc-2012Q1:1.8.0.26 pkgsrc-2012Q1-base:1.8 pkgsrc-2011Q4:1.8.0.24 pkgsrc-2011Q4-base:1.8 pkgsrc-2011Q3:1.8.0.22 pkgsrc-2011Q3-base:1.8 pkgsrc-2011Q2:1.8.0.20 pkgsrc-2011Q2-base:1.8 pkgsrc-2011Q1:1.8.0.18 pkgsrc-2011Q1-base:1.8 pkgsrc-2010Q4:1.8.0.16 pkgsrc-2010Q4-base:1.8 pkgsrc-2010Q3:1.8.0.14 pkgsrc-2010Q3-base:1.8 pkgsrc-2010Q2:1.8.0.12 pkgsrc-2010Q2-base:1.8 pkgsrc-2010Q1:1.8.0.10 pkgsrc-2010Q1-base:1.8 pkgsrc-2009Q4:1.8.0.8 pkgsrc-2009Q4-base:1.8 pkgsrc-2009Q3:1.8.0.6 pkgsrc-2009Q3-base:1.8 pkgsrc-2009Q2:1.8.0.4 pkgsrc-2009Q2-base:1.8 pkgsrc-2009Q1:1.8.0.2 pkgsrc-2009Q1-base:1.8 pkgsrc-2008Q4:1.7.0.10 pkgsrc-2008Q4-base:1.7 pkgsrc-2008Q3:1.7.0.8 pkgsrc-2008Q3-base:1.7 cube-native-xorg:1.7.0.6 cube-native-xorg-base:1.7 pkgsrc-2008Q2:1.7.0.4 pkgsrc-2008Q2-base:1.7 cwrapper:1.7.0.2 pkgsrc-2008Q1:1.3.0.2 pkgsrc-2008Q1-base:1.3 pkgsrc-2007Q4:1.2.0.12 pkgsrc-2007Q4-base:1.2 pkgsrc-2007Q3:1.2.0.10 pkgsrc-2007Q3-base:1.2 pkgsrc-2007Q2:1.2.0.8 pkgsrc-2007Q2-base:1.2 pkgsrc-2007Q1:1.2.0.6 pkgsrc-2007Q1-base:1.2 pkgsrc-2006Q4:1.2.0.4 pkgsrc-2006Q4-base:1.2 pkgsrc-2006Q3:1.2.0.2 pkgsrc-2006Q3-base:1.2 pkgsrc-2006Q2:1.1.0.16 pkgsrc-2006Q2-base:1.1 pkgsrc-2006Q1:1.1.0.14 pkgsrc-2006Q1-base:1.1 pkgsrc-2005Q4:1.1.0.12 pkgsrc-2005Q4-base:1.1 pkgsrc-2005Q3:1.1.0.10 pkgsrc-2005Q3-base:1.1 pkgsrc-2005Q2:1.1.0.8 pkgsrc-2005Q2-base:1.1 pkgsrc-2005Q1:1.1.0.6 pkgsrc-2005Q1-base:1.1 pkgsrc-2004Q4:1.1.0.4 pkgsrc-2004Q4-base:1.1 pkgsrc-2004Q3:1.1.0.2 pkgsrc-2004Q3-base:1.1; locks; strict; comment @# @; 1.8 date 2009.01.29.17.53.49; author abs; state Exp; branches; next 1.7; 1.7 date 2008.06.21.11.45.56; author drochner; state Exp; branches; next 1.6; 1.6 date 2008.05.25.14.34.13; author tonio; state Exp; branches; next 1.5; 1.5 date 2008.05.24.07.24.59; author tonio; state Exp; branches; next 1.4; 1.4 date 2008.05.21.19.21.33; author tonio; state Exp; branches; next 1.3; 1.3 date 2008.02.20.09.56.44; author xtraeme; state Exp; branches; next 1.2; 1.2 date 2006.08.09.17.55.51; author mrg; state Exp; branches; next 1.1; 1.1 date 2004.06.26.18.00.21; author grant; state Exp; branches; next ; desc @@ 1.8 log @Updated multimedia/libmpeg3 to 1.8 1.8 - Better table of contents generation & handling of ID3 tags. pkgsrc changes: - Fix broken build on NetBSD by reworking the mares nest of non Linux #ifdefs in mpeg3io.c - build was broken by a previous __DragonFly__ or __APPLE_ build fix - Add new patch for 1.8 to avoid Linux DVD ioctls @ text @$NetBSD: patch-ah,v 1.7 2008/06/21 11:45:56 drochner Exp $ --- mpeg3tocutil.c.orig 2008-06-21 04:53:27.000000000 +0100 +++ mpeg3tocutil.c @@@@ -5,7 +5,27 @@@@ #include #include #include -#include + +#if defined(__NetBSD__) || defined(__DragonFly__) || (defined(__APPLE__) && defined(__MACH__)) +# include +# include + +# if defined(__APPLE__) && defined(__MACH__) +#include +# endif +# if (defined(__NetBSD__) && __NetBSD_Version__ >= 299000900 /* 2.99.9 */) || defined(__DragonFly__) || (defined(__APPLE__) && defined(__MACH__) && !defined(__DARWIN_64_BIT_INO_T) /* MacOSX < 10.5 */) +# define stat64 stat +# endif +# if defined(__NetBSD__) && __NetBSD_Version__ >= 299000900 /* 2.99.9 */ +# define statfs statvfs +# endif + +# include +# include +#else +# include +# include +#endif static FILE *test_file = 0; @ 1.7 log @make this build on DragonFly, from Hasso Tepper per PR pkg/38997 @ text @d1 1 a1 1 $NetBSD: patch-ah,v 1.6 2008/05/25 14:34:13 tonio Exp $ d3 3 a5 3 --- mpeg3tocutil.c.orig 2008-02-19 19:21:30.000000000 +0100 +++ mpeg3tocutil.c 2008-02-19 19:22:41.000000000 +0100 @@@@ -5,8 +5,26 @@@@ d10 1 a10 1 - d32 1 a33 1 #define PUT_INT32(x) \ @ 1.6 log @Yet another try to fix PR pkg/38733 Use the __DARWIN_64_BIT_INO_T from sys/cdefs.h on darwin @ text @d1 1 a1 1 $NetBSD: patch-ah,v 1.5 2008/05/24 07:24:59 tonio Exp $ d18 1 a18 1 +# if (defined(__NetBSD__) && __NetBSD_Version__ >= 299000900 /* 2.99.9 */) || (defined(__APPLE__) && defined(__MACH__) && !defined(__DARWIN_64_BIT_INO_T) /* MacOSX < 10.5 */) @ 1.5 log @Fixing build for MacOSX 10.5, using __DARWIN_STRUCT_STAT64 to detect if stat64 is available. This should fix PR pkg/38721 @ text @d1 1 a1 1 $NetBSD: patch-ah,v 1.4 2008/05/21 19:21:33 tonio Exp $ d5 1 a5 1 @@@@ -5,8 +5,23 @@@@ d15 4 a18 1 +# if (defined(__NetBSD__) && __NetBSD_Version__ >= 299000900 /* 2.99.9 */) || (defined(__APPLE__) && defined(__MACH__) && !defined(__DARWIN_STRUCT_STAT64) /* MacOSX < 10.5 */) @ 1.4 log @Fix build for Darwin - use the same work around for mntent.h as for NetBSD and DragonFly - deactivate oss output for Darwin This fixes PR pkg/38721 @ text @d1 1 a1 1 $NetBSD: patch-ah,v 1.3 2008/02/20 09:56:44 xtraeme Exp $ d15 1 a15 1 +# if (defined(__NetBSD__) && __NetBSD_Version__ >= 299000900 /* 2.99.9 */) || (defined(__APPLE__) && defined(__MACH__) /* MacOSX */) @ 1.3 log @Update to 1.7: Frames are cached when reading the first frame after a seek. This allows faster reverse playback. @ text @d1 1 a1 1 $NetBSD$ d5 1 a5 1 @@@@ -5,8 +5,21 @@@@ d11 1 a11 1 +#if defined(__NetBSD__) || defined(__DragonFly__) d15 1 a15 1 +# if defined(__NetBSD__) && __NetBSD_Version__ >= 299000900 /* 2.99.9 */ d17 2 @ 1.2 log @add some __attribute__((__used__)) if GCC 4. now some static variables only referenced in asm() are no longer not-emited. @ text @d1 1 a1 1 $NetBSD: patch-ah,v 1.1 2004/06/26 18:00:21 grant Exp $ d3 19 a21 8 --- video/output.c.orig 2001-05-19 20:05:26.000000000 -0700 +++ video/output.c 2006-08-09 10:39:35.000000000 -0700 @@@@ -4,23 +4,29 @@@@ #define CLIP(x) ((x) >= 0 ? ((x) < 255 ? (x) : 255) : 0) +#if defined(__GNUC__) && __GNUC__ > 3 +#define LMUSED __attribute__((__used__)) d23 2 a24 1 +#define LMUSED a25 352 + static long long mpeg3_MMX_0 = 0L; -static unsigned long mpeg3_MMX_10w[] = {0x00100010, 0x00100010}; /*dd 00010 0010h, 000100010h */ -static unsigned long mpeg3_MMX_80w[] = {0x00800080, 0x00800080}; /*dd 00080 0080h, 000800080h */ +static unsigned long mpeg3_MMX_10w[] LMUSED = {0x00100010, 0x00100010}; /*dd 00010 0010h, 000100010h */ +static unsigned long mpeg3_MMX_80w[] LMUSED = {0x00800080, 0x00800080}; /*dd 00080 0080h, 000800080h */ -static unsigned long mpeg3_MMX_00FFw[] = {0x00ff00ff, 0x00ff00ff}; /*dd 000FF 00FFh, 000FF00FFh */ +static unsigned long mpeg3_MMX_00FFw[] LMUSED = {0x00ff00ff, 0x00ff00ff}; /*dd 000FF 00FFh, 000FF00FFh */ -static unsigned short mpeg3_MMX_Ublucoeff[] = {0x81, 0x81, 0x81, 0x81}; /*dd 00081 0081h, 000810081h */ -static unsigned short mpeg3_MMX_Vredcoeff[] = {0x66, 0x66, 0x66, 0x66}; /*dd 00066 0066h, 000660066h */ +static unsigned short mpeg3_MMX_Ublucoeff[] LMUSED = {0x81, 0x81, 0x81, 0x81}; /*dd 00081 0081h, 000810081h */ +static unsigned short mpeg3_MMX_Vredcoeff[] LMUSED = {0x66, 0x66, 0x66, 0x66}; /*dd 00066 0066h, 000660066h */ -static unsigned short mpeg3_MMX_Ugrncoeff[] = {0xffe8, 0xffe8, 0xffe8, 0xffe8}; /*dd 0FFE7 FFE7h, 0FFE7FFE7h */ -static unsigned short mpeg3_MMX_Vgrncoeff[] = {0xffcd, 0xffcd, 0xffcd, 0xffcd}; /*dd 0FFCC FFCCh, 0FFCCFFCCh */ +static unsigned short mpeg3_MMX_Ugrncoeff[] LMUSED = {0xffe8, 0xffe8, 0xffe8, 0xffe8}; /*dd 0FFE7 FFE7h, 0FFE7FFE7h */ +static unsigned short mpeg3_MMX_Vgrncoeff[] LMUSED = {0xffcd, 0xffcd, 0xffcd, 0xffcd}; /*dd 0FFCC FFCCh, 0FFCCFFCCh */ -static unsigned short mpeg3_MMX_Ycoeff[] = {0x4a, 0x4a, 0x4a, 0x4a}; /*dd 0004A 004Ah, 0004A004Ah */ +static unsigned short mpeg3_MMX_Ycoeff[] LMUSED = {0x4a, 0x4a, 0x4a, 0x4a}; /*dd 0004A 004Ah, 0004A004Ah */ -static unsigned short mpeg3_MMX_redmask[] = {0xf800, 0xf800, 0xf800, 0xf800}; /*dd 07c00 7c00h, 07c007c00h */ +static unsigned short mpeg3_MMX_redmask[] LMUSED = {0xf800, 0xf800, 0xf800, 0xf800}; /*dd 07c00 7c00h, 07c007c00h */ -static unsigned short mpeg3_MMX_grnmask[] = {0x7e0, 0x7e0, 0x7e0, 0x7e0}; /*dd 003e0 03e0h, 003e003e0h */ +static unsigned short mpeg3_MMX_grnmask[] LMUSED = {0x7e0, 0x7e0, 0x7e0, 0x7e0}; /*dd 003e0 03e0h, 003e003e0h */ static unsigned char mpeg3_601_to_rgb[256]; @@@@ -207,50 +213,50 @@@@ ); } -static unsigned long long mpeg3_MMX_U_80 = 0x0000008000800000; -static unsigned long long mpeg3_MMX_V_80 = 0x0000000000800080; -static long long mpeg3_MMX_U_COEF = 0x00000058ffd30000; -static long long mpeg3_MMX_V_COEF = 0x00000000ffea006f; -static long long mpeg3_MMX_601_Y_COEF = 0x0000004800480048; -static long long mpeg3_MMX_601_Y_DIFF = 0x0000000000000010; +static unsigned long long mpeg3_MMX_U_80 LMUSED = 0x0000008000800000LL; +static unsigned long long mpeg3_MMX_V_80 LMUSED = 0x0000000000800080LL; +static long long mpeg3_MMX_U_COEF LMUSED = 0x00000058ffd30000LL; +static long long mpeg3_MMX_V_COEF LMUSED = 0x00000000ffea006fLL; +static long long mpeg3_MMX_601_Y_COEF LMUSED = 0x0000004800480048LL; +static long long mpeg3_MMX_601_Y_DIFF LMUSED = 0x0000000000000010LL; inline void mpeg3_bgra32_mmx(unsigned long y, unsigned long u, unsigned long v, unsigned long *output) { -asm(" -/* Output will be 0x00rrggbb with the 00 trailing so this can also be used */ -/* for bgr24. */ - movd (%0), %%mm0; /* Load y 0x00000000000000yy */ - movd (%1), %%mm1; /* Load u 0x00000000000000cr */ - movq %%mm0, %%mm3; /* Copy y to temp */ - psllq $16, %%mm1; /* Shift u 0x0000000000cr0000 */ - movd (%2), %%mm2; /* Load v 0x00000000000000cb */ - psllq $16, %%mm3; /* Shift y */ - movq %%mm1, %%mm4; /* Copy u to temp */ - por %%mm3, %%mm0; /* Overlay new y byte 0x0000000000yy00yy */ - psllq $16, %%mm4; /* Shift u */ - movq %%mm2, %%mm5; /* Copy v to temp */ - psllq $16, %%mm3; /* Shift y */ - por %%mm4, %%mm1; /* Overlay new u byte 0x000000cr00cr0000 */ - psllq $16, %%mm5; /* Shift v */ - por %%mm3, %%mm0; /* Overlay new y byte 0x000000yy00yy00yy */ - por %%mm5, %%mm2; /* Overlay new v byte 0x0000000000cb00cb */ - -/* mm0: 0x000000yy00yy00yy mm1: 0x000000uu00uu0000 mm2: 0x0000000000vv00vv */ - psubw mpeg3_MMX_U_80, %%mm1; /* Subtract 128 from u 0x000000uu00uu0000 */ - pmullw mpeg3_MMX_U_COEF, %%mm1; /* Multiply u coeffs 0x0000uuuuuuuu0000 */ - psllw $6, %%mm0; /* Shift y coeffs 0x0000yyy0yyy0yyy0 */ - psubw mpeg3_MMX_V_80, %%mm2; /* Subtract 128 from v 0x0000000000cb00cb */ - pmullw mpeg3_MMX_V_COEF, %%mm2; /* Multiply v coeffs 0x0000crcrcrcrcrcr */ - -/* mm0: 0x000000yy00yy00yy mm1: 0x0000uuuuuuuu0000 mm2: 0x00000000vvvvvvvv */ - paddsw %%mm1, %%mm0; /* Add u to result */ - paddsw %%mm2, %%mm0; /* Add v to result 0x0000rrrrggggbbbb */ - psraw $6, %%mm0; /* Demote precision */ - packuswb %%mm0, %%mm0; /* Pack into ARGB 0x0000000000rrggbb */ - movd %%mm0, (%3); /* Store output */ +asm("\n\ +/* Output will be 0x00rrggbb with the 00 trailing so this can also be used */\n\ +/* for bgr24. */\n\ + movd (%0), %%mm0; /* Load y 0x00000000000000yy */\n\ + movd (%1), %%mm1; /* Load u 0x00000000000000cr */\n\ + movq %%mm0, %%mm3; /* Copy y to temp */\n\ + psllq $16, %%mm1; /* Shift u 0x0000000000cr0000 */\n\ + movd (%2), %%mm2; /* Load v 0x00000000000000cb */\n\ + psllq $16, %%mm3; /* Shift y */\n\ + movq %%mm1, %%mm4; /* Copy u to temp */\n\ + por %%mm3, %%mm0; /* Overlay new y byte 0x0000000000yy00yy */\n\ + psllq $16, %%mm4; /* Shift u */\n\ + movq %%mm2, %%mm5; /* Copy v to temp */\n\ + psllq $16, %%mm3; /* Shift y */\n\ + por %%mm4, %%mm1; /* Overlay new u byte 0x000000cr00cr0000 */\n\ + psllq $16, %%mm5; /* Shift v */\n\ + por %%mm3, %%mm0; /* Overlay new y byte 0x000000yy00yy00yy */\n\ + por %%mm5, %%mm2; /* Overlay new v byte 0x0000000000cb00cb */\n\ +\n\ +/* mm0: 0x000000yy00yy00yy mm1: 0x000000uu00uu0000 mm2: 0x0000000000vv00vv */\n\ + psubw mpeg3_MMX_U_80, %%mm1; /* Subtract 128 from u 0x000000uu00uu0000 */\n\ + pmullw mpeg3_MMX_U_COEF, %%mm1; /* Multiply u coeffs 0x0000uuuuuuuu0000 */\n\ + psllw $6, %%mm0; /* Shift y coeffs 0x0000yyy0yyy0yyy0 */\n\ + psubw mpeg3_MMX_V_80, %%mm2; /* Subtract 128 from v 0x0000000000cb00cb */\n\ + pmullw mpeg3_MMX_V_COEF, %%mm2; /* Multiply v coeffs 0x0000crcrcrcrcrcr */\n\ +\n\ +/* mm0: 0x000000yy00yy00yy mm1: 0x0000uuuuuuuu0000 mm2: 0x00000000vvvvvvvv */\n\ + paddsw %%mm1, %%mm0; /* Add u to result */\n\ + paddsw %%mm2, %%mm0; /* Add v to result 0x0000rrrrggggbbbb */\n\ + psraw $6, %%mm0; /* Demote precision */\n\ + packuswb %%mm0, %%mm0; /* Pack into ARGB 0x0000000000rrggbb */\n\ + movd %%mm0, (%3); /* Store output */\n\ " : : "r" (&y), "r" (&u), "r" (&v), "r" (output)); @@@@ -261,86 +267,86 @@@@ unsigned long v, unsigned long *output) { -asm(" -/* Output will be 0x00rrggbb with the 00 trailing so this can also be used */ -/* for bgr24. */ - movd (%0), %%mm0; /* Load y 0x00000000000000yy */ - psubsw mpeg3_MMX_601_Y_DIFF, %%mm0; /* Subtract 16 from y */ - movd (%1), %%mm1; /* Load u 0x00000000000000cr */ - movq %%mm0, %%mm3; /* Copy y to temp */ - psllq $16, %%mm1; /* Shift u 0x0000000000cr0000 */ - movd (%2), %%mm2; /* Load v 0x00000000000000cb */ - psllq $16, %%mm3; /* Shift y */ - movq %%mm1, %%mm4; /* Copy u to temp */ - por %%mm3, %%mm0; /* Overlay new y byte 0x0000000000yy00yy */ - psllq $16, %%mm4; /* Shift u */ - movq %%mm2, %%mm5; /* Copy v to temp */ - psllq $16, %%mm3; /* Shift y */ - por %%mm4, %%mm1; /* Overlay new u byte 0x000000cr00cr0000 */ - psllq $16, %%mm5; /* Shift v */ - por %%mm3, %%mm0; /* Overlay new y byte 0x000000yy00yy00yy */ - por %%mm5, %%mm2; /* Overlay new v byte 0x0000000000cb00cb */ - -/* mm0: 0x000000yy00yy00yy mm1: 0x000000uu00uu0000 mm2: 0x0000000000vv00vv */ - pmullw mpeg3_MMX_601_Y_COEF, %%mm0; /* Scale and shift y coeffs */ - psubw mpeg3_MMX_U_80, %%mm1; /* Subtract 128 from u 0x000000uu00uu0000 */ - pmullw mpeg3_MMX_U_COEF, %%mm1; /* Multiply u coeffs 0x0000uuuuuuuu0000 */ - psubw mpeg3_MMX_V_80, %%mm2; /* Subtract 128 from v 0x0000000000cb00cb */ - pmullw mpeg3_MMX_V_COEF, %%mm2; /* Multiply v coeffs 0x0000crcrcrcrcrcr */ - -/* mm0: 0x000000yy00yy00yy mm1: 0x0000uuuuuuuu0000 mm2: 0x00000000vvvvvvvv */ - paddsw %%mm1, %%mm0; /* Add u to result */ - paddsw %%mm2, %%mm0; /* Add v to result 0x0000rrrrggggbbbb */ - psraw $6, %%mm0; /* Demote precision */ - packuswb %%mm0, %%mm0; /* Pack into ARGB 0x0000000000rrggbb */ - movd %%mm0, (%3); /* Store output */ +asm("\n\ +/* Output will be 0x00rrggbb with the 00 trailing so this can also be used */\n\ +/* for bgr24. */\n\ + movd (%0), %%mm0; /* Load y 0x00000000000000yy */\n\ + psubsw mpeg3_MMX_601_Y_DIFF, %%mm0; /* Subtract 16 from y */\n\ + movd (%1), %%mm1; /* Load u 0x00000000000000cr */\n\ + movq %%mm0, %%mm3; /* Copy y to temp */\n\ + psllq $16, %%mm1; /* Shift u 0x0000000000cr0000 */\n\ + movd (%2), %%mm2; /* Load v 0x00000000000000cb */\n\ + psllq $16, %%mm3; /* Shift y */\n\ + movq %%mm1, %%mm4; /* Copy u to temp */\n\ + por %%mm3, %%mm0; /* Overlay new y byte 0x0000000000yy00yy */\n\ + psllq $16, %%mm4; /* Shift u */\n\ + movq %%mm2, %%mm5; /* Copy v to temp */\n\ + psllq $16, %%mm3; /* Shift y */\n\ + por %%mm4, %%mm1; /* Overlay new u byte 0x000000cr00cr0000 */\n\ + psllq $16, %%mm5; /* Shift v */\n\ + por %%mm3, %%mm0; /* Overlay new y byte 0x000000yy00yy00yy */\n\ + por %%mm5, %%mm2; /* Overlay new v byte 0x0000000000cb00cb */\n\ +\n\ +/* mm0: 0x000000yy00yy00yy mm1: 0x000000uu00uu0000 mm2: 0x0000000000vv00vv */\n\ + pmullw mpeg3_MMX_601_Y_COEF, %%mm0; /* Scale and shift y coeffs */\n\ + psubw mpeg3_MMX_U_80, %%mm1; /* Subtract 128 from u 0x000000uu00uu0000 */\n\ + pmullw mpeg3_MMX_U_COEF, %%mm1; /* Multiply u coeffs 0x0000uuuuuuuu0000 */\n\ + psubw mpeg3_MMX_V_80, %%mm2; /* Subtract 128 from v 0x0000000000cb00cb */\n\ + pmullw mpeg3_MMX_V_COEF, %%mm2; /* Multiply v coeffs 0x0000crcrcrcrcrcr */\n\ +\n\ +/* mm0: 0x000000yy00yy00yy mm1: 0x0000uuuuuuuu0000 mm2: 0x00000000vvvvvvvv */\n\ + paddsw %%mm1, %%mm0; /* Add u to result */\n\ + paddsw %%mm2, %%mm0; /* Add v to result 0x0000rrrrggggbbbb */\n\ + psraw $6, %%mm0; /* Demote precision */\n\ + packuswb %%mm0, %%mm0; /* Pack into ARGB 0x0000000000rrggbb */\n\ + movd %%mm0, (%3); /* Store output */\n\ " : : "r" (&y), "r" (&u), "r" (&v), "r" (output)); } -static unsigned long long mpeg3_MMX_U_80_RGB = 0x0000000000800080; -static unsigned long long mpeg3_MMX_V_80_RGB = 0x0000008000800000; -static long long mpeg3_MMX_U_COEF_RGB = 0x00000000ffd30058; -static long long mpeg3_MMX_V_COEF_RGB = 0x0000006fffea0000; +static unsigned long long mpeg3_MMX_U_80_RGB LMUSED = 0x0000000000800080; +static unsigned long long mpeg3_MMX_V_80_RGB LMUSED = 0x0000008000800000ULL; +static long long mpeg3_MMX_U_COEF_RGB LMUSED = 0x00000000ffd30058; +static long long mpeg3_MMX_V_COEF_RGB LMUSED = 0x0000006fffea0000ULL; inline void mpeg3_rgba32_mmx(unsigned long y, unsigned long u, unsigned long v, unsigned long *output) { -asm(" -/* Output will be 0x00bbggrr with the 00 trailing so this can also be used */ -/* for rgb24. */ - movd (%0), %%mm0; /* Load y 0x00000000000000yy */ - movd (%1), %%mm1; /* Load v 0x00000000000000vv */ - movq %%mm0, %%mm3; /* Copy y to temp */ - psllq $16, %%mm1; /* Shift v 0x0000000000vv0000 */ - movd (%2), %%mm2; /* Load u 0x00000000000000uu */ - psllq $16, %%mm3; /* Shift y */ - movq %%mm1, %%mm4; /* Copy v to temp */ - por %%mm3, %%mm0; /* Overlay new y byte 0x0000000000yy00yy */ - psllq $16, %%mm4; /* Shift v */ - movq %%mm2, %%mm5; /* Copy u to temp */ - psllq $16, %%mm3; /* Shift y */ - por %%mm4, %%mm1; /* Overlay new v byte 0x000000vv00vv0000 */ - psllq $16, %%mm5; /* Shift u */ - por %%mm3, %%mm0; /* Overlay new y byte 0x000000yy00yy00yy */ - por %%mm5, %%mm2; /* Overlay new u byte 0x0000000000uu00uu */ - -/* mm0: 0x000000yy00yy00yy mm1: 0x000000vv00vv0000 mm2: 0x0000000000uu00uu */ - psubw mpeg3_MMX_V_80_RGB, %%mm1; /* Subtract 128 from v 0x000000vv00vv0000 */ - pmullw mpeg3_MMX_V_COEF_RGB, %%mm1; /* Multiply v coeffs 0x0000vvvvvvvv0000 */ - psllw $6, %%mm0; /* Shift y coeffs 0x0000yyy0yyy0yyy0 */ - psubw mpeg3_MMX_U_80_RGB, %%mm2; /* Subtract 128 from u 0x0000000000uu00uu */ - pmullw mpeg3_MMX_U_COEF_RGB, %%mm2; /* Multiply u coeffs 0x0000uuuuuuuuuuuu */ - -/* mm0: 0x000000yy00yy00yy mm1: 0x0000vvvvvvvv0000 mm2: 0x00000000uuuuuuuu */ - paddsw %%mm1, %%mm0; /* Add v to result */ - paddsw %%mm2, %%mm0; /* Add u to result 0x0000bbbbggggrrrr */ - psraw $6, %%mm0; /* Demote precision */ - packuswb %%mm0, %%mm0; /* Pack into RGBA 0x0000000000bbggrr */ - movd %%mm0, (%3); /* Store output */ +asm("\n\ +/* Output will be 0x00bbggrr with the 00 trailing so this can also be used */\n\ +/* for rgb24. */\n\ + movd (%0), %%mm0; /* Load y 0x00000000000000yy */\n\ + movd (%1), %%mm1; /* Load v 0x00000000000000vv */\n\ + movq %%mm0, %%mm3; /* Copy y to temp */\n\ + psllq $16, %%mm1; /* Shift v 0x0000000000vv0000 */\n\ + movd (%2), %%mm2; /* Load u 0x00000000000000uu */\n\ + psllq $16, %%mm3; /* Shift y */\n\ + movq %%mm1, %%mm4; /* Copy v to temp */\n\ + por %%mm3, %%mm0; /* Overlay new y byte 0x0000000000yy00yy */\n\ + psllq $16, %%mm4; /* Shift v */\n\ + movq %%mm2, %%mm5; /* Copy u to temp */\n\ + psllq $16, %%mm3; /* Shift y */\n\ + por %%mm4, %%mm1; /* Overlay new v byte 0x000000vv00vv0000 */\n\ + psllq $16, %%mm5; /* Shift u */\n\ + por %%mm3, %%mm0; /* Overlay new y byte 0x000000yy00yy00yy */\n\ + por %%mm5, %%mm2; /* Overlay new u byte 0x0000000000uu00uu */\n\ +\n\ +/* mm0: 0x000000yy00yy00yy mm1: 0x000000vv00vv0000 mm2: 0x0000000000uu00uu */\n\ + psubw mpeg3_MMX_V_80_RGB, %%mm1; /* Subtract 128 from v 0x000000vv00vv0000 */\n\ + pmullw mpeg3_MMX_V_COEF_RGB, %%mm1; /* Multiply v coeffs 0x0000vvvvvvvv0000 */\n\ + psllw $6, %%mm0; /* Shift y coeffs 0x0000yyy0yyy0yyy0 */\n\ + psubw mpeg3_MMX_U_80_RGB, %%mm2; /* Subtract 128 from u 0x0000000000uu00uu */\n\ + pmullw mpeg3_MMX_U_COEF_RGB, %%mm2; /* Multiply u coeffs 0x0000uuuuuuuuuuuu */\n\ +\n\ +/* mm0: 0x000000yy00yy00yy mm1: 0x0000vvvvvvvv0000 mm2: 0x00000000uuuuuuuu */\n\ + paddsw %%mm1, %%mm0; /* Add v to result */\n\ + paddsw %%mm2, %%mm0; /* Add u to result 0x0000bbbbggggrrrr */\n\ + psraw $6, %%mm0; /* Demote precision */\n\ + packuswb %%mm0, %%mm0; /* Pack into RGBA 0x0000000000bbggrr */\n\ + movd %%mm0, (%3); /* Store output */\n\ " : : "r" (&y), "r" (&v), "r" (&u), "r" (output)); @@@@ -351,39 +357,39 @@@@ unsigned long v, unsigned long *output) { -asm(" -/* Output will be 0x00bbggrr with the 00 trailing so this can also be used */ -/* for rgb24. */ - movd (%0), %%mm0; /* Load y 0x00000000000000yy */ - psubsw mpeg3_MMX_601_Y_DIFF, %%mm0; /* Subtract 16 from y */ - movd (%1), %%mm1; /* Load v 0x00000000000000vv */ - movq %%mm0, %%mm3; /* Copy y to temp */ - psllq $16, %%mm1; /* Shift v 0x0000000000vv0000 */ - movd (%2), %%mm2; /* Load u 0x00000000000000uu */ - psllq $16, %%mm3; /* Shift y */ - movq %%mm1, %%mm4; /* Copy v to temp */ - por %%mm3, %%mm0; /* Overlay new y byte 0x0000000000yy00yy */ - psllq $16, %%mm4; /* Shift v */ - movq %%mm2, %%mm5; /* Copy u to temp */ - psllq $16, %%mm3; /* Shift y */ - por %%mm4, %%mm1; /* Overlay new v byte 0x000000vv00vv0000 */ - psllq $16, %%mm5; /* Shift u */ - por %%mm3, %%mm0; /* Overlay new y byte 0x000000yy00yy00yy */ - por %%mm5, %%mm2; /* Overlay new u byte 0x0000000000uu00uu */ - -/* mm0: 0x000000yy00yy00yy mm1: 0x000000vv00vv0000 mm2: 0x0000000000uu00uu */ - pmullw mpeg3_MMX_601_Y_COEF, %%mm0; /* Scale y coeffs */ - psubw mpeg3_MMX_V_80_RGB, %%mm1; /* Subtract 128 from v 0x000000vv00vv0000 */ - pmullw mpeg3_MMX_V_COEF_RGB, %%mm1; /* Multiply v coeffs 0x0000vvvvvvvv0000 */ - psubw mpeg3_MMX_U_80_RGB, %%mm2; /* Subtract 128 from u 0x0000000000uu00uu */ - pmullw mpeg3_MMX_U_COEF_RGB, %%mm2; /* Multiply u coeffs 0x0000uuuuuuuuuuuu */ - -/* mm0: 0x000000yy00yy00yy mm1: 0x0000vvvvvvvv0000 mm2: 0x00000000uuuuuuuu */ - paddsw %%mm1, %%mm0; /* Add v to result */ - paddsw %%mm2, %%mm0; /* Add u to result 0x0000bbbbggggrrrr */ - psraw $6, %%mm0; /* Demote precision */ - packuswb %%mm0, %%mm0; /* Pack into RGBA 0x0000000000bbggrr */ - movd %%mm0, (%3); /* Store output */ +asm("\n\ +/* Output will be 0x00bbggrr with the 00 trailing so this can also be used */\n\ +/* for rgb24. */\n\ + movd (%0), %%mm0; /* Load y 0x00000000000000yy */\n\ + psubsw mpeg3_MMX_601_Y_DIFF, %%mm0; /* Subtract 16 from y */\n\ + movd (%1), %%mm1; /* Load v 0x00000000000000vv */\n\ + movq %%mm0, %%mm3; /* Copy y to temp */\n\ + psllq $16, %%mm1; /* Shift v 0x0000000000vv0000 */\n\ + movd (%2), %%mm2; /* Load u 0x00000000000000uu */\n\ + psllq $16, %%mm3; /* Shift y */\n\ + movq %%mm1, %%mm4; /* Copy v to temp */\n\ + por %%mm3, %%mm0; /* Overlay new y byte 0x0000000000yy00yy */\n\ + psllq $16, %%mm4; /* Shift v */\n\ + movq %%mm2, %%mm5; /* Copy u to temp */\n\ + psllq $16, %%mm3; /* Shift y */\n\ + por %%mm4, %%mm1; /* Overlay new v byte 0x000000vv00vv0000 */\n\ + psllq $16, %%mm5; /* Shift u */\n\ + por %%mm3, %%mm0; /* Overlay new y byte 0x000000yy00yy00yy */\n\ + por %%mm5, %%mm2; /* Overlay new u byte 0x0000000000uu00uu */\n\ +\n\ +/* mm0: 0x000000yy00yy00yy mm1: 0x000000vv00vv0000 mm2: 0x0000000000uu00uu */\n\ + pmullw mpeg3_MMX_601_Y_COEF, %%mm0; /* Scale y coeffs */\n\ + psubw mpeg3_MMX_V_80_RGB, %%mm1; /* Subtract 128 from v 0x000000vv00vv0000 */\n\ + pmullw mpeg3_MMX_V_COEF_RGB, %%mm1; /* Multiply v coeffs 0x0000vvvvvvvv0000 */\n\ + psubw mpeg3_MMX_U_80_RGB, %%mm2; /* Subtract 128 from u 0x0000000000uu00uu */\n\ + pmullw mpeg3_MMX_U_COEF_RGB, %%mm2; /* Multiply u coeffs 0x0000uuuuuuuuuuuu */\n\ +\n\ +/* mm0: 0x000000yy00yy00yy mm1: 0x0000vvvvvvvv0000 mm2: 0x00000000uuuuuuuu */\n\ + paddsw %%mm1, %%mm0; /* Add v to result */\n\ + paddsw %%mm2, %%mm0; /* Add u to result 0x0000bbbbggggrrrr */\n\ + psraw $6, %%mm0; /* Demote precision */\n\ + packuswb %%mm0, %%mm0; /* Pack into RGBA 0x0000000000bbggrr */\n\ + movd %%mm0, (%3); /* Store output */\n\ " : : "r" (&y), "r" (&v), "r" (&u), "r" (output)); @@@@ -482,11 +488,14 @@@@ *data++ = CLIP(r_l); \ *data++ = 0; a26 13 -#define STORE_PIXEL_RGB565 \ - *((unsigned short*)data)++ = \ - ((CLIP(r_l) & 0xf8) << 8) | \ - ((CLIP(g_l) & 0xfc) << 3) | \ - ((CLIP(b_l) & 0xf8) >> 3); +#define STORE_PIXEL_RGB565 { \ + unsigned short *sdata = (unsigned short *)data; \ + *((unsigned short*)sdata)++ = \ + ((CLIP(r_l) & 0xf8) << 8) | \ + ((CLIP(g_l) & 0xfc) << 3) | \ + ((CLIP(b_l) & 0xf8) >> 3); \ + data = (unsigned char *)sdata; \ + } d28 1 a28 2 #define STORE_PIXEL_RGB888 \ *data++ = CLIP(r_l); \ @ 1.1 log @move libmpeg3 to multimedia/ @ text @d1 1 a1 1 $NetBSD: patch-ah,v 1.1 2003/07/28 15:01:28 mrg Exp $ d3 43 a45 3 --- video/output.c.orig 2001-05-20 13:05:26.000000000 +1000 +++ video/output.c 2003-07-29 00:53:45.000000000 +1000 @@@@ -207,50 +207,50 @@@@ d55 6 a60 6 +static unsigned long long mpeg3_MMX_U_80 = 0x0000008000800000LL; +static unsigned long long mpeg3_MMX_V_80 = 0x0000000000800080LL; +static long long mpeg3_MMX_U_COEF = 0x00000058ffd30000LL; +static long long mpeg3_MMX_V_COEF = 0x00000000ffea006fLL; +static long long mpeg3_MMX_601_Y_COEF = 0x0000004800480048LL; +static long long mpeg3_MMX_601_Y_DIFF = 0x0000000000000010LL; d134 1 a134 1 @@@@ -261,39 +261,39 @@@@ d207 13 a219 1 @@@@ -309,38 +309,38 @@@@ d290 1 a290 1 @@@@ -351,39 +351,39 @@@@ d363 20 @