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