|
|
|
@ -97,12 +97,9 @@ int ff_h264_check_intra4x4_pred_mode(H264Context *h){ |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
return 0; |
|
|
|
|
} //FIXME cleanup like ff_h264_check_intra_pred_mode
|
|
|
|
|
} //FIXME cleanup like check_intra_pred_mode
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* checks if the top & left blocks are available if needed & changes the dc mode so it only uses the available blocks. |
|
|
|
|
*/ |
|
|
|
|
int ff_h264_check_intra_pred_mode(H264Context *h, int mode){ |
|
|
|
|
static int check_intra_pred_mode(H264Context *h, int mode, int is_chroma){ |
|
|
|
|
MpegEncContext * const s = &h->s; |
|
|
|
|
static const int8_t top [7]= {LEFT_DC_PRED8x8, 1,-1,-1}; |
|
|
|
|
static const int8_t left[7]= { TOP_DC_PRED8x8,-1, 2,-1,DC_128_PRED8x8}; |
|
|
|
@ -122,7 +119,7 @@ int ff_h264_check_intra_pred_mode(H264Context *h, int mode){ |
|
|
|
|
|
|
|
|
|
if((h->left_samples_available&0x8080) != 0x8080){ |
|
|
|
|
mode= left[ mode ]; |
|
|
|
|
if(h->left_samples_available&0x8080){ //mad cow disease mode, aka MBAFF + constrained_intra_pred
|
|
|
|
|
if(is_chroma && (h->left_samples_available&0x8080)){ //mad cow disease mode, aka MBAFF + constrained_intra_pred
|
|
|
|
|
mode= ALZHEIMER_DC_L0T_PRED8x8 + (!(h->left_samples_available&0x8000)) + 2*(mode == DC_128_PRED8x8); |
|
|
|
|
} |
|
|
|
|
if(mode<0){ |
|
|
|
@ -134,6 +131,23 @@ int ff_h264_check_intra_pred_mode(H264Context *h, int mode){ |
|
|
|
|
return mode; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* checks if the top & left blocks are available if needed & changes the dc mode so it only uses the available blocks. |
|
|
|
|
*/ |
|
|
|
|
int ff_h264_check_intra16x16_pred_mode(H264Context *h, int mode) |
|
|
|
|
{ |
|
|
|
|
return check_intra_pred_mode(h, mode, 0); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* checks if the top & left blocks are available if needed & changes the dc mode so it only uses the available blocks. |
|
|
|
|
*/ |
|
|
|
|
int ff_h264_check_intra_chroma_pred_mode(H264Context *h, int mode) |
|
|
|
|
{ |
|
|
|
|
return check_intra_pred_mode(h, mode, 1); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
const uint8_t *ff_h264_decode_nal(H264Context *h, const uint8_t *src, int *dst_length, int *consumed, int length){ |
|
|
|
|
int i, si, di; |
|
|
|
|
uint8_t *dst; |
|
|
|
|