diff options
Diffstat (limited to 'libavcodec/mpegvideo.h')
-rw-r--r-- | libavcodec/mpegvideo.h | 26 |
1 files changed, 18 insertions, 8 deletions
diff --git a/libavcodec/mpegvideo.h b/libavcodec/mpegvideo.h index 95830bb949..39f23222d3 100644 --- a/libavcodec/mpegvideo.h +++ b/libavcodec/mpegvideo.h @@ -3,20 +3,20 @@ * Copyright (c) 2000, 2001, 2002 Fabrice Bellard * Copyright (c) 2002-2004 Michael Niedermayer * - * This file is part of Libav. + * This file is part of FFmpeg. * - * Libav is free software; you can redistribute it and/or + * FFmpeg is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2.1 of the License, or (at your option) any later version. * - * Libav is distributed in the hope that it will be useful, + * FFmpeg is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public - * License along with Libav; if not, write to the Free Software + * License along with FFmpeg; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ @@ -36,6 +36,7 @@ #include "parser.h" #include "mpeg12data.h" #include "rl.h" +#include "libavutil/timecode.h" #include "libavutil/opt.h" @@ -57,7 +58,7 @@ enum OutputFormat { #define MAX_FCODE 7 #define MAX_MV 2048 -#define MAX_THREADS 16 +#define MAX_THREADS 32 #define MAX_PICTURE_COUNT 32 @@ -126,10 +127,11 @@ typedef struct Picture{ int pic_id; /**< h264 pic_num (short -> no wrap version of pic_num, pic_num & max_pic_num; long -> long_pic_num) */ int long_ref; ///< 1->long term reference 0->short term reference - int ref_poc[2][2][32]; ///< h264 POCs of the frames used as reference (FIXME need per slice) + int ref_poc[2][2][32]; ///< h264 POCs of the frames/fields used as reference (FIXME need per slice) int ref_count[2][2]; ///< number of entries in ref_poc (FIXME need per slice) int mbaff; ///< h264 1 -> MBAFF frame 0-> not MBAFF int field_picture; ///< whether or not the picture was encoded in separate fields + int sync; ///< has been decoded after a keyframe int mb_var_sum; ///< sum of MB variance for current frame int mc_mb_var_sum; ///< motion compensated MB variance for current frame @@ -338,6 +340,7 @@ typedef struct MpegEncContext { int *lambda_table; int adaptive_quant; ///< use adaptive quantization int dquant; ///< qscale difference to prev qscale + int closed_gop; ///< MPEG1/2 GOP is closed int pict_type; ///< AV_PICTURE_TYPE_I, AV_PICTURE_TYPE_P, AV_PICTURE_TYPE_B, ... int last_pict_type; //FIXME removes int last_non_b_pict_type; ///< used for mpeg4 gmc b-frames & ratecontrol @@ -449,9 +452,11 @@ typedef struct MpegEncContext { /** precomputed matrix (combine qscale and DCT renorm) */ int (*q_intra_matrix)[64]; + int (*q_chroma_intra_matrix)[64]; int (*q_inter_matrix)[64]; /** identical to the above but for MMX & these are not permutated, second 64 entries are bias*/ uint16_t (*q_intra_matrix16)[2][64]; + uint16_t (*q_chroma_intra_matrix16)[2][64]; uint16_t (*q_inter_matrix16)[2][64]; /* noise reduction */ @@ -464,6 +469,7 @@ typedef struct MpegEncContext { /* bit rate control */ int64_t total_bits; int frame_bits; ///< bits used for the current frame + int stuffing_bits; ///< bits used for stuffing int next_lambda; ///< next lambda used for retrying to encode a frame RateControlContext rc_context; ///< contains stuff only accessed in ratecontrol.c @@ -594,6 +600,7 @@ typedef struct MpegEncContext { struct MJpegContext *mjpeg_ctx; int mjpeg_vsample[3]; ///< vertical sampling factors, default = {2, 1, 1} int mjpeg_hsample[3]; ///< horizontal sampling factors, default = {2, 1, 1} + int esc_pos; /* MSMPEG4 specific */ int mv_table_index; @@ -658,6 +665,9 @@ typedef struct MpegEncContext { /* RTP specific */ int rtp_mode; + char *tc_opt_str; ///< timecode option string + AVTimecode tc; ///< timecode context + uint8_t *ptr_lastgob; int swap_uv; //vcr2 codec is an MPEG-2 variant with U and V swapped DCTELEM (*pblocks[12])[64]; @@ -755,7 +765,7 @@ void ff_MPV_frame_end(MpegEncContext *s); int ff_MPV_encode_init(AVCodecContext *avctx); int ff_MPV_encode_end(AVCodecContext *avctx); int ff_MPV_encode_picture(AVCodecContext *avctx, AVPacket *pkt, - const AVFrame *frame, int *got_packet); + AVFrame *frame, int *got_packet); void ff_MPV_encode_init_x86(MpegEncContext *s); void ff_MPV_common_init_x86(MpegEncContext *s); void ff_MPV_common_init_axp(MpegEncContext *s); @@ -807,7 +817,7 @@ extern const enum PixelFormat ff_pixfmt_list_420[]; extern const enum PixelFormat ff_hwaccel_pixfmt_list_420[]; static inline void ff_update_block_index(MpegEncContext *s){ - const int block_size = 8; + const int block_size= 8 >> s->avctx->lowres; s->block_index[0]+=2; s->block_index[1]+=2; |