* ftp.c:
*****************************************************************************
* Copyright (C) 2001, 2002 VideoLAN
- * $Id: ftp.c,v 1.2 2002/12/16 15:17:12 fenrir Exp $
+ * $Id: ftp.c,v 1.3 2002/12/18 14:17:09 sam Exp $
*
* Authors: Laurent Aimar <fenrir@via.ecp.fr>
*
}
#endif
- msg_Dbg( p_input, "file size:%d", p_access->i_filesize );
+ msg_Dbg( p_input, "file size: "I64Fd, p_access->i_filesize );
FREE( psz_arg );
if( ftp_StartStream( p_input, 0 ) < 0 )
* mms.c: MMS access plug-in
*****************************************************************************
* Copyright (C) 2001, 2002 VideoLAN
- * $Id: mms.c,v 1.13 2002/12/12 15:10:58 gbazin Exp $
+ * $Id: mms.c,v 1.14 2002/12/18 14:17:09 sam Exp $
*
* Authors: Laurent Aimar <fenrir@via.ecp.fr>
*
GET32( 0 ),
GET32( 4 ),
GET32( 8 ),
+ /* 12: protocol type "MMS " */
GET32( 16 ),
GET32( 20 ),
+ /* 24: unknown (0) */
+ /* 28: unknown (0) */
GET32( 32 ),
- GET32( 36 ),
- GET32( 40 ) );
+ GET32( 36 )
+ /* 40: switches */
+ /* 44: extra */ );
p_access->i_command = GET32( 36 ) & 0xffff;
* oss.c : OSS /dev/dsp module for vlc
*****************************************************************************
* Copyright (C) 2000-2002 VideoLAN
- * $Id: oss.c,v 1.38 2002/12/10 18:22:01 gbazin Exp $
+ * $Id: oss.c,v 1.39 2002/12/18 14:17:09 sam Exp $
*
* Authors: Michel Kaempf <maxx@via.ecp.fr>
* Samuel Hocevar <sam@zoy.org>
if( ioctl( p_sys->i_fd, SNDCTL_DSP_CHANNELS, &i_nb_channels ) < 0 ||
i_nb_channels != aout_FormatNbChannels( &p_aout->output.output ) )
{
- msg_Err( p_aout, "cannot set number of audio channels (%x)",
+ msg_Err( p_aout, "cannot set number of audio channels (%s)",
aout_FormatPrintChannels( &p_aout->output.output) );
close( p_sys->i_fd );
free( p_sys );
* adpcm.c : adpcm variant audio decoder
*****************************************************************************
* Copyright (C) 2001, 2002 VideoLAN
- * $Id: adpcm.c,v 1.1 2002/12/03 17:00:16 fenrir Exp $
+ * $Id: adpcm.c,v 1.2 2002/12/18 14:17:10 sam Exp $
*
* Authors: Laurent Aimar <fenrir@via.ecp.fr>
*
DecodeAdpcmMs( p_adec, p_aout_buffer );
break;
default:
+ break;
}
* audio.c: audio decoder using ffmpeg library
*****************************************************************************
* Copyright (C) 1999-2001 VideoLAN
- * $Id: audio.c,v 1.7 2002/12/06 14:22:55 fenrir Exp $
+ * $Id: audio.c,v 1.8 2002/12/18 14:17:10 sam Exp $
*
* Authors: Laurent Aimar <fenrir@via.ecp.fr>
*
p_adec->p_context->channels > 5 )
{
msg_Warn( p_adec->p_fifo,
- "invalid channels count",
+ "invalid channels count %d",
p_adec->p_context->channels );
}
* postprocessing_mmx.c: Post Processing library in MMX
*****************************************************************************
* Copyright (C) 2001 VideoLAN
- * $Id: postprocessing_mmx.c,v 1.2 2002/12/06 16:34:05 sam Exp $
+ * $Id: postprocessing_mmx.c,v 1.3 2002/12/18 14:17:10 sam Exp $
*
* Authors: Laurent Aimar <fenrir@via.ecp.fr>
- *
+ *
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation; either version 2 of the License, or
* (at your option) any later version.
- *
+ *
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111, USA.
*****************************************************************************/
-#include <vlc/vlc.h> /* only use u8, u32 .... */
+#include <vlc/vlc.h> /* only use uint8_t, uint32_t .... */
#include "postprocessing.h"
#include "postprocessing_common.h"
/* Use same things as in idct but how it work ? */
#define UNUSED_LONGLONG( foo ) \
static const unsigned long long foo __asm__ (#foo) __attribute__((unused))
-
-/* to calculate isDC_mode for mmx */
+
+/* to calculate isDC_mode for mmx */
UNUSED_LONGLONG( mmx_127_thr1 ) = ( ( 127ULL - PP_THR1 ) << 56 )|
( ( 127ULL - PP_THR1 ) << 48 )|
( ( 127ULL - PP_THR1 ) << 40 )|
#if 0
/* find min bytes from r ans set it in r, t is destroyed */
#define MMXEXT_GET_PMIN( r, t ) \
- "movq " #r ", " #t " \n\
- psrlq $8, " #t " \n\
- pminub " #t ", " #r " \n\
- pshufw $0xf5, " #r ", " #t " #instead of shift with tmp reg \n\
- pminub " #t ", " #r " \n\
- pshufw $0xfe, " #r ", " #t " \n\
- pminub " #t ", " #r " \n"
-
+ "movq " #r ", " #t " \n" \
+ "psrlq $8, " #t " \n" \
+ "pminub " #t ", " #r " \n" \
+ "pshufw $0xf5, " #r ", " #t " #instead of shift with tmp reg \n" \
+ "pminub " #t ", " #r " \n" \
+ "pshufw $0xfe, " #r ", " #t " \n" \
+ "pminub " #t ", " #r " \n"
+
/* find mzx bytes from r ans set it in r, t is destroyed */
#define MMXEXT_GET_PMAX( r, t ) \
- "movq " #r ", " #t " \n\
- psrlq $8, " #t " \n\
- pmaxub " #t ", " #r " \n\
- pshufw $0xf5, " #r ", " #t " \n\
- pmaxub " #t ", " #r " \n\
- pshufw $0xfe, " #r ", " #t " \n\
- pmaxub " #t ", " #r " \n"
-
+ "movq " #r ", " #t " \n" \
+ "psrlq $8, " #t " \n" \
+ "pmaxub " #t ", " #r " \n" \
+ "pshufw $0xf5, " #r ", " #t " \n" \
+ "pmaxub " #t ", " #r " \n" \
+ "pshufw $0xfe, " #r ", " #t " \n" \
+ "pmaxub " #t ", " #r " \n"
+
#define MMXEXT_GET_LMINMAX( s, m, M, t ) \
- "movq " #s ", " #t " \n\
- pminub " #t ", " #m " \n\
- pmaxub " #t ", " #M " \n"
+ "movq " #s ", " #t " \n" \
+ "pminub " #t ", " #m " \n" \
+ "pmaxub " #t ", " #M " \n"
/* Some tips for MMX
-
+
* |a-b| :
d1 = a - b with unsigned saturate
- d2 = b - a with ...
- |a-b| = d1 | d2
+ d2 = b - a with ...
+ |a-b| = d1 | d2
*/
* so need to be fast ...
*
****************************************************************************/
-static inline int pp_deblock_isDC_mode( u8 *p_v )
+static inline int pp_deblock_isDC_mode( uint8_t *p_v )
{
unsigned int i_eq_cnt;
/* algo :
- x = v[i] - v[i+1] without signed saturation
- ( XXX see if there is'nt problem, but can't be with signed
- sat because pixel will be saturate :(
+ x = v[i] - v[i+1] without signed saturation
+ ( XXX see if there is'nt problem, but can't be with signed
+ sat because pixel will be saturate :(
so x within [-128, 127] and we have to test if it fit in [-M, M]
we add 127-M with wrap around -> good value fit in [ 127-2*M, 127]
and if x >= 127 - 2 * M ie x > 127 -2*M - 1 value is good
*/
- __asm__ __volatile__ (" \n\
- #* Do (v0-v1) to (v7-v8) \n\
- movq (%1), %%mm1 # load v0->v7 \n\
- movq 1(%1), %%mm2 # load v1->v8 \n\
- psubb %%mm2, %%mm1 # v[i]-v[i+1] \n\
- paddb mmx_127_thr1, %%mm1 # + 127-THR1 with wrap \n\
- pcmpgtb mmx_127_2xthr1_1, %%mm1 # > 127 -2*thr1 - 1 \n"
- "movq %%mm1, %%mm0 # \n\
- psrlw $8, %%mm1 # \n\
- paddb %%mm1, %%mm0 # \n\
- # \n\
- movq %%mm0, %%mm1 # Now sum to create eq_cnt \n\
- psrld $16, %%mm0 # \n\
- paddb %%mm0, %%mm1 # \n\
- # \n\
- movq %%mm1, %%mm0 # \n\
- psrlq $32, %%mm1 # \n\
- paddb %%mm1, %%mm0 \n"
- "movd %%mm0, %0 # \n\
- negl %0 \n\
- andl $255, %0"
+ __asm__ __volatile__ (
+ " #* Do (v0-v1) to (v7-v8) \n"
+ "movq (%1), %%mm1 # load v0->v7 \n"
+ "movq 1(%1), %%mm2 # load v1->v8 \n"
+ "psubb %%mm2, %%mm1 # v[i]-v[i+1] \n"
+ "paddb mmx_127_thr1, %%mm1 # + 127-THR1 with wrap \n"
+ "pcmpgtb mmx_127_2xthr1_1, %%mm1 # > 127 -2*thr1 - 1 \n"
+ "movq %%mm1, %%mm0 # \n"
+ "psrlw $8, %%mm1 # \n"
+ "paddb %%mm1, %%mm0 # \n"
+ " # \n"
+ "movq %%mm0, %%mm1 # Now sum to create eq_cnt \n"
+ "psrld $16, %%mm0 # \n"
+ "paddb %%mm0, %%mm1 # \n"
+ " # \n"
+ "movq %%mm1, %%mm0 # \n"
+ "psrlq $32, %%mm1 # \n"
+ "paddb %%mm1, %%mm0 \n"
+ "movd %%mm0, %0 # \n"
+ "negl %0 \n"
+ "andl $255, %0"
: "=r"(i_eq_cnt) : "r" (p_v) );
/* last test, hey, 9 don't fit in MMX */
- if(( ( p_v[8] - p_v[9] + PP_THR1 )&0xffff )<= PP_2xTHR1 )
- {
+ if(( ( p_v[8] - p_v[9] + PP_THR1 )&0xffff )<= PP_2xTHR1 )
+ {
i_eq_cnt++;
}
for( i =0; i < 9; i++ )
{
- if(( ( p_v[i] - p_v[i+1] + PP_THR1 )&0xffff )<= PP_2xTHR1 )
- {
+ if(( ( p_v[i] - p_v[i+1] + PP_THR1 )&0xffff )<= PP_2xTHR1 )
+ {
i_eq_cnt++;
}
}
return( (i_eq_cnt >= PP_THR2 ) ? 1 : 0 );
}
-static inline int pp_deblock_isMinMaxOk( u8 *p_v, int i_QP )
+static inline int pp_deblock_isMinMaxOk( uint8_t *p_v, int i_QP )
{
int i_range;
#if 0
- __asm__ __volatile__ (
+ __asm__ __volatile__ (
"movq 1(%1), %%mm0 # 8 bytes \n"
"movq %%mm0, %%mm1 \n"
MMXEXT_GET_PMIN( %%mm0, %%mm7 )
MMXEXT_GET_PMAX( %%mm1, %%mm7 )
- "psubd %%mm0, %%mm1 # max - min \n\
- movd %%mm1, %0 \n\
- andl $255, %0" : "=r"(i_range) : "r"(p_v) );
+ "psubd %%mm0, %%mm1 # max - min \n"
+ "movd %%mm1, %0 \n"
+ "andl $255, %0" : "=r"(i_range) : "r"(p_v) );
#endif
int i_max, i_min;
int i;
- i_min = i_max = p_v[1];
+ i_min = i_max = p_v[1];
for( i = 2; i < 9; i++ )
{
if( i_max < p_v[i] ) i_max = p_v[i];
}
-static inline void pp_deblock_DefaultMode( u8 i_v[10], int i_stride,
+static inline void pp_deblock_DefaultMode( uint8_t i_v[10], int i_stride,
int i_QP )
{
int d, i_delta;
/* d = CLIP( 5(a3x0' - a3x0)//8, 0, (v4-v5)/2 ).d( abs(a3x0) < QP ) */
/* First calculate a3x0 */
- __asm__ __volatile__ ( " \n\
- pxor %%mm7, %%mm7 # mm7 = 0 \n\
- movq mmx_m2_5_m5_2, %%mm6 # mm6 =(2,-5,5,-2) \n\
- movd 3(%1), %%mm0 \n\
- punpcklbw %%mm7,%%mm0 \n\
- pmaddwd %%mm6, %%mm0 \n"
- "movq %%mm0, %%mm1 \n\
- psrlq $32, %%mm1 \n"
- "paddd %%mm1, %%mm0 \n\
- movd %%mm0, %0" : "=r"(a3x0) :"r"(i_v) );
+ __asm__ __volatile__ (
+ "pxor %%mm7, %%mm7 # mm7 = 0 \n"
+ "movq mmx_m2_5_m5_2, %%mm6 # mm6 =(2,-5,5,-2) \n"
+ "movd 3(%1), %%mm0 \n"
+ "punpcklbw %%mm7,%%mm0 \n"
+ "pmaddwd %%mm6, %%mm0 \n"
+ "movq %%mm0, %%mm1 \n"
+ "psrlq $32, %%mm1 \n"
+ "paddd %%mm1, %%mm0 \n"
+ "movd %%mm0, %0" : "=r"(a3x0) :"r"(i_v) );
#if 0
a3x0 = 2 * ( i_v[3] - i_v[6] ) + 5 *( i_v[5] - i_v[4] );
#endif
{
b_neg = 1;
a3x0 = -a3x0;
- }
+ }
else
{
b_neg = 0;
if( ( a3x0 < 8 * i_QP )&&( a3x0 != 0 ) ) /* |a3x0| < 8*i_QP */
{
/* calculate a3x1 et a3x2 */
- __asm__ __volatile__ ( " \n\
- # mm7 = 0 \n\
- # mm6 = ( 2, -5, 5, -2 ) \n\
- movd 1(%2), %%mm0 \n\
- movd 5(%2), %%mm2 \n\
- punpcklbw %%mm7,%%mm0 \n\
- punpcklbw %%mm7,%%mm2 \n\
- pmaddwd %%mm6, %%mm0 \n\
- pmaddwd %%mm6, %%mm2 \n"
- "movq %%mm0, %%mm1 \n\
- psrlq $32, %%mm1 \n"
- "paddd %%mm1, %%mm0 # mm0 = a3x1 \n\
- movd %%mm0, %0 \n"
- "movq %%mm2, %%mm1 \n\
- psrlq $32, %%mm1 \n"
- "paddd %%mm1, %%mm2 # mm2 = a3x2 \n\
- movd %%mm2, %1 \n\
- " : "=r"(a3x1), "=r"(a3x2) : "r"(i_v) );
+ __asm__ __volatile__ (
+ " # mm7 = 0 \n"
+ " # mm6 = ( 2, -5, 5, -2 ) \n"
+ "movd 1(%2), %%mm0 \n"
+ "movd 5(%2), %%mm2 \n"
+ "punpcklbw %%mm7,%%mm0 \n"
+ "punpcklbw %%mm7,%%mm2 \n"
+ "pmaddwd %%mm6, %%mm0 \n"
+ "pmaddwd %%mm6, %%mm2 \n"
+ "movq %%mm0, %%mm1 \n"
+ "psrlq $32, %%mm1 \n"
+ "paddd %%mm1, %%mm0 # mm0 = a3x1 \n"
+ "movd %%mm0, %0 \n"
+ "movq %%mm2, %%mm1 \n"
+ "psrlq $32, %%mm1 \n"
+ "paddd %%mm1, %%mm2 # mm2 = a3x2 \n"
+ "movd %%mm2, %1 \n"
+ : "=r"(a3x1), "=r"(a3x2) : "r"(i_v) );
#if 0
a3x1 = 2 * ( i_v[1] - i_v[4] ) + 5 * ( i_v[3] - i_v[2] );
a3x2 = 2 * ( i_v[5] - i_v[8] ) + 5 * ( i_v[7] - i_v[6] );
if( a3x2 < 0) a3x2 = -a3x2; /* abs( a3x2 ) */
a3x0_ = PP_MIN3( a3x0, a3x1, a3x2 );
-
+
d = 5 *( a3x0 - a3x0_ ) / 8; /* always > 0 */
i_delta = ( i_v[4] - i_v[5] ) / 2;
-static inline void pp_deblock_DCMode( u8 *p_v, /* = int i_v[10] */
+static inline void pp_deblock_DCMode( uint8_t *p_v, /* = int i_v[10] */
int i_QP )
{
int i_p0, i_p9;
i_p9 = PP_ABS( p_v[8] - p_v[9] ) < i_QP ? p_v[9] : p_v[8];
/* mm0 = 8 pix unmodified
- -We will process first 4 pixel
+ -We will process first 4 pixel
mm0 = 8 pix unmodified
mm1 = for the first part of the 4 first pix
(v1) -> (p0) -> ... ( word )
(v2) (v1)
(v3) (v2)
(v4) (v3)
-
+
= for the commoin part between first and last pix
(v2) -> (v3) -> ... ( word )
(v3) (v4)
(v4) (v5)
(v5) (v6)
-
+
= for the last part of the 4 last pix
(v5) -> (v6) -> ... ( word )
(v6) (v7)
(v8) (p9)
mm2 = acu for first new pix
- mm3 = acu for last pix
+ mm3 = acu for last pix
mm4 = unused
- mm5 = p0
+ mm5 = p0
mm6 = p9 << 48
mm7 = 0 */
__asm__ __volatile__ (
- "pxor %%mm7, %%mm7 \n\
- movq 1(%0), %%mm0 # get 8 pix \n\
- # unpack into mm1 \n\
- movq %%mm0, %%mm1 \n\
- punpcklbw %%mm7, %%mm1 \n\
- # get p_0 and i_p9 \n\
- movd %1, %%mm5 \n\
- movd %2, %%mm6 \n\
- psllq $48, %%mm6 \n
- \n\
- movq %%mm1, %%mm3 # p_v[5-8] = v[1-4] !! \n\
- movq %%mm1, %%mm2 \n\
- psllw $2, %%mm2 # p_v[1-4] = 4*v[1-4] \n\
- \n\
- psllq $16, %%mm1 \n\
- por %%mm5, %%mm1 # mm1 =( p0, v1, v2 ,v3)\n\
- \n\
- paddw %%mm1, %%mm2 \n\
- paddw %%mm1, %%mm2 \n\
- \n\
- psllq $16, %%mm1 \n\
- por %%mm5, %%mm1 # mm1 =( p0, p0, v1, v2)\n\
- \n\
- paddw %%mm1, %%mm2 \n\
- paddw %%mm1, %%mm2 \n\
- \n\
- psllq $16, %%mm1 \n\
- por %%mm5, %%mm1 # mm1 =( p0, p0, p0, v1)\n\
- \n\
- paddw %%mm1, %%mm2 \n\
- \n\
- psllq $16, %%mm1 \n\
- por %%mm5, %%mm1 # mm1 =( p0, p0, p0, p0)\n\
- \n\
- paddw %%mm1, %%mm2 \n\
- # Now last part a little borring\n\
- # last part for mm2, beginig for mm3
- movq %%mm0, %%mm1 \n\
- psrlq $8, %%mm1 \n\
- punpcklbw %%mm7, %%mm1 # mm1 =( v2, v3, v4, v5 )\n\
- paddw %%mm1, %%mm2 \n\
- paddw %%mm1, %%mm2 \n\
- paddw %%mm1, %%mm3 \n\
-
- \n\
- movq %%mm0, %%mm1 \n\
- psrlq $16, %%mm1 \n\
- punpcklbw %%mm7, %%mm1 # mm1 =( v3, v4, v5, v6 )\n\
- psllw $1, %%mm1 \n\
- paddw %%mm1, %%mm2 \n\
- paddw %%mm1, %%mm3 \n\
- \n\
- movq %%mm0, %%mm1 \n\
- psrlq $24, %%mm1 \n\
- punpcklbw %%mm7, %%mm1 # mm1 =( v4, v5, v6, v7) \n\
- paddw %%mm1, %%mm2 \n\
- paddw %%mm1, %%mm3 \n\
- paddw %%mm1, %%mm3 \n\
- \n\
- movq %%mm0, %%mm1 \n\
- psrlq $32, %%mm1 \n\
- punpcklbw %%mm7, %%mm1 # mm1 =( v5, v6, v7, v8) \n\
- paddw %%mm1, %%mm2 \n\
- psllw $2, %%mm1
- paddw %%mm1, %%mm3 \n\
- # Now last part for last 4 pix \n\
- # \n\
- movq %%mm0, %%mm1 \n\
- punpckhbw %%mm7, %%mm1 # mm1 = ( v5, v6, v7, v8) \n\
- \n\
- psrlq $16, %%mm1 \n\
- por %%mm6, %%mm1 # mm1 =( v6, v7, v8, p9 )\n\
- \n\
- paddw %%mm1, %%mm3 \n\
- paddw %%mm1, %%mm3 \n\
- \n\
- psrlq $16, %%mm1 \n\
- por %%mm6, %%mm1 # mm1 =( v7, v8, p9, p9)\n\
- \n\
- paddw %%mm1, %%mm3 \n\
- paddw %%mm1, %%mm3 \n\
- \n\
- psrlq $16, %%mm1 \n\
- por %%mm6, %%mm1 # mm1 =( v8, p9, p9, p9 )\n\
- \n\
- paddw %%mm1, %%mm3 \n\
- \n\
- psrlq $16, %%mm1 \n\
- por %%mm6, %%mm1 # mm1 =( p9, p9, p9, p9 )\n\
- \n\
- paddw %%mm1, %%mm3 \n\
-
- psrlw $4, %%mm2 \n\
- psrlw $4, %%mm3 \n\
- packuswb %%mm3, %%mm2 \n\
- movq %%mm2, 1(%0) \n\
-
- ": : "r"(p_v), "r"(i_p0), "r"(i_p9) : "memory" );
+ "pxor %%mm7, %%mm7 \n"
+ "movq 1(%0), %%mm0 # get 8 pix \n"
+ " # unpack into mm1 \n"
+ "movq %%mm0, %%mm1 \n"
+ "punpcklbw %%mm7, %%mm1 \n"
+ " # get p_0 and i_p9 \n"
+ "movd %1, %%mm5 \n"
+ "movd %2, %%mm6 \n"
+ "psllq $48, %%mm6 \n"
+ " \n"
+ "movq %%mm1, %%mm3 # p_v[5-8] = v[1-4] !! \n"
+ "movq %%mm1, %%mm2 \n"
+ "psllw $2, %%mm2 # p_v[1-4] = 4*v[1-4] \n"
+ " \n"
+ "psllq $16, %%mm1 \n"
+ "por %%mm5, %%mm1 # mm1 =( p0, v1, v2 ,v3)\n"
+ " \n"
+ "paddw %%mm1, %%mm2 \n"
+ "paddw %%mm1, %%mm2 \n"
+ " \n"
+ "psllq $16, %%mm1 \n"
+ "por %%mm5, %%mm1 # mm1 =( p0, p0, v1, v2)\n"
+ " \n"
+ "paddw %%mm1, %%mm2 \n"
+ "paddw %%mm1, %%mm2 \n"
+ " \n"
+ "psllq $16, %%mm1 \n"
+ "por %%mm5, %%mm1 # mm1 =( p0, p0, p0, v1)\n"
+ " \n"
+ "paddw %%mm1, %%mm2 \n"
+ " \n"
+ "psllq $16, %%mm1 \n"
+ "por %%mm5, %%mm1 # mm1 =( p0, p0, p0, p0)\n"
+ " \n"
+ "paddw %%mm1, %%mm2 \n"
+ " # Now last part a little borring\n"
+ " # last part for mm2, beginig for mm3\n"
+ "movq %%mm0, %%mm1 \n"
+ "psrlq $8, %%mm1 \n"
+ "punpcklbw %%mm7, %%mm1 # mm1 =( v2, v3, v4, v5 )\n"
+ "paddw %%mm1, %%mm2 \n"
+ "paddw %%mm1, %%mm2 \n"
+ "paddw %%mm1, %%mm3 \n"
+
+ " \n"
+ "movq %%mm0, %%mm1 \n"
+ "psrlq $16, %%mm1 \n"
+ "punpcklbw %%mm7, %%mm1 # mm1 =( v3, v4, v5, v6 )\n"
+ "psllw $1, %%mm1 \n"
+ "paddw %%mm1, %%mm2 \n"
+ "paddw %%mm1, %%mm3 \n"
+ " \n"
+ "movq %%mm0, %%mm1 \n"
+ "psrlq $24, %%mm1 \n"
+ "punpcklbw %%mm7, %%mm1 # mm1 =( v4, v5, v6, v7) \n"
+ "paddw %%mm1, %%mm2 \n"
+ "paddw %%mm1, %%mm3 \n"
+ "paddw %%mm1, %%mm3 \n"
+ " \n"
+ "movq %%mm0, %%mm1 \n"
+ "psrlq $32, %%mm1 \n"
+ "punpcklbw %%mm7, %%mm1 # mm1 =( v5, v6, v7, v8) \n"
+ "paddw %%mm1, %%mm2 \n"
+ "psllw $2, %%mm1 \n"
+ "paddw %%mm1, %%mm3 \n"
+ " # Now last part for last 4 pix \n"
+ " # \n"
+ "movq %%mm0, %%mm1 \n"
+ "punpckhbw %%mm7, %%mm1 # mm1 = ( v5, v6, v7, v8) \n"
+ " \n"
+ "psrlq $16, %%mm1 \n"
+ "por %%mm6, %%mm1 # mm1 =( v6, v7, v8, p9 )\n"
+ " \n"
+ "paddw %%mm1, %%mm3 \n"
+ "paddw %%mm1, %%mm3 \n"
+ " \n"
+ "psrlq $16, %%mm1 \n"
+ "por %%mm6, %%mm1 # mm1 =( v7, v8, p9, p9)\n"
+ " \n"
+ "paddw %%mm1, %%mm3 \n"
+ "paddw %%mm1, %%mm3 \n"
+ " \n"
+ "psrlq $16, %%mm1 \n"
+ "por %%mm6, %%mm1 # mm1 =( v8, p9, p9, p9 )\n"
+ " \n"
+ "paddw %%mm1, %%mm3 \n"
+ " \n"
+ "psrlq $16, %%mm1 \n"
+ "por %%mm6, %%mm1 # mm1 =( p9, p9, p9, p9 )\n"
+ " \n"
+ "paddw %%mm1, %%mm3 \n"
+
+ "psrlw $4, %%mm2 \n"
+ "psrlw $4, %%mm3 \n"
+ "packuswb %%mm3, %%mm2 \n"
+ "movq %%mm2, 1(%0) \n"
+
+ : : "r"(p_v), "r"(i_p0), "r"(i_p9) : "memory" );
#if 0
for( i = 1; i < 9; i++ )
v[i] = p_v[i]; /* save 8 pix that will be modified */
}
- p_v[1] = ( 6 * i_p0 + 4 * v[1]
+ p_v[1] = ( 6 * i_p0 + 4 * v[1]
+ 2 *( v[2] + v[3]) + v[4] + v[5]) >> 4;
-
- p_v[2] = ( 4 * i_p0 + 2 * v[1] + 4 * v[2]
+
+ p_v[2] = ( 4 * i_p0 + 2 * v[1] + 4 * v[2]
+ 2 *( v[3] + v[4]) + v[5] + v[6]) >> 4;
- p_v[3] = ( 2 * i_p0 + 2 * (v[1] + v[2]) + 4 * v[3]
+ p_v[3] = ( 2 * i_p0 + 2 * (v[1] + v[2]) + 4 * v[3]
+ 2 *( v[4] + v[5]) + v[6] + v[7]) >> 4;
- p_v[4] = ( i_p0 + v[1] + 2 * (v[2] + v[3]) + 4 * v[4]
+ p_v[4] = ( i_p0 + v[1] + 2 * (v[2] + v[3]) + 4 * v[4]
+ 2 *( v[5] + v[6]) + v[7] + v[8]) >> 4;
- p_v[5] = ( v[1] + v[2] + 2 * (v[3] + v[4]) + 4 * v[5]
+ p_v[5] = ( v[1] + v[2] + 2 * (v[3] + v[4]) + 4 * v[5]
+ 2 *( v[6] + v[7]) + v[8] + i_p9) >> 4;
- p_v[6] = ( v[2] + v[3] + 2 * (v[4] + v[5]) + 4 * v[6]
+ p_v[6] = ( v[2] + v[3] + 2 * (v[4] + v[5]) + 4 * v[6]
+ 2 *( v[7] + v[8]) + 2 * i_p9) >> 4;
- p_v[7] = ( v[3] + v[4] + 2 * (v[5] + v[6]) + 4 * v[7]
+ p_v[7] = ( v[3] + v[4] + 2 * (v[5] + v[6]) + 4 * v[7]
+ 2 * v[8] + 4 * i_p9) >> 4;
- p_v[8] = ( v[4] + v[5] + 2 * (v[6] + v[7]) + 4 * v[8]
+ p_v[8] = ( v[4] + v[5] + 2 * (v[6] + v[7]) + 4 * v[8]
+ 6 * i_p9) >> 4;
#endif
/*---------------------------------------------------------------------------*/
/*****************************************************************************/
-void E_( pp_deblock_V )( u8 *p_plane,
+void E_( pp_deblock_V )( uint8_t *p_plane,
int i_width, int i_height, int i_stride,
QT_STORE_T *p_QP_store, int i_QP_stride,
int b_chroma )
{
int x, y, i;
- u8 *p_v;
+ uint8_t *p_v;
int i_QP_scale; /* use to do ( ? >> i_QP_scale ) */
int i_QP;
-
- u8 i_v[10];
-
+
+ uint8_t i_v[10];
+
i_QP_scale = b_chroma ? 5 : 4 ;
- for( y = 8; y < i_height - 4; y += 8 )
+ for( y = 8; y < i_height - 4; y += 8 )
{
p_v = p_plane + ( y - 5 )* i_stride;
for( x = 0; x < i_width; x++ )
/*---------------------------------------------------------------------------*/
/*****************************************************************************/
-void E_( pp_deblock_H )( u8 *p_plane,
+void E_( pp_deblock_H )( uint8_t *p_plane,
int i_width, int i_height, int i_stride,
QT_STORE_T *p_QP_store, int i_QP_stride,
int b_chroma )
{
int x, y;
- u8 *p_v;
+ uint8_t *p_v;
int i_QP_scale;
int i_QP;
-
+
i_QP_scale = b_chroma ? 5 : 4 ;
- for( y = 0; y < i_height; y++ )
+ for( y = 0; y < i_height; y++ )
{
p_v = p_plane + y * i_stride - 5;
- for( x = 8; x < i_width - 4; x += 8 )
+ for( x = 8; x < i_width - 4; x += 8 )
{
/* p_v point 5 pix before a block boundary */
/* XXX QP is for v5 */
}
}
}
-
+
return;
}
*
*****************************************************************************/
-static inline void pp_dering_MinMax( u8 *p_block, int i_stride,
+static inline void pp_dering_MinMax( uint8_t *p_block, int i_stride,
int *pi_min, int *pi_max )
{
int x, y;
#if 0
- /* First we will extract min/max for each pix on vertical line
+ /* First we will extract min/max for each pix on vertical line
and next extract global min/max */
- __asm__ __volatile__(
+ __asm__ __volatile__(
- "leal (%2,%3), %%eax \n\
- movq (%2), %%mm0 #load line \n\
- movq %%mm0, %%mm1 \n"
+ "leal (%2,%3), %%eax \n"
+ "movq (%2), %%mm0 #load line \n"
+ "movq %%mm0, %%mm1 \n"
MMXEXT_GET_LMINMAX( (%%eax), %%mm0, %%mm1, %%mm7 )
MMXEXT_GET_LMINMAX( (%%eax, %3), %%mm0, %%mm1, %%mm7 )
MMXEXT_GET_LMINMAX( (%%eax), %%mm0, %%mm1, %%mm7 )
MMXEXT_GET_LMINMAX( (%%eax, %3), %%mm0, %%mm1, %%mm7 )
MMXEXT_GET_LMINMAX( (%%eax, %3,2), %%mm0, %%mm1, %%mm7 )
- MMXEXT_GET_PMIN( %%mm0, %%mm7 )
+ MMXEXT_GET_PMIN( %%mm0, %%mm7 )
MMXEXT_GET_PMAX( %%mm1, %%mm7 )
- "movd %%mm0, %%eax \n\
- andl $255, %%eax \n\
- movl %%eax, (%0) \n\
- movd %%mm1, %%eax \n\
- andl $255, %%eax \n\
- movl %%eax, (%1) \n"
+ "movd %%mm0, %%eax \n"
+ "andl $255, %%eax \n"
+ "movl %%eax, (%0) \n"
+ "movd %%mm1, %%eax \n"
+ "andl $255, %%eax \n"
+ "movl %%eax, (%1) \n"
: : "r"(pi_min), "r"(pi_max), "r"(p_block), "r"(i_stride) : "%eax", "memory" );
#endif
-
+
i_min = 255; i_max = 0;
-
+
for( y = 0; y < 8; y++ )
{
for( x = 0; x < 8; x++ )
}
p_block += i_stride;
}
-
+
*pi_min = i_min;
*pi_max = i_max;
}
-static inline void pp_dering_BinIndex( u8 *p_block, int i_stride, int i_thr,
- u32 *p_bin )
+static inline void pp_dering_BinIndex( uint8_t *p_block, int i_stride,
+ int i_thr, uint32_t *p_bin )
{
int x, y;
- u32 i_bin;
+ uint32_t i_bin;
for( y = 0; y < 10; y++ )
{
}
}
-static inline void pp_dering_Filter( u8 *p_block, int i_stride,
- u32 *p_bin,
+static inline void pp_dering_Filter( uint8_t *p_block, int i_stride,
+ uint32_t *p_bin,
int i_QP )
{
int x, y;
- u32 i_bin;
+ uint32_t i_bin;
int i_flt[8][8];
int i_f;
- u8 *p_sav;
+ uint8_t *p_sav;
int i_QP_2;
-
+
p_sav = p_block;
i_QP_2 = i_QP >> 1;
-
+
for( y = 0; y < 8; y++ )
{
i_bin = p_bin[y] & p_bin[y+1] & p_bin[y+2]; /* To be optimised */
i_bin |= i_bin >> 16; /* detect 0 or 1 */
for( x = 0; x < 8; x++ )
- {
+ {
if( i_bin&0x02 ) /* 0x02 since 10 index but want 1-9 */
{
/* apply dering */
i_f = p_block[x - i_stride - 1] +
( p_block[x - i_stride ] << 1)+
p_block[x - i_stride + 1] +
-
+
( p_block[x - 1] << 1 )+
( p_block[x ] << 2 )+
( p_block[x + 1] << 1 )+
-
+
p_block[x + i_stride - 1] +
( p_block[x + i_stride ] << 1 ) +
p_block[x + i_stride + 1];
}
else
{
- i_flt[y][x] = i_f ;
+ i_flt[y][x] = i_f ;
}
}
else
i_flt[y][x] = p_block[x];
}
i_bin >>= 1;
-
+
}
p_block += i_stride;
}
/*---------------------------------------------------------------------------*/
/*****************************************************************************/
-void E_( pp_dering_Y )( u8 *p_plane,
+void E_( pp_dering_Y )( uint8_t *p_plane,
int i_width, int i_height, int i_stride,
QT_STORE_T *p_QP_store, int i_QP_stride )
{
int i_max[4], i_min[4], i_range[4];
int i_thr[4];
int i_max_range, i_kmax;
- u32 i_bin[4][10];
- u8 *p_block[4];
+ uint32_t i_bin[4][10];
+ uint8_t *p_block[4];
QT_STORE_T *p_QP;
-
+
/* We process 4 blocks/loop*/
for( y = 8; y < i_height-8; y += 16 )
{
i_thr[2], i_bin[2] );
pp_dering_BinIndex( p_block[3] - i_stride - 1, i_stride,
i_thr[3], i_bin[3] );
-
-
+
+
/* 3: adaptive smoothing */
/* since we begin at (8,8) QP can be different for each block */
p_QP = &( p_QP_store[( y >> 4) * i_QP_stride + (x >> 4)] );
pp_dering_Filter( p_block[3], i_stride,
i_bin[3], p_QP[i_QP_stride+1] );
-
+
p_block[0] += 8;
p_block[1] += 8;
p_block[2] += 8;
p_block[3] += 8;
}
}
-
+
}
-void E_( pp_dering_C )( u8 *p_plane,
+void E_( pp_dering_C )( uint8_t *p_plane,
int i_width, int i_height, int i_stride,
QT_STORE_T *p_QP_store, int i_QP_stride )
{
int x, y;
int i_max, i_min;
int i_thr;
- u32 i_bin[10];
-
- u8 *p_block;
-
+ uint32_t i_bin[10];
+
+ uint8_t *p_block;
+
for( y = 8; y < i_height-8; y += 8 )
{
pp_dering_BinIndex( p_block - i_stride -1, i_stride,
i_thr,
i_bin );
-
+
/* 3: adaptive smoothing */
pp_dering_Filter( p_block, i_stride,
- i_bin,
+ i_bin,
p_QP_store[(y>>5)*i_QP_stride+ (x>>5)]);
p_block += 8;
}
}
-
+
}
* postprocessing_mmxext.c: Post Processing plugin MMXEXT
*****************************************************************************
* Copyright (C) 2001 VideoLAN
- * $Id: postprocessing_mmxext.c,v 1.4 2002/12/06 16:34:05 sam Exp $
+ * $Id: postprocessing_mmxext.c,v 1.5 2002/12/18 14:17:10 sam Exp $
*
* Authors: Laurent Aimar <fenrir@via.ecp.fr>
- *
+ *
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation; either version 2 of the License, or
* (at your option) any later version.
- *
+ *
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111, USA.
*****************************************************************************/
-#include <vlc/vlc.h> /* only use u8, u32 .... */
+#include <vlc/vlc.h> /* only use uint8_t, uint32_t .... */
#include "postprocessing.h"
#include "postprocessing_common.h"
/* Use same things as in idct but how it work ? */
#define UNUSED_LONGLONG( foo ) \
static const unsigned long long foo __asm__ (#foo) __attribute__((unused))
-
-/* to calculate isDC_mode for mmx */
+
+/* to calculate isDC_mode for mmx */
UNUSED_LONGLONG( mmx_thr1 ) = ( PP_THR1 << 56 )|
( PP_THR1 << 48 )|
( PP_THR1 << 40 )|
/* find min bytes from r ans set it in r, t is destroyed */
#define MMXEXT_GET_PMIN( r, t ) \
- "movq " #r ", " #t " \n\
- psrlq $8, " #t " \n\
- pminub " #t ", " #r " \n\
- pshufw $0xf5, " #r ", " #t " #instead of shift with tmp reg \n\
- pminub " #t ", " #r " \n\
- pshufw $0xfe, " #r ", " #t " \n\
- pminub " #t ", " #r " \n"
-
+ "movq " #r ", " #t " \n" \
+ "psrlq $8, " #t " \n" \
+ "pminub " #t ", " #r " \n" \
+ "pshufw $0xf5, " #r ", " #t " #instead of shift with tmp reg \n" \
+ "pminub " #t ", " #r " \n" \
+ "pshufw $0xfe, " #r ", " #t " \n" \
+ "pminub " #t ", " #r " \n"
+
/* find mzx bytes from r ans set it in r, t is destroyed */
#define MMXEXT_GET_PMAX( r, t ) \
- "movq " #r ", " #t " \n\
- psrlq $8, " #t " \n\
- pmaxub " #t ", " #r " \n\
- pshufw $0xf5, " #r ", " #t " \n\
- pmaxub " #t ", " #r " \n\
- pshufw $0xfe, " #r ", " #t " \n\
- pmaxub " #t ", " #r " \n"
-
+ "movq " #r ", " #t " \n" \
+ "psrlq $8, " #t " \n" \
+ "pmaxub " #t ", " #r " \n" \
+ "pshufw $0xf5, " #r ", " #t " \n" \
+ "pmaxub " #t ", " #r " \n" \
+ "pshufw $0xfe, " #r ", " #t " \n" \
+ "pmaxub " #t ", " #r " \n"
+
#define MMXEXT_GET_LMINMAX( s, m, M, t ) \
- "movq " #s ", " #t " \n\
- pminub " #t ", " #m " \n\
- pmaxub " #t ", " #M " \n"
-
+ "movq " #s ", " #t " \n" \
+ "pminub " #t ", " #m " \n" \
+ "pmaxub " #t ", " #M " \n"
+
/* Some tips for MMX
-
+
* |a-b| :
d1 = a - b with unsigned saturate
- d2 = b - a with ...
- |a-b| = d1 | d2
+ d2 = b - a with ...
+ |a-b| = d1 | d2
*/
* so need to be fast ...
*
****************************************************************************/
-static inline int pp_deblock_isDC_mode( u8 *p_v )
+static inline int pp_deblock_isDC_mode( uint8_t *p_v )
{
unsigned int i_eq_cnt;
/* algo :
- x = v[i] - v[i+1] without signed saturation
- ( XXX see if there is'nt problem, but can't be with signed
- sat because pixel will be saturate :(
+ x = v[i] - v[i+1] without signed saturation
+ ( XXX see if there is'nt problem, but can't be with signed
+ sat because pixel will be saturate :(
so x within [-128, 127] and we have to test if it fit in [-M, M]
we add 127-M with wrap around -> good value fit in [ 127-2*M, 127]
and if x >= 127 - 2 * M ie x > 127 -2*M - 1 value is good
*/
#if 0
- __asm__ __volatile__ (" \n\
- #* Do (v0-v1) to (v7-v8) \n\
- movq (%1), %%mm1 # load v0->v7 \n\
- movq 1(%1), %%mm2 # load v1->v8 \n\
- psubb %%mm2, %%mm1 # v[i]-v[i+1] \n\
- paddb mmx_127_thr1, %%mm1 # + 127-THR1 with wrap \n\
- pcmpgtb mmx_127_2xthr1_1, %%mm1 # > 127 -2*thr1 - 1 \n\
- pxor %%mm0, %%mm0 # mm0 = 0 \n\
- psadbw %%mm1, %%mm0 \n\
- movd %%mm0, %0 # \n\
- negl %0 \n\
- andl $255, %0"
+ __asm__ __volatile__ (
+ " #* Do (v0-v1) to (v7-v8) \n"
+ "movq (%1), %%mm1 # load v0->v7 \n"
+ "movq 1(%1), %%mm2 # load v1->v8 \n"
+ "psubb %%mm2, %%mm1 # v[i]-v[i+1] \n"
+ "paddb mmx_127_thr1, %%mm1 # + 127-THR1 with wrap \n"
+ "pcmpgtb mmx_127_2xthr1_1, %%mm1 # > 127 -2*thr1 - 1 \n"
+ "pxor %%mm0, %%mm0 # mm0 = 0 \n"
+ "psadbw %%mm1, %%mm0 \n"
+ "movd %%mm0, %0 # \n"
+ "negl %0 \n"
+ "andl $255, %0"
: "=r"(i_eq_cnt) : "r" (p_v) );
#endif
- __asm__ __volatile__ (" \n\
- #* Do (v0-v1) to (v7-v8) \n\
- movq (%1), %%mm1 # load v0->v7 \n\
- pxor %%mm0, %%mm0 # mm0 = 0 \n\
- movq 1(%1), %%mm2 # load v1->v8 \n\
- psubb %%mm2, %%mm1 # v[i]-v[i+1] \n\
- paddb mmx_127_thr1, %%mm1 # + 127-THR1 with wrap \n\
- pcmpgtb mmx_127_2xthr1_1, %%mm1 # > 127 -2*thr1 - 1 \n\
- psadbw %%mm1, %%mm0 \n\
- movd %%mm0, %0 # \n\
- negl %0"
+ __asm__ __volatile__ (
+ " #* Do (v0-v1) to (v7-v8) \n"
+ "movq (%1), %%mm1 # load v0->v7 \n"
+ "pxor %%mm0, %%mm0 # mm0 = 0 \n"
+ "movq 1(%1), %%mm2 # load v1->v8 \n"
+ "psubb %%mm2, %%mm1 # v[i]-v[i+1] \n"
+ "paddb mmx_127_thr1, %%mm1 # + 127-THR1 with wrap \n"
+ "pcmpgtb mmx_127_2xthr1_1, %%mm1 # > 127 -2*thr1 - 1 \n"
+ "psadbw %%mm1, %%mm0 \n"
+ "movd %%mm0, %0 # \n"
+ "negl %0"
: "=r"(i_eq_cnt) : "r" (p_v) );
-
+
/* last test, hey, 9 don't fit in MMX */
- if(( ( p_v[8] - p_v[9] + PP_THR1 )&0xffff )<= PP_2xTHR1 )
- {
+ if(( ( p_v[8] - p_v[9] + PP_THR1 )&0xffff )<= PP_2xTHR1 )
+ {
i_eq_cnt++;
}
for( i =0; i < 9; i++ )
{
- if(( ( p_v[i] - p_v[i+1] + PP_THR1 )&0xffff )<= PP_2xTHR1 )
- {
+ if(( ( p_v[i] - p_v[i+1] + PP_THR1 )&0xffff )<= PP_2xTHR1 )
+ {
i_eq_cnt++;
}
}
return( (i_eq_cnt >= PP_THR2 ) ? 1 : 0 );
}
-static inline int pp_deblock_isMinMaxOk( u8 *p_v, int i_QP )
+static inline int pp_deblock_isMinMaxOk( uint8_t *p_v, int i_QP )
{
int i_range;
- __asm__ __volatile__ (
+ __asm__ __volatile__ (
"movq 1(%1), %%mm0 # 8 bytes \n"
"movq %%mm0, %%mm1 \n"
MMXEXT_GET_PMIN( %%mm0, %%mm7 )
MMXEXT_GET_PMAX( %%mm1, %%mm7 )
- "psubd %%mm0, %%mm1 # max - min \n\
- movd %%mm1, %0 \n\
- andl $255, %0" : "=r"(i_range) : "r"(p_v) );
+ "psubd %%mm0, %%mm1 # max - min \n"
+ "movd %%mm1, %0 \n"
+ "andl $255, %0" : "=r"(i_range) : "r"(p_v) );
#if 0
int i_max, i_min;
int i;
- i_min = i_max = p_v[1];
+ i_min = i_max = p_v[1];
for( i = 2; i < 9; i++ )
{
if( i_max < p_v[i] ) i_max = p_v[i];
}
-static inline void pp_deblock_DefaultMode( u8 i_v[10], int i_stride,
+static inline void pp_deblock_DefaultMode( uint8_t i_v[10], int i_stride,
int i_QP )
{
int d, i_delta;
/* d = CLIP( 5(a3x0' - a3x0)//8, 0, (v4-v5)/2 ).d( abs(a3x0) < QP ) */
/* First calculate a3x0 */
- __asm__ __volatile__ ( " \n\
- pxor %%mm7, %%mm7 # mm7 = 0 \n\
- movq mmx_m2_5_m5_2, %%mm6 # mm6 =(2,-5,5,-2) \n\
- movd 3(%1), %%mm0 \n\
- punpcklbw %%mm7,%%mm0 \n\
- pmaddwd %%mm6, %%mm0 \n"
+ __asm__ __volatile__ (
+ "pxor %%mm7, %%mm7 # mm7 = 0 \n"
+ "movq mmx_m2_5_m5_2, %%mm6 # mm6 =(2,-5,5,-2) \n"
+ "movd 3(%1), %%mm0 \n"
+ "punpcklbw %%mm7,%%mm0 \n"
+ "pmaddwd %%mm6, %%mm0 \n"
"pshufw $0xfe, %%mm0, %%mm1 \n"
- "paddd %%mm1, %%mm0 \n\
- movd %%mm0, %0" : "=r"(a3x0) :"r"(i_v) );
+ "paddd %%mm1, %%mm0 \n"
+ "movd %%mm0, %0" : "=r"(a3x0) :"r"(i_v) );
#if 0
a3x0 = 2 * ( i_v[3] - i_v[6] ) + 5 *( i_v[5] - i_v[4] );
#endif
{
b_neg = 1;
a3x0 = -a3x0;
- }
+ }
else
{
b_neg = 0;
if( ( a3x0 < 8 * i_QP )&&( a3x0 != 0 ) ) /* |a3x0| < 8*i_QP */
{
/* calculate a3x1 et a3x2 */
- __asm__ __volatile__ ( " \n\
- # mm7 = 0 \n\
- # mm6 = ( 2, -5, 5, -2 ) \n\
- movd 1(%2), %%mm0 \n\
- movd 5(%2), %%mm2 \n\
- punpcklbw %%mm7,%%mm0 \n\
- punpcklbw %%mm7,%%mm2 \n\
- pmaddwd %%mm6, %%mm0 \n\
- pmaddwd %%mm6, %%mm2 \n\
- pshufw $0xfe, %%mm0, %%mm1 \n\
- paddd %%mm1, %%mm0 # mm0 = a3x1 \n\
- movd %%mm0, %0 \n\
- pshufw $0xfe, %%mm2, %%mm1 \n\
- paddd %%mm1, %%mm2 # mm2 = a3x2 \n\
- movd %%mm2, %1 \n\
- " : "=r"(a3x1), "=r"(a3x2) : "r"(i_v) );
+ __asm__ __volatile__ (
+ " # mm7 = 0 \n"
+ " # mm6 = ( 2, -5, 5, -2 ) \n"
+ "movd 1(%2), %%mm0 \n"
+ "movd 5(%2), %%mm2 \n"
+ "punpcklbw %%mm7,%%mm0 \n"
+ "punpcklbw %%mm7,%%mm2 \n"
+ "pmaddwd %%mm6, %%mm0 \n"
+ "pmaddwd %%mm6, %%mm2 \n"
+ "pshufw $0xfe, %%mm0, %%mm1 \n"
+ "paddd %%mm1, %%mm0 # mm0 = a3x1 \n"
+ "movd %%mm0, %0 \n"
+ "pshufw $0xfe, %%mm2, %%mm1 \n"
+ "paddd %%mm1, %%mm2 # mm2 = a3x2 \n"
+ "movd %%mm2, %1 \n"
+ : "=r"(a3x1), "=r"(a3x2) : "r"(i_v) );
#if 0
a3x1 = 2 * ( i_v[1] - i_v[4] ) + 5 * ( i_v[3] - i_v[2] );
a3x2 = 2 * ( i_v[5] - i_v[8] ) + 5 * ( i_v[7] - i_v[6] );
if( a3x2 < 0) a3x2 = -a3x2; /* abs( a3x2 ) */
a3x0_ = PP_MIN3( a3x0, a3x1, a3x2 );
-
+
d = 5 *( a3x0 - a3x0_ ) / 8; /* always > 0 */
i_delta = ( i_v[4] - i_v[5] ) / 2;
-static inline void pp_deblock_DCMode( u8 *p_v, /* = int i_v[10] */
+static inline void pp_deblock_DCMode( uint8_t *p_v, /* = int i_v[10] */
int i_QP )
{
int i_p0, i_p9;
i_p9 = PP_ABS( p_v[8] - p_v[9] ) < i_QP ? p_v[9] : p_v[8];
/* mm0 = 8 pix unmodified
- -We will process first 4 pixel
+ -We will process first 4 pixel
mm0 = 8 pix unmodified
mm1 = for the first part of the 4 first pix
(v1) -> (p0) -> ... ( word )
(v2) (v1)
(v3) (v2)
(v4) (v3)
-
+
= for the commoin part between first and last pix
(v2) -> (v3) -> ... ( word )
(v3) (v4)
(v4) (v5)
(v5) (v6)
-
+
= for the last part of the 4 last pix
(v5) -> (v6) -> ... ( word )
(v6) (v7)
(v8) (p9)
mm2 = acu for first new pix
- mm3 = acu for last pix
+ mm3 = acu for last pix
mm4 = unused
- mm5 = p0
+ mm5 = p0
mm6 = p9 << 48
mm7 = 0 */
__asm__ __volatile__ (
- "pxor %%mm7, %%mm7 \n\
- movq 1(%0), %%mm0 # get 8 pix \n\
- # unpack into mm1 \n\
- movq %%mm0, %%mm1 \n\
- punpcklbw %%mm7, %%mm1 \n\
- # get p_0 and i_p9 \n\
- movd %1, %%mm5 \n\
- movd %2, %%mm6 \n\
- psllq $48, %%mm6 \n
- \n\
- movq %%mm1, %%mm3 # p_v[5-8] = v[1-4] !! \n\
- movq %%mm1, %%mm2 \n\
- psllw $2, %%mm2 # p_v[1-4] = 4*v[1-4] \n\
- \n\
- psllq $16, %%mm1 \n\
- por %%mm5, %%mm1 # mm1 =( p0, v1, v2 ,v3)\n\
- \n\
- paddw %%mm1, %%mm2 \n\
- paddw %%mm1, %%mm2 \n\
- \n\
- pshufw $0x90,%%mm1,%%mm1 # mm1 =( p0, p0, v1, v2)\n\
- paddw %%mm1, %%mm2 \n\
- paddw %%mm1, %%mm2 \n\
- \n\
- pshufw $0x90,%%mm1,%%mm1 # mm1 =( p0, p0, p0, v2)\n\
- paddw %%mm1, %%mm2 \n\
- \n\
- pshufw $0x90,%%mm1,%%mm1 # mm1 =( p0, p0, p0, p0)\n\
- paddw %%mm1, %%mm2 \n\
- # Now last part a little borring\n\
- # last part for mm2, beginig for mm3
- movq %%mm0, %%mm1 \n\
- psrlq $8, %%mm1 \n\
- punpcklbw %%mm7, %%mm1 # mm1 =( v2, v3, v4, v5 )\n\
- paddw %%mm1, %%mm2 \n\
- paddw %%mm1, %%mm2 \n\
- paddw %%mm1, %%mm3 \n\
-
- \n\
- movq %%mm0, %%mm1 \n\
- psrlq $16, %%mm1 \n\
- punpcklbw %%mm7, %%mm1 # mm1 =( v3, v4, v5, v6 )\n\
- psllw $1, %%mm1 \n\
- paddw %%mm1, %%mm2 \n\
- paddw %%mm1, %%mm3 \n\
- \n\
- movq %%mm0, %%mm1 \n\
- psrlq $24, %%mm1 \n\
- punpcklbw %%mm7, %%mm1 # mm1 =( v4, v5, v6, v7) \n\
- paddw %%mm1, %%mm2 \n\
- paddw %%mm1, %%mm3 \n\
- paddw %%mm1, %%mm3 \n\
- \n\
- movq %%mm0, %%mm1 \n\
- psrlq $32, %%mm1 \n\
- punpcklbw %%mm7, %%mm1 # mm1 =( v5, v6, v7, v8) \n\
- paddw %%mm1, %%mm2 \n\
- psllw $2, %%mm1
- paddw %%mm1, %%mm3 \n\
- # Now last part for last 4 pix \n\
- # \n\
- movq %%mm0, %%mm1 \n\
- punpckhbw %%mm7, %%mm1 # mm1 = ( v5, v6, v7, v8) \n\
- \n\
- psrlq $16, %%mm1 \n\
- por %%mm6, %%mm1 # mm1 =( v6, v7, v8, p9 )\n\
- \n\
- paddw %%mm1, %%mm3 \n\
- paddw %%mm1, %%mm3 \n\
- \n\
- pshufw $0xf9,%%mm1,%%mm1 # mm1 =( v7, v8, p9, p9)\n\
- paddw %%mm1, %%mm3 \n\
- paddw %%mm1, %%mm3 \n\
- \n\
- pshufw $0xf9,%%mm1,%%mm1 # mm1 =( v8, p9, p9, p9)\n\
- paddw %%mm1, %%mm3 \n\
- \n\
- pshufw $0xf9,%%mm1,%%mm1 # mm1 =( p9, p9, p9, p9)\n\
- paddw %%mm1, %%mm3 \n\
-
- psrlw $4, %%mm2 \n\
- psrlw $4, %%mm3 \n\
- packuswb %%mm3, %%mm2 \n\
- movq %%mm2, 1(%0) \n\
-
- ": : "r"(p_v), "r"(i_p0), "r"(i_p9) : "memory" );
+ "pxor %%mm7, %%mm7 \n"
+ "movq 1(%0), %%mm0 # get 8 pix \n"
+ " # unpack into mm1 \n"
+ "movq %%mm0, %%mm1 \n"
+ "punpcklbw %%mm7, %%mm1 \n"
+ " # get p_0 and i_p9 \n"
+ "movd %1, %%mm5 \n"
+ "movd %2, %%mm6 \n"
+ "psllq $48, %%mm6 \n"
+ " \n"
+ "movq %%mm1, %%mm3 # p_v[5-8] = v[1-4] !! \n"
+ "movq %%mm1, %%mm2 \n"
+ "psllw $2, %%mm2 # p_v[1-4] = 4*v[1-4] \n"
+ " \n"
+ "psllq $16, %%mm1 \n"
+ "por %%mm5, %%mm1 # mm1 =( p0, v1, v2 ,v3)\n"
+ " \n"
+ "paddw %%mm1, %%mm2 \n"
+ "paddw %%mm1, %%mm2 \n"
+ " \n"
+ "pshufw $0x90,%%mm1,%%mm1 # mm1 =( p0, p0, v1, v2)\n"
+ "paddw %%mm1, %%mm2 \n"
+ "paddw %%mm1, %%mm2 \n"
+ " \n"
+ "pshufw $0x90,%%mm1,%%mm1 # mm1 =( p0, p0, p0, v2)\n"
+ "paddw %%mm1, %%mm2 \n"
+ " \n"
+ "pshufw $0x90,%%mm1,%%mm1 # mm1 =( p0, p0, p0, p0)\n"
+ "paddw %%mm1, %%mm2 \n"
+ " # Now last part a little borring\n"
+ " # last part for mm2, beginig for mm3\n"
+ "movq %%mm0, %%mm1 \n"
+ "psrlq $8, %%mm1 \n"
+ "punpcklbw %%mm7, %%mm1 # mm1 =( v2, v3, v4, v5 )\n"
+ "paddw %%mm1, %%mm2 \n"
+ "paddw %%mm1, %%mm2 \n"
+ "paddw %%mm1, %%mm3 \n"
+
+ " \n"
+ "movq %%mm0, %%mm1 \n"
+ "psrlq $16, %%mm1 \n"
+ "punpcklbw %%mm7, %%mm1 # mm1 =( v3, v4, v5, v6 )\n"
+ "psllw $1, %%mm1 \n"
+ "paddw %%mm1, %%mm2 \n"
+ "paddw %%mm1, %%mm3 \n"
+ " \n"
+ "movq %%mm0, %%mm1 \n"
+ "psrlq $24, %%mm1 \n"
+ "punpcklbw %%mm7, %%mm1 # mm1 =( v4, v5, v6, v7) \n"
+ "paddw %%mm1, %%mm2 \n"
+ "paddw %%mm1, %%mm3 \n"
+ "paddw %%mm1, %%mm3 \n"
+ " \n"
+ "movq %%mm0, %%mm1 \n"
+ "psrlq $32, %%mm1 \n"
+ "punpcklbw %%mm7, %%mm1 # mm1 =( v5, v6, v7, v8) \n"
+ "paddw %%mm1, %%mm2 \n"
+ "psllw $2, %%mm1 \n"
+ "paddw %%mm1, %%mm3 \n"
+ " # Now last part for last 4 pix \n"
+ " # \n"
+ "movq %%mm0, %%mm1 \n"
+ "punpckhbw %%mm7, %%mm1 # mm1 = ( v5, v6, v7, v8) \n"
+ " \n"
+ "psrlq $16, %%mm1 \n"
+ "por %%mm6, %%mm1 # mm1 =( v6, v7, v8, p9 )\n"
+ " \n"
+ "paddw %%mm1, %%mm3 \n"
+ "paddw %%mm1, %%mm3 \n"
+ " \n"
+ "pshufw $0xf9,%%mm1,%%mm1 # mm1 =( v7, v8, p9, p9)\n"
+ "paddw %%mm1, %%mm3 \n"
+ "paddw %%mm1, %%mm3 \n"
+ " \n"
+ "pshufw $0xf9,%%mm1,%%mm1 # mm1 =( v8, p9, p9, p9)\n"
+ "paddw %%mm1, %%mm3 \n"
+ " \n"
+ "pshufw $0xf9,%%mm1,%%mm1 # mm1 =( p9, p9, p9, p9)\n"
+ "paddw %%mm1, %%mm3 \n"
+
+ "psrlw $4, %%mm2 \n"
+ "psrlw $4, %%mm3 \n"
+ "packuswb %%mm3, %%mm2 \n"
+ "movq %%mm2, 1(%0) \n"
+
+ : : "r"(p_v), "r"(i_p0), "r"(i_p9) : "memory" );
#if 0
for( i = 1; i < 9; i++ )
v[i] = p_v[i]; /* save 8 pix that will be modified */
}
- p_v[1] = ( 6 * i_p0 + 4 * v[1]
+ p_v[1] = ( 6 * i_p0 + 4 * v[1]
+ 2 *( v[2] + v[3]) + v[4] + v[5]) >> 4;
-
- p_v[2] = ( 4 * i_p0 + 2 * v[1] + 4 * v[2]
+
+ p_v[2] = ( 4 * i_p0 + 2 * v[1] + 4 * v[2]
+ 2 *( v[3] + v[4]) + v[5] + v[6]) >> 4;
- p_v[3] = ( 2 * i_p0 + 2 * (v[1] + v[2]) + 4 * v[3]
+ p_v[3] = ( 2 * i_p0 + 2 * (v[1] + v[2]) + 4 * v[3]
+ 2 *( v[4] + v[5]) + v[6] + v[7]) >> 4;
- p_v[4] = ( i_p0 + v[1] + 2 * (v[2] + v[3]) + 4 * v[4]
+ p_v[4] = ( i_p0 + v[1] + 2 * (v[2] + v[3]) + 4 * v[4]
+ 2 *( v[5] + v[6]) + v[7] + v[8]) >> 4;
- p_v[5] = ( v[1] + v[2] + 2 * (v[3] + v[4]) + 4 * v[5]
+ p_v[5] = ( v[1] + v[2] + 2 * (v[3] + v[4]) + 4 * v[5]
+ 2 *( v[6] + v[7]) + v[8] + i_p9) >> 4;
- p_v[6] = ( v[2] + v[3] + 2 * (v[4] + v[5]) + 4 * v[6]
+ p_v[6] = ( v[2] + v[3] + 2 * (v[4] + v[5]) + 4 * v[6]
+ 2 *( v[7] + v[8]) + 2 * i_p9) >> 4;
- p_v[7] = ( v[3] + v[4] + 2 * (v[5] + v[6]) + 4 * v[7]
+ p_v[7] = ( v[3] + v[4] + 2 * (v[5] + v[6]) + 4 * v[7]
+ 2 * v[8] + 4 * i_p9) >> 4;
- p_v[8] = ( v[4] + v[5] + 2 * (v[6] + v[7]) + 4 * v[8]
+ p_v[8] = ( v[4] + v[5] + 2 * (v[6] + v[7]) + 4 * v[8]
+ 6 * i_p9) >> 4;
#endif
/*---------------------------------------------------------------------------*/
/*****************************************************************************/
-void E_( pp_deblock_V )( u8 *p_plane,
+void E_( pp_deblock_V )( uint8_t *p_plane,
int i_width, int i_height, int i_stride,
QT_STORE_T *p_QP_store, int i_QP_stride,
int b_chroma )
{
int x, y, i;
- u8 *p_v;
+ uint8_t *p_v;
int i_QP_scale; /* use to do ( ? >> i_QP_scale ) */
int i_QP;
-
- u8 i_v[10];
-
+
+ uint8_t i_v[10];
+
i_QP_scale = b_chroma ? 5 : 4 ;
- for( y = 8; y < i_height - 4; y += 8 )
+ for( y = 8; y < i_height - 4; y += 8 )
{
p_v = p_plane + ( y - 5 )* i_stride;
for( x = 0; x < i_width; x++ )
/*---------------------------------------------------------------------------*/
/*****************************************************************************/
-void E_( pp_deblock_H )( u8 *p_plane,
+void E_( pp_deblock_H )( uint8_t *p_plane,
int i_width, int i_height, int i_stride,
QT_STORE_T *p_QP_store, int i_QP_stride,
int b_chroma )
{
int x, y;
- u8 *p_v;
+ uint8_t *p_v;
int i_QP_scale;
int i_QP;
-
+
i_QP_scale = b_chroma ? 5 : 4 ;
- for( y = 0; y < i_height; y++ )
+ for( y = 0; y < i_height; y++ )
{
p_v = p_plane + y * i_stride - 5;
- for( x = 8; x < i_width - 4; x += 8 )
+ for( x = 8; x < i_width - 4; x += 8 )
{
/* p_v point 5 pix before a block boundary */
/* XXX QP is for v5 */
}
}
}
-
+
return;
}
*
*****************************************************************************/
-static inline void pp_dering_MinMax( u8 *p_block, int i_stride,
+static inline void pp_dering_MinMax( uint8_t *p_block, int i_stride,
int *pi_min, int *pi_max )
{
- /* First we will extract min/max for each pix on vertical line
+ /* First we will extract min/max for each pix on vertical line
and next extract global min/max */
- __asm__ __volatile__(
+ __asm__ __volatile__(
- "leal (%2,%3), %%eax \n\
- movq (%2), %%mm0 #load line \n\
- movq %%mm0, %%mm1 \n"
+ "leal (%2,%3), %%eax \n"
+ "movq (%2), %%mm0 #load line \n"
+ "movq %%mm0, %%mm1 \n"
MMXEXT_GET_LMINMAX( (%%eax), %%mm0, %%mm1, %%mm7 )
MMXEXT_GET_LMINMAX( (%%eax, %3), %%mm0, %%mm1, %%mm7 )
MMXEXT_GET_LMINMAX( (%%eax), %%mm0, %%mm1, %%mm7 )
MMXEXT_GET_LMINMAX( (%%eax, %3), %%mm0, %%mm1, %%mm7 )
MMXEXT_GET_LMINMAX( (%%eax, %3,2), %%mm0, %%mm1, %%mm7 )
- MMXEXT_GET_PMIN( %%mm0, %%mm7 )
+ MMXEXT_GET_PMIN( %%mm0, %%mm7 )
MMXEXT_GET_PMAX( %%mm1, %%mm7 )
- "movd %%mm0, %%eax \n\
- andl $255, %%eax \n\
- movl %%eax, (%0) \n\
- movd %%mm1, %%eax \n\
- andl $255, %%eax \n\
- movl %%eax, (%1) \n"
+ "movd %%mm0, %%eax \n"
+ "andl $255, %%eax \n"
+ "movl %%eax, (%0) \n"
+ "movd %%mm1, %%eax \n"
+ "andl $255, %%eax \n"
+ "movl %%eax, (%1) \n"
: : "r"(pi_min), "r"(pi_max), "r"(p_block), "r"(i_stride) : "%eax", "memory" );
#if 0
-
+
i_min = 255; i_max = 0;
-
+
for( y = 0; y < 8; y++ )
{
for( x = 0; x < 8; x++ )
}
p_block += i_stride;
}
-
+
*pi_min = i_min;
*pi_max = i_max;
#endif
}
-static inline void pp_dering_BinIndex( u8 *p_block, int i_stride, int i_thr,
- u32 *p_bin )
+static inline void pp_dering_BinIndex( uint8_t *p_block, int i_stride,
+ int i_thr, uint32_t *p_bin )
{
int y;
- u32 i_bin;
+ uint32_t i_bin;
/* first create mm7 with all bytes set to thr and mm6 = 0 */
__asm__ __volatile__(
for( y = 0; y < 10; y++ )
{
- __asm__ __volatile__(
+ __asm__ __volatile__(
"movq (%1), %%mm0 \n"
"psubusb %%mm7, %%mm0 \n" /* sat makes that x <= thr --> 0 */
"pcmpeqb %%mm6, %%mm0 \n" /* p_block <= i_thr ? -1 : 0 */
}
-static inline void pp_dering_Filter( u8 *p_block, int i_stride,
- u32 *p_bin,
+static inline void pp_dering_Filter( uint8_t *p_block, int i_stride,
+ uint32_t *p_bin,
int i_QP )
{
int x, y;
- u32 i_bin;
- u8 i_flt[8][8];
+ uint32_t i_bin;
+ uint8_t i_flt[8][8];
int i_f;
- u8 *p_sav;
+ uint8_t *p_sav;
int i_QP_2;
-
+
p_sav = p_block;
i_QP_2 = i_QP >> 1;
-
+
for( y = 0; y < 8; y++ )
{
i_bin = p_bin[y] & p_bin[y+1] & p_bin[y+2]; /* To be optimised */
i_bin |= i_bin >> 16; /* detect 0 or 1 */
for( x = 0; x < 8; x++ )
- {
+ {
if( i_bin&0x02 ) /* 0x02 since 10 index but want 1-9 */
{
/* apply dering */
i_f = p_block[x - i_stride - 1] +
( p_block[x - i_stride ] << 1)+
p_block[x - i_stride + 1] +
-
+
( p_block[x - 1] << 1 )+
( p_block[x ] << 2 )+
( p_block[x + 1] << 1 )+
-
+
p_block[x + i_stride - 1] +
( p_block[x + i_stride ] << 1 ) +
p_block[x + i_stride + 1];
}
i_bin >>= 1;
-
+
}
p_block += i_stride;
}
for( y = 0; y < 8; y++ )
{
/* clamp those values and copy them */
- __asm__ __volatile__(
+ __asm__ __volatile__(
"movq (%0), %%mm0 \n" /* mm0 = i_ftl[y][0] ... i_ftl[y][7] */
"movq (%1), %%mm1 \n" /* mm1 = p_sav[0] ... p_sav[7] */
"movq %%mm1, %%mm2 \n"
/*---------------------------------------------------------------------------*/
/*****************************************************************************/
-void E_( pp_dering_Y )( u8 *p_plane,
+void E_( pp_dering_Y )( uint8_t *p_plane,
int i_width, int i_height, int i_stride,
QT_STORE_T *p_QP_store, int i_QP_stride )
{
int i_max[4], i_min[4], i_range[4];
int i_thr[4];
int i_max_range, i_kmax;
- u32 i_bin[4][10];
- u8 *p_block[4];
+ uint32_t i_bin[4][10];
+ uint8_t *p_block[4];
QT_STORE_T *p_QP;
-
+
/* We process 4 blocks/loop*/
for( y = 8; y < i_height-8; y += 16 )
{
i_thr[2], i_bin[2] );
pp_dering_BinIndex( p_block[3] - i_stride - 1, i_stride,
i_thr[3], i_bin[3] );
-
-
+
+
/* 3: adaptive smoothing */
/* since we begin at (8,8) QP can be different for each block */
p_QP = &( p_QP_store[( y >> 4) * i_QP_stride + (x >> 4)] );
pp_dering_Filter( p_block[3], i_stride,
i_bin[3], p_QP[i_QP_stride+1] );
-
+
p_block[0] += 8;
p_block[1] += 8;
p_block[2] += 8;
p_block[3] += 8;
}
}
-
}
-void E_( pp_dering_C )( u8 *p_plane,
+void E_( pp_dering_C )( uint8_t *p_plane,
int i_width, int i_height, int i_stride,
QT_STORE_T *p_QP_store, int i_QP_stride )
{
int x, y;
int i_max, i_min;
int i_thr;
- u32 i_bin[10];
-
- u8 *p_block;
-
+ uint32_t i_bin[10];
+
+ uint8_t *p_block;
for( y = 8; y < i_height-8; y += 8 )
{
pp_dering_BinIndex( p_block - i_stride -1, i_stride,
i_thr,
i_bin );
-
+
/* 3: adaptive smoothing */
pp_dering_Filter( p_block, i_stride,
- i_bin,
+ i_bin,
p_QP_store[(y>>5)*i_QP_stride+ (x>>5)]);
p_block += 8;
}
}
-
}
* video_parser.c : video parser thread
*****************************************************************************
* Copyright (C) 1999-2001 VideoLAN
- * $Id: parser.c,v 1.8 2002/11/28 17:35:00 sam Exp $
+ * $Id: parser.c,v 1.9 2002/12/18 14:17:10 sam Exp $
*
* Authors: Christophe Massiot <massiot@via.ecp.fr>
* Samuel Hocevar <sam@via.ecp.fr>
vout_Request( p_vpar->p_fifo, p_vpar->p_vout, 0, 0, 0, 0 );
- msg_Dbg( p_vpar->p_fifo, "%d loops among %d sequence(s)",
+ msg_Dbg( p_vpar->p_fifo, "%ld loops among %ld sequence(s)",
p_vpar->c_loops, p_vpar->c_sequences );
#ifdef HAVE_SYS_TIMES_H
- msg_Dbg( p_vpar->p_fifo, "cpu usage (user: %d, system: %d)",
+ msg_Dbg( p_vpar->p_fifo, "cpu usage (user: %ld, system: %ld)",
cpu_usage.tms_utime, cpu_usage.tms_stime );
#endif
- msg_Dbg( p_vpar->p_fifo, "read %d frames/fields (I %d/P %d/B %d)",
+ msg_Dbg( p_vpar->p_fifo, "read %ld frames/fields (I %ld/P %ld/B %ld)",
p_vpar->pc_pictures[I_CODING_TYPE]
+ p_vpar->pc_pictures[P_CODING_TYPE]
+ p_vpar->pc_pictures[B_CODING_TYPE],
p_vpar->pc_pictures[I_CODING_TYPE],
p_vpar->pc_pictures[P_CODING_TYPE],
p_vpar->pc_pictures[B_CODING_TYPE] );
- msg_Dbg( p_vpar->p_fifo, "decoded %d frames/fields (I %d/P %d/B %d)",
+ msg_Dbg( p_vpar->p_fifo, "decoded %ld frames/fields (I %ld/P %ld/B %ld)",
p_vpar->pc_decoded_pictures[I_CODING_TYPE]
+ p_vpar->pc_decoded_pictures[P_CODING_TYPE]
+ p_vpar->pc_decoded_pictures[B_CODING_TYPE],
p_vpar->pc_decoded_pictures[P_CODING_TYPE],
p_vpar->pc_decoded_pictures[B_CODING_TYPE] );
msg_Dbg( p_vpar->p_fifo,
- "read %d malformed frames/fields (I %d/P %d/B %d)",
+ "read %ld malformed frames/fields (I %ld/P %ld/B %ld)",
p_vpar->pc_malformed_pictures[I_CODING_TYPE]
+ p_vpar->pc_malformed_pictures[P_CODING_TYPE]
+ p_vpar->pc_malformed_pictures[B_CODING_TYPE],
* libasf.c :
*****************************************************************************
* Copyright (C) 2001 VideoLAN
- * $Id: libasf.c,v 1.8 2002/12/06 16:34:06 sam Exp $
+ * $Id: libasf.c,v 1.9 2002/12/18 14:17:10 sam Exp $
* Authors: Laurent Aimar <fenrir@via.ecp.fr>
*
* This program is free software; you can redistribute it and/or modify
msg_Dbg( p_input,
"Read \"Index Object\" file_id:" GUID_FMT
" index_entry_time_interval:"I64Fd" max_packet_count:%d "
- "index_entry_count:%d",
+ "index_entry_count:%ld",
GUID_PRINT( p_index->i_file_id ),
+ p_index->i_index_entry_time_interval,
p_index->i_max_packet_count,
- p_index->i_index_entry_count );
+ (long int)p_index->i_index_entry_count );
#endif
return( 1 );
}
* demuxdump.c : Pseudo demux module for vlc (dump raw stream)
*****************************************************************************
* Copyright (C) 2001 VideoLAN
- * $Id: demuxdump.c,v 1.1 2002/11/13 20:23:21 fenrir Exp $
+ * $Id: demuxdump.c,v 1.2 2002/12/18 14:17:10 sam Exp $
*
* Authors: Laurent Aimar <fenrir@via.ecp.fr>
*
demux_sys_t *p_demux = (demux_sys_t*)p_input->p_demux_data;
msg_Info( p_input,
- "closing %s (%d Kbytes dumped)",
+ "closing %s ("I64Fd" Kbytes dumped)",
p_demux->psz_name,
p_demux->i_write / 1024 );
* libmp4.c : LibMP4 library for mp4 module for vlc
*****************************************************************************
* Copyright (C) 2001 VideoLAN
- * $Id: libmp4.c,v 1.10 2002/12/06 16:34:06 sam Exp $
+ * $Id: libmp4.c,v 1.11 2002/12/18 14:17:10 sam Exp $
* Authors: Laurent Aimar <fenrir@via.ecp.fr>
*
* This program is free software; you can redistribute it and/or modify
#ifdef MP4_VERBOSE
- msg_Dbg( p_stream->p_input, "Read Box: \"stdp\" entry-count %d",
+ msg_Dbg( p_stream->p_input, "Read Box: \"stdp\" entry-count "I64Fd,
i_read / 2 );
#endif
#ifdef MP4_VERBOSE
- msg_Dbg( p_stream->p_input, "Read Box: \"stdp\" entry-count %d",
+ msg_Dbg( p_stream->p_input, "Read Box: \"stdp\" entry-count "I64Fd,
i_read / 2 );
#endif
#ifdef MP4_VERBOSE
- msg_Dbg( p_stream->p_input, "Read Box: \"elst\" entry-count %d",
+ msg_Dbg( p_stream->p_input, "Read Box: \"elst\" entry-count "I64Fd,
i_read / 2 );
#endif
* ogg.c : ogg stream input module for vlc
*****************************************************************************
* Copyright (C) 2001 VideoLAN
- * $Id: ogg.c,v 1.14 2002/12/16 18:30:12 gbazin Exp $
+ * $Id: ogg.c,v 1.15 2002/12/18 14:17:10 sam Exp $
*
* Authors: Gildas Bazin <gbazin@netcourrier.com>
*
if( p_stream->i_fourcc == VLC_FOURCC( 't','a','r','k' ) )
{
/* FIXME: the biggest hack I've ever done */
- msg_Warn( p_input, "tark pts: %lli, granule: %i",
+ msg_Warn( p_input, "tark pts: "I64Fd", granule: "I64Fd,
p_pes->i_pts, p_pes->i_dts );
msleep(10000);
}
* wav.c : wav file input module for vlc
*****************************************************************************
* Copyright (C) 2001 VideoLAN
- * $Id: wav.c,v 1.7 2002/12/10 23:34:19 gbazin Exp $
+ * $Id: wav.c,v 1.8 2002/12/18 14:17:10 sam Exp $
* Authors: Laurent Aimar <fenrir@via.ecp.fr>
*
* This program is free software; you can redistribute it and/or modify
i_id = GetDWLE( p_peek );
i_size = GetDWLE( p_peek + 4 );
- msg_Dbg( p_input, "FindTag: tag:%4.4s size:%d", &i_id, i_size );
+ msg_Dbg( p_input, "FindTag: tag:%4.4s size:%d", (char*)&i_id, i_size );
if( i_id == i_tag )
{
/* Yes, we have found the good tag */
* display.c: Gtk+ tools for main interface
*****************************************************************************
* Copyright (C) 1999, 2000 VideoLAN
- * $Id: display.c,v 1.5 2002/12/13 01:56:29 gbazin Exp $
+ * $Id: display.c,v 1.6 2002/12/18 14:17:11 sam Exp $
*
* Authors: Samuel Hocevar <sam@zoy.org>
* Stéphane Borel <stef@via.ecp.fr>
for( i_index = 0; i_index < list.i_count; i_index++ )
{
- p_intf = (module_t *)list.p_values[i_index].p_object ;
+ p_intf = (intf_thread_t *)list.p_values[i_index].p_object ;
if( strcmp( MODULE_STRING, p_intf->p_module->psz_object_name ) )
{
* ps.c
*****************************************************************************
* Copyright (C) 2001, 2002 VideoLAN
- * $Id: ps.c,v 1.2 2002/12/15 23:39:41 fenrir Exp $
+ * $Id: ps.c,v 1.3 2002/12/18 14:17:11 sam Exp $
*
* Authors: Laurent Aimar <fenrir@via.ecp.fr>
* Eric Petit <titer@videolan.org>
sout_mux_t *p_mux = (sout_mux_t*)p_sout->p_mux_data;
ps_stream_t *p_stream;
- msg_Dbg( p_sout, "adding input", p_sout );
+ msg_Dbg( p_sout, "adding input" );
p_input->p_mux_data = (void*)p_stream = malloc( sizeof( ps_stream_t ) );
p_stream->i_ok = 0;
switch( p_input->input_format.i_cat )
}
p_stream->i_ok = 1;
- msg_Dbg( p_sout, "adding input stream_id:0x%x [OK]", p_stream->i_stream_id, p_sout );
+ msg_Dbg( p_sout, "adding input stream_id:0x%x [OK]", p_stream->i_stream_id );
return( 0 );
}
* mixer.c : audio output mixing operations
*****************************************************************************
* Copyright (C) 2002 VideoLAN
- * $Id: mixer.c,v 1.21 2002/12/06 10:10:39 sam Exp $
+ * $Id: mixer.c,v 1.22 2002/12/18 14:17:11 sam Exp $
*
* Authors: Christophe Massiot <massiot@via.ecp.fr>
*
+ mixer_nb_bytes)) )
{
msg_Warn( p_aout,
- "mixer start isn't output start (%d)",
+ "mixer start isn't output start ("I64Fd,
i_nb_bytes - mixer_nb_bytes );
/* Round to the nearest multiple */
* decoders.
*****************************************************************************
* Copyright (C) 1998-2002 VideoLAN
- * $Id: input.c,v 1.219 2002/12/12 15:23:43 gbazin Exp $
+ * $Id: input.c,v 1.220 2002/12/18 14:17:11 sam Exp $
*
* Authors: Christophe Massiot <massiot@via.ecp.fr>
*
struct tms cpu_usage;
times( &cpu_usage );
- msg_Dbg( p_input, "%d loops consuming user: %d, system: %d",
+ msg_Dbg( p_input, "%ld loops consuming user: %ld, system: %ld",
p_input->c_loops, cpu_usage.tms_utime, cpu_usage.tms_stime );
#else
- msg_Dbg( p_input, "%d loops", p_input->c_loops );
+ msg_Dbg( p_input, "%ld loops", p_input->c_loops );
#endif
/* Free info structures */
* input_ext-intf.c: services to the interface
*****************************************************************************
* Copyright (C) 1998-2001 VideoLAN
- * $Id: input_ext-intf.c,v 1.44 2002/12/06 16:34:08 sam Exp $
+ * $Id: input_ext-intf.c,v 1.45 2002/12/18 14:17:11 sam Exp $
*
* Authors: Christophe Massiot <massiot@via.ecp.fr>
*
unsigned int i, j;
#define S p_input->stream
- msg_Dbg( p_input, "dumping stream ID 0x%x [OK:%d/D:%d]", S.i_stream_id,
+ msg_Dbg( p_input, "dumping stream ID 0x%x [OK:%ld/D:%ld]", S.i_stream_id,
S.c_packets_read, S.c_packets_trashed );
if( S.b_seekable )
msg_Dbg( p_input, "seekable stream, position: "I64Fd"/"I64Fd" (%s/%s)",
for( j = 0; j < p_input->stream.pp_programs[i]->i_es_number; j++ )
{
#define ES p_input->stream.pp_programs[i]->pp_es[j]
- msg_Dbg( p_input,
- "ES 0x%x, stream 0x%x, fourcc `%4.4s', %s [OK:%d/ERR:%d]",
+ msg_Dbg( p_input, "ES 0x%x, "
+ "stream 0x%x, fourcc `%4.4s', %s [OK:%ld/ERR:%ld]",
ES->i_id, ES->i_stream_id, (char*)&ES->i_fourcc,
ES->p_decoder_fifo != NULL ? "selected" : "not selected",
ES->c_packets, ES->c_invalid_packets );
* threads.c : threads implementation for the VideoLAN client
*****************************************************************************
* Copyright (C) 1999, 2000, 2001, 2002 VideoLAN
- * $Id: threads.c,v 1.29 2002/12/14 19:19:08 gbazin Exp $
+ * $Id: threads.c,v 1.30 2002/12/18 14:17:11 sam Exp $
*
* Authors: Jean-Marc Dressler <polux@via.ecp.fr>
* Samuel Hocevar <sam@zoy.org>
p_this->b_thread = 1;
msg_Dbg( p_this, "thread %d (%s) created at priority %d (%s:%d)",
- p_this->thread_id, psz_name, i_priority,
+ (int)p_this->thread_id, psz_name, i_priority,
psz_file, i_line );
vlc_mutex_unlock( &p_this->object_lock );
{
#ifdef HAVE_STRERROR
msg_Err( p_this, "thread_join(%d) failed at %s:%d (%s)",
- p_this->thread_id, psz_file, i_line, strerror(i_ret) );
+ (int)p_this->thread_id, psz_file, i_line,
+ strerror(i_ret) );
#else
msg_Err( p_this, "thread_join(%d) failed at %s:%d",
- p_this->thread_id, psz_file, i_line );
+ (int)p_this->thread_id, psz_file, i_line );
#endif
}
else
{
msg_Dbg( p_this, "thread %d joined (%s:%d)",
- p_this->thread_id, psz_file, i_line );
+ (int)p_this->thread_id, psz_file, i_line );
}
p_this->b_thread = 0;
* variables.c: routines for object variables handling
*****************************************************************************
* Copyright (C) 2002 VideoLAN
- * $Id: variables.c,v 1.18 2002/12/14 19:34:06 gbazin Exp $
+ * $Id: variables.c,v 1.19 2002/12/18 14:17:11 sam Exp $
*
* Authors: Samuel Hocevar <sam@zoy.org>
*
i_var = Lookup( p_this->p_vars, p_this->i_vars, psz_name );
if( i_var < 0 )
{
- msg_Err( p_this, "variable %s has disappeared" );
+ msg_Err( p_this, "variable %s has disappeared", psz_name );
vlc_mutex_unlock( &p_this->var_lock );
return VLC_ENOVAR;
}
* thread, and destroy a previously oppened video output thread.
*****************************************************************************
* Copyright (C) 2000-2001 VideoLAN
- * $Id: video_output.c,v 1.204 2002/12/18 08:08:29 gbazin Exp $
+ * $Id: video_output.c,v 1.205 2002/12/18 14:17:11 sam Exp $
*
* Authors: Vincent Seguin <seguin@via.ecp.fr>
*
if( p_vout->chroma.p_module == NULL )
{
msg_Err( p_vout, "no chroma module for %4.4s to %4.4s",
- &p_vout->render.i_chroma, &p_vout->output.i_chroma );
+ (char*)&p_vout->render.i_chroma,
+ (char*)&p_vout->output.i_chroma );
p_vout->pf_end( p_vout );
vlc_mutex_unlock( &p_vout->change_lock );
return VLC_EGENERIC;