mbuffer.c File Reference

Frame buffer functions. More...

#include <limits.h>
#include "global.h"
#include "mbuffer.h"
#include "memalloc.h"
#include "output.h"
#include "image.h"
#include "nalucommon.h"
#include "img_luma.h"
#include "img_chroma.h"

Include dependency graph for mbuffer.c:

Go to the source code of this file.

Defines

#define MAX_LIST_SIZE   33

Functions

void init_stats (InputParameters *p_Inp, StatParameters *stats)
static void insert_picture_in_dpb (ImageParameters *p_Img, InputParameters *p_Inp, FrameStore *fs, StorablePicture *p)
static void output_one_frame_from_dpb (DecodedPictureBuffer *p_Dpb, FrameFormat *output)
static void get_smallest_poc (DecodedPictureBuffer *p_Dpb, int *poc, int *pos)
static void gen_field_ref_ids (StorablePicture *p)
static int is_used_for_reference (FrameStore *fs)
static int remove_unused_frame_from_dpb (DecodedPictureBuffer *p_Dpb)
static int is_short_term_reference (FrameStore *fs)
static int is_long_term_reference (FrameStore *fs)
void dump_dpb (DecodedPictureBuffer *p_Dpb)
int getDpbSize (seq_parameter_set_rbsp_t *active_sps)
void check_num_ref (ImageParameters *p_Img, DecodedPictureBuffer *p_Dpb)
void init_dpb (ImageParameters *p_Img, InputParameters *p_Inp, DecodedPictureBuffer *p_Dpb)
void free_dpb (ImageParameters *p_Img, InputParameters *p_Inp, DecodedPictureBuffer *p_Dpb)
FrameStorealloc_frame_store (void)
void alloc_pic_motion (ImageParameters *p_Img, PicMotionParams *motion, int size_y, int size_x)
StorablePicturealloc_storable_picture (ImageParameters *p_Img, InputParameters *p_Inp, PictureStructure structure, int size_x, int size_y, int size_x_cr, int size_y_cr)
void free_frame_store (ImageParameters *p_Img, InputParameters *p_Inp, FrameStore *f)
void free_pic_motion (PicMotionParams *motion)
void free_storable_picture (ImageParameters *p_Img, InputParameters *p_Inp, StorablePicture *p)
static void unmark_for_reference (FrameStore *fs)
static void unmark_for_long_term_reference (FrameStore *fs)
static int compare_pic_by_pic_num_desc (const void *arg1, const void *arg2)
static int compare_pic_by_lt_pic_num_asc (const void *arg1, const void *arg2)
static int compare_fs_by_frame_num_desc (const void *arg1, const void *arg2)
static int compare_fs_by_lt_pic_idx_asc (const void *arg1, const void *arg2)
static int compare_pic_by_poc_asc (const void *arg1, const void *arg2)
static int compare_pic_by_poc_desc (const void *arg1, const void *arg2)
static int compare_fs_by_poc_asc (const void *arg1, const void *arg2)
static int compare_fs_by_poc_desc (const void *arg1, const void *arg2)
int is_short_ref (StorablePicture *s)
int is_long_ref (StorablePicture *s)
static void gen_pic_list_from_frame_list (PictureStructure currStructure, FrameStore **fs_list, int list_idx, StorablePicture **list, char *list_size, int long_term)
void init_lists (Slice *currSlice)
void init_mbaff_lists (Slice *currSlice)
static StorablePictureget_short_term_pic (Slice *currSlice, DecodedPictureBuffer *p_Dpb, int picNum)
static StorablePictureget_long_term_pic (Slice *currSlice, DecodedPictureBuffer *p_Dpb, int LongtermPicNum)
static void reorder_short_term (Slice *currSlice, DecodedPictureBuffer *p_Dpb, StorablePicture **RefPicListX, int cur_list, int picNumLX, int *refIdxLX)
static void reorder_long_term (Slice *currSlice, DecodedPictureBuffer *p_Dpb, StorablePicture **RefPicListX, int cur_list, int frame_no, int *refIdxLX)
void reorder_ref_pic_list (Slice *currSlice, StorablePicture **list[6], char list_size[6], int cur_list)
void update_ref_list (DecodedPictureBuffer *p_Dpb)
void update_ltref_list (DecodedPictureBuffer *p_Dpb)
static void idr_memory_management (DecodedPictureBuffer *p_Dpb, StorablePicture *p, FrameFormat *output)
static void sliding_window_memory_management (ImageParameters *p_Img, DecodedPictureBuffer *p_Dpb, StorablePicture *p)
static int get_pic_num_x (StorablePicture *p, int difference_of_pic_nums_minus1)
static void mm_unmark_short_term_for_reference (DecodedPictureBuffer *p_Dpb, StorablePicture *p, int difference_of_pic_nums_minus1)
static void mm_unmark_long_term_for_reference (DecodedPictureBuffer *p_Dpb, StorablePicture *p, int long_term_pic_num)
static void unmark_long_term_frame_for_reference_by_frame_idx (DecodedPictureBuffer *p_Dpb, int long_term_frame_idx)
static void unmark_long_term_field_for_reference_by_frame_idx (ImageParameters *p_Img, DecodedPictureBuffer *p_Dpb, PictureStructure structure, int long_term_frame_idx, int mark_current, unsigned curr_frame_num, int curr_pic_num)
static void mark_pic_long_term (DecodedPictureBuffer *p_Dpb, StorablePicture *p, int long_term_frame_idx, int picNumX)
static void mm_assign_long_term_frame_idx (ImageParameters *p_Img, StorablePicture *p, int difference_of_pic_nums_minus1, int long_term_frame_idx)
void mm_update_max_long_term_frame_idx (DecodedPictureBuffer *p_Dpb, int max_long_term_frame_idx_plus1)
static void mm_unmark_all_long_term_for_reference (DecodedPictureBuffer *p_Dpb)
static void mm_unmark_all_short_term_for_reference (DecodedPictureBuffer *p_Dpb)
static void mm_mark_current_picture_long_term (ImageParameters *p_Img, DecodedPictureBuffer *p_Dpb, StorablePicture *p, int long_term_frame_idx)
static void adaptive_memory_management (DecodedPictureBuffer *p_Dpb, StorablePicture *p, FrameFormat *output)
void store_picture_in_dpb (ImageParameters *p_Img, InputParameters *p_Inp, StorablePicture *p, FrameFormat *output)
void replace_top_pic_with_frame (ImageParameters *p_Img, InputParameters *p_Inp, StorablePicture *p, FrameFormat *output)
static void remove_frame_from_dpb (DecodedPictureBuffer *p_Dpb, int pos)
void flush_dpb (ImageParameters *p_Img, InputParameters *p_Inp, FrameFormat *output)
void dpb_split_field (ImageParameters *p_Img, InputParameters *p_Inp, FrameStore *fs)
void dpb_combine_field_yuv (ImageParameters *p_Img, InputParameters *p_Inp, FrameStore *fs)
void dpb_combine_field (ImageParameters *p_Img, InputParameters *p_Inp, FrameStore *fs)
void alloc_ref_pic_list_reordering_buffer (Slice *currSlice)
void free_ref_pic_list_reordering_buffer (Slice *currSlice)
void fill_frame_num_gap (ImageParameters *p_Img, InputParameters *p_Inp, FrameFormat *output)
void alloc_motion_params (MotionParams *ftype, int size_y, int size_x)
ColocatedParamsalloc_colocated (int size_x, int size_y, int mb_adaptive_frame_field_flag)
void free_motion_params (MotionParams *ftype)
void free_colocated (ColocatedParams *p)
void compute_colocated (Slice *currSlice, ColocatedParams *p, StorablePicture **listX[6])
void compute_colocated_JV (Slice *currSlice, ColocatedParams *p, StorablePicture **listX[6])
void copy_storable_param_JV (ImageParameters *p_Img, int nplane, StorablePicture *d, StorablePicture *s)


