FFmpeg
4.0
libavcodec
vp9shared.h
Go to the documentation of this file.
1
/*
2
* VP9 compatible video decoder
3
*
4
* Copyright (C) 2013 Ronald S. Bultje <rsbultje gmail com>
5
* Copyright (C) 2013 Clément Bœsch <u pkh me>
6
*
7
* This file is part of FFmpeg.
8
*
9
* FFmpeg is free software; you can redistribute it and/or
10
* modify it under the terms of the GNU Lesser General Public
11
* License as published by the Free Software Foundation; either
12
* version 2.1 of the License, or (at your option) any later version.
13
*
14
* FFmpeg is distributed in the hope that it will be useful,
15
* but WITHOUT ANY WARRANTY; without even the implied warranty of
16
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
17
* Lesser General Public License for more details.
18
*
19
* You should have received a copy of the GNU Lesser General Public
20
* License along with FFmpeg; if not, write to the Free Software
21
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
22
*/
23
24
#ifndef AVCODEC_VP9SHARED_H
25
#define AVCODEC_VP9SHARED_H
26
27
#include <stddef.h>
28
#include <stdint.h>
29
30
#include "
vp9.h
"
31
#include "
thread.h
"
32
#include "
vp56.h
"
33
34
enum
BlockPartition
{
35
PARTITION_NONE
,
// [ ] <-.
36
PARTITION_H
,
// [-] |
37
PARTITION_V
,
// [|] |
38
PARTITION_SPLIT
,
// [+] --'
39
};
40
41
enum
InterPredMode
{
42
NEARESTMV
= 10,
43
NEARMV
= 11,
44
ZEROMV
= 12,
45
NEWMV
= 13,
46
};
47
48
enum
CompPredMode
{
49
PRED_SINGLEREF
,
50
PRED_COMPREF
,
51
PRED_SWITCHABLE
,
52
};
53
54
typedef
struct
VP9mvrefPair
{
55
VP56mv
mv
[2];
56
int8_t
ref
[2];
57
}
VP9mvrefPair
;
58
59
typedef
struct
VP9Frame
{
60
ThreadFrame
tf
;
61
AVBufferRef
*
extradata
;
62
uint8_t
*
segmentation_map
;
63
VP9mvrefPair
*
mv
;
64
int
uses_2pass
;
65
66
AVBufferRef
*
hwaccel_priv_buf
;
67
void
*
hwaccel_picture_private
;
68
}
VP9Frame
;
69
70
enum
BlockLevel
{
71
BL_64X64
,
72
BL_32X32
,
73
BL_16X16
,
74
BL_8X8
,
75
};
76
77
enum
BlockSize
{
78
BS_64x64
,
79
BS_64x32
,
80
BS_32x64
,
81
BS_32x32
,
82
BS_32x16
,
83
BS_16x32
,
84
BS_16x16
,
85
BS_16x8
,
86
BS_8x16
,
87
BS_8x8
,
88
BS_8x4
,
89
BS_4x8
,
90
BS_4x4
,
91
N_BS_SIZES
,
92
};
93
94
typedef
struct
VP9BitstreamHeader
{
95
// bitstream header
96
uint8_t
profile
;
97
uint8_t
bpp
;
98
uint8_t
keyframe
;
99
uint8_t
invisible
;
100
uint8_t
errorres
;
101
uint8_t
intraonly
;
102
uint8_t
resetctx
;
103
uint8_t
refreshrefmask
;
104
uint8_t
highprecisionmvs
;
105
enum
FilterMode
filtermode;
106
uint8_t
allowcompinter
;
107
uint8_t
refreshctx
;
108
uint8_t
parallelmode
;
109
uint8_t
framectxid
;
110
uint8_t
use_last_frame_mvs
;
111
uint8_t
refidx[3];
112
uint8_t
signbias[3];
113
uint8_t
fixcompref
;
114
uint8_t
varcompref[2];
115
struct
{
116
uint8_t
level
;
117
int8_t
sharpness
;
118
}
filter
;
119
struct
{
120
uint8_t
enabled
;
121
uint8_t
updated
;
122
int8_t
mode
[2];
123
int8_t
ref
[4];
124
} lf_delta;
125
uint8_t
yac_qi
;
126
int8_t
ydc_qdelta
, uvdc_qdelta, uvac_qdelta;
127
uint8_t
lossless
;
128
#define MAX_SEGMENT 8
129
struct
{
130
uint8_t
enabled;
131
uint8_t
temporal
;
132
uint8_t
absolute_vals
;
133
uint8_t
update_map
;
134
uint8_t
prob[7];
135
uint8_t
pred_prob[3];
136
struct
{
137
uint8_t
q_enabled
;
138
uint8_t
lf_enabled
;
139
uint8_t
ref_enabled
;
140
uint8_t
skip_enabled
;
141
uint8_t
ref_val
;
142
int16_t
q_val
;
143
int8_t
lf_val
;
144
int16_t qmul[2][2];
145
uint8_t
lflvl[4][2];
146
} feat[
MAX_SEGMENT
];
147
} segmentation;
148
enum
TxfmMode
txfmmode;
149
enum
CompPredMode
comppredmode;
150
struct
{
151
unsigned
log2_tile_cols,
log2_tile_rows
;
152
unsigned
tile_cols,
tile_rows
;
153
} tiling;
154
155
int
uncompressed_header_size
;
156
int
compressed_header_size
;
157
}
VP9BitstreamHeader
;
158
159
typedef
struct
VP9SharedContext
{
160
VP9BitstreamHeader
h
;
161
162
ThreadFrame
refs[8];
163
#define CUR_FRAME 0
164
#define REF_FRAME_MVPAIR 1
165
#define REF_FRAME_SEGMAP 2
166
VP9Frame
frames
[3];
167
}
VP9SharedContext
;
168
169
#endif
/* AVCODEC_VP9SHARED_H */
VP9BitstreamHeader::lf_enabled
uint8_t lf_enabled
Definition:
vp9shared.h:138
VP9Frame::tf
ThreadFrame tf
Definition:
vp9shared.h:60
VP9BitstreamHeader::profile
uint8_t profile
Definition:
vp9shared.h:96
VP9Frame::segmentation_map
uint8_t * segmentation_map
Definition:
vp9shared.h:62
VP9BitstreamHeader::parallelmode
uint8_t parallelmode
Definition:
vp9shared.h:108
BS_64x64
Definition:
vp9shared.h:78
VP9BitstreamHeader::allowcompinter
uint8_t allowcompinter
Definition:
vp9shared.h:106
vp56.h
VP5 and VP6 compatible video decoder (common features)
VP9BitstreamHeader::update_map
uint8_t update_map
Definition:
vp9shared.h:133
VP9BitstreamHeader::temporal
uint8_t temporal
Definition:
vp9shared.h:131
PRED_SINGLEREF
Definition:
vp9shared.h:49
VP9SharedContext::h
VP9BitstreamHeader h
Definition:
vp9shared.h:160
BS_32x64
Definition:
vp9shared.h:80
VP9BitstreamHeader::framectxid
uint8_t framectxid
Definition:
vp9shared.h:109
VP9BitstreamHeader
Definition:
vp9shared.h:94
InterPredMode
InterPredMode
Definition:
vp9shared.h:41
PARTITION_NONE
Definition:
vp9shared.h:35
PRED_SWITCHABLE
Definition:
vp9shared.h:51
VP9BitstreamHeader::log2_tile_rows
unsigned log2_tile_rows
Definition:
vp9shared.h:151
VP9BitstreamHeader::uncompressed_header_size
int uncompressed_header_size
Definition:
vp9shared.h:155
BS_32x32
Definition:
vp9shared.h:81
filter
static void filter(int16_t *output, ptrdiff_t out_stride, int16_t *low, ptrdiff_t low_stride, int16_t *high, ptrdiff_t high_stride, int len, int clip)
Definition:
cfhd.c:114
MAX_SEGMENT
#define MAX_SEGMENT
Definition:
vp9shared.h:128
VP9BitstreamHeader::resetctx
uint8_t resetctx
Definition:
vp9shared.h:102
uint8_t
uint8_t
Definition:
audio_convert.c:194
VP9BitstreamHeader::absolute_vals
uint8_t absolute_vals
Definition:
vp9shared.h:132
BS_8x16
Definition:
vp9shared.h:86
PRED_COMPREF
Definition:
vp9shared.h:50
VP9BitstreamHeader::updated
uint8_t updated
Definition:
vp9shared.h:121
thread.h
Multithreading support functions.
VP9BitstreamHeader::yac_qi
uint8_t yac_qi
Definition:
vp9shared.h:125
ZEROMV
Definition:
vp9shared.h:44
VP9BitstreamHeader::lf_val
int8_t lf_val
Definition:
vp9shared.h:143
VP9BitstreamHeader::errorres
uint8_t errorres
Definition:
vp9shared.h:100
VP9Frame::hwaccel_priv_buf
AVBufferRef * hwaccel_priv_buf
Definition:
vp9shared.h:66
VP9Frame::extradata
AVBufferRef * extradata
Definition:
vp9shared.h:61
BS_64x32
Definition:
vp9shared.h:79
VP9BitstreamHeader::enabled
uint8_t enabled
Definition:
vp9shared.h:120
BS_16x32
Definition:
vp9shared.h:83
PARTITION_V
Definition:
vp9shared.h:37
CompPredMode
CompPredMode
Definition:
vp9shared.h:48
VP9BitstreamHeader::ref_val
uint8_t ref_val
Definition:
vp9shared.h:141
VP9BitstreamHeader::intraonly
uint8_t intraonly
Definition:
vp9shared.h:101
VP9BitstreamHeader::refreshctx
uint8_t refreshctx
Definition:
vp9shared.h:107
TxfmMode
TxfmMode
Definition:
vp9.h:27
VP9Frame::hwaccel_picture_private
void * hwaccel_picture_private
Definition:
vp9shared.h:67
BL_32X32
Definition:
vp9shared.h:72
BS_8x4
Definition:
vp9shared.h:88
NEARESTMV
Definition:
vp9shared.h:42
VP9Frame::uses_2pass
int uses_2pass
Definition:
vp9shared.h:64
BlockSize
BlockSize
Definition:
vp9shared.h:77
VP9mvrefPair::ref
int8_t ref[2]
Definition:
vp9shared.h:56
VP9BitstreamHeader::keyframe
uint8_t keyframe
Definition:
vp9shared.h:98
VP9BitstreamHeader::tile_rows
unsigned tile_rows
Definition:
vp9shared.h:152
VP9BitstreamHeader::ydc_qdelta
int8_t ydc_qdelta
Definition:
vp9shared.h:126
BS_32x16
Definition:
vp9shared.h:82
VP9BitstreamHeader::level
uint8_t level
Definition:
vp9shared.h:116
ThreadFrame
Definition:
thread.h:34
VP9BitstreamHeader::fixcompref
uint8_t fixcompref
Definition:
vp9shared.h:113
frames
int frames
Definition:
movenc.c:65
BS_8x8
Definition:
vp9shared.h:87
BS_4x4
Definition:
vp9shared.h:90
FilterMode
FilterMode
Definition:
vp9.h:64
VP9BitstreamHeader::sharpness
int8_t sharpness
Definition:
vp9shared.h:117
BlockLevel
BlockLevel
Definition:
vp9shared.h:70
BL_64X64
Definition:
vp9shared.h:71
PARTITION_SPLIT
Definition:
vp9shared.h:38
BL_8X8
Definition:
vp9shared.h:74
BL_16X16
Definition:
vp9shared.h:73
VP9SharedContext
Definition:
vp9shared.h:159
N_BS_SIZES
Definition:
vp9shared.h:91
vp9.h
PARTITION_H
Definition:
vp9shared.h:36
VP56mv
Definition:
vp56.h:66
BS_16x8
Definition:
vp9shared.h:85
NEWMV
Definition:
vp9shared.h:45
AVBufferRef
A reference to a data buffer.
Definition:
buffer.h:81
BS_4x8
Definition:
vp9shared.h:89
VP9BitstreamHeader::ref_enabled
uint8_t ref_enabled
Definition:
vp9shared.h:139
VP9mvrefPair
Definition:
vp9shared.h:54
VP9BitstreamHeader::bpp
uint8_t bpp
Definition:
vp9shared.h:97
VP9Frame::mv
VP9mvrefPair * mv
Definition:
vp9shared.h:63
BS_16x16
Definition:
vp9shared.h:84
VP9BitstreamHeader::invisible
uint8_t invisible
Definition:
vp9shared.h:99
VP9BitstreamHeader::use_last_frame_mvs
uint8_t use_last_frame_mvs
Definition:
vp9shared.h:110
NEARMV
Definition:
vp9shared.h:43
VP9Frame
Definition:
vp9shared.h:59
VP9mvrefPair::mv
VP56mv mv[2]
Definition:
vp9shared.h:55
VP9BitstreamHeader::q_enabled
uint8_t q_enabled
Definition:
vp9shared.h:137
VP9BitstreamHeader::q_val
int16_t q_val
Definition:
vp9shared.h:142
BlockPartition
BlockPartition
Definition:
vp9shared.h:34
VP9BitstreamHeader::highprecisionmvs
uint8_t highprecisionmvs
Definition:
vp9shared.h:104
VP9BitstreamHeader::lossless
uint8_t lossless
Definition:
vp9shared.h:127
mode
mode
Use these values in ebur128_init (or'ed).
Definition:
ebur128.h:83
VP9BitstreamHeader::compressed_header_size
int compressed_header_size
Definition:
vp9shared.h:156
VP9BitstreamHeader::refreshrefmask
uint8_t refreshrefmask
Definition:
vp9shared.h:103
VP9BitstreamHeader::skip_enabled
uint8_t skip_enabled
Definition:
vp9shared.h:140
Generated on Tue May 22 2018 07:06:43 for FFmpeg by
1.8.13