uint32_t pixformat, pixdepth, bunit, bitorder, bpad;
uint32_t rgb[3];
uint8_t *ptr;
+ int width, height;
GetByteContext gb;
if (buf_size < XWD_HEADER_SIZE)
pixformat = bytestream2_get_be32u(&gb);
pixdepth = bytestream2_get_be32u(&gb);
- avctx->width = bytestream2_get_be32u(&gb);
- avctx->height = bytestream2_get_be32u(&gb);
+ width = bytestream2_get_be32u(&gb);
+ height = bytestream2_get_be32u(&gb);
xoffset = bytestream2_get_be32u(&gb);
be = bytestream2_get_be32u(&gb);
bunit = bytestream2_get_be32u(&gb);
ncolors = bytestream2_get_be32u(&gb);
bytestream2_skipu(&gb, header_size - (XWD_HEADER_SIZE - 20));
+ if ((ret = ff_set_dimensions(avctx, width, height)) < 0)
+ return ret;
+
av_log(avctx, AV_LOG_DEBUG,
"pixformat %"PRIu32", pixdepth %"PRIu32", bunit %"PRIu32", bitorder %"PRIu32", bpad %"PRIu32"\n",
pixformat, pixdepth, bunit, bitorder, bpad);
blue = bytestream2_get_byteu(&gb);
bytestream2_skipu(&gb, 3); // skip bitmask flag and padding
- dst[i] = red << 16 | green << 8 | blue;
+ dst[i] = 0xFFU << 24 | red << 16 | green << 8 | blue;
}
}
return buf_size;
}
-AVCodec ff_xwd_decoder = {
+const AVCodec ff_xwd_decoder = {
.name = "xwd",
.long_name = NULL_IF_CONFIG_SMALL("XWD (X Window Dump) image"),
.type = AVMEDIA_TYPE_VIDEO,