Detailed Description

Frame buffer functions.

mbuffer.c

Author:
Main contributors (see contributors.h for copyright, address and affiliation details)

Definition in file mbuffer.c.


Function Documentation

static void adaptive_memory_management ( DecodedPictureBuffer p_Dpb,
StorablePicture p,
FrameFormat *  output 
) [static]

ColocatedParams* alloc_colocated ( int  size_x,
int  size_y,
int  mb_adaptive_frame_field_flag 
)

Allocate co-located memory.

Parameters:
size_x horizontal luma size
size_y vertical luma size
mb_adaptive_frame_field_flag flag that indicates macroblock adaptive frame/field coding
Returns:
the allocated StorablePicture structure

Definition at line 3628 of file mbuffer.c.

References alloc_motion_params(), and no_mem_exit().

Referenced by init_slice().

Here is the call graph for this function:

FrameStore* alloc_frame_store ( void   ) 

Allocate memory for decoded picture buffer frame stores and initialize with sane values.

Returns:
the allocated FrameStore structure

Definition at line 303 of file mbuffer.c.

References frame_store::is_long_term, frame_store::is_orig_reference, frame_store::is_reference, frame_store::is_used, and no_mem_exit().

Referenced by idr_memory_management(), init_dpb(), and init_out_buffer().

