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