* IFF PBM/ILBM bitmap decoder
*/
+#include "libavcore/imgutils.h"
#include "bytestream.h"
#include "avcodec.h"
#include "get_bits.h"
} IffContext;
#define LUT8_PART(plane, v) \
- AV_LE2ME64C(UINT64_C(0x0000000)<<32 | v) << plane, \
- AV_LE2ME64C(UINT64_C(0x1000000)<<32 | v) << plane, \
- AV_LE2ME64C(UINT64_C(0x0010000)<<32 | v) << plane, \
- AV_LE2ME64C(UINT64_C(0x1010000)<<32 | v) << plane, \
- AV_LE2ME64C(UINT64_C(0x0000100)<<32 | v) << plane, \
- AV_LE2ME64C(UINT64_C(0x1000100)<<32 | v) << plane, \
- AV_LE2ME64C(UINT64_C(0x0010100)<<32 | v) << plane, \
- AV_LE2ME64C(UINT64_C(0x1010100)<<32 | v) << plane, \
- AV_LE2ME64C(UINT64_C(0x0000001)<<32 | v) << plane, \
- AV_LE2ME64C(UINT64_C(0x1000001)<<32 | v) << plane, \
- AV_LE2ME64C(UINT64_C(0x0010001)<<32 | v) << plane, \
- AV_LE2ME64C(UINT64_C(0x1010001)<<32 | v) << plane, \
- AV_LE2ME64C(UINT64_C(0x0000101)<<32 | v) << plane, \
- AV_LE2ME64C(UINT64_C(0x1000101)<<32 | v) << plane, \
- AV_LE2ME64C(UINT64_C(0x0010101)<<32 | v) << plane, \
- AV_LE2ME64C(UINT64_C(0x1010101)<<32 | v) << plane
+ AV_LE2NE64C(UINT64_C(0x0000000)<<32 | v) << plane, \
+ AV_LE2NE64C(UINT64_C(0x1000000)<<32 | v) << plane, \
+ AV_LE2NE64C(UINT64_C(0x0010000)<<32 | v) << plane, \
+ AV_LE2NE64C(UINT64_C(0x1010000)<<32 | v) << plane, \
+ AV_LE2NE64C(UINT64_C(0x0000100)<<32 | v) << plane, \
+ AV_LE2NE64C(UINT64_C(0x1000100)<<32 | v) << plane, \
+ AV_LE2NE64C(UINT64_C(0x0010100)<<32 | v) << plane, \
+ AV_LE2NE64C(UINT64_C(0x1010100)<<32 | v) << plane, \
+ AV_LE2NE64C(UINT64_C(0x0000001)<<32 | v) << plane, \
+ AV_LE2NE64C(UINT64_C(0x1000001)<<32 | v) << plane, \
+ AV_LE2NE64C(UINT64_C(0x0010001)<<32 | v) << plane, \
+ AV_LE2NE64C(UINT64_C(0x1010001)<<32 | v) << plane, \
+ AV_LE2NE64C(UINT64_C(0x0000101)<<32 | v) << plane, \
+ AV_LE2NE64C(UINT64_C(0x1000101)<<32 | v) << plane, \
+ AV_LE2NE64C(UINT64_C(0x0010101)<<32 | v) << plane, \
+ AV_LE2NE64C(UINT64_C(0x1010101)<<32 | v) << plane
#define LUT8(plane) { \
LUT8_PART(plane, 0x0000000), \
return AVERROR_INVALIDDATA;
}
- if ((err = avcodec_check_dimensions(avctx, avctx->width, avctx->height)))
+ if ((err = av_image_check_size(avctx->width, avctx->height, 0, avctx)))
return err;
s->planesize = FFALIGN(avctx->width, 16) >> 3; // Align plane size in bits to word-boundary
s->planebuf = av_malloc(s->planesize + FF_INPUT_BUFFER_PADDING_SIZE);
}
/**
- * Decodes one complete byterun1 encoded line.
+ * Decode one complete byterun1 encoded line.
*
* @param dst the destination buffer where to store decompressed bitstream
* @param dst_size the destination plane size in bytes
for(y = 0; y < avctx->height; y++ ) {
uint8_t *row = &s->frame.data[0][y * s->frame.linesize[0]];
memcpy(row, buf, FFMIN(avctx->width, buf_end - buf));
- buf += avctx->width;
+ buf += avctx->width + (avctx->width % 2); // padding if odd
}
}