FFmpeg
|
#include <limits.h>
#include "config_components.h"
#include "libavutil/avassert.h"
#include "libavutil/emms.h"
#include "libavutil/imgutils.h"
#include "libavutil/internal.h"
#include "libavutil/video_enc_params.h"
#include "avcodec.h"
#include "decode.h"
#include "h263.h"
#include "h264chroma.h"
#include "internal.h"
#include "mpegutils.h"
#include "mpegvideo.h"
#include "mpegvideodec.h"
#include "mpeg4videodec.h"
#include "libavutil/refstruct.h"
#include "thread.h"
#include "threadprogress.h"
#include "wmv2dec.h"
Go to the source code of this file.
Macros | |
#define | NOT_MPEG12_H261 0 |
#define | MAY_BE_MPEG12_H261 1 |
#define | DEFINITELY_MPEG12_H261 2 |
#define | IS_MPEG12_H261(s) (is_mpeg12 == MAY_BE_MPEG12_H261 ? ((s)->out_format <= FMT_H261) : is_mpeg12) |
Functions | |
av_cold int | ff_mpv_decode_init (MpegEncContext *s, AVCodecContext *avctx) |
Initialize the given MpegEncContext for decoding. More... | |
int | ff_mpeg_update_thread_context (AVCodecContext *dst, const AVCodecContext *src) |
update_thread_context for mpegvideo-based decoders. More... | |
av_cold int | ff_mpv_decode_close (AVCodecContext *avctx) |
av_cold int | ff_mpv_common_frame_size_change (MpegEncContext *s) |
static int | alloc_picture (MpegEncContext *s, MPVWorkPicture *dst, int reference) |
static int av_cold | alloc_dummy_frame (MpegEncContext *s, MPVWorkPicture *dst) |
static void | color_frame (AVFrame *frame, int luma) |
int | ff_mpv_alloc_dummy_frames (MpegEncContext *s) |
Ensure that the dummy frames are allocated according to pict_type if necessary. More... | |
int | ff_mpv_frame_start (MpegEncContext *s, AVCodecContext *avctx) |
generic function called after decoding the header and before a frame is decoded. More... | |
void | ff_mpv_frame_end (MpegEncContext *s) |
void | ff_print_debug_info (const MpegEncContext *s, const MPVPicture *p, AVFrame *pict) |
int | ff_mpv_export_qp_table (const MpegEncContext *s, AVFrame *f, const MPVPicture *p, int qp_type) |
void | ff_mpeg_draw_horiz_band (MpegEncContext *s, int y, int h) |
av_cold void | ff_mpeg_flush (AVCodecContext *avctx) |
static int | hpel_motion_lowres (MpegEncContext *s, uint8_t *dest, const uint8_t *src, int field_based, int field_select, int src_x, int src_y, int width, int height, ptrdiff_t stride, int h_edge_pos, int v_edge_pos, int w, int h, const h264_chroma_mc_func *pix_op, int motion_x, int motion_y) |
static av_always_inline void | mpeg_motion_lowres (MpegEncContext *s, uint8_t *dest_y, uint8_t *dest_cb, uint8_t *dest_cr, int field_based, int bottom_field, int field_select, uint8_t *const *ref_picture, const h264_chroma_mc_func *pix_op, int motion_x, int motion_y, int h, int mb_y) |
static void | chroma_4mv_motion_lowres (MpegEncContext *s, uint8_t *dest_cb, uint8_t *dest_cr, uint8_t *const *ref_picture, const h264_chroma_mc_func *pix_op, int mx, int my) |
static void | MPV_motion_lowres (MpegEncContext *s, uint8_t *dest_y, uint8_t *dest_cb, uint8_t *dest_cr, int dir, uint8_t *const *ref_picture, const h264_chroma_mc_func *pix_op) |
motion compensation of a single macroblock More... | |
static int | lowest_referenced_row (MpegEncContext *s, int dir) |
find the lowest MB row referenced in the MVs More... | |
static void | add_dct (MpegEncContext *s, int16_t block[][64], int i, uint8_t *dest, int line_size) |
static void | put_dct (MpegEncContext *s, int16_t *block, int i, uint8_t *dest, int line_size, int qscale) |
static void | add_dequant_dct (MpegEncContext *s, int16_t block[][64], int i, uint8_t *dest, int line_size, int qscale) |
static av_always_inline void | mpv_reconstruct_mb_internal (MpegEncContext *s, int16_t block[12][64], int lowres_flag, int is_mpeg12) |
static av_cold void | debug_dct_coeffs (MPVContext *s, const int16_t block[][64]) |
void | ff_mpv_reconstruct_mb (MPVContext *s, int16_t block[][64]) |
#define NOT_MPEG12_H261 0 |
Definition at line 879 of file mpegvideo_dec.c.
#define MAY_BE_MPEG12_H261 1 |
Definition at line 880 of file mpegvideo_dec.c.
#define DEFINITELY_MPEG12_H261 2 |
Definition at line 881 of file mpegvideo_dec.c.
#define IS_MPEG12_H261 | ( | s | ) | (is_mpeg12 == MAY_BE_MPEG12_H261 ? ((s)->out_format <= FMT_H261) : is_mpeg12) |
av_cold int ff_mpv_decode_init | ( | MpegEncContext * | s, |
AVCodecContext * | avctx | ||
) |
Initialize the given MpegEncContext for decoding.
the changed fields will not depend upon the prior state of the MpegEncContext.
Also initialize the picture pool.
Definition at line 47 of file mpegvideo_dec.c.
Referenced by ff_h263_decode_init(), ff_rv34_decode_init(), ff_vc1_decode_init(), h261_decode_init(), and mpeg_decode_init().
int ff_mpeg_update_thread_context | ( | AVCodecContext * | dst, |
const AVCodecContext * | src | ||
) |
update_thread_context for mpegvideo-based decoders.
It updates the MPVPictures and generic stream-level parameters. If necessary (on dimension changes), it also performs reinitialization.
1 | if a reinitialization happened |
0 | on success if no reinitialization happened |
<0 | error code |
Definition at line 78 of file mpegvideo_dec.c.
Referenced by ff_rv34_decode_update_thread_context().
av_cold int ff_mpv_decode_close | ( | AVCodecContext * | avctx | ) |
Definition at line 125 of file mpegvideo_dec.c.
Referenced by ff_rv34_decode_end(), ff_vc1_decode_end(), mpeg_decode_end(), and wmv2_decode_end().
av_cold int ff_mpv_common_frame_size_change | ( | MpegEncContext * | s | ) |
Definition at line 134 of file mpegvideo_dec.c.
Referenced by ff_h263_decode_frame(), ff_mpeg_update_thread_context(), and ff_rv34_decode_frame().
|
static |
Definition at line 178 of file mpegvideo_dec.c.
Referenced by alloc_dummy_frame(), and ff_mpv_frame_start().
|
static |
Definition at line 230 of file mpegvideo_dec.c.
Referenced by ff_mpv_alloc_dummy_frames().
|
static |
Definition at line 245 of file mpegvideo_dec.c.
Referenced by ff_mpv_alloc_dummy_frames(), and ff_mpv_frame_start().
int ff_mpv_alloc_dummy_frames | ( | MpegEncContext * | s | ) |
Ensure that the dummy frames are allocated according to pict_type if necessary.
Definition at line 263 of file mpegvideo_dec.c.
Referenced by ff_mpv_frame_start(), and mpeg_field_start().
int ff_mpv_frame_start | ( | MpegEncContext * | s, |
AVCodecContext * | avctx | ||
) |
generic function called after decoding the header and before a frame is decoded.
Definition at line 306 of file mpegvideo_dec.c.
Referenced by decode_wmv9(), ff_h263_decode_frame(), ff_rv34_decode_frame(), h261_decode_frame(), mpeg_field_start(), rv10_decode_packet(), and vc1_decode_frame().
void ff_mpv_frame_end | ( | MpegEncContext * | s | ) |
Definition at line 357 of file mpegvideo_dec.c.
Referenced by decode_wmv9(), ff_h263_decode_frame(), ff_rv34_decode_frame(), finish_frame(), h261_decode_frame(), rv10_decode_frame(), rv10_decode_packet(), slice_end(), and vc1_decode_frame().
void ff_print_debug_info | ( | const MpegEncContext * | s, |
const MPVPicture * | p, | ||
AVFrame * | pict | ||
) |
Definition at line 365 of file mpegvideo_dec.c.
Referenced by ff_h263_decode_frame(), finish_frame(), h261_decode_frame(), rv10_decode_frame(), slice_end(), and vc1_decode_frame().
int ff_mpv_export_qp_table | ( | const MpegEncContext * | s, |
AVFrame * | f, | ||
const MPVPicture * | p, | ||
int | qp_type | ||
) |
Definition at line 372 of file mpegvideo_dec.c.
Referenced by ff_h263_decode_frame(), finish_frame(), rv10_decode_frame(), and slice_end().
void ff_mpeg_draw_horiz_band | ( | MpegEncContext * | s, |
int | y, | ||
int | h | ||
) |
Definition at line 403 of file mpegvideo_dec.c.
Referenced by d3d12va_mpeg2_end_frame(), decode_slice(), dxva2_mpeg2_end_frame(), mpeg_decode_slice(), vaapi_mpeg2_end_frame(), and vaapi_mpeg4_end_frame().
av_cold void ff_mpeg_flush | ( | AVCodecContext * | avctx | ) |
Definition at line 411 of file mpegvideo_dec.c.
Referenced by decode_wmv9(), and flush().
|
inlinestatic |
Definition at line 424 of file mpegvideo_dec.c.
Referenced by MPV_motion_lowres().
|
static |
Definition at line 473 of file mpegvideo_dec.c.
Referenced by MPV_motion_lowres().
|
inlinestatic |
Definition at line 615 of file mpegvideo_dec.c.
Referenced by MPV_motion_lowres().
|
inlinestatic |
motion compensation of a single macroblock
s | context |
dest_y | luma destination pointer |
dest_cb | chroma cb/u destination pointer |
dest_cr | chroma cr/v destination pointer |
dir | direction (0->forward, 1->backward) |
ref_picture | array[3] of pointers to the 3 planes of the reference picture |
pix_op | halfpel motion compensation function (average or put normally) the motion vectors are taken from s->mv and the MV type from s->mv_type |
Definition at line 685 of file mpegvideo_dec.c.
Referenced by mpv_reconstruct_mb_internal().
|
static |
find the lowest MB row referenced in the MVs
Definition at line 817 of file mpegvideo_dec.c.
Referenced by mpv_reconstruct_mb_internal().
|
inlinestatic |
Definition at line 853 of file mpegvideo_dec.c.
Referenced by mpv_reconstruct_mb_internal().
|
inlinestatic |
Definition at line 862 of file mpegvideo_dec.c.
Referenced by mpv_reconstruct_mb_internal().
|
inlinestatic |
Definition at line 869 of file mpegvideo_dec.c.
Referenced by mpv_reconstruct_mb_internal().
|
static |
Definition at line 893 of file mpegvideo_dec.c.
Referenced by ff_mpv_reconstruct_mb().
|
static |
Definition at line 1064 of file mpegvideo_dec.c.
Referenced by ff_mpv_reconstruct_mb().
void ff_mpv_reconstruct_mb | ( | MPVContext * | s, |
int16_t | block[][64] | ||
) |
Definition at line 1083 of file mpegvideo_dec.c.
Referenced by decode_slice(), h261_decode_mb(), h261_decode_mb_skipped(), mpeg_decode_slice(), mpeg_er_decode_mb(), and rv10_decode_packet().