diff options
Diffstat (limited to 'libavcodec/rl2.c')
-rw-r--r-- | libavcodec/rl2.c | 24 |
1 files changed, 13 insertions, 11 deletions
diff --git a/libavcodec/rl2.c b/libavcodec/rl2.c index c9eb93eb62..642d31af32 100644 --- a/libavcodec/rl2.c +++ b/libavcodec/rl2.c @@ -2,20 +2,20 @@ * RL2 Video Decoder * Copyright (C) 2008 Sascha Sommer (saschasommer@freenet.de) * - * This file is part of Libav. + * This file is part of FFmpeg. * - * Libav is free software; you can redistribute it and/or + * FFmpeg is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2.1 of the License, or (at your option) any later version. * - * Libav is distributed in the hope that it will be useful, + * FFmpeg is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public - * License along with Libav; if not, write to the Free Software + * License along with FFmpeg; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ @@ -54,7 +54,7 @@ typedef struct Rl2Context { * @param s rl2 context * @param in input buffer * @param size input buffer size - * @param out ouput buffer + * @param out output buffer * @param stride stride of the output buffer * @param video_base offset of the rle data inside the frame */ @@ -136,11 +136,12 @@ static av_cold int rl2_decode_init(AVCodecContext *avctx) int i; s->avctx = avctx; avctx->pix_fmt = AV_PIX_FMT_PAL8; + avcodec_get_frame_defaults(&s->frame); /** parse extra data */ if(!avctx->extradata || avctx->extradata_size < EXTRADATA1_SIZE){ av_log(avctx, AV_LOG_ERROR, "invalid extradata size\n"); - return -1; + return AVERROR_INVALIDDATA; } /** get frame_offset */ @@ -149,12 +150,12 @@ static av_cold int rl2_decode_init(AVCodecContext *avctx) if(s->video_base >= avctx->width * avctx->height){ av_log(avctx, AV_LOG_ERROR, "invalid video_base\n"); - return -1; + return AVERROR_INVALIDDATA; } /** initialize palette */ for(i=0;i<AVPALETTE_COUNT;i++) - s->palette[i] = AV_RB24(&avctx->extradata[6 + i * 3]); + s->palette[i] = 0xFFU << 24 | AV_RB24(&avctx->extradata[6 + i * 3]); /** decode background frame if present */ back_size = avctx->extradata_size - EXTRADATA1_SIZE; @@ -162,7 +163,7 @@ static av_cold int rl2_decode_init(AVCodecContext *avctx) if(back_size > 0){ unsigned char* back_frame = av_mallocz(avctx->width*avctx->height); if(!back_frame) - return -1; + return AVERROR(ENOMEM); rl2_rle_decode(s,avctx->extradata + EXTRADATA1_SIZE,back_size, back_frame,avctx->width,0); s->back_frame = back_frame; @@ -178,15 +179,16 @@ static int rl2_decode_frame(AVCodecContext *avctx, const uint8_t *buf = avpkt->data; int buf_size = avpkt->size; Rl2Context *s = avctx->priv_data; + int ret; if(s->frame.data[0]) avctx->release_buffer(avctx, &s->frame); /** get buffer */ s->frame.reference= 0; - if(ff_get_buffer(avctx, &s->frame)) { + if ((ret = ff_get_buffer(avctx, &s->frame)) < 0) { av_log(s->avctx, AV_LOG_ERROR, "get_buffer() failed\n"); - return -1; + return ret; } /** run length decode */ |