1
0
mirror of https://github.com/FFmpeg/FFmpeg.git synced 2025-04-14 00:58:38 +02:00

Merge commit '3c6e5a840c45fd3b832e86881602a72e47d46f19'

* commit '3c6e5a840c45fd3b832e86881602a72e47d46f19':
  rl2: use fixed-width integer types where appropriate
  rl2: return meaningful error codes.
  cljr: return a meaningful error code.
  fraps: cosmetics, reformat

Conflicts:
	libavcodec/fraps.c
	libavcodec/rl2.c

Merged-by: Michael Niedermayer <michaelni@gmx.at>
This commit is contained in:
Michael Niedermayer 2013-01-07 01:00:04 +01:00
commit d30660306c
2 changed files with 53 additions and 49 deletions

View File

@ -76,7 +76,8 @@ static av_cold int decode_init(AVCodecContext *avctx)
* Comparator - our nodes should ascend by count * Comparator - our nodes should ascend by count
* but with preserved symbol order * but with preserved symbol order
*/ */
static int huff_cmp(const void *va, const void *vb){ static int huff_cmp(const void *va, const void *vb)
{
const Node *a = va, *b = vb; const Node *a = va, *b = vb;
return (a->count - b->count)*256 + a->sym - b->sym; return (a->count - b->count)*256 + a->sym - b->sym;
} }
@ -111,8 +112,10 @@ static int fraps2_decode_plane(FrapsContext *s, uint8_t *dst, int stride, int w,
/* lines are stored as deltas between previous lines /* lines are stored as deltas between previous lines
* and we need to add 0x80 to the first lines of chroma planes * and we need to add 0x80 to the first lines of chroma planes
*/ */
if(j) dst[i] += dst[i - stride]; if (j)
else if(Uoff) dst[i] += 0x80; dst[i] += dst[i - stride];
else if (Uoff)
dst[i] += 0x80;
if (get_bits_left(&gb) < 0) { if (get_bits_left(&gb) < 0) {
ff_free_vlc(&vlc); ff_free_vlc(&vlc);
return AVERROR_INVALIDDATA; return AVERROR_INVALIDDATA;
@ -128,9 +131,9 @@ static int decode_frame(AVCodecContext *avctx,
void *data, int *got_frame, void *data, int *got_frame,
AVPacket *avpkt) AVPacket *avpkt)
{ {
FrapsContext * const s = avctx->priv_data;
const uint8_t *buf = avpkt->data; const uint8_t *buf = avpkt->data;
int buf_size = avpkt->size; int buf_size = avpkt->size;
FrapsContext * const s = avctx->priv_data;
AVFrame *frame = data; AVFrame *frame = data;
AVFrame * const f = &s->frame; AVFrame * const f = &s->frame;
uint32_t header; uint32_t header;
@ -219,7 +222,7 @@ static int decode_frame(AVCodecContext *avctx,
case 0: case 0:
default: default:
/* Fraps v0 is a reordered YUV420 */ /* Fraps v0 is a reordered YUV420 */
if ( (avctx->width % 8) != 0 || (avctx->height % 2) != 0 ) { if (((avctx->width % 8) != 0) || ((avctx->height % 2) != 0)) {
av_log(avctx, AV_LOG_ERROR, "Invalid frame size %dx%d\n", av_log(avctx, AV_LOG_ERROR, "Invalid frame size %dx%d\n",
avctx->width, avctx->height); avctx->width, avctx->height);
return AVERROR_INVALIDDATA; return AVERROR_INVALIDDATA;
@ -249,6 +252,7 @@ static int decode_frame(AVCodecContext *avctx,
&buf[y * avctx->width * 3], &buf[y * avctx->width * 3],
3 * avctx->width); 3 * avctx->width);
break; break;
case 2: case 2:

View File

@ -43,10 +43,10 @@ typedef struct Rl2Context {
AVCodecContext *avctx; AVCodecContext *avctx;
AVFrame frame; AVFrame frame;
unsigned short video_base; ///< initial drawing offset uint16_t video_base; ///< initial drawing offset
unsigned int clr_count; ///< number of used colors (currently unused) uint32_t clr_count; ///< number of used colors (currently unused)
unsigned char* back_frame; ///< background frame uint8_t *back_frame; ///< background frame
unsigned int palette[AVPALETTE_COUNT]; uint32_t palette[AVPALETTE_COUNT];
} Rl2Context; } Rl2Context;
/** /**
@ -58,16 +58,17 @@ typedef struct Rl2Context {
* @param stride stride of the output buffer * @param stride stride of the output buffer
* @param video_base offset of the rle data inside the frame * @param video_base offset of the rle data inside the frame
*/ */
static void rl2_rle_decode(Rl2Context *s,const unsigned char* in,int size, static void rl2_rle_decode(Rl2Context *s, const uint8_t *in, int size,
unsigned char* out,int stride,int video_base){ uint8_t *out, int stride, int video_base)
{
int base_x = video_base % s->avctx->width; int base_x = video_base % s->avctx->width;
int base_y = video_base / s->avctx->width; int base_y = video_base / s->avctx->width;
int stride_adj = stride - s->avctx->width; int stride_adj = stride - s->avctx->width;
int i; int i;
const unsigned char* back_frame = s->back_frame; const uint8_t *back_frame = s->back_frame;
const unsigned char* in_end = in + size; const uint8_t *in_end = in + size;
const unsigned char* out_end = out + stride * s->avctx->height; const uint8_t *out_end = out + stride * s->avctx->height;
unsigned char* line_end; uint8_t *line_end;
/** copy start of the background frame */ /** copy start of the background frame */
for(i=0;i<=base_y;i++){ for(i=0;i<=base_y;i++){
@ -82,7 +83,7 @@ static void rl2_rle_decode(Rl2Context *s,const unsigned char* in,int size,
/** decode the variable part of the frame */ /** decode the variable part of the frame */
while(in < in_end){ while(in < in_end){
unsigned char val = *in++; uint8_t val = *in++;
int len = 1; int len = 1;
if(val >= 0x80){ if(val >= 0x80){
if(in >= in_end) if(in >= in_end)
@ -141,7 +142,7 @@ static av_cold int rl2_decode_init(AVCodecContext *avctx)
/** parse extra data */ /** parse extra data */
if(!avctx->extradata || avctx->extradata_size < EXTRADATA1_SIZE){ if(!avctx->extradata || avctx->extradata_size < EXTRADATA1_SIZE){
av_log(avctx, AV_LOG_ERROR, "invalid extradata size\n"); av_log(avctx, AV_LOG_ERROR, "invalid extradata size\n");
return AVERROR_INVALIDDATA; return AVERROR(EINVAL);
} }
/** get frame_offset */ /** get frame_offset */
@ -161,7 +162,7 @@ static av_cold int rl2_decode_init(AVCodecContext *avctx)
back_size = avctx->extradata_size - EXTRADATA1_SIZE; back_size = avctx->extradata_size - EXTRADATA1_SIZE;
if(back_size > 0){ if(back_size > 0){
unsigned char* back_frame = av_mallocz(avctx->width*avctx->height); uint8_t *back_frame = av_mallocz(avctx->width*avctx->height);
if(!back_frame) if(!back_frame)
return AVERROR(ENOMEM); return AVERROR(ENOMEM);
rl2_rle_decode(s,avctx->extradata + EXTRADATA1_SIZE,back_size, rl2_rle_decode(s,avctx->extradata + EXTRADATA1_SIZE,back_size,
@ -177,9 +178,8 @@ static int rl2_decode_frame(AVCodecContext *avctx,
AVPacket *avpkt) AVPacket *avpkt)
{ {
const uint8_t *buf = avpkt->data; const uint8_t *buf = avpkt->data;
int buf_size = avpkt->size; int ret, buf_size = avpkt->size;
Rl2Context *s = avctx->priv_data; Rl2Context *s = avctx->priv_data;
int ret;
if(s->frame.data[0]) if(s->frame.data[0])
avctx->release_buffer(avctx, &s->frame); avctx->release_buffer(avctx, &s->frame);