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 #include "mpeg4videodsp.h"
31 
32 
33 typedef struct Mpeg4DecContext {
35 
36  /// number of bits to represent the fractional part of time
38  int shape;
44  int sprite_offset[2][2]; ///< sprite offset[isChroma][isMVY]
45  int sprite_delta[2][2]; ///< sprite_delta [isY][isMVY]
46  /// sprite trajectory points
47  uint16_t sprite_traj[4][2];
48  /// sprite shift [isChroma]
49  int sprite_shift[2];
50 
51  // reversible vlc
52  int rvlc;
53  /// could this stream contain resync markers
55  /// time distance of first I -> B, used for interlaced B-frames
56  int t_frame;
57 
58  int new_pred;
61 
62  /// QP above which the ac VLC should be used for intra dc
64 
65  /* bug workarounds */
70 
71  int vo_type;
72 
73  /// flag for having shown the warning about invalid Divx B-frames
75  /** does the stream contain the low_delay flag,
76  * used to work around buggy encoders. */
81 
82  int rgb;
83 
85 
86  int32_t block32[12][64];
87  // 0 = DCT, 1 = DPCM top to bottom scan, -1 = DPCM bottom to top scan
89  int16_t dpcm_macroblock[3][256];
91 
93  int header, int parse_only);
94 void ff_mpeg4_decode_studio(MpegEncContext *s, uint8_t *dest_y, uint8_t *dest_cb,
95  uint8_t *dest_cr, int block_size, int uvlinesize,
96  int dct_linesize, int dct_offset);
98  uint8_t *dest_y, uint8_t *dest_cb, uint8_t *dest_cr,
99  uint8_t *const *ref_picture);
104 void ff_mpeg4_pred_ac(MpegEncContext *s, int16_t *block, int n,
105  int dir);
106 int ff_mpeg4_frame_end(AVCodecContext *avctx, const uint8_t *buf, int buf_size);
107 
108 
109 #endif
Mpeg4DecContext::sprite_warping_accuracy
int sprite_warping_accuracy
Definition: mpeg4videodec.h:41
Mpeg4DecContext::mdsp
Mpeg4VideoDSPContext mdsp
Definition: mpeg4videodec.h:84
Mpeg4DecContext::vol_sprite_usage
int vol_sprite_usage
Definition: mpeg4videodec.h:39
Mpeg4DecContext::showed_packed_warning
int showed_packed_warning
flag for having shown the warning about invalid Divx B-frames
Definition: mpeg4videodec.h:74
Mpeg4DecContext::rvlc
int rvlc
Definition: mpeg4videodec.h:52
Mpeg4VideoDSPContext
Definition: mpeg4videodsp.h:28
Mpeg4DecContext::new_pred
int new_pred
Definition: mpeg4videodec.h:58
mpegvideo.h
ff_mpeg4_decode_partitions
int ff_mpeg4_decode_partitions(Mpeg4DecContext *ctx)
Decode the first and second partition.
Definition: mpeg4videodec.c:1224
GetBitContext
Definition: get_bits.h:107
Mpeg4DecContext::dpcm_direction
int dpcm_direction
Definition: mpeg4videodec.h:88
Mpeg4DecContext::sprite_brightness_change
int sprite_brightness_change
Definition: mpeg4videodec.h:40
s
#define s(width, name)
Definition: cbs_vp9.c:256
Mpeg4DecContext::cplx_estimation_trash_b
int cplx_estimation_trash_b
Definition: mpeg4videodec.h:80
ctx
AVFormatContext * ctx
Definition: movenc.c:48
get_bits.h
Mpeg4DecContext::sprite_offset
int sprite_offset[2][2]
sprite offset[isChroma][isMVY]
Definition: mpeg4videodec.h:44
ff_mpeg4_workaround_bugs
int ff_mpeg4_workaround_bugs(AVCodecContext *avctx)
Definition: mpeg4videodec.c:2981
Mpeg4DecContext::rgb
int rgb
Definition: mpeg4videodec.h:82
Mpeg4DecContext::shape
int shape
Definition: mpeg4videodec.h:38
Mpeg4DecContext::cplx_estimation_trash_i
int cplx_estimation_trash_i
Definition: mpeg4videodec.h:78
Mpeg4DecContext
Definition: mpeg4videodec.h:33
Mpeg4DecContext::scalability
int scalability
Definition: mpeg4videodec.h:60
ff_mpeg4_mcsel_motion
void ff_mpeg4_mcsel_motion(MpegEncContext *s, uint8_t *dest_y, uint8_t *dest_cb, uint8_t *dest_cr, uint8_t *const *ref_picture)
Definition: mpeg4videodec.c:231
Mpeg4DecContext::sprite_delta
int sprite_delta[2][2]
sprite_delta [isY][isMVY]
Definition: mpeg4videodec.h:45
Mpeg4DecContext::t_frame
int t_frame
time distance of first I -> B, used for interlaced B-frames
Definition: mpeg4videodec.h:56
Mpeg4DecContext::divx_version
int divx_version
Definition: mpeg4videodec.h:66
ff_mpeg4_decode_video_packet_header
int ff_mpeg4_decode_video_packet_header(Mpeg4DecContext *ctx)
Decode the next video packet.
Definition: mpeg4videodec.c:692
Mpeg4DecContext::lavc_build
int lavc_build
Definition: mpeg4videodec.h:69
Mpeg4DecContext::sprite_shift
int sprite_shift[2]
sprite shift [isChroma]
Definition: mpeg4videodec.h:49
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:793
Mpeg4DecContext::sprite_traj
uint16_t sprite_traj[4][2]
sprite trajectory points
Definition: mpeg4videodec.h:47
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:3490
Mpeg4DecContext::cplx_estimation_trash_p
int cplx_estimation_trash_p
Definition: mpeg4videodec.h:79
Mpeg4DecContext::time_increment_bits
int time_increment_bits
number of bits to represent the fractional part of time
Definition: mpeg4videodec.h:37
Mpeg4DecContext::num_sprite_warping_points
int num_sprite_warping_points
Definition: mpeg4videodec.h:42
ff_mpeg4_frame_end
int ff_mpeg4_frame_end(AVCodecContext *avctx, const uint8_t *buf, int buf_size)
Definition: mpeg4videodec.c:3648
Mpeg4DecContext::block32
int32_t block32[12][64]
Definition: mpeg4videodec.h:86
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:77
AVCodecContext
main external API structure.
Definition: avcodec.h:426
Mpeg4DecContext::m
MpegEncContext m
Definition: mpeg4videodec.h:34
mpeg4videodsp.h
Mpeg4DecContext::resync_marker
int resync_marker
could this stream contain resync markers
Definition: mpeg4videodec.h:54
Mpeg4DecContext::enhancement_type
int enhancement_type
Definition: mpeg4videodec.h:59
Mpeg4DecContext::dpcm_macroblock
int16_t dpcm_macroblock[3][256]
Definition: mpeg4videodec.h:89
Mpeg4DecContext::real_sprite_warping_points
int real_sprite_warping_points
Definition: mpeg4videodec.h:43
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:67
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:246
Mpeg4DecContext::xvid_build
int xvid_build
Definition: mpeg4videodec.h:68
ff_mpeg4_pred_ac
void ff_mpeg4_pred_ac(MpegEncContext *s, int16_t *block, int n, int dir)
Predict the ac.
Definition: mpeg4videodec.c:314
MpegEncContext
MpegEncContext.
Definition: mpegvideo.h:67
Mpeg4DecContext::intra_dc_threshold
int intra_dc_threshold
QP above which the ac VLC should be used for intra dc.
Definition: mpeg4videodec.h:63
Mpeg4DecContext::vo_type
int vo_type
Definition: mpeg4videodec.h:71