Main Page
Related Pages
Modules
Data Structures
Files
Examples
File List
Globals
libavcodec
roqvideo.h
Go to the documentation of this file.
1
/*
2
* Copyright (C) 2003 Mike Melanson
3
* Copyright (C) 2003 Dr. Tim Ferguson
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
22
#ifndef AVCODEC_ROQVIDEO_H
23
#define AVCODEC_ROQVIDEO_H
24
25
#include "
libavutil/lfg.h
"
26
#include "
avcodec.h
"
27
#include "
bytestream.h
"
28
#include "
dsputil.h
"
29
30
typedef
struct
{
31
unsigned
char
y[4];
32
unsigned
char
u,
v
;
33
}
roq_cell
;
34
35
typedef
struct
{
36
int
idx[4];
37
}
roq_qcell
;
38
39
typedef
struct
{
40
int
d[2];
41
}
motion_vect
;
42
43
struct
RoqTempData
;
44
45
typedef
struct
RoqContext
{
46
47
AVCodecContext
*
avctx
;
48
DSPContext
dsp
;
49
AVFrame
frames
[2];
50
AVFrame
*
last_frame
;
51
AVFrame
*
current_frame
;
52
int
first_frame
;
53
54
roq_cell
cb2x2
[256];
55
roq_qcell
cb4x4
[256];
56
57
GetByteContext
gb
;
58
int
width
,
height
;
59
60
/* Encoder only data */
61
AVLFG
randctx
;
62
uint64_t
lambda
;
63
64
motion_vect
*
this_motion4
;
65
motion_vect
*
last_motion4
;
66
67
motion_vect
*
this_motion8
;
68
motion_vect
*
last_motion8
;
69
70
unsigned
int
framesSinceKeyframe
;
71
72
AVFrame
*
frame_to_enc
;
73
uint8_t *
out_buf
;
74
struct
RoqTempData
*
tmpData
;
75
}
RoqContext
;
76
77
#define RoQ_INFO 0x1001
78
#define RoQ_QUAD_CODEBOOK 0x1002
79
#define RoQ_QUAD_VQ 0x1011
80
#define RoQ_SOUND_MONO 0x1020
81
#define RoQ_SOUND_STEREO 0x1021
82
83
#define RoQ_ID_MOT 0x00
84
#define RoQ_ID_FCC 0x01
85
#define RoQ_ID_SLD 0x02
86
#define RoQ_ID_CCC 0x03
87
88
void
ff_apply_vector_2x2
(
RoqContext
*ri,
int
x,
int
y,
roq_cell
*
cell
);
89
void
ff_apply_vector_4x4
(
RoqContext
*ri,
int
x,
int
y,
roq_cell
*
cell
);
90
91
void
ff_apply_motion_4x4
(
RoqContext
*ri,
int
x,
int
y,
int
deltax,
int
deltay);
92
93
void
ff_apply_motion_8x8
(
RoqContext
*ri,
int
x,
int
y,
int
deltax,
int
deltay);
94
95
#endif
/* AVCODEC_ROQVIDEO_H */
AVLFG
Definition:
lfg.h:25
GetByteContext
Definition:
bytestream.h:31
AVFrame
Audio Video Frame.
Definition:
avcodec.h:985
RoqContext::this_motion4
motion_vect * this_motion4
Definition:
roqvideo.h:64
motion_vect
Definition:
roqvideo.h:39
roq_cell
Definition:
roqvideo.h:30
RoqContext
Definition:
roqvideo.h:45
ff_apply_vector_2x2
void ff_apply_vector_2x2(RoqContext *ri, int x, int y, roq_cell *cell)
Definition:
roqvideo.c:41
RoqContext::this_motion8
motion_vect * this_motion8
Definition:
roqvideo.h:67
RoqContext::current_frame
AVFrame * current_frame
Definition:
roqvideo.h:51
RoqContext::last_motion4
motion_vect * last_motion4
Definition:
roqvideo.h:65
RoqContext::width
int width
Definition:
roqvideo.h:58
RoqContext::randctx
AVLFG randctx
Definition:
roqvideo.h:61
RoqContext::frame_to_enc
AVFrame * frame_to_enc
Definition:
roqvideo.h:72
RoqContext::framesSinceKeyframe
unsigned int framesSinceKeyframe
Definition:
roqvideo.h:70
RoqContext::frames
AVFrame frames[2]
Definition:
roqvideo.h:49
roq_qcell
Definition:
roqvideo.h:35
RoqContext::dsp
DSPContext dsp
Definition:
roqvideo.h:48
ff_apply_vector_4x4
void ff_apply_vector_4x4(RoqContext *ri, int x, int y, roq_cell *cell)
Definition:
roqvideo.c:71
RoqContext::cb4x4
roq_qcell cb4x4[256]
Definition:
roqvideo.h:55
RoqContext
struct RoqContext RoqContext
bytestream.h
ff_apply_motion_4x4
void ff_apply_motion_4x4(RoqContext *ri, int x, int y, int deltax, int deltay)
Definition:
roqvideo.c:133
RoqContext::tmpData
struct RoqTempData * tmpData
Definition:
roqvideo.h:74
lfg.h
RoqContext::first_frame
int first_frame
Definition:
roqvideo.h:52
avcodec.h
external API header
AVCodecContext
main external API structure.
Definition:
avcodec.h:1329
RoqContext::gb
GetByteContext gb
Definition:
roqvideo.h:57
RoqContext::lambda
uint64_t lambda
Definition:
roqvideo.h:62
RoqContext::avctx
AVCodecContext * avctx
Definition:
roqvideo.h:47
RoqContext::out_buf
uint8_t * out_buf
Definition:
roqvideo.h:73
RoqTempData
Temporary vars.
Definition:
roqvideoenc.c:223
ff_apply_motion_8x8
void ff_apply_motion_8x8(RoqContext *ri, int x, int y, int deltax, int deltay)
Definition:
roqvideo.c:139
RoqContext::last_motion8
motion_vect * last_motion8
Definition:
roqvideo.h:68
dsputil.h
DSP utils.
RoqContext::cb2x2
roq_cell cb2x2[256]
Definition:
roqvideo.h:54
RoqContext::last_frame
AVFrame * last_frame
Definition:
roqvideo.h:50
cell_s
In the ELBG jargon, a cell is the set of points that are closest to a codebook entry.
Definition:
elbg.c:37
roq_cell::v
unsigned char v
Definition:
roqvideo.h:32
RoqContext::height
int height
Definition:
roqvideo.h:58
DSPContext
DSPContext.
Definition:
dsputil.h:226