FFmpeg
|
#include <limits.h>
#include "libavutil/mem.h"
#include "avcodec.h"
#include "error_resilience.h"
#include "me_cmp.h"
#include "mpegutils.h"
#include "mpegvideo.h"
#include "threadframe.h"
#include "threadprogress.h"
Go to the source code of this file.
Macros | |
#define | MV_FROZEN 8 |
#define | MV_CHANGED 4 |
#define | MV_UNCHANGED 2 |
#define | MV_LISTED 1 |
Functions | |
static void | set_mv_strides (ERContext *s, ptrdiff_t *mv_step, ptrdiff_t *stride) |
static void | put_dc (ERContext *s, uint8_t *dest_y, uint8_t *dest_cb, uint8_t *dest_cr, int mb_x, int mb_y) |
Replace the current MB with a flat dc-only version. More... | |
static void | filter181 (int16_t *data, int width, int height, ptrdiff_t stride) |
static void | guess_dc (ERContext *s, int16_t *dc, int w, int h, ptrdiff_t stride, int is_luma) |
guess the dc of blocks which do not have an undamaged dc More... | |
static void | h_block_filter (ERContext *s, uint8_t *dst, int w, int h, ptrdiff_t stride, int is_luma) |
simple horizontal deblocking filter used for error resilience More... | |
static void | v_block_filter (ERContext *s, uint8_t *dst, int w, int h, ptrdiff_t stride, int is_luma) |
simple vertical deblocking filter used for error resilience More... | |
static av_always_inline void | add_blocklist (int(*blocklist)[2], int *blocklist_length, uint8_t *fixed, int mb_x, int mb_y, int mb_xy) |
static void | guess_mv (ERContext *s) |
static int | is_intra_more_likely (ERContext *s) |
void | ff_er_frame_start (ERContext *s) |
static int | er_supported (ERContext *s) |
void | ff_er_add_slice (ERContext *s, int startx, int starty, int endx, int endy, int status) |
Add a slice. More... | |
void | ff_er_frame_end (ERContext *s, int *decode_error_flags) |
Indicate that a frame has finished decoding and perform error concealment in case it has been enabled and is necessary and supported. More... | |
Error resilience / concealment.
Definition in file error_resilience.c.
#define MV_FROZEN 8 |
Definition at line 376 of file error_resilience.c.
#define MV_CHANGED 4 |
Definition at line 377 of file error_resilience.c.
#define MV_UNCHANGED 2 |
Definition at line 378 of file error_resilience.c.
#define MV_LISTED 1 |
Definition at line 379 of file error_resilience.c.
|
static |
stride | the number of MVs to get to the next row |
mv_step | the number of MVs per row or column in a macroblock |
Definition at line 43 of file error_resilience.c.
Referenced by guess_mv(), h_block_filter(), and v_block_filter().
|
static |
Replace the current MB with a flat dc-only version.
Definition at line 58 of file error_resilience.c.
Referenced by ff_er_frame_end().
|
static |
Definition at line 96 of file error_resilience.c.
Referenced by ff_er_frame_end().
|
static |
guess the dc of blocks which do not have an undamaged dc
w | width in 8 pixel blocks |
h | height in 8 pixel blocks |
Definition at line 137 of file error_resilience.c.
Referenced by ff_er_frame_end().
|
static |
simple horizontal deblocking filter used for error resilience
w | width in 8 pixel blocks |
h | height in 8 pixel blocks |
Definition at line 240 of file error_resilience.c.
Referenced by ff_er_frame_end().
|
static |
simple vertical deblocking filter used for error resilience
w | width in 8 pixel blocks |
h | height in 8 pixel blocks |
Definition at line 309 of file error_resilience.c.
Referenced by ff_er_frame_end().
|
static |
Definition at line 380 of file error_resilience.c.
Referenced by guess_mv().
|
static |
Definition at line 389 of file error_resilience.c.
Referenced by ff_er_frame_end().
|
static |
Definition at line 722 of file error_resilience.c.
Referenced by ff_er_frame_end().
void ff_er_frame_start | ( | ERContext * | s | ) |
Definition at line 791 of file error_resilience.c.
Referenced by ff_mpeg_er_frame_start(), and h264_frame_start().
|
static |
Definition at line 809 of file error_resilience.c.
Referenced by ff_er_add_slice(), and ff_er_frame_end().
void ff_er_add_slice | ( | ERContext * | s, |
int | startx, | ||
int | starty, | ||
int | endx, | ||
int | endy, | ||
int | status | ||
) |
Add a slice.
endx | x component of the last macroblock, can be -1 for the last of the previous line |
status | the status at the end (ER_MV_END, ER_AC_ERROR, ...), it is assumed that no earlier end or error of the same type occurred |
Definition at line 826 of file error_resilience.c.
Referenced by decode_chunks(), decode_slice(), er_add_slice(), ff_mpeg4_decode_partitions(), ff_vc1_decode_blocks(), ff_wmv2_decode_secondary_picture_header(), rv10_decode_packet(), rv34_decode_slice(), slice_decode_thread(), vc1_decode_b_blocks(), vc1_decode_i_blocks(), vc1_decode_i_blocks_adv(), vc1_decode_p_blocks(), and vc1_decode_skip_blocks().
void ff_er_frame_end | ( | ERContext * | s, |
int * | decode_error_flags | ||
) |
Indicate that a frame has finished decoding and perform error concealment in case it has been enabled and is necessary and supported.
s | ERContext in use |
decode_error_flags | pointer where updated decode_error_flags are written if supplied; if not, the new flags are directly applied to the AVFrame whose errors are concealed |
Definition at line 896 of file error_resilience.c.
Referenced by decode_nal_units(), decode_wmv9(), ff_h263_decode_frame(), ff_rv34_decode_frame(), finish_frame(), rv10_decode_frame(), rv10_decode_packet(), slice_end(), and vc1_decode_frame().