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
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 */
Mpeg1Context::sync
int sync
Did we reach a sync point like a GOP/SEQ/KEYFrame?
Definition:
mpeg12.h:43
Mpeg1Context::save_aspect_info
int save_aspect_info
Definition:
mpeg12.h:40
DC_VLC_BITS
#define DC_VLC_BITS
Definition:
mpeg12.h:27
mpegvideo.h
mpegvideo header.
ff_mpeg12_static_rl_table_store
uint8_t ff_mpeg12_static_rl_table_store[2][2][2 *MAX_RUN+MAX_LEVEL+3]
Definition:
mpeg12.c:603
ff_mpeg12_common_init
void ff_mpeg12_common_init(MpegEncContext *s)
Definition:
mpeg12.c:649
MAX_LEVEL
#define MAX_LEVEL
Definition:
rl.h:35
Mpeg1Context::extradata_decoded
int extradata_decoded
Definition:
mpeg12.h:45
av_log
void av_log(void *avcl, int level, const char *fmt,...)
Definition:
log.c:140
decode_dc
static int decode_dc(GetBitContext *gb, int component)
Definition:
mpeg12.h:53
Mpeg1Context::repeat_field
int repeat_field
Definition:
mpeg12.h:36
VLC
Definition:
get_bits.h:63
block
static DCTELEM block[64]
Definition:
dct-test.c:189
Mpeg1Context::save_height
int save_height
Definition:
mpeg12.h:41
get_vlc2
static av_always_inline int get_vlc2(GetBitContext *s, VLC_TYPE(*table)[2], int bits, int max_depth)
Parse a vlc code.
Definition:
get_bits.h:481
Mpeg1Context::mpeg_enc_ctx_allocated
int mpeg_enc_ctx_allocated
Definition:
mpeg12.h:35
Mpeg1Context
Definition:
mpeg12.h:33
Mpeg1Context::save_width
int save_width
Definition:
mpeg12.h:41
NULL
NULL
Definition:
eval.c:50
ff_dc_lum_vlc
VLC ff_dc_lum_vlc
Definition:
mpeg12.c:669
Mpeg1Context::frame_rate_ext
AVRational frame_rate_ext
MPEG-2 specific framerate modificator.
Definition:
mpeg12.h:42
get_xbits
static int get_xbits(GetBitContext *s, int n)
read mpeg1 dc style vlc (sign bit + mantisse with no MSB).
Definition:
get_bits.h:210
AV_LOG_ERROR
#define AV_LOG_ERROR
Something went wrong and cannot losslessly be recovered.
Definition:
log.h:111
AVRational
rational number numerator/denominator
Definition:
rational.h:43
Mpeg1Context::save_progressive_seq
int save_progressive_seq
Definition:
mpeg12.h:41
Mpeg1Context::closed_gop
int closed_gop
GOP is closed.
Definition:
mpeg12.h:44
DCTELEM
short DCTELEM
Definition:
dsputil.h:39
Mpeg1Context
struct Mpeg1Context Mpeg1Context
AVPanScan
Pan Scan area.
Definition:
avcodec.h:835
MpegEncContext
MpegEncContext.
Definition:
mpegvideo.h:201
MAX_RUN
#define MAX_RUN
Definition:
rl.h:34
GetBitContext
Definition:
get_bits.h:52
ff_mpeg1_decode_block_intra
int ff_mpeg1_decode_block_intra(MpegEncContext *s, DCTELEM *block, int n)
Definition:
mpeg12.c:161
Mpeg1Context::swap_uv
int swap_uv
Definition:
mpeg12.h:39
ff_mpeg12_init_vlcs
void ff_mpeg12_init_vlcs(void)
Definition:
mpeg12.c:677
ff_dc_chroma_vlc
VLC ff_dc_chroma_vlc
Definition:
mpeg12.c:670
VLC::table
VLC_TYPE(* table)[2]
code, bits
Definition:
get_bits.h:65
Mpeg1Context::mpeg_enc_ctx
MpegEncContext mpeg_enc_ctx
Definition:
mpeg12.h:34
Mpeg1Context::slice_count
int slice_count
Definition:
mpeg12.h:38
Mpeg1Context::pan_scan
AVPanScan pan_scan
some temporary storage for the panscan
Definition:
mpeg12.h:37