|
|
|
@ -174,20 +174,24 @@ const uint8_t *ff_h264_decode_nal(H264Context *h, const uint8_t *src, int *dst_l |
|
|
|
|
i-= RS; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
if(i>=length-1){ //no escaped 0
|
|
|
|
|
*dst_length= length; |
|
|
|
|
*consumed= length+1; //+1 for the header
|
|
|
|
|
return src; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
bufidx = h->nal_unit_type == NAL_DPC ? 1 : 0; // use second escape buffer for inter data
|
|
|
|
|
av_fast_malloc(&h->rbsp_buffer[bufidx], &h->rbsp_buffer_size[bufidx], length+FF_INPUT_BUFFER_PADDING_SIZE); |
|
|
|
|
si=h->rbsp_buffer_size[bufidx]; |
|
|
|
|
av_fast_malloc(&h->rbsp_buffer[bufidx], &h->rbsp_buffer_size[bufidx], length+FF_INPUT_BUFFER_PADDING_SIZE+MAX_MBPAIR_SIZE); |
|
|
|
|
dst= h->rbsp_buffer[bufidx]; |
|
|
|
|
if(si != h->rbsp_buffer_size[bufidx]) |
|
|
|
|
memset(dst + length, 0, FF_INPUT_BUFFER_PADDING_SIZE+MAX_MBPAIR_SIZE); |
|
|
|
|
|
|
|
|
|
if (dst == NULL){ |
|
|
|
|
return NULL; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
if(i>=length-1){ //no escaped 0
|
|
|
|
|
*dst_length= length; |
|
|
|
|
*consumed= length+1; //+1 for the header
|
|
|
|
|
memcpy(dst, src, length); |
|
|
|
|
return dst; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
//printf("decoding esc\n");
|
|
|
|
|
memcpy(dst, src, i); |
|
|
|
|
si=di=i; |
|
|
|
|