libavcodec/h264_refs.c File Reference

H.264 / AVC / MPEG4 part10 reference picture handling. More...

#include "libavutil/avassert.h"
#include "internal.h"
#include "dsputil.h"
#include "avcodec.h"
#include "h264.h"
#include "golomb.h"
#include <assert.h>

Go to the source code of this file.

Functions

static void pic_as_field (Picture *pic, const int parity)
static int split_field_copy (Picture *dest, Picture *src, int parity, int id_add)
static int build_def_list (Picture *def, Picture **in, int len, int is_long, int sel)
static int add_sorted (Picture **sorted, Picture **src, int len, int limit, int dir)
int ff_h264_fill_default_ref_list (H264Context *h)
 Fill the default_ref_list.
static void print_short_term (H264Context *h)
 print short term list
static void print_long_term (H264Context *h)
 print long term list
static int pic_num_extract (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).
int ff_h264_decode_ref_pic_list_reordering (H264Context *h)
void ff_h264_fill_mbaff_ref_list (H264Context *h)
static int unreference_pic (H264Context *h, Picture *pic, int refmask)
 Mark a picture as no longer needed for reference.
static Picturefind_short (H264Context *h, int frame_num, int *idx)
 Find a Picture in the short term reference list by frame number.
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.
static Pictureremove_short (H264Context *h, int frame_num, int ref_mask)
static Pictureremove_long (H264Context *h, int i, int ref_mask)
 Remove a picture from the long term reference list by its index in that list.
void ff_h264_remove_all_refs (H264Context *h)
void ff_generate_sliding_window_mmcos (H264Context *h)
int ff_h264_execute_ref_pic_marking (H264Context *h, MMCO *mmco, int mmco_count)
 Execute the reference picture marking (memory management control operations).
int ff_h264_decode_ref_pic_marking (H264Context *h, GetBitContext *gb)


Detailed Description

H.264 / AVC / MPEG4 part10 reference picture handling.

Author:
Michael Niedermayer <michaelni@gmx.at>

Definition in file h264_refs.c.


Function Documentation

static int add_sorted ( Picture **  sorted,
Picture **  src,
int  len,
int  limit,
int  dir 
) [static]

Definition at line 88 of file h264_refs.c.

Referenced by ff_h264_fill_default_ref_list().

static int build_def_list ( Picture def,
Picture **  in,
int  len,
int  is_long,
int  sel 
) [static]

Definition at line 66 of file h264_refs.c.

Referenced by ff_h264_fill_default_ref_list().

void ff_generate_sliding_window_mmcos ( H264Context h  ) 

Definition at line 480 of file h264_refs.c.

Referenced by decode_slice_header(), and ff_h264_decode_ref_pic_marking().

int ff_h264_decode_ref_pic_list_reordering ( H264Context h  ) 

Definition at line 188 of file h264_refs.c.

Referenced by decode_slice_header().

int ff_h264_decode_ref_pic_marking ( H264Context h,
GetBitContext gb 
)

Definition at line 665 of file h264_refs.c.

Referenced by decode_slice_header().

int ff_h264_execute_ref_pic_marking ( H264Context h,
MMCO mmco,
int  mmco_count 
)

Execute the reference picture marking (memory management control operations).

Definition at line 498 of file h264_refs.c.

Referenced by decode_slice_header(), decode_update_thread_context(), and field_end().

int ff_h264_fill_default_ref_list ( H264Context h  ) 

Fill the default_ref_list.

Definition at line 109 of file h264_refs.c.

Referenced by decode_slice_header().

void ff_h264_fill_mbaff_ref_list ( H264Context h  ) 

Definition at line 302 of file h264_refs.c.

Referenced by decode_slice_header().

void ff_h264_remove_all_refs ( H264Context h  ) 

Definition at line 433 of file h264_refs.c.

Referenced by ff_h264_decode_end(), and idr().

static Picture* find_short ( H264Context h,
int  frame_num,
int *  idx 
) [static]

Find a Picture in the short term reference list by frame number.

Parameters:
frame_num frame number to search for
idx the index into h->short_ref where returned picture is found undefined if no picture found.
Returns:
pointer to the found picture, or NULL if no pic with the provided frame number is found

Definition at line 362 of file h264_refs.c.

Referenced by ff_h264_execute_ref_pic_marking(), and remove_short().

static void pic_as_field ( Picture pic,
const int  parity 
) [static]

Definition at line 39 of file h264_refs.c.

Referenced by ff_h264_decode_ref_pic_list_reordering(), and split_field_copy().

static int pic_num_extract ( H264Context h,
int  pic_num,
int *  structure 
) [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).

Parameters:
pic_num picture number for which to extract structure information
structure one of PICT_XXX describing structure of picture with pic_num
Returns:
frame number (short term) or long term index of picture described by pic_num

Definition at line 174 of file h264_refs.c.

Referenced by ff_h264_decode_ref_pic_list_reordering(), and ff_h264_execute_ref_pic_marking().

static void print_long_term ( H264Context h  )  [static]

print long term list

Definition at line 466 of file h264_refs.c.

Referenced by ff_h264_decode_ref_pic_list_reordering(), and ff_h264_execute_ref_pic_marking().

static void print_short_term ( H264Context h  )  [static]

print short term list

Definition at line 451 of file h264_refs.c.

Referenced by ff_h264_decode_ref_pic_list_reordering(), and ff_h264_execute_ref_pic_marking().

static Picture* remove_long ( H264Context h,
int  i,
int  ref_mask 
) [static]

Remove a picture from the long term reference list by its index in that list.

Returns:
the removed picture or NULL if an error occurs

Definition at line 417 of file h264_refs.c.

Referenced by ff_h264_execute_ref_pic_marking(), and ff_h264_remove_all_refs().

static Picture* remove_short ( H264Context h,
int  frame_num,
int  ref_mask 
) [static]

Returns:
the removed picture or NULL if an error occurs

Definition at line 395 of file h264_refs.c.

Referenced by ff_h264_execute_ref_pic_marking().

static void remove_short_at_index ( H264Context h,
int  i 
) [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.

Parameters:
i index into h->short_ref of picture to remove.

Definition at line 384 of file h264_refs.c.

Referenced by ff_h264_execute_ref_pic_marking(), and remove_short().

static int split_field_copy ( Picture dest,
Picture src,
int  parity,
int  id_add 
) [static]

Definition at line 50 of file h264_refs.c.

Referenced by build_def_list().

static int unreference_pic ( H264Context h,
Picture pic,
int  refmask 
) [inline, static]

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.

Parameters:
refmask mask of fields to unreference; the mask is bitwise anded with the reference marking of pic
Returns:
non-zero if pic becomes entirely unreferenced (except possibly for display purposes) zero if one of the fields remains in reference

Definition at line 340 of file h264_refs.c.

Referenced by ff_h264_remove_all_refs(), remove_long(), and remove_short().


Generated on Fri Oct 26 02:46:08 2012 for FFmpeg by  doxygen 1.5.8