mirror of https://git.ffmpeg.org/ffmpeg.git
avcodec/dxvenc: Use proper alignment, write endian-independent output
Fixes the dxv3enc-dxt1 FATE test with UBSan and on big-endian hardware. Reviewed-by: James Almer <jamrial@gmail.com> Tested-by: Sean McGovern <gseanmcg@gmail.com> Signed-off-by: Andreas Rheinhardt <andreas.rheinhardt@outlook.com>
This commit is contained in:
parent
7945d30e91
commit
0c204ce9f6
|
@ -134,7 +134,7 @@ typedef struct DXVEncContext {
|
|||
if (bytestream2_get_bytes_left_p(pbc) < 4) { \
|
||||
return AVERROR_INVALIDDATA; \
|
||||
} \
|
||||
value = (uint32_t*)pbc->buffer; \
|
||||
value = pbc->buffer; \
|
||||
bytestream2_put_le32(pbc, 0); \
|
||||
state = 0; \
|
||||
} \
|
||||
|
@ -149,7 +149,7 @@ typedef struct DXVEncContext {
|
|||
} else { \
|
||||
op = 0; \
|
||||
} \
|
||||
*value |= (op << (state * 2)); \
|
||||
AV_WL32(value, AV_RL32(value) | (op << (state * 2))); \
|
||||
state++; \
|
||||
} while (0)
|
||||
|
||||
|
@ -157,7 +157,7 @@ static int dxv_compress_dxt1(AVCodecContext *avctx)
|
|||
{
|
||||
DXVEncContext *ctx = avctx->priv_data;
|
||||
PutByteContext *pbc = &ctx->pbc;
|
||||
uint32_t *value;
|
||||
void *value;
|
||||
uint32_t color, lut, idx, color_idx, lut_idx, prev_pos, state = 16, pos = 2, op = 0;
|
||||
|
||||
ht_init(ctx->color_lookback_ht);
|
||||
|
|
Loading…
Reference in New Issue