Libav
Main Page
Related Pages
Modules
Data Structures
Files
Examples
File List
Globals
libavcodec
rv34.h
Go to the documentation of this file.
1
/*
2
* RV30/40 decoder common data declarations
3
* Copyright (c) 2007 Mike Melanson, Konstantin Shishkov
4
*
5
* This file is part of Libav.
6
*
7
* Libav 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
* Libav 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 Libav; if not, write to the Free Software
19
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
20
*/
21
27
#ifndef AVCODEC_RV34_H
28
#define AVCODEC_RV34_H
29
30
#include "
avcodec.h
"
31
#include "
mpegvideo.h
"
32
33
#include "
h264pred.h
"
34
#include "
rv34dsp.h
"
35
36
#define MB_TYPE_SEPARATE_DC 0x01000000
37
#define IS_SEPARATE_DC(a) ((a) & MB_TYPE_SEPARATE_DC)
38
42
enum
RV40BlockTypes
{
43
RV34_MB_TYPE_INTRA
,
44
RV34_MB_TYPE_INTRA16x16
,
45
RV34_MB_P_16x16
,
46
RV34_MB_P_8x8
,
47
RV34_MB_B_FORWARD
,
48
RV34_MB_B_BACKWARD
,
49
RV34_MB_SKIP
,
50
RV34_MB_B_DIRECT
,
51
RV34_MB_P_16x8
,
52
RV34_MB_P_8x16
,
53
RV34_MB_B_BIDIR
,
54
RV34_MB_P_MIX16x16
,
55
RV34_MB_TYPES
56
};
57
63
typedef
struct
RV34VLC
{
64
VLC
cbppattern
[2];
65
VLC
cbp
[2][4];
66
VLC
first_pattern
[4];
67
VLC
second_pattern
[2];
68
VLC
third_pattern
[2];
69
VLC
coefficient
;
70
}
RV34VLC
;
71
73
typedef
struct
SliceInfo
{
74
int
type
;
75
int
quant
;
76
int
vlc_set
;
77
int
start
,
end
;
78
int
width
;
79
int
height
;
80
int
pts
;
81
}
SliceInfo
;
82
84
typedef
struct
RV34DecContext
{
85
MpegEncContext
s
;
86
RV34DSPContext
rdsp
;
87
int8_t *
intra_types_hist
;
88
int8_t *
intra_types
;
89
int
intra_types_stride
;
90
const
uint8_t
*
luma_dc_quant_i
;
91
const
uint8_t
*
luma_dc_quant_p
;
92
93
RV34VLC
*
cur_vlcs
;
94
H264PredContext
h
;
95
SliceInfo
si
;
96
97
int
*
mb_type
;
98
int
block_type
;
99
int
luma_vlc
;
100
int
chroma_vlc
;
101
int
is16
;
102
int
dmv
[4][2];
103
104
int
rv30
;
105
int
rpr
;
106
107
int
cur_pts
,
last_pts
,
next_pts
;
108
int
scaled_weight
;
109
int
weight1
,
weight2
;
110
int
mv_weight1
,
mv_weight2
;
111
112
uint16_t *
cbp_luma
;
113
uint8_t
*
cbp_chroma
;
114
uint16_t *
deblock_coefs
;
115
117
DECLARE_ALIGNED
(8, uint32_t,
avail_cache
)[3*4];
118
120
uint8_t
*
tmp_b_block_y
[2];
121
uint8_t
*
tmp_b_block_uv
[4];
122
uint8_t
*
tmp_b_block_base
;
123
124
int (*
parse_slice_header
)(
struct
RV34DecContext
*
r
,
GetBitContext
*gb,
SliceInfo
*
si
);
125
int (*
decode_mb_info
)(
struct
RV34DecContext
*
r
);
126
int (*
decode_intra_types
)(
struct
RV34DecContext
*
r
,
GetBitContext
*gb, int8_t *dst);
127
void
(*
loop_filter
)(
struct
RV34DecContext
*
r
,
int
row);
128
}
RV34DecContext
;
129
133
int
ff_rv34_get_start_offset
(
GetBitContext
*gb,
int
blocks);
134
int
ff_rv34_decode_init
(
AVCodecContext
*avctx);
135
int
ff_rv34_decode_frame
(
AVCodecContext
*avctx,
void
*
data
,
int
*got_frame,
AVPacket
*avpkt);
136
int
ff_rv34_decode_end
(
AVCodecContext
*avctx);
137
int
ff_rv34_decode_init_thread_copy
(
AVCodecContext
*avctx);
138
int
ff_rv34_decode_update_thread_context
(
AVCodecContext
*dst,
const
AVCodecContext
*src);
139
140
#endif
/* AVCODEC_RV34_H */
Generated on Tue Mar 1 2016 21:14:45 for Libav by
1.8.4