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 #include "libavutil/mem_internal.h"
33 
34 typedef struct Mpeg4DecContext {
36 
37  int f_code; ///< forward MV resolution
38  int b_code; ///< backward MV resolution for B-frames
39 
40  /// number of bits to represent the fractional part of time
42  int shape;
48  int sprite_offset[2][2]; ///< sprite offset[isChroma][isMVY]
49  int sprite_delta[2][2]; ///< sprite_delta [isY][isMVY]
50  /// sprite trajectory points
51  uint16_t sprite_traj[4][2];
52  /// sprite shift [isChroma]
53  int sprite_shift[2];
54 
55  // reversible vlc
56  int rvlc;
57  /// could this stream contain resync markers
59  /// time distance of first I -> B, used for interlaced B-frames
60  int t_frame;
61 
62  int new_pred;
65 
67 
68  /// QP above which the ac VLC should be used for intra dc
70 
71  /* bug workarounds */
76  /// Divx 5.01 puts several frames in a single one, this is used to reorder them
78 
79  int vo_type;
80 
81  /// flag for having shown the warning about invalid Divx B-frames
83  /** does the stream contain the low_delay flag,
84  * used to work around buggy encoders. */
89 
90  int rgb;
91 
93 
95  int16_t *block, int n, int qscale);
97  int16_t *block, int n, int qscale);
98 
100  // 0 = DCT, 1 = DPCM top to bottom scan, -1 = DPCM bottom to top scan
102  int16_t dpcm_macroblock[3][256];
104 
107  int header, int parse_only);
108 void ff_mpeg4_decode_studio(MpegEncContext *s, uint8_t *dest_y, uint8_t *dest_cb,
109  uint8_t *dest_cr, int block_size, int uvlinesize,
110  int dct_linesize, int dct_offset);
112  uint8_t *dest_y, uint8_t *dest_cb, uint8_t *dest_cr,
113  uint8_t *const *ref_picture);
118 void ff_mpeg4_pred_ac(MpegEncContext *s, int16_t *block, int n,
119  int dir);
120 int ff_mpeg4_frame_end(AVCodecContext *avctx, const AVPacket *pkt);
121 
122 
123 #endif
Mpeg4DecContext::sprite_warping_accuracy
int sprite_warping_accuracy
Definition: mpeg4videodec.h:45
Mpeg4DecContext::mdsp
Mpeg4VideoDSPContext mdsp
Definition: mpeg4videodec.h:92
ff_mpeg4_frame_end
int ff_mpeg4_frame_end(AVCodecContext *avctx, const AVPacket *pkt)
Definition: mpeg4videodec.c:3727
Mpeg4DecContext::vol_sprite_usage
int vol_sprite_usage
Definition: mpeg4videodec.h:43
mem_internal.h
Mpeg4DecContext::showed_packed_warning
int showed_packed_warning
flag for having shown the warning about invalid Divx B-frames
Definition: mpeg4videodec.h:82
Mpeg4DecContext::rvlc
int rvlc
Definition: mpeg4videodec.h:56
Mpeg4VideoDSPContext
Definition: mpeg4videodsp.h:28
Mpeg4DecContext::new_pred
int new_pred
Definition: mpeg4videodec.h:62
mpegvideo.h
ff_mpeg4_decode_partitions
int ff_mpeg4_decode_partitions(Mpeg4DecContext *ctx)
Decode the first and second partition.
Definition: mpeg4videodec.c:1270
Mpeg4DecContext::b_code
int b_code
backward MV resolution for B-frames
Definition: mpeg4videodec.h:38
Mpeg4DecContext::dct_unquantize_mpeg2_intra
void(* dct_unquantize_mpeg2_intra)(MpegEncContext *s, int16_t *block, int n, int qscale)
Definition: mpeg4videodec.h:94
GetBitContext
Definition: get_bits.h:108
Mpeg4DecContext::dpcm_direction
int dpcm_direction
Definition: mpeg4videodec.h:101
Mpeg4DecContext::sprite_brightness_change
int sprite_brightness_change
Definition: mpeg4videodec.h:44
pkt
AVPacket * pkt
Definition: movenc.c:60
s
#define s(width, name)
Definition: cbs_vp9.c:198
ff_mpeg4_workaround_bugs
void ff_mpeg4_workaround_bugs(AVCodecContext *avctx)
Definition: mpeg4videodec.c:3051
Mpeg4DecContext::cplx_estimation_trash_b
int cplx_estimation_trash_b
Definition: mpeg4videodec.h:88
ctx
AVFormatContext * ctx
Definition: movenc.c:49
get_bits.h
Mpeg4DecContext::bitstream_buffer
AVBufferRef * bitstream_buffer
Divx 5.01 puts several frames in a single one, this is used to reorder them.
Definition: mpeg4videodec.h:77
Mpeg4DecContext::sprite_offset
int sprite_offset[2][2]
sprite offset[isChroma][isMVY]
Definition: mpeg4videodec.h:48
Mpeg4DecContext::rgb
int rgb
Definition: mpeg4videodec.h:90
Mpeg4DecContext::shape
int shape
Definition: mpeg4videodec.h:42
Mpeg4DecContext::cplx_estimation_trash_i
int cplx_estimation_trash_i
Definition: mpeg4videodec.h:86
Mpeg4DecContext
Definition: mpeg4videodec.h:34
Mpeg4DecContext::scalability
int scalability
Definition: mpeg4videodec.h:64
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:240
Mpeg4DecContext::sprite_delta
int sprite_delta[2][2]
sprite_delta [isY][isMVY]
Definition: mpeg4videodec.h:49
Mpeg4DecContext::t_frame
int t_frame
time distance of first I -> B, used for interlaced B-frames
Definition: mpeg4videodec.h:60
Mpeg4DecContext::divx_version
int divx_version
Definition: mpeg4videodec.h:72
ff_mpeg4_decode_video_packet_header
int ff_mpeg4_decode_video_packet_header(Mpeg4DecContext *ctx)
Decode the next video packet.
Definition: mpeg4videodec.c:704
DECLARE_ALIGNED
#define DECLARE_ALIGNED(n, t, v)
Definition: mem_internal.h:104
Mpeg4DecContext::lavc_build
int lavc_build
Definition: mpeg4videodec.h:75
ff_mpeg4_parse_picture_header
int ff_mpeg4_parse_picture_header(Mpeg4DecContext *ctx, GetBitContext *gb, int header, int parse_only)
Decode MPEG-4 headers.
Definition: mpeg4videodec.c:3535
Mpeg4DecContext::sprite_shift
int sprite_shift[2]
sprite shift [isChroma]
Definition: mpeg4videodec.h:53
header
static const uint8_t header[24]
Definition: sdr2.c:68
ff_mpeg4_decode_studio_slice_header
int ff_mpeg4_decode_studio_slice_header(Mpeg4DecContext *ctx)
Decode the next video packet.
Definition: mpeg4videodec.c:803
Mpeg4DecContext::sprite_traj
uint16_t sprite_traj[4][2]
sprite trajectory points
Definition: mpeg4videodec.h:51
Mpeg4DecContext::cplx_estimation_trash_p
int cplx_estimation_trash_p
Definition: mpeg4videodec.h:87
Mpeg4DecContext::time_increment_bits
int time_increment_bits
number of bits to represent the fractional part of time
Definition: mpeg4videodec.h:41
Mpeg4DecContext::f_code
int f_code
forward MV resolution
Definition: mpeg4videodec.h:37
Mpeg4DecContext::num_sprite_warping_points
int num_sprite_warping_points
Definition: mpeg4videodec.h:46
ff_mpeg4_decode_picture_header
int ff_mpeg4_decode_picture_header(MpegEncContext *s)
Definition: mpeg4videodec.c:3692
Mpeg4DecContext::block32
int32_t block32[12][64]
Definition: mpeg4videodec.h:99
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:85
Mpeg4DecContext::dct_unquantize_h263_intra
void(* dct_unquantize_h263_intra)(MpegEncContext *s, int16_t *block, int n, int qscale)
Definition: mpeg4videodec.h:96
AVCodecContext
main external API structure.
Definition: avcodec.h:431
Mpeg4DecContext::m
MpegEncContext m
Definition: mpeg4videodec.h:35
mpeg4videodsp.h
Mpeg4DecContext::resync_marker
int resync_marker
could this stream contain resync markers
Definition: mpeg4videodec.h:58
Mpeg4DecContext::enhancement_type
int enhancement_type
Definition: mpeg4videodec.h:63
Mpeg4DecContext::dpcm_macroblock
int16_t dpcm_macroblock[3][256]
Definition: mpeg4videodec.h:102
Mpeg4DecContext::real_sprite_warping_points
int real_sprite_warping_points
Definition: mpeg4videodec.h:47
AVBufferRef
A reference to a data buffer.
Definition: buffer.h:82
AVPacket
This structure stores compressed data.
Definition: packet.h:512
Mpeg4DecContext::quant_precision
int quant_precision
Definition: mpeg4videodec.h:66
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:73
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:255
Mpeg4DecContext::xvid_build
int xvid_build
Definition: mpeg4videodec.h:74
ff_mpeg4_pred_ac
void ff_mpeg4_pred_ac(MpegEncContext *s, int16_t *block, int n, int dir)
Predict the ac.
Definition: mpeg4videodec.c:323
MpegEncContext
MpegEncContext.
Definition: mpegvideo.h:64
Mpeg4DecContext::intra_dc_threshold
int intra_dc_threshold
QP above which the ac VLC should be used for intra dc.
Definition: mpeg4videodec.h:69
Mpeg4DecContext::vo_type
int vo_type
Definition: mpeg4videodec.h:79