Here is the call graph for this function:

void alloc_motion_params ( MotionParams ftype,
int  size_y,
int  size_x 
)

Allocate motion parameter memory for colocated structure.

Definition at line 3604 of file mbuffer.c.

References get_mem2D(), get_mem3D(), get_mem3Dint64(), get_mem4Dshort(), motion_params::mv, motion_params::ref_idx, and motion_params::ref_pic_id.

Referenced by alloc_colocated().

Here is the call graph for this function:

void alloc_ref_pic_list_reordering_buffer ( Slice currSlice  ) 

Allocate memory for buffering of reference picture reordering commands.

Definition at line 3481 of file mbuffer.c.

References no_mem_exit(), and slice::slice_type.

Referenced by reorder_lists(), and wp_mcprec_reorder_lists().

Here is the call graph for this function:

StorablePicture* alloc_storable_picture ( ImageParameters p_Img,
InputParameters p_Inp,
PictureStructure  structure,
int  size_x,
int  size_y,
int  size_x_cr,
int  size_y_cr 
)

Allocate memory for a stored picture.

Parameters:
p_Img ImageParameters
p_Inp InputParameters
structure picture structure
size_x horizontal luma size
size_y vertical luma size
size_x_cr horizontal chroma size
size_y_cr vertical chroma size
Returns:
the allocated StorablePicture structure

Definition at line 372 of file mbuffer.c.

References storable_picture::dec_imgUV, storable_picture::dec_imgY, get_mem2Dpel(), get_mem3D(), get_mem3Dpel(), get_mem4Dpel(), IMG_PAD_SIZE, storable_picture::imgUV, storable_picture::imgUV_sub, storable_picture::imgY, storable_picture::imgY_sub, storable_picture::JVmotion, storable_picture::mb_error_map, storable_picture::motion, no_mem_exit(), storable_picture::p_curr_img, storable_picture::p_curr_img_sub, storable_picture::p_dec_img, storable_picture::p_img, storable_picture::p_img_sub, and YUV400.

Referenced by dpb_combine_field_yuv(), dpb_split_field(), field_picture(), fill_frame_num_gap(), prepare_enc_frame_picture(), and write_unpaired_field().

Here is the call graph for this function:

void check_num_ref ( ImageParameters p_Img,
DecodedPictureBuffer p_Dpb 
)

Check then number of frames marked "used for reference" and break if maximum is exceeded.

Definition at line 169 of file mbuffer.c.

References error(), and img_par::num_ref_frames.

Referenced by adaptive_memory_management(), and store_picture_in_dpb().

Here is the call graph for this function:

static int compare_fs_by_frame_num_desc ( const void *  arg1,
const void *  arg2 
) [inline, static]

compares two frame stores by pic_num for qsort in descending order

Definition at line 865 of file mbuffer.c.

Referenced by init_lists().

static int compare_fs_by_lt_pic_idx_asc ( const void *  arg1,
const void *  arg2 
) [inline, static]

compares two frame stores by lt_pic_num for qsort in descending order

Definition at line 885 of file mbuffer.c.

Referenced by init_lists().

static int compare_fs_by_poc_asc ( const void *  arg1,
const void *  arg2 
) [inline, static]

compares two frame stores by poc for qsort in ascending order

Definition at line 948 of file mbuffer.c.

Referenced by init_lists().

static int compare_fs_by_poc_desc ( const void *  arg1,
const void *  arg2 
) [inline, static]

compares two frame stores by poc for qsort in descending order

Definition at line 969 of file mbuffer.c.

Referenced by init_lists().

static int compare_pic_by_lt_pic_num_asc ( const void *  arg1,
const void *  arg2 
) [inline, static]

compares two stored pictures by picture number for qsort in descending order

Definition at line 845 of file mbuffer.c.

Referenced by init_lists().

static int compare_pic_by_pic_num_desc ( const void *  arg1,
const void *  arg2 
) [inline, static]

compares two stored pictures by picture number for qsort in descending order

Definition at line 826 of file mbuffer.c.

Referenced by init_lists().

static int compare_pic_by_poc_asc ( const void *  arg1,
const void *  arg2 
) [inline, static]

compares two stored pictures by poc for qsort in ascending order

Definition at line 906 of file mbuffer.c.

Referenced by init_lists().

static int compare_pic_by_poc_desc ( const void *  arg1,
const void *  arg2 
) [inline, static]

