FFmpeg
Main Page
Related Pages
Modules
Namespaces
Data Structures
Files
Examples
File List
Globals
All
Data Structures
Namespaces
Files
Functions
Variables
Typedefs
Enumerations
Enumerator
Macros
Groups
Pages
libavcodec
x86
hpeldsp_mmx.c
Go to the documentation of this file.
1
/*
2
* MMX-optimized avg/put pixel routines
3
*
4
* Copyright (c) 2001 Fabrice Bellard
5
*
6
* This file is part of FFmpeg.
7
*
8
* FFmpeg is free software; you can redistribute it and/or
9
* modify it under the terms of the GNU Lesser General Public
10
* License as published by the Free Software Foundation; either
11
* version 2.1 of the License, or (at your option) any later version.
12
*
13
* FFmpeg is distributed in the hope that it will be useful,
14
* but WITHOUT ANY WARRANTY; without even the implied warranty of
15
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
16
* Lesser General Public License for more details.
17
*
18
* You should have received a copy of the GNU Lesser General Public
19
* License along with FFmpeg; if not, write to the Free Software
20
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
21
*/
22
23
#include <stddef.h>
24
#include <stdint.h>
25
26
#include "config.h"
27
#include "
dsputil_x86.h
"
28
29
#if HAVE_MMX_INLINE
30
31
void
ff_avg_pixels8_x2_mmx
(
uint8_t
*
block
,
const
uint8_t
*pixels,
32
ptrdiff_t line_size,
int
h)
33
{
34
MOVQ_BFE
(mm6);
35
JUMPALIGN
();
36
do
{
37
__asm__
volatile
(
38
"movq %1, %%mm0 \n\t"
39
"movq 1%1, %%mm1 \n\t"
40
"movq %0, %%mm3 \n\t"
41
PAVGB_MMX
(%%mm0, %%mm1, %%mm2, %%mm6)
42
PAVGB_MMX
(%%mm3, %%mm2, %%mm0, %%mm6)
43
"movq %%mm0, %0 \
n
\
t
"
44
:"+
m
"(*block)
45
:"
m
"(*pixels)
46
:"memory");
47
pixels += line_size;
48
block += line_size;
49
} while (--h);
50
}
51
52
#endif
/* HAVE_MMX_INLINE */
Generated on Sun Mar 23 2014 23:50:06 for FFmpeg by
1.8.2