static int xan_unpack_luma(XanContext *s,
uint8_t *dst, const int dst_size)
{
- int tree_size, eof;
- int bits, mask;
- int tree_root, node;
- const uint8_t *dst_end = dst + dst_size;
- GetByteContext tree = s->gb;
- int start_off = bytestream2_tell(&tree);
-
- tree_size = bytestream2_get_byte(&s->gb);
- eof = bytestream2_get_byte(&s->gb);
- tree_root = eof + tree_size;
- bytestream2_skip(&s->gb, tree_size * 2);
-
- node = tree_root;
- bits = bytestream2_get_byte(&s->gb);
- mask = 0x80;
- for (;;) {
- int bit = !!(bits & mask);
- mask >>= 1;
- bytestream2_seek(&tree, start_off + node*2 + bit - eof * 2, SEEK_SET);
- node = bytestream2_get_byte(&tree);
- if (node == eof)
- break;
- if (node < eof) {
- *dst++ = node;
- if (dst > dst_end)
- break;
- node = tree_root;
- }
- if (!mask) {
- if (bytestream2_get_bytes_left(&s->gb) <= 0)
- break;
- bits = bytestream2_get_byteu(&s->gb);
- mask = 0x80;
- }
- }
- return dst != dst_end ? AVERROR_INVALIDDATA : 0;
+ int tree_size, eof;
+ int bits, mask;
+ int tree_root, node;
+ const uint8_t *dst_end = dst + dst_size;
+ GetByteContext tree = s->gb;
+ int start_off = bytestream2_tell(&tree);
+
+ tree_size = bytestream2_get_byte(&s->gb);
+ eof = bytestream2_get_byte(&s->gb);
+ tree_root = eof + tree_size;
+ bytestream2_skip(&s->gb, tree_size * 2);
+
+ node = tree_root;
+ bits = bytestream2_get_byte(&s->gb);
+ mask = 0x80;
+ for (;;) {
+ int bit = !!(bits & mask);
+ mask >>= 1;
+ bytestream2_seek(&tree, start_off + node*2 + bit - eof * 2, SEEK_SET);
+ node = bytestream2_get_byte(&tree);
+ if (node == eof)
+ break;
+ if (node < eof) {
+ *dst++ = node;
+ if (dst > dst_end)
+ break;
+ node = tree_root;
+ }
+ if (!mask) {
+ if (bytestream2_get_bytes_left(&s->gb) <= 0)
+ break;
+ bits = bytestream2_get_byteu(&s->gb);
+ mask = 0x80;
+ }
+ }
+ return dst != dst_end ? AVERROR_INVALIDDATA : 0;
}
/* almost the same as in xan_wc3 decoder */
}
if (corr_off) {
- int corr_end, dec_size;
+ int dec_size;
- corr_end = (s->gb.buffer_end - s->gb.buffer_start);
- if (chroma_off > corr_off)
- corr_end = chroma_off;
bytestream2_seek(&s->gb, 8 + corr_off, SEEK_SET);
dec_size = xan_unpack(s, s->scratch_buffer, s->buffer_size);
if (dec_size < 0)
AVCodec ff_xan_wc4_decoder = {
.name = "xan_wc4",
.type = AVMEDIA_TYPE_VIDEO,
- .id = CODEC_ID_XAN_WC4,
+ .id = AV_CODEC_ID_XAN_WC4,
.priv_data_size = sizeof(XanContext),
.init = xan_decode_init,
.close = xan_decode_end,
.decode = xan_decode_frame,
.capabilities = CODEC_CAP_DR1,
- .long_name = NULL_IF_CONFIG_SMALL("Wing Commander IV / Xxan"),
+ .long_name = NULL_IF_CONFIG_SMALL("Wing Commander IV / Xxan"),
};