compares two stored pictures by poc for qsort in descending order

Definition at line 927 of file mbuffer.c.

Referenced by init_lists().

void compute_colocated ( Slice currSlice,
ColocatedParams p,
StorablePicture **  listX[6] 
)

Compute co-located motion info.

Assign frame buffers for field MBs Check whether we should use top or bottom field mvs. Depending on the assigned poc values.

Generate field MVs from Frame MVs

Do nothing if macroblock as field coded in MB-AFF

Use inference flag to remap mvs/references Frame with field co-located

Use inference flag to remap mvs/references

Definition at line 3709 of file mbuffer.c.

References slice::direct_spatial_mv_pred_flag, pic_motion_params::field_frame, storable_picture::motion, pic_motion_params::mv, motion_params::mv, pic_motion_params::ref_id, pic_motion_params::ref_idx, motion_params::ref_idx, and motion_params::ref_pic_id.

Referenced by init_slice().

void compute_colocated_JV ( Slice currSlice,
ColocatedParams p,
StorablePicture **  listX[6] 
)

Compute co-located motion info for 4:4:4 Independent mode.

Assign frame buffers for field MBs Check whether we should use top or bottom field mvs. Depending on the assigned poc values.

Generate field MVs from Frame MVs

Do nothing if macroblock as field coded in MB-AFF

Use inference flag to remap mvs/references Frame with field co-located

Use inference flag to remap mvs/references

Definition at line 4108 of file mbuffer.c.

References img_par::colour_plane_id, slice::direct_spatial_mv_pred_flag, pic_motion_params::field_frame, storable_picture::JVmotion, storable_picture::motion, pic_motion_params::mv, motion_params::mv, pic_motion_params::ref_id, pic_motion_params::ref_idx, motion_params::ref_idx, and motion_params::ref_pic_id.

Referenced by init_slice().

void copy_storable_param_JV ( ImageParameters p_Img,
int  nplane,
StorablePicture d,
StorablePicture s 
)

void dpb_combine_field ( ImageParameters p_Img,
InputParameters p_Inp,
FrameStore fs 
)

Generate a frame from top and bottom fields.

Use inference flag to remap mvs/references

Generate Frame parameters from field information.

association with id already known for fields.

need to make association with frames

need to make association with frames

Definition at line 3397 of file mbuffer.c.

References dpb_combine_field_yuv(), pic_motion_params::field_frame, storable_picture::motion, pic_motion_params::mv, pic_motion_params::ref_id, pic_motion_params::ref_idx, UnifiedOneForthPix(), and UnifiedOneForthPix_JV().

Referenced by insert_picture_in_dpb().

Here is the call graph for this function:

void dpb_combine_field_yuv ( ImageParameters p_Img,
InputParameters p_Inp,
FrameStore fs 
)

Generate a frame from top and bottom fields, YUV components and display information only.

Definition at line 3333 of file mbuffer.c.

References alloc_storable_picture(), storable_picture::imgUV, and storable_picture::imgY.

Referenced by direct_output(), dpb_combine_field(), and write_unpaired_field().

Here is the call graph for this function:

void dpb_split_field ( ImageParameters p_Img,
InputParameters p_Inp,
FrameStore fs 
)

Extract top field from a frame.

association with id already known for fields.

need to make association with frames

Generate field MVs from Frame MVs

Definition at line 3084 of file mbuffer.c.

References alloc_storable_picture(), pic_motion_params::field_frame, storable_picture::imgUV, storable_picture::imgY, pic_motion_params::mb_field, storable_picture::motion, pic_motion_params::mv, pic_motion_params::ref_id, pic_motion_params::ref_idx, UnifiedOneForthPix(), and UnifiedOneForthPix_JV().

Referenced by insert_picture_in_dpb(), and replace_top_pic_with_frame().

Here is the call graph for this function:

void dump_dpb ( DecodedPictureBuffer p_Dpb  ) 

Print out list of pictures in DPB. Used for debug purposes.

Definition at line 47 of file mbuffer.c.

References frame_store::is_long_term, frame_store::is_reference, and frame_store::is_used.

Referenced by store_picture_in_dpb().

void fill_frame_num_gap ( ImageParameters p_Img,
InputParameters p_Inp,
FrameFormat *  output 
)

Tian Dong June 13, 2002, Modifed on July 30, 2003.

If a gap in frame_num is found, try to fill the gap

Parameters:
p_Img ImageParameters structure
p_Inp InputParameters structure
output FrameFormat for ouput

