Skip to content

Commit 4beafcf

Browse files
committed
fix FourCC bug
1 parent 9dc0cda commit 4beafcf

File tree

1 file changed

+5
-7
lines changed

1 file changed

+5
-7
lines changed

src/ImageSharp/Common/Helpers/RiffHelper.cs

Lines changed: 5 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,7 @@ public static void WriteChunk(Stream stream, uint fourCc, Action<Stream> func)
2525
Span<byte> buffer = stackalloc byte[4];
2626

2727
// write the fourCC
28-
BinaryPrimitives.WriteUInt32LittleEndian(buffer, fourCc);
28+
BinaryPrimitives.WriteUInt32BigEndian(buffer, fourCc);
2929
stream.Write(buffer);
3030

3131
long sizePosition = stream.Position;
@@ -34,7 +34,6 @@ public static void WriteChunk(Stream stream, uint fourCc, Action<Stream> func)
3434
func(stream);
3535

3636
long position = stream.Position;
37-
stream.Position = sizePosition;
3837

3938
uint dataSize = (uint)(position - sizePosition - 4);
4039

@@ -46,8 +45,8 @@ public static void WriteChunk(Stream stream, uint fourCc, Action<Stream> func)
4645
}
4746

4847
BinaryPrimitives.WriteUInt32LittleEndian(buffer, dataSize);
48+
stream.Position = sizePosition;
4949
stream.Write(buffer);
50-
5150
stream.Position = position;
5251
}
5352

@@ -56,7 +55,7 @@ public static void WriteChunk(Stream stream, uint fourCc, ReadOnlySpan<byte> dat
5655
Span<byte> buffer = stackalloc byte[4];
5756

5857
// write the fourCC
59-
BinaryPrimitives.WriteUInt32LittleEndian(buffer, fourCc);
58+
BinaryPrimitives.WriteUInt32BigEndian(buffer, fourCc);
6059
stream.Write(buffer);
6160
uint size = (uint)data.Length;
6261
BinaryPrimitives.WriteUInt32LittleEndian(buffer, size);
@@ -84,7 +83,7 @@ public static long BeginWriteChunk(Stream stream, uint fourCc)
8483
Span<byte> buffer = stackalloc byte[4];
8584

8685
// write the fourCC
87-
BinaryPrimitives.WriteUInt32LittleEndian(buffer, fourCc);
86+
BinaryPrimitives.WriteUInt32BigEndian(buffer, fourCc);
8887
stream.Write(buffer);
8988

9089
long sizePosition = stream.Position;
@@ -98,7 +97,6 @@ public static void EndWriteChunk(Stream stream, long sizePosition)
9897
Span<byte> buffer = stackalloc byte[4];
9998

10099
long position = stream.Position;
101-
stream.Position = sizePosition;
102100

103101
uint dataSize = (uint)(position - sizePosition - 4);
104102

@@ -110,8 +108,8 @@ public static void EndWriteChunk(Stream stream, long sizePosition)
110108
}
111109

112110
BinaryPrimitives.WriteUInt32LittleEndian(buffer, dataSize);
111+
stream.Position = sizePosition;
113112
stream.Write(buffer);
114-
115113
stream.Position = position;
116114
}
117115

0 commit comments

Comments
 (0)