| @@ -321,6 +321,7 @@ static int dxv_decode(AVCodecContext *avctx, void *data, | |||||
| ThreadFrame tframe; | ThreadFrame tframe; | ||||
| GetByteContext *gbc = &ctx->gbc; | GetByteContext *gbc = &ctx->gbc; | ||||
| int (*decompress_tex)(AVCodecContext *avctx); | int (*decompress_tex)(AVCodecContext *avctx); | ||||
| const char *msgcomp, *msgtext; | |||||
| uint32_t tag; | uint32_t tag; | ||||
| int version_major, version_minor = 0; | int version_major, version_minor = 0; | ||||
| int size = 0, old_type = 0; | int size = 0, old_type = 0; | ||||
| @@ -335,14 +336,16 @@ static int dxv_decode(AVCodecContext *avctx, void *data, | |||||
| ctx->tex_funct = ctx->texdsp.dxt1_block; | ctx->tex_funct = ctx->texdsp.dxt1_block; | ||||
| ctx->tex_rat = 8; | ctx->tex_rat = 8; | ||||
| ctx->tex_step = 8; | ctx->tex_step = 8; | ||||
| av_log(avctx, AV_LOG_DEBUG, "DXTR1 compression and DXT1 texture "); | |||||
| msgcomp = "DXTR1"; | |||||
| msgtext = "DXT1"; | |||||
| break; | break; | ||||
| case MKBETAG('D', 'X', 'T', '5'): | case MKBETAG('D', 'X', 'T', '5'): | ||||
| decompress_tex = dxv_decompress_dxt5; | decompress_tex = dxv_decompress_dxt5; | ||||
| ctx->tex_funct = ctx->texdsp.dxt5_block; | ctx->tex_funct = ctx->texdsp.dxt5_block; | ||||
| ctx->tex_rat = 4; | ctx->tex_rat = 4; | ||||
| ctx->tex_step = 16; | ctx->tex_step = 16; | ||||
| av_log(avctx, AV_LOG_DEBUG, "DXTR5 compression and DXT5 texture "); | |||||
| msgcomp = "DXTR5"; | |||||
| msgtext = "DXT5"; | |||||
| break; | break; | ||||
| case MKBETAG('Y', 'C', 'G', '6'): | case MKBETAG('Y', 'C', 'G', '6'): | ||||
| case MKBETAG('Y', 'G', '1', '0'): | case MKBETAG('Y', 'G', '1', '0'): | ||||
| @@ -353,13 +356,16 @@ static int dxv_decode(AVCodecContext *avctx, void *data, | |||||
| size = tag & 0x00FFFFFF; | size = tag & 0x00FFFFFF; | ||||
| old_type = tag >> 24; | old_type = tag >> 24; | ||||
| version_major = (old_type & 0x0F) - 1; | version_major = (old_type & 0x0F) - 1; | ||||
| msgcomp = "LZF"; | |||||
| if (old_type & 0x40) { | if (old_type & 0x40) { | ||||
| av_log(avctx, AV_LOG_DEBUG, "LZF compression and DXT5 texture "); | |||||
| msgtext = "DXT5"; | |||||
| ctx->tex_funct = ctx->texdsp.dxt5_block; | ctx->tex_funct = ctx->texdsp.dxt5_block; | ||||
| ctx->tex_step = 16; | ctx->tex_step = 16; | ||||
| } else if (old_type & 0x20 || version_major == 1) { | } else if (old_type & 0x20 || version_major == 1) { | ||||
| av_log(avctx, AV_LOG_DEBUG, "LZF compression and DXT1 texture "); | |||||
| msgtext = "DXT1"; | |||||
| ctx->tex_funct = ctx->texdsp.dxt1_block; | ctx->tex_funct = ctx->texdsp.dxt1_block; | ||||
| ctx->tex_step = 8; | ctx->tex_step = 8; | ||||
| } else { | } else { | ||||
| @@ -379,7 +385,9 @@ static int dxv_decode(AVCodecContext *avctx, void *data, | |||||
| bytestream2_skip(gbc, 2); // unknown | bytestream2_skip(gbc, 2); // unknown | ||||
| size = bytestream2_get_le32(gbc); | size = bytestream2_get_le32(gbc); | ||||
| } | } | ||||
| av_log(avctx, AV_LOG_DEBUG, "(version %d.%d)\n", version_major, version_minor); | |||||
| av_log(avctx, AV_LOG_DEBUG, | |||||
| "%s compression with %s texture (version %d.%d)\n", | |||||
| msgcomp, msgtext, version_major, version_minor); | |||||
| if (size != bytestream2_get_bytes_left(gbc)) { | if (size != bytestream2_get_bytes_left(gbc)) { | ||||
| av_log(avctx, AV_LOG_ERROR, "Incomplete or invalid file (%u > %u)\n.", | av_log(avctx, AV_LOG_ERROR, "Incomplete or invalid file (%u > %u)\n.", | ||||