Definition at line 3563 of file mbuffer.c.

References alloc_storable_picture(), img_par::frame_num, img_par::height, img_par::height_cr, store_picture_in_dpb(), img_par::width, and img_par::width_cr.

Here is the call graph for this function:

void flush_dpb ( ImageParameters p_Img,
InputParameters p_Inp,
FrameFormat *  output 
)

All stored picture are output. Should be called to empty the buffer.

Definition at line 3034 of file mbuffer.c.

References output_one_frame_from_dpb(), remove_unused_frame_from_dpb(), and unmark_for_reference().

Referenced by adaptive_memory_management(), error(), free_encoder_memory(), and idr_memory_management().

Here is the call graph for this function:

void free_colocated ( ColocatedParams p  ) 

Free co-located memory.

Parameters:
p Picture to be freed

Definition at line 3683 of file mbuffer.c.

References free_motion_params().

Referenced by free_slice().

Here is the call graph for this function:

void free_dpb ( ImageParameters p_Img,
InputParameters p_Inp,
DecodedPictureBuffer p_Dpb 
)

Free memory for decoded picture buffer.

Definition at line 259 of file mbuffer.c.

References free_frame_store().

Referenced by free_encoder_memory(), and init_dpb().

Here is the call graph for this function:

void free_frame_store ( ImageParameters p_Img,
InputParameters p_Inp,
FrameStore f 
)

Free frame store memory.

Parameters:
p_Img ImageParameters
p_Inp InputParametes
f FrameStore to be freed

Definition at line 517 of file mbuffer.c.

References free_storable_picture().

Referenced by free_dpb(), idr_memory_management(), and uninit_out_buffer().

Here is the call graph for this function:

void free_motion_params ( MotionParams ftype  ) 

Free motion parameter memory for colocated structure.

Definition at line 3660 of file mbuffer.c.

References free_mem2D(), free_mem3D(), free_mem3Dint64(), free_mem4Dshort(), motion_params::mv, motion_params::ref_idx, and motion_params::ref_pic_id.

Referenced by free_colocated().

Here is the call graph for this function:

void free_ref_pic_list_reordering_buffer ( Slice currSlice  ) 

Free memory for buffering of reference picture reordering commands.

Definition at line 3521 of file mbuffer.c.

Referenced by terminate_slice().

void free_storable_picture ( ImageParameters p_Img,
InputParameters p_Inp,
StorablePicture p 
)

static void gen_field_ref_ids ( StorablePicture p  )  [static]

Generate Frame parameters from field information.

association with id already known for fields.

Definition at line 3060 of file mbuffer.c.

References pic_motion_params::field_frame, storable_picture::motion, pic_motion_params::ref_id, and pic_motion_params::ref_idx.

Referenced by insert_picture_in_dpb().

static void gen_pic_list_from_frame_list ( PictureStructure  currStructure,
FrameStore **  fs_list,
int  list_idx,
StorablePicture **  list,
char *  list_size,
int  long_term 
) [static]

Generates a alternating field list from a given FrameStore list.

Definition at line 1016 of file mbuffer.c.

References is_long_ref(), and is_short_ref().

Referenced by init_lists().

Here is the call graph for this function:

static StorablePicture* get_long_term_pic ( Slice currSlice,
DecodedPictureBuffer p_Dpb,
int  LongtermPicNum 
) [static]

Returns short term pic with given LongtermPicNum.

Definition at line 1548 of file mbuffer.c.

References frame_store::is_reference.

Referenced by reorder_long_term().

static int get_pic_num_x ( StorablePicture p,
int  difference_of_pic_nums_minus1 
) [static]

Calculate picNumX.

Definition at line 1850 of file mbuffer.c.

Referenced by mm_assign_long_term_frame_idx(), and mm_unmark_short_term_for_reference().

static StorablePicture* get_short_term_pic ( Slice currSlice,
DecodedPictureBuffer p_Dpb,
int  picNum 
) [static]

Returns short term pic with given picNum.

Definition at line 1516 of file mbuffer.c.

References frame_store::is_reference.

Referenced by reorder_short_term().

static void get_smallest_poc ( DecodedPictureBuffer p_Dpb,
int *  poc,
int *  pos 
) [static]

find smallest POC in the DPB.

Definition at line 2937 of file mbuffer.c.

References error().

Referenced by output_one_frame_from_dpb(), and store_picture_in_dpb().

Here is the call graph for this function:

int getDpbSize ( seq_parameter_set_rbsp_t *  active_sps  ) 

Returns the size of the dpb depending on level and picture size.

