You've already forked FFmpeg
							
							
				mirror of
				https://github.com/FFmpeg/FFmpeg.git
				synced 2025-10-30 23:18:11 +02:00 
			
		
		
		
	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:
		| @@ -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); | ||||
|   | ||||
		Reference in New Issue
	
	Block a user