Main Page
Related Pages
Modules
Data Structures
Files
Examples
File List
Globals
libavcodec
mpeg12.h
Go to the documentation of this file.
1
/*
2
* MPEG1/2 common code
3
* Copyright (c) 2007 Aurelien Jacobs <aurel@gnuage.org>
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_MPEG12_H
23
#define AVCODEC_MPEG12_H
24
25
#include "
mpegvideo.h
"
26
27
#define DC_VLC_BITS 9
28
#define TEX_VLC_BITS 9
29
30
extern
VLC
ff_dc_lum_vlc
;
31
extern
VLC
ff_dc_chroma_vlc
;
32
33
typedef
struct
Mpeg1Context
{
34
MpegEncContext
mpeg_enc_ctx
;
35
int
mpeg_enc_ctx_allocated
;
/* true if decoding context allocated */
36
int
repeat_field
;
/* true if we must repeat the field */
37
AVPanScan
pan_scan
;
38
int
slice_count
;
39
int
swap_uv
;
//indicate VCR2
40
int
save_aspect_info
;
41
int
save_width
,
save_height
,
save_progressive_seq
;
42
AVRational
frame_rate_ext
;
43
int
sync
;
44
int
closed_gop
;
45
}
Mpeg1Context
;
46
47
extern
uint8_t
ff_mpeg12_static_rl_table_store
[2][2][2*
MAX_RUN
+
MAX_LEVEL
+ 3];
48
49
void
ff_mpeg12_common_init
(
MpegEncContext
*s);
50
void
ff_mpeg12_init_vlcs
(
void
);
51
52
static
inline
int
decode_dc
(
GetBitContext
*gb,
int
component)
53
{
54
int
code, diff;
55
56
if
(component == 0) {
57
code =
get_vlc2
(gb, ff_dc_lum_vlc.
table
,
DC_VLC_BITS
, 2);
58
}
else
{
59
code =
get_vlc2
(gb, ff_dc_chroma_vlc.
table
,
DC_VLC_BITS
, 2);
60
}
61
if
(code < 0){
62
av_log
(
NULL
,
AV_LOG_ERROR
,
"invalid dc code at\n"
);
63
return
0xffff;
64
}
65
if
(code == 0) {
66
diff = 0;
67
}
else
{
68
diff =
get_xbits
(gb, code);
69
}
70
return
diff;
71
}
72
73
extern
int
ff_mpeg1_decode_block_intra
(
MpegEncContext
*s,
DCTELEM
*
block
,
int
n);
74
75
#endif
/* AVCODEC_MPEG12_H */