Definition at line 93 of file mbuffer.c.

References error().

Referenced by init_dpb().

Here is the call graph for this function:

static void idr_memory_management ( DecodedPictureBuffer p_Dpb,
StorablePicture p,
FrameFormat *  output 
) [static]

Perform Memory management for idr pictures.

Definition at line 1766 of file mbuffer.c.

References alloc_frame_store(), img_par::currentPicture, flush_dpb(), free_frame_store(), update_ltref_list(), and update_ref_list().

Referenced by store_picture_in_dpb().

Here is the call graph for this function:

void init_dpb ( ImageParameters p_Img,
InputParameters p_Inp,
DecodedPictureBuffer p_Dpb 
)

Allocate memory for decoded picture buffer and initialize with sane values.

Definition at line 185 of file mbuffer.c.

References alloc_frame_store(), error(), free_dpb(), getDpbSize(), no_mem_exit(), and inp_par_enc::num_ref_frames.

Referenced by init_encoder().

Here is the call graph for this function:

void init_lists ( Slice currSlice  ) 

void init_mbaff_lists ( Slice currSlice  ) 

Initialize p_Img->listX[2..5] from lists 0 and 1 p_Img->listX[2]: list0 for current_field==top p_Img->listX[3]: list1 for current_field==top p_Img->listX[4]: list0 for current_field==bottom p_Img->listX[5]: list1 for current_field==bottom.

Definition at line 1474 of file mbuffer.c.

Referenced by init_slice().

static void insert_picture_in_dpb ( ImageParameters p_Img,
InputParameters p_Inp,
FrameStore fs,
StorablePicture p 
) [static]

Insert the picture into the DPB. A free DPB position is necessary for frames, .

Parameters:
p_Img ImageParameters
p_Inp InputParameters
fs FrameStore into which the picture will be inserted
p StorablePicture to be inserted

Definition at line 2655 of file mbuffer.c.

References dpb_combine_field(), dpb_split_field(), gen_field_ref_ids(), frame_store::is_long_term, frame_store::is_orig_reference, frame_store::is_reference, frame_store::is_used, UnifiedOneForthPix(), and UnifiedOneForthPix_JV().

Referenced by store_picture_in_dpb().

Here is the call graph for this function:

int is_long_ref ( StorablePicture s  ) 

returns true, if picture is long term reference picture

Definition at line 1003 of file mbuffer.c.

Referenced by gen_pic_list_from_frame_list().

static int is_long_term_reference ( FrameStore fs  )  [static]

Check if one of the frames/fields in frame store is used for short-term reference.

Definition at line 2841 of file mbuffer.c.

References frame_store::is_used.

Referenced by update_ltref_list().

int is_short_ref ( StorablePicture s  ) 

returns true, if picture is short term reference picture

Definition at line 990 of file mbuffer.c.

Referenced by gen_pic_list_from_frame_list().

static int is_short_term_reference ( FrameStore fs  )  [static]

Check if one of the frames/fields in frame store is used for short-term reference.

Definition at line 2799 of file mbuffer.c.

References frame_store::is_used.

Referenced by update_ref_list().

static int is_used_for_reference ( FrameStore fs  )  [static]

Check if one of the frames/fields in frame store is used for reference.

Definition at line 2753 of file mbuffer.c.

References frame_store::is_reference, and frame_store::is_used.

Referenced by output_one_frame_from_dpb(), and remove_unused_frame_from_dpb().

static void mark_pic_long_term ( DecodedPictureBuffer p_Dpb,
StorablePicture p,
int  long_term_frame_idx,
int  picNumX 
) [static]

mark a picture as long-term reference

Definition at line 2101 of file mbuffer.c.

References frame_store::is_long_term, and frame_store::is_reference.

Referenced by mm_assign_long_term_frame_idx().

static void mm_assign_long_term_frame_idx ( ImageParameters p_Img,
StorablePicture p,
int  difference_of_pic_nums_minus1,
int  long_term_frame_idx 
) [static]

Assign a long term frame index to a short term picture.

Definition at line 2207 of file mbuffer.c.

References error(), get_pic_num_x(), frame_store::is_reference, mark_pic_long_term(), unmark_long_term_field_for_reference_by_frame_idx(), and unmark_long_term_frame_for_reference_by_frame_idx().

Referenced by adaptive_memory_management().

Here is the call graph for this function:

static void mm_mark_current_picture_long_term ( ImageParameters p_Img,
DecodedPictureBuffer p_Dpb,
StorablePicture p,
int  long_term_frame_idx 
) [static]

