mirror of https://git.ffmpeg.org/ffmpeg.git
Don't use expressions with side effects in macro parameters
AV_WB32 can be implemented as a macro that expands its parameters multiple times (in case AV_HAVE_FAST_UNALIGNED isn't set and the compiler doesn't support GCC attributes); make sure not to read multiple times from the source in this case. Signed-off-by: Martin Storsjö <martin@martin.st>
This commit is contained in:
parent
7ebdffc353
commit
25bacd0a0c
|
@ -121,8 +121,10 @@ static int dxv_decompress_dxt1(AVCodecContext *avctx)
|
|||
int pos = 2;
|
||||
|
||||
/* Copy the first two elements */
|
||||
AV_WL32(ctx->tex_data, bytestream2_get_le32(gbc));
|
||||
AV_WL32(ctx->tex_data + 4, bytestream2_get_le32(gbc));
|
||||
value = bytestream2_get_le32(gbc);
|
||||
AV_WL32(ctx->tex_data, value);
|
||||
value = bytestream2_get_le32(gbc);
|
||||
AV_WL32(ctx->tex_data + 4, value);
|
||||
|
||||
/* Process input until the whole texture has been filled */
|
||||
while (pos + 2 <= ctx->tex_size / 4) {
|
||||
|
@ -172,10 +174,14 @@ static int dxv_decompress_dxt5(AVCodecContext *avctx)
|
|||
int probe, check;
|
||||
|
||||
/* Copy the first four elements */
|
||||
AV_WL32(ctx->tex_data + 0, bytestream2_get_le32(gbc));
|
||||
AV_WL32(ctx->tex_data + 4, bytestream2_get_le32(gbc));
|
||||
AV_WL32(ctx->tex_data + 8, bytestream2_get_le32(gbc));
|
||||
AV_WL32(ctx->tex_data + 12, bytestream2_get_le32(gbc));
|
||||
value = bytestream2_get_le32(gbc);
|
||||
AV_WL32(ctx->tex_data + 0, value);
|
||||
value = bytestream2_get_le32(gbc);
|
||||
AV_WL32(ctx->tex_data + 4, value);
|
||||
value = bytestream2_get_le32(gbc);
|
||||
AV_WL32(ctx->tex_data + 8, value);
|
||||
value = bytestream2_get_le32(gbc);
|
||||
AV_WL32(ctx->tex_data + 12, value);
|
||||
|
||||
/* Process input until the whole texture has been filled */
|
||||
while (pos + 2 <= ctx->tex_size / 4) {
|
||||
|
|
|
@ -512,8 +512,10 @@ static int xmv_fetch_video_packet(AVFormatContext *s,
|
|||
* WMV2 is little-endian.
|
||||
* TODO: This manual swap is of course suboptimal.
|
||||
*/
|
||||
for (i = 0; i < frame_size; i += 4)
|
||||
AV_WB32(pkt->data + i, avio_rl32(pb));
|
||||
for (i = 0; i < frame_size; i += 4) {
|
||||
uint32_t val = avio_rl32(pb);
|
||||
AV_WB32(pkt->data + i, val);
|
||||
}
|
||||
|
||||
pkt->stream_index = video->stream_index;
|
||||
|
||||
|
|
Loading…
Reference in New Issue