Wenn ich mir
Int64
und
UInt64
ansehe, hätte ich schon fast gedacht, da müsste
Int64
besser passen (Vorzeichen-Bit, aber ...
...
Currency
wird als Container für 8 Bytes ge(miss)braucht, von daher würde ich da auf jeden Fall mal
Int64
gegen
UInt64
bzw.
Cardinal
(das Gleiche in grün) tauschen.
Delphi-Quellcode:
type
PMPEGAudioAttributes = ^TMPEGAudioAttributes;
TMPEGAudioAttributes = packed record
Position: UInt64; //* Position of header in bytes
Header: DWord; //* The Headers bytes
FrameSize: Integer; //* Frame's length
Version: TMPEGVersion; //* MPEG Version
Layer: TMPEGLayer; //* MPEG Layer
CRC: LongBool; //* Frame has CRC
BitRate: DWord; //* Frame's bitrate
SampleRate: DWord; //* Frame's sample rate
Padding: LongBool; //* Frame is padded
_Private: LongBool; //* Frame's private bit is set
ChannelMode: TMPEGChannelMode; //* Frame's channel mode
ModeExtension: TMPEGModeExtension; //* Joint stereo only
Copyrighted: LongBool; //* Frame's Copyright bit is set
Original: LongBool; //* Frame's Original bit is set
Emphasis: TMPEGEmphasis; //* Frame's emphasis mode
VBR: LongBool; //* Stream is probably VBR
FrameCount: UInt64; //* Total number of MPEG frames (by header)
Quality: Integer; //* MPEG quality
Bytes: UInt64; //* Total bytes
end;
Edit
Ok, hört sich auch irgendwie nach Voodoo an (wenn ich so länger drüber sinniere).
Wie sind denn diese
TMPEG...
Typen definiert? Enums, Records, ...?
Bei Enums muss man aufpassen, denn die können unterschiedliche Byte-Längen haben (wenn man da nicht einwirkt).