FFmpeg
Main Page
Related Pages
Modules
Data Structures
Files
Examples
File List
Globals
•
All
Data Structures
Files
Functions
Variables
Typedefs
Enumerations
Enumerator
Macros
Groups
Pages
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 FFmpeg.
6
*
7
* FFmpeg 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
* FFmpeg 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 FFmpeg; 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
;
/**< some temporary storage for the panscan */
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
;
///< MPEG-2 specific framerate modificator
43
int
sync
;
///< Did we reach a sync point like a GOP/SEQ/KEYFrame?
44
int
tmpgexs
;
45
int
extradata_decoded
;
46
}
Mpeg1Context
;
47
48
extern
uint8_t
ff_mpeg12_static_rl_table_store
[2][2][2*
MAX_RUN
+
MAX_LEVEL
+ 3];
49
50
void
ff_mpeg12_common_init
(
MpegEncContext
*s);
51
void
ff_mpeg12_init_vlcs
(
void
);
52
53
static
inline
int
decode_dc
(
GetBitContext
*gb,
int
component
)
54
{
55
int
code,
diff
;
56
57
if
(component == 0) {
58
code =
get_vlc2
(gb, ff_dc_lum_vlc.
table
,
DC_VLC_BITS
, 2);
59
}
else
{
60
code =
get_vlc2
(gb, ff_dc_chroma_vlc.
table
,
DC_VLC_BITS
, 2);
61
}
62
if
(code < 0){
63
av_log
(
NULL
,
AV_LOG_ERROR
,
"invalid dc code at\n"
);
64
return
0xffff;
65
}
66
if
(code == 0) {
67
diff = 0;
68
}
else
{
69
diff =
get_xbits
(gb, code);
70
}
71
return
diff
;
72
}
73
74
extern
int
ff_mpeg1_decode_block_intra
(
MpegEncContext
*s,
DCTELEM
*
block
,
int
n);
75
76
#endif
/* AVCODEC_MPEG12_H */
Generated on Sat May 25 2013 03:58:37 for FFmpeg by
1.8.2