2
// This unit is part of the GLScene Engine https://github.com/glscene
5
Support for MP3 format.
8
25/07/09 - DaStr - Added $I GLScene.inc
9
06/05/09 - DanB - Creation from split from GLSoundFileObjects.pas
19
Classes, GLApplicationFileIO, GLSoundFileObjects;
25
{ Support for MP3 format.
26
*Partial* support only, access to PCMData is NOT supported. }
27
TGLMP3File = class (TGLSoundFile)
30
data : array of Byte; // used to store MP3 bitstream
37
function CreateCopy(AOwner: TPersistent) : TGLDataFile; override;
39
class function Capabilities : TGLDataFileCapabilities; override;
41
procedure LoadFromStream(Stream: TStream); override;
42
procedure SaveToStream(Stream: TStream); override;
44
procedure PlayOnWaveOut; override;
46
function WAVData : Pointer; override;
47
function WAVDataSize : Integer; override;
48
function PCMData : Pointer; override;
49
function LengthInBytes : Integer; override;
55
// ------------------ TGLMP3File ------------------
60
function TGLMP3File.CreateCopy(AOwner: TPersistent) : TGLDataFile;
62
Result:=inherited CreateCopy(AOwner);
63
if Assigned(Result) then begin
64
TGLMP3File(Result).data := Copy(data);
70
class function TGLMP3File.Capabilities : TGLDataFileCapabilities;
72
Result:=[dfcRead, dfcWrite];
77
procedure TGLMP3File.LoadFromStream(stream : TStream);
79
// MP3 isn't actually, just loaded directly...
80
Assert(Assigned(stream));
81
SetLength(data, stream.Size);
82
if Length(data)>0 then
83
stream.Read(data[0], Length(data));
88
procedure TGLMP3File.SaveToStream(stream: TStream);
90
if Length(data)>0 then
91
stream.Write(data[0], Length(data));
96
procedure TGLMP3File.PlayOnWaveOut;
98
Assert(False, 'MP3 playback on WaveOut not supported.');
103
function TGLMP3File.WAVData : Pointer;
105
if Length(data)>0 then
112
function TGLMP3File.WAVDataSize : Integer;
114
Result:=Length(data);
119
function TGLMP3File.PCMData : Pointer;
126
function TGLMP3File.LengthInBytes : Integer;
133
RegisterSoundFileFormat('mp3', 'MPEG Layer3 files', TGLMP3File);