|
|
|
@ -67,24 +67,24 @@ static int decode_frame(AVCodecContext *avctx, |
|
|
|
|
int buf_size = avpkt->size; |
|
|
|
|
AVFrame * const p = &l->pic; |
|
|
|
|
unsigned char *Y,*U,*V; |
|
|
|
|
int i, j; |
|
|
|
|
int i, j, ret; |
|
|
|
|
int prev_y = 0, prev_u = 0, prev_v = 0; |
|
|
|
|
uint8_t *rbuf; |
|
|
|
|
|
|
|
|
|
rbuf = av_malloc(buf_size + FF_INPUT_BUFFER_PADDING_SIZE); |
|
|
|
|
if (!rbuf) { |
|
|
|
|
av_log(avctx, AV_LOG_ERROR, "Cannot allocate temporary buffer\n"); |
|
|
|
|
return -1; |
|
|
|
|
return AVERROR(ENOMEM); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
if (p->data[0]) |
|
|
|
|
avctx->release_buffer(avctx, p); |
|
|
|
|
|
|
|
|
|
p->reference = 0; |
|
|
|
|
if(ff_get_buffer(avctx, p) < 0){ |
|
|
|
|
if ((ret = ff_get_buffer(avctx, p)) < 0) { |
|
|
|
|
av_log(avctx, AV_LOG_ERROR, "get_buffer() failed\n"); |
|
|
|
|
av_free(rbuf); |
|
|
|
|
return -1; |
|
|
|
|
return ret; |
|
|
|
|
} |
|
|
|
|
p->key_frame = 1; |
|
|
|
|
|
|
|
|
|