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
videodsp.h
Go to the documentation of this file.
1
/*
2
* Copyright (C) 2012 Ronald S. Bultje
3
*
4
* This file is part of FFmpeg.
5
*
6
* FFmpeg 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
* FFmpeg 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 FFmpeg; if not, write to the Free Software
18
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
19
*/
20
21
/**
22
* @file
23
* Core video DSP helper functions
24
*/
25
26
#ifndef AVCODEC_VIDEODSP_H
27
#define AVCODEC_VIDEODSP_H
28
29
#include <stddef.h>
30
#include <stdint.h>
31
32
#define EMULATED_EDGE(depth) \
33
void ff_emulated_edge_mc_ ## depth(uint8_t *dst, ptrdiff_t dst_stride, \
34
const uint8_t *src, ptrdiff_t src_stride, \
35
int block_w, int block_h,\
36
int src_x, int src_y, int w, int h);
37
38
EMULATED_EDGE
(8)
39
EMULATED_EDGE
(16)
40
41
typedef struct
VideoDSPContext
{
42
/**
43
* Copy a rectangular area of samples to a temporary buffer and replicate
44
* the border samples.
45
*
46
* @param dst destination buffer
47
* @param dst_stride number of bytes between 2 vertically adjacent samples
48
* in destination buffer
49
* @param src source buffer
50
* @param src_stride number of bytes between 2 vertically adjacent samples
51
* in source buffer
52
* @param block_w width of block
53
* @param block_h height of block
54
* @param src_x x coordinate of the top left sample of the block in the
55
* source buffer
56
* @param src_y y coordinate of the top left sample of the block in the
57
* source buffer
58
* @param w width of the source buffer
59
* @param h height of the source buffer
60
*/
61
void
(*emulated_edge_mc)(
uint8_t
*dst, ptrdiff_t dst_stride,
62
const
uint8_t
*
src
, ptrdiff_t src_stride,
63
int
block_w,
int
block_h,
64
int
src_x,
int
src_y,
int
w,
int
h);
65
66
/**
67
* Prefetch memory into cache (if supported by hardware).
68
*
69
* @param buf pointer to buffer to prefetch memory from
70
* @param stride distance between two lines of buf (in bytes)
71
* @param h number of lines to prefetch
72
*/
73
void
(*prefetch)(
uint8_t
*
buf
, ptrdiff_t
stride
,
int
h);
74
}
VideoDSPContext
;
75
76
void
ff_videodsp_init
(
VideoDSPContext
*ctx,
int
bpc);
77
78
/* for internal use only (i.e. called by ff_videodsp_init() */
79
void
ff_videodsp_init_arm
(
VideoDSPContext
*ctx,
int
bpc);
80
void
ff_videodsp_init_ppc
(
VideoDSPContext
*ctx,
int
bpc);
81
void
ff_videodsp_init_x86
(
VideoDSPContext
*ctx,
int
bpc);
82
83
#endif
/* AVCODEC_VIDEODSP_H */
Generated on Sat Jan 25 2014 19:51:56 for FFmpeg by
1.8.2