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 {
35  int mpeg_enc_ctx_allocated; /* true if decoding context allocated */
36  int repeat_field; /* true if we must repeat the field */
39  int swap_uv;//indicate VCR2
43  int sync;
44  int closed_gop;
46 } Mpeg1Context;
47 
49 
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 
75 
76 #endif /* AVCODEC_MPEG12_H */
int sync
Did we reach a sync point like a GOP/SEQ/KEYFrame?
Definition: mpeg12.h:43
int save_aspect_info
Definition: mpeg12.h:40
#define DC_VLC_BITS
Definition: mpeg12.h:27
mpegvideo header.
uint8_t ff_mpeg12_static_rl_table_store[2][2][2 *MAX_RUN+MAX_LEVEL+3]
Definition: mpeg12.c:603
uint8_t
void ff_mpeg12_common_init(MpegEncContext *s)
Definition: mpeg12.c:649
#define MAX_LEVEL
Definition: rl.h:35
int extradata_decoded
Definition: mpeg12.h:45
void av_log(void *avcl, int level, const char *fmt,...)
Definition: log.c:146
static int decode_dc(GetBitContext *gb, int component)
Definition: mpeg12.h:53
int repeat_field
Definition: mpeg12.h:36
Definition: get_bits.h:63
static DCTELEM block[64]
Definition: dct-test.c:169
int save_height
Definition: mpeg12.h:41
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:515
int mpeg_enc_ctx_allocated
Definition: mpeg12.h:35
int save_width
Definition: mpeg12.h:41
NULL
Definition: eval.c:52
VLC ff_dc_lum_vlc
Definition: mpeg12.c:669
AVRational frame_rate_ext
MPEG-2 specific framerate modificator.
Definition: mpeg12.h:42
static int get_xbits(GetBitContext *s, int n)
read mpeg1 dc style vlc (sign bit + mantisse with no MSB).
Definition: get_bits.h:210
rational number numerator/denominator
Definition: rational.h:43
int save_progressive_seq
Definition: mpeg12.h:41
int closed_gop
GOP is closed.
Definition: mpeg12.h:44
short DCTELEM
Definition: dsputil.h:39
struct Mpeg1Context Mpeg1Context
Pan Scan area.
Definition: avcodec.h:788
MpegEncContext.
Definition: mpegvideo.h:211
#define MAX_RUN
Definition: rl.h:34
int ff_mpeg1_decode_block_intra(MpegEncContext *s, DCTELEM *block, int n)
Definition: mpeg12.c:161
int swap_uv
Definition: mpeg12.h:39
void ff_mpeg12_init_vlcs(void)
Definition: mpeg12.c:677
VLC ff_dc_chroma_vlc
Definition: mpeg12.c:670
VLC_TYPE(* table)[2]
code, bits
Definition: get_bits.h:65
MpegEncContext mpeg_enc_ctx
Definition: mpeg12.h:34
int slice_count
Definition: mpeg12.h:38
AVPanScan pan_scan
some temporary storage for the panscan
Definition: mpeg12.h:37