Libav
Main Page
Related Pages
Modules
Data Structures
Files
Examples
File List
Globals
libavcodec
bfin
vp3_bfin.c
Go to the documentation of this file.
1
/*
2
* Copyright (C) 2007 Marc Hoffman <marc.hoffman@analog.com>
3
*
4
* This file is part of Libav.
5
*
6
* Libav is free software; you can redistribute it and/or
7
* modify it under the terms of the GNU Lesser General Public
8
* License as published by the Free Software Foundation; either
9
* version 2.1 of the License, or (at your option) any later version.
10
*
11
* Libav is distributed in the hope that it will be useful,
12
* but WITHOUT ANY WARRANTY; without even the implied warranty of
13
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
14
* Lesser General Public License for more details.
15
*
16
* You should have received a copy of the GNU Lesser General Public
17
* License along with Libav; if not, write to the Free Software
18
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
19
*/
20
21
#include <string.h>
22
23
#include "
libavutil/attributes.h
"
24
#include "
libavcodec/avcodec.h
"
25
#include "
libavcodec/vp3dsp.h
"
26
#include "
libavcodec/dsputil.h
"
27
#include "
dsputil_bfin.h
"
28
#include "
vp3_bfin.h
"
29
30
/* Intra iDCT offset 128 */
31
static
void
bfin_vp3_idct_put
(
uint8_t
*dest,
int
line_size, int16_t *
block
)
32
{
33
const
uint8_t
*
cm
=
ff_cropTbl
+
MAX_NEG_CROP
+ 128;
34
int
i,j;
35
36
ff_bfin_vp3_idct
(block);
37
38
for
(i=0;i<8;i++)
39
for
(j=0;j<8;j++)
40
dest[line_size*i + j] = cm[block[j*8 + i]];
41
42
memset(block, 0, 128);
43
}
44
45
/* Inter iDCT */
46
static
void
bfin_vp3_idct_add
(
uint8_t
*dest,
int
line_size, int16_t *
block
)
47
{
48
const
uint8_t
*
cm
=
ff_cropTbl
+
MAX_NEG_CROP
;
49
int
i, j;
50
51
ff_bfin_vp3_idct
(block);
52
for
(i = 0; i < 8; i++)
53
for
(j = 0; j < 8; j++)
54
dest[line_size*i + j] = cm[dest[line_size*i + j] + block[j*8 + i]];
55
56
memset(block, 0, 128);
57
}
58
59
av_cold
void
ff_vp3dsp_init_bfin
(
VP3DSPContext
*c,
int
flags
)
60
{
61
if
(!(flags &
CODEC_FLAG_BITEXACT
)) {
62
c->
idct_add
=
bfin_vp3_idct_add
;
63
c->
idct_put
=
bfin_vp3_idct_put
;
64
}
65
}
VP3DSPContext::idct_put
void(* idct_put)(uint8_t *dest, int line_size, int16_t *block)
Definition:
vp3dsp.h:41
ff_cropTbl
#define ff_cropTbl
Definition:
motionpixels_tablegen.c:26
vp3dsp.h
ff_bfin_vp3_idct
void ff_bfin_vp3_idct(int16_t *block)
MAX_NEG_CROP
#define MAX_NEG_CROP
Definition:
dsputil.h:44
attributes.h
Macro definitions for various function/variable attributes.
ff_vp3dsp_init_bfin
av_cold void ff_vp3dsp_init_bfin(VP3DSPContext *c, int flags)
Definition:
vp3_bfin.c:59
uint8_t
uint8_t
Definition:
audio_convert.c:194
av_cold
#define av_cold
Definition:
attributes.h:66
VP3DSPContext
Definition:
vp3dsp.h:25
flags
static int flags
Definition:
log.c:44
CODEC_FLAG_BITEXACT
#define CODEC_FLAG_BITEXACT
Use only bitexact stuff (except (I)DCT).
Definition:
avcodec.h:685
cm
#define cm
Definition:
dvbsubdec.c:34
vp3_bfin.h
bfin_vp3_idct_put
static void bfin_vp3_idct_put(uint8_t *dest, int line_size, int16_t *block)
Definition:
vp3_bfin.c:31
VP3DSPContext::idct_add
void(* idct_add)(uint8_t *dest, int line_size, int16_t *block)
Definition:
vp3dsp.h:42
bfin_vp3_idct_add
static void bfin_vp3_idct_add(uint8_t *dest, int line_size, int16_t *block)
Definition:
vp3_bfin.c:46
avcodec.h
Libavcodec external API header.
dsputil.h
DSP utils.
dsputil_bfin.h
block
static int16_t block[64]
Definition:
dct-test.c:170
Generated on Mon Aug 4 2014 17:22:59 for Libav by
1.8.7