FFmpeg
|
H.264 / AVC / MPEG-4 part10 reference picture handling. More...
#include <inttypes.h>
#include "libavutil/avassert.h"
#include "internal.h"
#include "avcodec.h"
#include "h264.h"
#include "h264dec.h"
#include "golomb.h"
#include "mpegutils.h"
#include <assert.h>
Go to the source code of this file.
Functions | |
static void | pic_as_field (H264Ref *pic, const int parity) |
static void | ref_from_h264pic (H264Ref *dst, H264Picture *src) |
static int | split_field_copy (H264Ref *dest, H264Picture *src, int parity, int id_add) |
static int | build_def_list (H264Ref *def, int def_len, H264Picture *const *in, int len, int is_long, int sel) |
static int | add_sorted (H264Picture **sorted, H264Picture *const *src, int len, int limit, int dir) |
static int | mismatches_ref (const H264Context *h, const H264Picture *pic) |
static void | h264_initialise_ref_list (H264Context *h, H264SliceContext *sl) |
static void | print_short_term (const H264Context *h) |
print short term list More... | |
static void | print_long_term (const H264Context *h) |
print long term list More... | |
static int | pic_num_extract (const H264Context *h, int pic_num, int *structure) |
Extract structure information about the picture described by pic_num in the current decoding context (frame or field). More... | |
static void | h264_fill_mbaff_ref_list (H264SliceContext *sl) |
int | ff_h264_build_ref_list (H264Context *h, H264SliceContext *sl) |
int | ff_h264_decode_ref_pic_list_reordering (H264SliceContext *sl, void *logctx) |
static int | unreference_pic (H264Context *h, H264Picture *pic, int refmask) |
Mark a picture as no longer needed for reference. More... | |
static H264Picture * | find_short (H264Context *h, int frame_num, int *idx) |
Find a H264Picture in the short term reference list by frame number. More... | |
static void | remove_short_at_index (H264Context *h, int i) |
Remove a picture from the short term reference list by its index in that list. More... | |
static H264Picture * | remove_short (H264Context *h, int frame_num, int ref_mask) |
static H264Picture * | remove_long (H264Context *h, int i, int ref_mask) |
Remove a picture from the long term reference list by its index in that list. More... | |
void | ff_h264_remove_all_refs (H264Context *h) |
static void | generate_sliding_window_mmcos (H264Context *h) |
int | ff_h264_execute_ref_pic_marking (H264Context *h) |
Execute the reference picture marking (memory management control operations). More... | |
int | ff_h264_decode_ref_pic_marking (H264SliceContext *sl, GetBitContext *gb, const H2645NAL *nal, void *logctx) |
H.264 / AVC / MPEG-4 part10 reference picture handling.
Definition in file h264_refs.c.
Definition at line 40 of file h264_refs.c.
Referenced by ff_h264_build_ref_list(), and split_field_copy().
|
static |
Definition at line 52 of file h264_refs.c.
Referenced by ff_h264_build_ref_list(), and split_field_copy().
|
static |
Definition at line 62 of file h264_refs.c.
Referenced by build_def_list().
|
static |
Definition at line 78 of file h264_refs.c.
Referenced by h264_initialise_ref_list().
|
static |
Definition at line 104 of file h264_refs.c.
Referenced by h264_initialise_ref_list().
|
static |
Definition at line 127 of file h264_refs.c.
Referenced by h264_initialise_ref_list().
|
static |
Definition at line 135 of file h264_refs.c.
Referenced by ff_h264_build_ref_list().
|
static |
print short term list
Definition at line 220 of file h264_refs.c.
Referenced by ff_h264_build_ref_list(), and ff_h264_execute_ref_pic_marking().
|
static |
print long term list
Definition at line 236 of file h264_refs.c.
Referenced by ff_h264_build_ref_list(), and ff_h264_execute_ref_pic_marking().
|
static |
Extract structure information about the picture described by pic_num in the current decoding context (frame or field).
Note that pic_num is picture number without wrapping (so, 0<=pic_num<max_pic_num).
pic_num | picture number for which to extract structure information |
structure | one of PICT_XXX describing structure of picture with pic_num |
Definition at line 261 of file h264_refs.c.
Referenced by ff_h264_build_ref_list(), and ff_h264_execute_ref_pic_marking().
|
static |
Definition at line 274 of file h264_refs.c.
Referenced by ff_h264_build_ref_list().
int ff_h264_build_ref_list | ( | H264Context * | h, |
H264SliceContext * | sl | ||
) |
Definition at line 299 of file h264_refs.c.
Referenced by h264_slice_init().
int ff_h264_decode_ref_pic_list_reordering | ( | H264SliceContext * | sl, |
void * | logctx | ||
) |
Definition at line 421 of file h264_refs.c.
Referenced by h264_slice_header_parse().
|
inlinestatic |
Mark a picture as no longer needed for reference.
The refmask argument allows unreferencing of individual fields or the whole frame. If the picture becomes entirely unreferenced, but is being held for display purposes, it is marked as such.
refmask | mask of fields to unreference; the mask is bitwise anded with the reference marking of pic |
Definition at line 467 of file h264_refs.c.
Referenced by ff_h264_remove_all_refs(), remove_long(), and remove_short().
|
static |
Find a H264Picture in the short term reference list by frame number.
frame_num | frame number to search for |
idx | the index into h->short_ref where returned picture is found undefined if no picture found. |
Definition at line 490 of file h264_refs.c.
Referenced by ff_h264_execute_ref_pic_marking(), and remove_short().
|
static |
Remove a picture from the short term reference list by its index in that list.
This does no checking on the provided index; it is assumed to be valid. Other list entries are shifted down.
i | index into h->short_ref of picture to remove. |
Definition at line 512 of file h264_refs.c.
Referenced by ff_h264_execute_ref_pic_marking(), and remove_short().
|
static |
Definition at line 524 of file h264_refs.c.
Referenced by ff_h264_execute_ref_pic_marking().
|
static |
Remove a picture from the long term reference list by its index in that list.
Definition at line 546 of file h264_refs.c.
Referenced by ff_h264_execute_ref_pic_marking(), and ff_h264_remove_all_refs().
void ff_h264_remove_all_refs | ( | H264Context * | h | ) |
Definition at line 563 of file h264_refs.c.
Referenced by h264_decode_end(), and idr().
|
static |
Definition at line 586 of file h264_refs.c.
Referenced by ff_h264_execute_ref_pic_marking().
int ff_h264_execute_ref_pic_marking | ( | H264Context * | h | ) |
Execute the reference picture marking (memory management control operations).
Definition at line 608 of file h264_refs.c.
Referenced by ff_h264_field_end(), ff_h264_update_thread_context(), and h264_field_start().
int ff_h264_decode_ref_pic_marking | ( | H264SliceContext * | sl, |
GetBitContext * | gb, | ||
const H2645NAL * | nal, | ||
void * | logctx | ||
) |
Definition at line 832 of file h264_refs.c.
Referenced by h264_slice_header_parse().