FFmpeg
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
}
DWTPlane::buf
uint8_t * buf
Definition:
dirac_dwt.h:41
bit_depth
static void bit_depth(AudioStatsContext *s, uint64_t mask, uint64_t imask, AVRational *depth)
Definition:
af_astats.c:226
AV_LOG_WARNING
#define AV_LOG_WARNING
Something somehow does not look correct.
Definition:
log.h:182
level
uint8_t level
Definition:
svq3.c:207
DWTContext::cs
DWTCompose cs[MAX_DECOMPOSITIONS]
Definition:
dirac_dwt.h:71
DWTPlane
Definition:
dirac_dwt.h:37
dirac_dwt.h
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
DWTContext::spatial_compose
void(* spatial_compose)(struct DWTContext *cs, int level, int width, int height, int stride)
Definition:
dirac_dwt.h:63
type
it s the only field you need to keep assuming you have a context There is some magic you don t need to care about around this just let it vf type
Definition:
writing_filters.txt:86
avassert.h
AV_LOG_ERROR
#define AV_LOG_ERROR
Something went wrong and cannot losslessly be recovered.
Definition:
log.h:176
DWTCompose::y
int y
Definition:
dirac_dwt.h:34
DWTContext::width
int width
Definition:
dirac_dwt.h:57
DWTContext::decomposition_count
int decomposition_count
Definition:
dirac_dwt.h:60
DWTPlane::stride
int stride
Definition:
dirac_dwt.h:40
dwt_type
dwt_type
Definition:
dirac_dwt.h:74
NULL
#define NULL
Definition:
coverity.c:32
DWTContext::temp
uint8_t * temp
Definition:
dirac_dwt.h:56
dirac_dwt_template.c
ff_spatial_idwt_slice2
void ff_spatial_idwt_slice2(DWTContext *d, int y)
Definition:
dirac_dwt.c:67
FFMIN
#define FFMIN(a, b)
Definition:
common.h:96
attributes.h
common.h
DWTContext::height
int height
Definition:
dirac_dwt.h:58
DWTContext::support
int support
Definition:
dirac_dwt.h:61
ff_spatial_idwt_init_x86
void ff_spatial_idwt_init_x86(DWTContext *d, enum dwt_type type)
Definition:
dirac_dwt_init.c:161
DWTContext
Definition:
dirac_dwt.h:54
DWTContext::stride
int stride
Definition:
dirac_dwt.h:59
ret
ret
Definition:
filter_design.txt:187
av_log
#define av_log(a,...)
Definition:
tableprint_vlc.h:28
AVERROR_INVALIDDATA
#define AVERROR_INVALIDDATA
Invalid data found when processing input.
Definition:
error.h:59
DWTPlane::width
int width
Definition:
dirac_dwt.h:38
DWTContext::buffer
uint8_t * buffer
Definition:
dirac_dwt.h:55
DWTPlane::tmp
uint8_t * tmp
Definition:
dirac_dwt.h:43
DWTPlane::height
int height
Definition:
dirac_dwt.h:39
Generated on Wed Aug 24 2022 21:26:38 for FFmpeg by
1.8.17