FFmpeg
libavcodec
svq1enc.h
1
/*
2
* SVQ1 encoder
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_SVQ1ENC_H
22
#define AVCODEC_SVQ1ENC_H
23
24
#include <stdint.h>
25
26
#include "
libavutil/frame.h
"
27
28
#include "
avcodec.h
"
29
#include "hpeldsp.h"
30
#include "me_cmp.h"
31
#include "
mpegvideo.h
"
32
#include "
put_bits.h
"
33
34
typedef
struct
SVQ1EncContext
{
35
/* FIXME: Needed for motion estimation, should not be used for anything
36
* else, the idea is to make the motion estimation eventually independent
37
* of MpegEncContext, so this will be removed then. */
38
MpegEncContext
m;
39
AVCodecContext
*avctx;
40
MECmpContext
mecc;
41
HpelDSPContext
hdsp;
42
AVFrame
*current_picture;
43
AVFrame
*last_picture;
44
PutBitContext
pb;
45
46
/* Some compression statistics */
47
enum
AVPictureType
pict_type;
48
int
quality;
49
50
/* why ooh why this sick breadth first order,
51
* everything is slower and more complex */
52
PutBitContext
reorder_pb[6];
53
54
int
frame_width;
55
int
frame_height;
56
57
/* Y plane block dimensions */
58
int
y_block_width;
59
int
y_block_height;
60
61
/* U & V plane (C planes) block dimensions */
62
int
c_block_width;
63
int
c_block_height;
64
65
DECLARE_ALIGNED(16, int16_t, encoded_block_levels)[6][7][256];
66
67
uint16_t *mb_type;
68
uint32_t *dummy;
69
int16_t (*motion_val8[3])[2];
70
int16_t (*motion_val16[3])[2];
71
72
int64_t rd_total;
73
74
uint8_t *scratchbuf;
75
76
int
motion_est;
77
78
int (*ssd_int8_vs_int16)(
const
int8_t *pix1,
const
int16_t *pix2,
79
intptr_t size);
80
}
SVQ1EncContext
;
81
82
void
ff_svq1enc_init_ppc(
SVQ1EncContext
*c);
83
void
ff_svq1enc_init_x86(
SVQ1EncContext
*c);
84
85
#endif
/* AVCODEC_SVQ1ENC_H */
AVFrame
This structure describes decoded (raw) audio or video data.
Definition:
frame.h:218
PutBitContext
Definition:
put_bits.h:35
mpegvideo.h
mpegvideo header.
frame.h
reference-counted frame API
HpelDSPContext
Half-pel DSP context.
Definition:
hpeldsp.h:45
avcodec.h
Libavcodec external API header.
AVCodecContext
main external API structure.
Definition:
avcodec.h:1518
AVPictureType
AVPictureType
Definition:
avutil.h:272
MpegEncContext
MpegEncContext.
Definition:
mpegvideo.h:81
SVQ1EncContext
Definition:
svq1enc.h:34
MECmpContext
Definition:
me_cmp.h:53
put_bits.h
bitstream writer API
Generated by
1.8.12