FFmpeg
mpeg4videodec.h
Go to the documentation of this file.
1 /*
2  * MPEG-4 decoder internal header.
3  * Copyright (c) 2000,2001 Fabrice Bellard
4  * Copyright (c) 2002-2010 Michael Niedermayer <michaelni@gmx.at>
5  *
6  * This file is part of FFmpeg.
7  *
8  * FFmpeg is free software; you can redistribute it and/or
9  * modify it under the terms of the GNU Lesser General Public
10  * License as published by the Free Software Foundation; either
11  * version 2.1 of the License, or (at your option) any later version.
12  *
13  * FFmpeg is distributed in the hope that it will be useful,
14  * but WITHOUT ANY WARRANTY; without even the implied warranty of
15  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
16  * Lesser General Public License for more details.
17  *
18  * You should have received a copy of the GNU Lesser General Public
19  * License along with FFmpeg; if not, write to the Free Software
20  * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
21  */
22 
23 #ifndef AVCODEC_MPEG4VIDEODEC_H
24 #define AVCODEC_MPEG4VIDEODEC_H
25 
26 #include <stdint.h>
27 
28 #include "get_bits.h"
29 #include "mpegvideo.h"
30 
31 
32 typedef struct Mpeg4DecContext {
34 
35  /// number of bits to represent the fractional part of time
37  int shape;
41  /// sprite trajectory points
42  uint16_t sprite_traj[4][2];
43  /// sprite shift [isChroma]
44  int sprite_shift[2];
45 
46  // reversible vlc
47  int rvlc;
48  /// could this stream contain resync markers
50  /// time distance of first I -> B, used for interlaced B-frames
51  int t_frame;
52 
53  int new_pred;
56 
57  /// QP above which the ac VLC should be used for intra dc
59 
60  /* bug workarounds */
65 
66  int vo_type;
67 
68  /// flag for having shown the warning about invalid Divx B-frames
70  /** does the stream contain the low_delay flag,
71  * used to work around buggy encoders. */
76 
77  int rgb;
78 
79  int32_t block32[12][64];
80  // 0 = DCT, 1 = DPCM top to bottom scan, -1 = DPCM bottom to top scan
82  int16_t dpcm_macroblock[3][256];
84 
86  int header, int parse_only);
87 void ff_mpeg4_decode_studio(MpegEncContext *s, uint8_t *dest_y, uint8_t *dest_cb,
88  uint8_t *dest_cr, int block_size, int uvlinesize,
89  int dct_linesize, int dct_offset);
94 void ff_mpeg4_pred_ac(MpegEncContext *s, int16_t *block, int n,
95  int dir);
96 int ff_mpeg4_frame_end(AVCodecContext *avctx, const uint8_t *buf, int buf_size);
97 
98 
99 #endif
Mpeg4DecContext::vol_sprite_usage
int vol_sprite_usage
Definition: mpeg4videodec.h:38
Mpeg4DecContext::showed_packed_warning
int showed_packed_warning
flag for having shown the warning about invalid Divx B-frames
Definition: mpeg4videodec.h:69
Mpeg4DecContext::rvlc
int rvlc
Definition: mpeg4videodec.h:47
Mpeg4DecContext::new_pred
int new_pred
Definition: mpeg4videodec.h:53
mpegvideo.h
ff_mpeg4_decode_partitions
int ff_mpeg4_decode_partitions(Mpeg4DecContext *ctx)
Decode the first and second partition.
Definition: mpeg4videodec.c:1049
GetBitContext
Definition: get_bits.h:61
Mpeg4DecContext::dpcm_direction
int dpcm_direction
Definition: mpeg4videodec.h:81
Mpeg4DecContext::sprite_brightness_change
int sprite_brightness_change
Definition: mpeg4videodec.h:39
s
#define s(width, name)
Definition: cbs_vp9.c:256
Mpeg4DecContext::cplx_estimation_trash_b
int cplx_estimation_trash_b
Definition: mpeg4videodec.h:75
ctx
AVFormatContext * ctx
Definition: movenc.c:48
get_bits.h
ff_mpeg4_workaround_bugs
int ff_mpeg4_workaround_bugs(AVCodecContext *avctx)
Definition: mpeg4videodec.c:2809
Mpeg4DecContext::rgb
int rgb
Definition: mpeg4videodec.h:77
Mpeg4DecContext::shape
int shape
Definition: mpeg4videodec.h:37
Mpeg4DecContext::cplx_estimation_trash_i
int cplx_estimation_trash_i
Definition: mpeg4videodec.h:73
Mpeg4DecContext
Definition: mpeg4videodec.h:32
Mpeg4DecContext::scalability
int scalability
Definition: mpeg4videodec.h:55
Mpeg4DecContext::t_frame
int t_frame
time distance of first I -> B, used for interlaced B-frames
Definition: mpeg4videodec.h:51
Mpeg4DecContext::divx_version
int divx_version
Definition: mpeg4videodec.h:61
ff_mpeg4_decode_video_packet_header
int ff_mpeg4_decode_video_packet_header(Mpeg4DecContext *ctx)
Decode the next video packet.
Definition: mpeg4videodec.c:517
Mpeg4DecContext::lavc_build
int lavc_build
Definition: mpeg4videodec.h:64
Mpeg4DecContext::sprite_shift
int sprite_shift[2]
sprite shift [isChroma]
Definition: mpeg4videodec.h:44
header
static const uint8_t header[24]
Definition: sdr2.c:67
ff_mpeg4_decode_studio_slice_header
int ff_mpeg4_decode_studio_slice_header(Mpeg4DecContext *ctx)
Decode the next video packet.
Definition: mpeg4videodec.c:618
Mpeg4DecContext::sprite_traj
uint16_t sprite_traj[4][2]
sprite trajectory points
Definition: mpeg4videodec.h:42
ff_mpeg4_decode_picture_header
int ff_mpeg4_decode_picture_header(Mpeg4DecContext *ctx, GetBitContext *gb, int header, int parse_only)
Decode MPEG-4 headers.
Definition: mpeg4videodec.c:3312
Mpeg4DecContext::cplx_estimation_trash_p
int cplx_estimation_trash_p
Definition: mpeg4videodec.h:74
Mpeg4DecContext::time_increment_bits
int time_increment_bits
number of bits to represent the fractional part of time
Definition: mpeg4videodec.h:36
Mpeg4DecContext::num_sprite_warping_points
int num_sprite_warping_points
Definition: mpeg4videodec.h:40
ff_mpeg4_frame_end
int ff_mpeg4_frame_end(AVCodecContext *avctx, const uint8_t *buf, int buf_size)
Definition: mpeg4videodec.c:3470
Mpeg4DecContext::block32
int32_t block32[12][64]
Definition: mpeg4videodec.h:79
Mpeg4DecContext::vol_control_parameters
int vol_control_parameters
does the stream contain the low_delay flag, used to work around buggy encoders.
Definition: mpeg4videodec.h:72
AVCodecContext
main external API structure.
Definition: avcodec.h:398
Mpeg4DecContext::m
MpegEncContext m
Definition: mpeg4videodec.h:33
Mpeg4DecContext::resync_marker
int resync_marker
could this stream contain resync markers
Definition: mpeg4videodec.h:49
Mpeg4DecContext::enhancement_type
int enhancement_type
Definition: mpeg4videodec.h:54
Mpeg4DecContext::dpcm_macroblock
int16_t dpcm_macroblock[3][256]
Definition: mpeg4videodec.h:82
int32_t
int32_t
Definition: audioconvert.c:56
block
The exact code depends on how similar the blocks are and how related they are to the block
Definition: filter_design.txt:207
Mpeg4DecContext::divx_build
int divx_build
Definition: mpeg4videodec.h:62
ff_mpeg4_decode_studio
void ff_mpeg4_decode_studio(MpegEncContext *s, uint8_t *dest_y, uint8_t *dest_cb, uint8_t *dest_cr, int block_size, int uvlinesize, int dct_linesize, int dct_offset)
Definition: mpeg4videodec.c:75
Mpeg4DecContext::xvid_build
int xvid_build
Definition: mpeg4videodec.h:63
ff_mpeg4_pred_ac
void ff_mpeg4_pred_ac(MpegEncContext *s, int16_t *block, int n, int dir)
Predict the ac.
Definition: mpeg4videodec.c:143
MpegEncContext
MpegEncContext.
Definition: mpegvideo.h:62
Mpeg4DecContext::intra_dc_threshold
int intra_dc_threshold
QP above which the ac VLC should be used for intra dc.
Definition: mpeg4videodec.h:58
Mpeg4DecContext::vo_type
int vo_type
Definition: mpeg4videodec.h:66