Mark the current picture used for long term reference.

Definition at line 2309 of file mbuffer.c.

References unmark_long_term_field_for_reference_by_frame_idx(), and unmark_long_term_frame_for_reference_by_frame_idx().

Referenced by adaptive_memory_management().

Here is the call graph for this function:

static void mm_unmark_all_long_term_for_reference ( DecodedPictureBuffer p_Dpb  )  [static]

Mark all long term reference pictures unused for reference.

Definition at line 2281 of file mbuffer.c.

References mm_update_max_long_term_frame_idx().

Referenced by adaptive_memory_management().

Here is the call graph for this function:

static void mm_unmark_all_short_term_for_reference ( DecodedPictureBuffer p_Dpb  )  [static]

Mark all short term reference pictures unused for reference.

Definition at line 2292 of file mbuffer.c.

References unmark_for_reference(), and update_ref_list().

Referenced by adaptive_memory_management().

Here is the call graph for this function:

static void mm_unmark_long_term_for_reference ( DecodedPictureBuffer p_Dpb,
StorablePicture p,
int  long_term_pic_num 
) [static]

Adaptive Memory Management: Mark long term picture unused.

Definition at line 1929 of file mbuffer.c.

References frame_store::is_long_term, frame_store::is_reference, frame_store::is_used, and unmark_for_long_term_reference().

Referenced by adaptive_memory_management().

Here is the call graph for this function:

static void mm_unmark_short_term_for_reference ( DecodedPictureBuffer p_Dpb,
StorablePicture p,
int  difference_of_pic_nums_minus1 
) [static]

Adaptive Memory Management: Mark short term picture unused.

Definition at line 1869 of file mbuffer.c.

References get_pic_num_x(), frame_store::is_long_term, frame_store::is_reference, frame_store::is_used, and unmark_for_reference().

Referenced by adaptive_memory_management().

Here is the call graph for this function:

void mm_update_max_long_term_frame_idx ( DecodedPictureBuffer p_Dpb,
int  max_long_term_frame_idx_plus1 
)

Set new max long_term_frame_idx.

Definition at line 2258 of file mbuffer.c.

References unmark_for_long_term_reference().

Referenced by adaptive_memory_management(), and mm_unmark_all_long_term_for_reference().

Here is the call graph for this function:

static void output_one_frame_from_dpb ( DecodedPictureBuffer p_Dpb,
FrameFormat *  output 
) [static]

Output one picture stored in the DPB.

Definition at line 2986 of file mbuffer.c.

References error(), get_smallest_poc(), is_used_for_reference(), img_par::p_dec, remove_frame_from_dpb(), and write_stored_frame().

Referenced by flush_dpb(), and store_picture_in_dpb().

Here is the call graph for this function:

static void remove_frame_from_dpb ( DecodedPictureBuffer p_Dpb,
int  pos 
) [static]

remove one frame from DPB

Definition at line 2883 of file mbuffer.c.

References error(), free_storable_picture(), frame_store::is_long_term, frame_store::is_orig_reference, frame_store::is_reference, and frame_store::is_used.

Referenced by output_one_frame_from_dpb(), and remove_unused_frame_from_dpb().

Here is the call graph for this function:

static int remove_unused_frame_from_dpb ( DecodedPictureBuffer p_Dpb  )  [static]

Remove a picture from DPB which is no longer needed.

Definition at line 2964 of file mbuffer.c.

References is_used_for_reference(), and remove_frame_from_dpb().

Referenced by flush_dpb(), and store_picture_in_dpb().

Here is the call graph for this function:

static void reorder_long_term ( Slice currSlice,
DecodedPictureBuffer p_Dpb,
StorablePicture **  RefPicListX,
int  cur_list,
int  frame_no,
int *  refIdxLX 
) [static]

Reordering process for long-term reference pictures.

Definition at line 1610 of file mbuffer.c.

References get_long_term_pic().

Referenced by reorder_ref_pic_list().

Here is the call graph for this function:

void reorder_ref_pic_list ( Slice currSlice,
StorablePicture **  list[6],
char  list_size[6],
int  cur_list 
)

Reordering process for reference picture lists.

Definition at line 1640 of file mbuffer.c.

References error(), reorder_long_term(), and reorder_short_term().

Referenced by init_slice(), reorder_lists(), and wp_mcprec_reorder_lists().

Here is the call graph for this function:

static void reorder_short_term ( Slice currSlice,
DecodedPictureBuffer p_Dpb,
StorablePicture **  RefPicListX,
int  cur_list,
int  picNumLX,
int *  refIdxLX 
) [static]

