FFmpeg
Loading...
Searching...
No Matches
dirac_dwt.h
Go to the documentation of this file.
1/*
2 * Copyright (C) 2004-2010 Michael Niedermayer <michaelni@gmx.at>
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#ifndef AVCODEC_DIRAC_DWT_H
22#define AVCODEC_DIRAC_DWT_H
23
24#include <stddef.h>
25#include <stdint.h>
26
27typedef int DWTELEM;
28typedef short IDWTELEM;
29
30#define MAX_DWT_SUPPORT 8
31#define MAX_DECOMPOSITIONS 8
32
33typedef struct DWTCompose {
34 uint8_t *b[MAX_DWT_SUPPORT];
35 int y;
37
38typedef struct DWTPlane {
39 int width;
40 int height;
41 ptrdiff_t stride;
42 uint8_t *buf;
43 uint8_t *buf_base;
44 uint8_t *tmp;
45} DWTPlane;
46
47struct DWTContext;
48
49// Possible prototypes for vertical_compose functions
50typedef void (*vertical_compose_2tap)(uint8_t *b0, uint8_t *b1, int width);
51typedef void (*vertical_compose_3tap)(uint8_t *b0, uint8_t *b1, uint8_t *b2, int width);
52typedef void (*vertical_compose_5tap)(uint8_t *b0, uint8_t *b1, uint8_t *b2, uint8_t *b3, uint8_t *b4, int width);
53typedef void (*vertical_compose_9tap)(uint8_t *dst, uint8_t *b[8], int width);
54
77
90
91// -1 if an error occurred, e.g. the dwt_type isn't recognized
93 int decomposition_count, int bit_depth);
95
97
98// shared stuff for simd optimizations
99#define COMPOSE_53iL0(b0, b1, b2)\
100 (b1 - (unsigned)((int)(b0 + (unsigned)(b2) + 2) >> 2))
101
102#define COMPOSE_DIRAC53iH0(b0, b1, b2)\
103 (b1 + (unsigned)((int)(b0 + (unsigned)(b2) + 1) >> 1))
104
105#define COMPOSE_DD97iH0(b0, b1, b2, b3, b4)\
106 (int)(((unsigned)(b2) + ((int)(9U*b1 + 9U*b3 - b4 - b0 + 8) >> 4)))
107
108#define COMPOSE_DD137iL0(b0, b1, b2, b3, b4)\
109 (int)(((unsigned)(b2) - ((int)(9U*b1 + 9U*b3 - b4 - b0 + 16) >> 5)))
110
111#define COMPOSE_HAARiL0(b0, b1)\
112 ((int)(b0 - (unsigned)((int)(b1 + 1U) >> 1)))
113
114#define COMPOSE_HAARiH0(b0, b1)\
115 ((int)(b0 + (unsigned)(b1)))
116
117#define COMPOSE_FIDELITYiL0(b0, b1, b2, b3, b4, b5, b6, b7, b8)\
118 ((unsigned)b4 - ((int)(-8*(b0+(unsigned)b8) + 21*(b1+(unsigned)b7) - 46*(b2+(unsigned)b6) + 161*(b3+(unsigned)b5) + 128) >> 8))
119
120#define COMPOSE_FIDELITYiH0(b0, b1, b2, b3, b4, b5, b6, b7, b8)\
121 ((unsigned)b4 + ((int)(-2*(b0+(unsigned)b8) + 10*(b1+(unsigned)b7) - 25*(b2+(unsigned)b6) + 81*(b3+(unsigned)b5) + 128) >> 8))
122
123#define COMPOSE_DAUB97iL1(b0, b1, b2)\
124 ((unsigned)(b1) - ((int)(1817*(b0 + (unsigned)b2) + 2048) >> 12))
125
126#define COMPOSE_DAUB97iH1(b0, b1, b2)\
127 ((unsigned)(b1) - ((int)( 113*(b0 + (unsigned)b2) + 64) >> 7))
128
129#define COMPOSE_DAUB97iL0(b0, b1, b2)\
130 ((unsigned)(b1) + ((int)( 217*(b0 + (unsigned)b2) + 2048) >> 12))
131
132#define COMPOSE_DAUB97iH0(b0, b1, b2)\
133 ((unsigned)(b1) + ((int)(6497*(b0 + (unsigned)b2) + 2048) >> 12))
134
135
136#endif /* AVCODEC_DWT_H */
uint8_t ptrdiff_t const uint8_t ptrdiff_t int intptr_t intptr_t int int16_t * dst
Definition dsp.h:87
static void bit_depth(AudioStatsContext *s, const uint64_t *const mask, uint8_t *depth)
Definition af_astats.c:246
int DWTELEM
Definition dirac_dwt.h:27
void(* vertical_compose_5tap)(uint8_t *b0, uint8_t *b1, uint8_t *b2, uint8_t *b3, uint8_t *b4, int width)
Definition dirac_dwt.h:52
void ff_spatial_idwt_slice2(DWTContext *d, int y)
Definition dirac_dwt.c:69
#define MAX_DECOMPOSITIONS
Definition dirac_dwt.h:31
int ff_spatial_idwt_init(DWTContext *d, DWTPlane *p, enum dwt_type type, int decomposition_count, int bit_depth)
Definition dirac_dwt.c:36
dwt_type
Definition dirac_dwt.h:78
@ DWT_DIRAC_HAAR0
Definition dirac_dwt.h:84
@ DWT_SNOW_DAUB9_7
Definition dirac_dwt.h:79
@ DWT_DIRAC_HAAR1
Definition dirac_dwt.h:85
@ DWT_DIRAC_LEGALL5_3
Definition dirac_dwt.h:82
@ DWT_DIRAC_DAUB9_7
Definition dirac_dwt.h:87
@ DWT_SNOW_LEGALL5_3
Definition dirac_dwt.h:80
@ DWT_DIRAC_FIDELITY
Definition dirac_dwt.h:86
@ DWT_DIRAC_DD9_7
Definition dirac_dwt.h:81
@ DWT_NUM_TYPES
Definition dirac_dwt.h:88
@ DWT_DIRAC_DD13_7
Definition dirac_dwt.h:83
#define MAX_DWT_SUPPORT
Definition dirac_dwt.h:30
void(* vertical_compose_2tap)(uint8_t *b0, uint8_t *b1, int width)
Definition dirac_dwt.h:50
void(* vertical_compose_3tap)(uint8_t *b0, uint8_t *b1, uint8_t *b2, int width)
Definition dirac_dwt.h:51
void(* vertical_compose_9tap)(uint8_t *dst, uint8_t *b[8], int width)
Definition dirac_dwt.h:53
short IDWTELEM
Definition dirac_dwt.h:28
void ff_spatial_idwt_init_x86(DWTContext *d, enum dwt_type type)
cl_device_type type
#define b
Definition input.c:43
uint8_t * b[MAX_DWT_SUPPORT]
Definition dirac_dwt.h:34
DWTCompose cs[MAX_DECOMPOSITIONS]
Definition dirac_dwt.h:75
vertical_compose_9tap tap9
Definition dirac_dwt.h:68
vertical_compose_3tap vertical_compose_h1
Definition dirac_dwt.h:71
vertical_compose_3tap tap3
Definition dirac_dwt.h:66
union DWTContext::@264215211202334351217054014060145273311255047204 vertical_compose_l0
int support
Definition dirac_dwt.h:62
vertical_compose_5tap tap5
Definition dirac_dwt.h:67
vertical_compose_3tap vertical_compose_l1
Definition dirac_dwt.h:70
union DWTContext::@264215211202334351217054014060145273311255047204 vertical_compose_h0
ptrdiff_t stride
Definition dirac_dwt.h:60
uint8_t * buffer
Definition dirac_dwt.h:56
int decomposition_count
Definition dirac_dwt.h:61
void(* spatial_compose)(struct DWTContext *cs, int level, int width, int height, ptrdiff_t stride)
Definition dirac_dwt.h:64
uint8_t * temp
Definition dirac_dwt.h:57
void(* horizontal_compose)(uint8_t *b, uint8_t *tmp, int width)
Definition dirac_dwt.h:73
vertical_compose_2tap vertical_compose
one set of lowpass and highpass combined
Definition dirac_dwt.h:72
int width
Definition dirac_dwt.h:39
uint8_t * buf
Definition dirac_dwt.h:42
int height
Definition dirac_dwt.h:40
uint8_t * tmp
Definition dirac_dwt.h:44
ptrdiff_t stride
Definition dirac_dwt.h:41
uint8_t * buf_base
Definition dirac_dwt.h:43
uint8_t level
Definition svq3.c:208
static uint8_t tmp[40]
Definition aes_ctr.c:52
#define width
Definition dsp.h:89
static double b1(void *priv, double x, double y)
Definition vf_xfade.c:2034
static double b2(void *priv, double x, double y)
Definition vf_xfade.c:2035
static double b3(void *priv, double x, double y)
Definition vf_xfade.c:2036
static double b0(void *priv, double x, double y)
Definition vf_xfade.c:2033