FFmpeg
4.0
libavcodec
dirac_dwt.c
Go to the documentation of this file.
1
/*
2
* Copyright (C) 2004-2010 Michael Niedermayer <michaelni@gmx.at>
3
* Copyright (C) 2008 David Conrad
4
*
5
* This file is part of FFmpeg.
6
*
7
* FFmpeg is free software; you can redistribute it and/or
8
* modify it under the terms of the GNU Lesser General Public
9
* License as published by the Free Software Foundation; either
10
* version 2.1 of the License, or (at your option) any later version.
11
*
12
* FFmpeg is distributed in the hope that it will be useful,
13
* but WITHOUT ANY WARRANTY; without even the implied warranty of
14
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
15
* Lesser General Public License for more details.
16
*
17
* You should have received a copy of the GNU Lesser General Public
18
* License along with FFmpeg; if not, write to the Free Software
19
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
20
*/
21
22
#include "
libavutil/attributes.h
"
23
#include "
libavutil/avassert.h
"
24
#include "
libavutil/common.h
"
25
#include "
dirac_dwt.h
"
26
27
#define TEMPLATE_8bit
28
#include "
dirac_dwt_template.c
"
29
30
#define TEMPLATE_10bit
31
#include "
dirac_dwt_template.c
"
32
33
#define TEMPLATE_12bit
34
#include "
dirac_dwt_template.c
"
35
36
int
ff_spatial_idwt_init
(
DWTContext
*d,
DWTPlane
*p,
enum
dwt_type
type
,
37
int
decomposition_count,
int
bit_depth
)
38
{
39
int
ret = 0;
40
41
d->
buffer
= p->
buf
;
42
d->
width
= p->
width
;
43
d->
height
= p->
height
;
44
d->
stride
= p->
stride
;
45
d->
temp
= p->
tmp
;
46
d->
decomposition_count
= decomposition_count;
47
48
if
(bit_depth == 8)
49
ret = ff_spatial_idwt_init_8bit(d, type);
50
else
if
(bit_depth == 10)
51
ret = ff_spatial_idwt_init_10bit(d, type);
52
else
if
(bit_depth == 12)
53
ret = ff_spatial_idwt_init_12bit(d, type);
54
else
55
av_log
(
NULL
,
AV_LOG_WARNING
,
"Unsupported bit depth = %i\n"
, bit_depth);
56
57
if
(ret) {
58
av_log
(
NULL
,
AV_LOG_ERROR
,
"Unknown wavelet type %d\n"
, type);
59
return
AVERROR_INVALIDDATA
;
60
}
61
62
if
(
ARCH_X86
&& bit_depth == 8)
63
ff_spatial_idwt_init_x86
(d, type);
64
return
0;
65
}
66
67
void
ff_spatial_idwt_slice2
(
DWTContext
*d,
int
y)
68
{
69
int
level
, support = d->
support
;
70
71
for
(level = d->
decomposition_count
-1; level >= 0; level--) {
72
int
wl = d->
width
>>
level
;
73
int
hl = d->
height
>>
level
;
74
int
stride_l = d->
stride
<<
level
;
75
76
while
(d->
cs
[level].
y
<=
FFMIN
((y>>level)+support, hl))
77
d->
spatial_compose
(d, level, wl, hl, stride_l);
78
}
79
}
NULL
#define NULL
Definition:
coverity.c:32
AVERROR_INVALIDDATA
#define AVERROR_INVALIDDATA
Invalid data found when processing input.
Definition:
error.h:59
DWTPlane
Definition:
dirac_dwt.h:37
AV_LOG_WARNING
#define AV_LOG_WARNING
Something somehow does not look correct.
Definition:
log.h:182
dirac_dwt_template.c
DWTPlane::buf
uint8_t * buf
Definition:
dirac_dwt.h:41
DWTContext::decomposition_count
int decomposition_count
Definition:
dirac_dwt.h:60
attributes.h
Macro definitions for various function/variable attributes.
DWTPlane::tmp
uint8_t * tmp
Definition:
dirac_dwt.h:43
DWTContext::support
int support
Definition:
dirac_dwt.h:61
DWTContext::spatial_compose
void(* spatial_compose)(struct DWTContext *cs, int level, int width, int height, int stride)
Definition:
dirac_dwt.h:63
DWTPlane::height
int height
Definition:
dirac_dwt.h:39
av_log
#define av_log(a,...)
Definition:
tableprint_vlc.h:28
DWTContext::temp
uint8_t * temp
Definition:
dirac_dwt.h:56
DWTContext::buffer
uint8_t * buffer
Definition:
dirac_dwt.h:55
AV_LOG_ERROR
#define AV_LOG_ERROR
Something went wrong and cannot losslessly be recovered.
Definition:
log.h:176
ARCH_X86
#define ARCH_X86
Definition:
config.h:38
DWTPlane::width
int width
Definition:
dirac_dwt.h:38
DWTCompose::y
int y
Definition:
dirac_dwt.h:34
avassert.h
simple assert() macros that are a bit more flexible than ISO C assert().
FFMIN
#define FFMIN(a, b)
Definition:
common.h:96
ff_spatial_idwt_slice2
void ff_spatial_idwt_slice2(DWTContext *d, int y)
Definition:
dirac_dwt.c:67
bit_depth
static void bit_depth(AudioStatsContext *s, uint64_t mask, uint64_t imask, AVRational *depth)
Definition:
af_astats.c:152
DWTContext
Definition:
dirac_dwt.h:54
dwt_type
dwt_type
Definition:
dirac_dwt.h:74
ff_spatial_idwt_init_x86
void ff_spatial_idwt_init_x86(DWTContext *d, enum dwt_type type)
Definition:
dirac_dwt_init.c:161
type
cl_device_type type
Definition:
hwcontext_opencl.c:189
DWTContext::cs
DWTCompose cs[MAX_DECOMPOSITIONS]
Definition:
dirac_dwt.h:71
DWTContext::stride
int stride
Definition:
dirac_dwt.h:59
level
uint8_t level
Definition:
svq3.c:207
dirac_dwt.h
common.h
common internal and external API header
DWTContext::height
int height
Definition:
dirac_dwt.h:58
DWTPlane::stride
int stride
Definition:
dirac_dwt.h:40
DWTContext::width
int width
Definition:
dirac_dwt.h:57
ff_spatial_idwt_init
int ff_spatial_idwt_init(DWTContext *d, DWTPlane *p, enum dwt_type type, int decomposition_count, int bit_depth)
Definition:
dirac_dwt.c:36
Generated on Tue May 22 2018 07:06:30 for FFmpeg by
1.8.13