Reordering process for short-term reference pictures.

Definition at line 1580 of file mbuffer.c.

References get_short_term_pic().

Referenced by reorder_ref_pic_list().

Here is the call graph for this function:

void replace_top_pic_with_frame ( ImageParameters p_Img,
InputParameters p_Inp,
StorablePicture p,
FrameFormat *  output 
)

Insert the frame picture into the if the top field has already been stored for the coding decision.

Parameters:
p_Img ImageParameters
p_Inp InputParameters
p StorablePicture to be inserted
output FrameFormat for output

Definition at line 2573 of file mbuffer.c.

References direct_output_paff(), dpb_split_field(), img_par::frame_num, free_storable_picture(), frame_store::is_long_term, frame_store::is_reference, frame_store::is_used, img_par::p_dec, UnifiedOneForthPix(), UnifiedOneForthPix_JV(), update_ltref_list(), and update_ref_list().

Referenced by encode_one_frame().

Here is the call graph for this function:

static void sliding_window_memory_management ( ImageParameters p_Img,
DecodedPictureBuffer p_Dpb,
StorablePicture p 
) [static]

Perform Sliding window decoded reference picture marking process.

Definition at line 1823 of file mbuffer.c.

References frame_store::is_long_term, frame_store::is_reference, unmark_for_reference(), and update_ref_list().

Referenced by store_picture_in_dpb().

Here is the call graph for this function:

void store_picture_in_dpb ( ImageParameters p_Img,
InputParameters p_Inp,
StorablePicture p,
FrameFormat *  output 
)

Store a picture in DPB. This includes cheking for space in DPB and flushing frames. If we received a frame, we need to check for a new store, if we got a field, check if it's the second field of an already allocated store.

Parameters:
p_Img ImageParameters
p_Inp InputParameters
p Picture to be stored
output FrameFormat for output

Definition at line 2441 of file mbuffer.c.

References adaptive_memory_management(), check_num_ref(), img_par::currentPicture, direct_output(), dump_dpb(), error(), get_smallest_poc(), idr_memory_management(), insert_picture_in_dpb(), frame_store::is_orig_reference, frame_store::is_used, output_one_frame_from_dpb(), img_par::p_dec, remove_unused_frame_from_dpb(), sliding_window_memory_management(), img_par::structure, update_ltref_list(), and update_ref_list().

Referenced by encode_one_frame(), field_picture(), and fill_frame_num_gap().

Here is the call graph for this function:

static void unmark_for_long_term_reference ( FrameStore fs  )  [static]

static void unmark_for_reference ( FrameStore fs  )  [static]

static void unmark_long_term_field_for_reference_by_frame_idx ( ImageParameters p_Img,
DecodedPictureBuffer p_Dpb,
PictureStructure  structure,
int  long_term_frame_idx,
int  mark_current,
unsigned  curr_frame_num,
int  curr_pic_num 
) [static]

Mark a long-term reference field unused for reference only if it's not the complementary field of the picture indicated by picNumX.

Definition at line 2006 of file mbuffer.c.

References frame_store::is_long_term, and unmark_for_long_term_reference().

Referenced by mm_assign_long_term_frame_idx(), and mm_mark_current_picture_long_term().

Here is the call graph for this function:

static void unmark_long_term_frame_for_reference_by_frame_idx ( DecodedPictureBuffer p_Dpb,
int  long_term_frame_idx 
) [static]

Mark a long-term reference frame or complementary field pair unused for referemce.

Definition at line 1989 of file mbuffer.c.

References unmark_for_long_term_reference().

Referenced by mm_assign_long_term_frame_idx(), and mm_mark_current_picture_long_term().

Here is the call graph for this function:

void update_ltref_list ( DecodedPictureBuffer p_Dpb  ) 

Update the list of frame stores that contain long-term reference frames/fields.

Definition at line 1740 of file mbuffer.c.

References is_long_term_reference().

Referenced by adaptive_memory_management(), idr_memory_management(), replace_top_pic_with_frame(), and store_picture_in_dpb().

Here is the call graph for this function:

void update_ref_list ( DecodedPictureBuffer p_Dpb  ) 

Update the list of frame stores that contain reference frames/fields.

Definition at line 1712 of file mbuffer.c.

References is_short_term_reference().

Referenced by adaptive_memory_management(), idr_memory_management(), mm_unmark_all_short_term_for_reference(), replace_top_pic_with_frame(), sliding_window_memory_management(), and store_picture_in_dpb().

Here is the call graph for this function:


Documentation generated with DoxyGen