123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159 |
- #ifndef _ERC_API_H_
- #define _ERC_API_H_
- #include "erc_globals.h"
- #define MVPERMB_THR 8
- #define DEF_REGION_SIZE 384
- #define ERC_BLOCK_OK 3
- #define ERC_BLOCK_CONCEALED 2
- #define ERC_BLOCK_CORRUPTED 1
- #define ERC_BLOCK_EMPTY 0
- #define xPosYBlock(currYBlockNum,picSizeX) \
- ((currYBlockNum)%((picSizeX)>>3))
- #define yPosYBlock(currYBlockNum,picSizeX) \
- ((currYBlockNum)/((picSizeX)>>3))
- #define xPosMB(currMBNum,picSizeX) \
- ((currMBNum)%((picSizeX)>>4))
- #define yPosMB(currMBNum,picSizeX) \
- ((currMBNum)/((picSizeX)>>4))
- #define MBxy2YBlock(currXPos,currYPos,comp,picSizeX) \
- ((((currYPos)<<1)+((comp)>>1))*((picSizeX)>>3)+((currXPos)<<1)+((comp)&1))
- #define MBNum2YBlock(currMBNum,comp,picSizeX) \
- MBxy2YBlock(xPosMB((currMBNum),(picSizeX)),yPosMB((currMBNum),(picSizeX)),(comp),(picSizeX))
- typedef struct ercSegment_s
- {
- int startMBPos;
- int endMBPos;
- int fCorrupted;
- } ercSegment_t;
- typedef struct ercVariables_s
- {
-
- int nOfMBs;
-
- int nOfSegments;
-
- int *yCondition;
-
- int *uCondition;
-
- int *vCondition;
-
- ercSegment_t *segments;
- int currSegment;
-
- int *prevFrameYCondition;
-
- int currSegmentCorrupted;
-
- int nOfCorruptedSegments;
-
- int concealment;
- } ercVariables_t;
- void ercInit(VideoParameters *p_Vid, int pic_sizex, int pic_sizey, int flag);
- ercVariables_t *ercOpen( void );
- void ercReset( ercVariables_t *errorVar, int nOfMBs, int numOfSegments, int picSizeX );
- void ercClose( VideoParameters *p_Vid, ercVariables_t *errorVar );
- void ercSetErrorConcealment( ercVariables_t *errorVar, int value );
- void ercStartSegment( int currMBNum, int segment, unsigned int bitPos, ercVariables_t *errorVar );
- void ercStopSegment( int currMBNum, int segment, unsigned int bitPos, ercVariables_t *errorVar );
- void ercMarkCurrSegmentLost(int picSizeX, ercVariables_t *errorVar );
- void ercMarkCurrSegmentOK(int picSizeX, ercVariables_t *errorVar );
- void ercMarkCurrMBConcealed( int currMBNum, int comp, int picSizeX, ercVariables_t *errorVar );
- int ercConcealIntraFrame( VideoParameters *p_Vid, frame *recfr, int picSizeX, int picSizeY, ercVariables_t *errorVar );
- int ercConcealInterFrame( frame *recfr, objectBuffer_t *object_list,
- int picSizeX, int picSizeY, ercVariables_t *errorVar, int chroma_format_idc );
- #include "mbuffer.h"
- #include "output.h"
- struct concealment_node {
- StorablePicture* picture;
- int missingpocs;
- struct concealment_node *next;
- };
- extern struct concealment_node * init_node(StorablePicture* , int );
- extern void print_node( struct concealment_node * );
- extern void print_list( struct concealment_node * );
- extern void init_lists_for_non_reference_loss(VideoParameters *p_Vid, int , PictureStructure );
- extern void conceal_non_ref_pics(VideoParameters *p_Vid, int diff);
- extern void conceal_lost_frames(VideoParameters *p_Vid);
- extern void sliding_window_poc_management(DecodedPictureBuffer *p_Dpb, StorablePicture *p);
- extern void write_lost_non_ref_pic(VideoParameters *p_Vid, int poc);
- extern void write_lost_ref_after_idr(VideoParameters *p_Vid, int pos);
- extern int comp(const void *, const void *);
- #endif
|