123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224 |
- MODULE Codecs;
- IMPORT Streams, Commands, Files, SoundDevices, Raster, Modules, Strings, Configuration, Unzip, Texts, Archives;
- CONST
- ResFailed* = -1;
- ResOk* = 0;
- ResSeekInexact* = 1;
- ImgFmtBW* = 0;
- ImgFmtGrey* = 1;
- ImgFmtRGB* = 2;
- ImgFmtRGBA* = 3;
- STError* = -1;
- STUnknown* = 0;
- STAudio* = 1;
- STVideo* = 2;
- STImage* = 3;
- SeekByte* = 0;
- SeekSample* = 1;
- SeekKeySample* = 2;
- SeekFrame* = 3;
- SeekKeyFrame* = 4;
- Unspecified* = 0;
- DoNotDispose* = 1;
- RestoreToBackground* = 2;
- RestoreToPrevious* = 3;
- WaitForUserInput* = 0;
- TYPE
- AVStreamInfo* = RECORD
- streamType*: LONGINT;
- seekability*: SET;
- contentType*: ARRAY 16 OF CHAR;
- length*: LONGINT;
- frames*: LONGINT;
- rate*: LONGINT;
- END;
- FileInputStream* = OBJECT (Streams.Reader)
- VAR
- r: Files.Rider;
- f*: Files.File;
- streamInfo*: AVStreamInfo;
- PROCEDURE ^ Receive(VAR buf: ARRAY OF CHAR; ofs, size, min: LONGINT; VAR len: LONGINT; VAR res: WORD);
- PROCEDURE ^ & InitFileReader*(f: Files.File; pos: LONGINT);
- PROCEDURE ^ CanSetPos*(): BOOLEAN;
- PROCEDURE ^ SetPos*(pos: Streams.Position);
- END FileInputStream;
- AVDemultiplexer* = OBJECT
- PROCEDURE ^ Open*(in: Streams.Reader; VAR res: WORD);
- PROCEDURE ^ GetNumberOfStreams*(): LONGINT;
- PROCEDURE ^ GetStreamType*(streamNr: LONGINT): LONGINT;
- PROCEDURE ^ GetStreamInfo*(streamNr: LONGINT): AVStreamInfo;
- PROCEDURE ^ GetStream*(streamNr: LONGINT): DemuxStream;
- PROCEDURE ^ GetData*(streamNr: LONGINT; VAR buf: ARRAY OF CHAR; ofs, size, min: LONGINT; VAR len: LONGINT; VAR res: WORD);
- PROCEDURE ^ SetStreamPos*(streamNr: LONGINT; seekType: LONGINT; pos: LONGINT; VAR itemSize: LONGINT; VAR res: WORD);
- END AVDemultiplexer;
- DemuxStream* = OBJECT (Streams.Reader)
- VAR
- demultiplexer*: AVDemultiplexer;
- streamNr*: LONGINT;
- streamInfo*: AVStreamInfo;
- PROCEDURE ^ & Open*(demultiplexer: AVDemultiplexer; streamNr: LONGINT);
- PROCEDURE ^ Receive(VAR buf: ARRAY OF CHAR; ofs, size, min: LONGINT; VAR len: LONGINT; VAR res: WORD);
- PROCEDURE ^ SetPos*(pos: Streams.Position);
- PROCEDURE ^ SetPosX*(seekType: LONGINT; pos: LONGINT; VAR itemSize: LONGINT; VAR res: WORD);
- END DemuxStream;
- AudioDecoder* = OBJECT
- PROCEDURE ^ Open*(in: Streams.Reader; VAR res: WORD);
- PROCEDURE ^ HasMoreData*(): BOOLEAN;
- PROCEDURE ^ GetAudioInfo*(VAR nofChannels, samplesPerSecond, bitsPerSample: LONGINT);
- PROCEDURE ^ SetAudioInfo*(nofChannels, samplesPerSecond, bitsPerSample: LONGINT);
- PROCEDURE ^ CanSeek*(): BOOLEAN;
- PROCEDURE ^ GetCurrentSample*(): LONGINT;
- PROCEDURE ^ GetTotalSamples*(): LONGINT;
- PROCEDURE ^ GetCurrentTime*(): LONGINT;
- PROCEDURE ^ SetStreamLength*(length: LONGINT);
- PROCEDURE ^ SeekSample*(sample: LONGINT; goKeySample: BOOLEAN; VAR res: WORD);
- PROCEDURE ^ SeekMillisecond*(millisecond: LONGINT; goKeySample: BOOLEAN; VAR res: WORD);
- PROCEDURE ^ Next*;
- PROCEDURE ^ FillBuffer*(buffer: SoundDevices.Buffer);
- END AudioDecoder;
- AudioEncoder* = OBJECT
- PROCEDURE ^ Open*(out: Streams.Writer; sRate, sRes, nofCh: LONGINT; VAR res: WORD);
- PROCEDURE ^ Write*(buffer: SoundDevices.Buffer; VAR res: WORD);
- PROCEDURE ^ Close*(VAR res: WORD);
- END AudioEncoder;
- VideoDecoder* = OBJECT
- PROCEDURE ^ Open*(in: Streams.Reader; VAR res: WORD);
- PROCEDURE ^ HasMoreData*(): BOOLEAN;
- PROCEDURE ^ GetVideoInfo*(VAR width, height, millisecondsPerFrame: LONGINT);
- PROCEDURE ^ CanSeek*(): BOOLEAN;
- PROCEDURE ^ GetCurrentFrame*(): LONGINT;
- PROCEDURE ^ GetCurrentTime*(): LONGINT;
- PROCEDURE ^ SeekFrame*(frame: LONGINT; goKeyFrame: BOOLEAN; VAR res: WORD);
- PROCEDURE ^ SeekMillisecond*(millisecond: LONGINT; goKeyFrame: BOOLEAN; VAR res: WORD);
- PROCEDURE ^ Next*;
- PROCEDURE ^ Render*(img: Raster.Image);
- END VideoDecoder;
- VideoEncoder* = OBJECT
- PROCEDURE ^ Open*(out: Streams.Writer; VAR res: WORD);
- PROCEDURE ^ Write*(img: Raster.Image);
- PROCEDURE ^ Close*(VAR res: WORD);
- END VideoEncoder;
- ImageDecoder* = OBJECT
- PROCEDURE ^ Open*(in: Streams.Reader; VAR res: WORD);
- PROCEDURE ^ GetImageInfo*(VAR width, height, format, maxProgressionLevel: LONGINT);
- PROCEDURE ^ SetProgressionLevel*(progressionLevel: LONGINT);
- PROCEDURE ^ GetNativeImage*(VAR img: Raster.Image);
- PROCEDURE ^ Render*(img: Raster.Image);
- END ImageDecoder;
- ImageEncoder* = OBJECT
- PROCEDURE ^ Open*(out: Streams.Writer);
- PROCEDURE ^ SetQuality*(quality: LONGINT);
- PROCEDURE ^ WriteImage*(img: Raster.Image; VAR res: WORD);
- END ImageEncoder;
- TextDecoder* = OBJECT
- PROCEDURE ^ Open*(in: Streams.Reader; VAR res: WORD);
- PROCEDURE ^ GetText*(): Texts.Text;
- END TextDecoder;
- TextEncoder* = OBJECT
- PROCEDURE ^ Open*(out: Streams.Writer);
- PROCEDURE ^ WriteText*(text: Texts.Text; VAR res: WORD);
- END TextEncoder;
- CryptoDecoder* = OBJECT
- PROCEDURE ^ Open*(in: Streams.Reader; VAR res: WORD);
- PROCEDURE ^ GetReader*(): Streams.Reader;
- END CryptoDecoder;
- CryptoEncoder* = OBJECT
- PROCEDURE ^ Open*(out: Streams.Writer);
- PROCEDURE ^ GetWriter*(): Streams.Writer;
- END CryptoEncoder;
- ImageDescriptor* = OBJECT
- VAR
- left*, top*, width*, height*: LONGINT;
- image*: Raster.Image;
- delayTime*: LONGINT;
- disposeMode*: LONGINT;
- flags*: SET;
- previous*, next*: ImageDescriptor;
- PROCEDURE ^ & Init*;
- END ImageDescriptor;
- ImageSequence* = RECORD
- width*, height*: LONGINT;
- bgColor*: LONGINT;
- images*: ImageDescriptor;
- END;
- AnimationDecoder* = OBJECT
- PROCEDURE ^ Open*(in: Streams.Reader; VAR res: WORD);
- PROCEDURE ^ GetImageSequence*(VAR sequence: ImageSequence; VAR res: WORD);
- END AnimationDecoder;
- DemuxFactory = PROCEDURE ():AVDemultiplexer;
- AudioDecoderFactory = PROCEDURE ():AudioDecoder;
- AudioEncoderFactory = PROCEDURE ():AudioEncoder;
- VideoDecoderFactory = PROCEDURE ():VideoDecoder;
- VideoEncoderFactory = PROCEDURE ():VideoEncoder;
- ImageDecoderFactory = PROCEDURE ():ImageDecoder;
- ImageEncoderFactory = PROCEDURE ():ImageEncoder;
- TextDecoderFactory = PROCEDURE ():TextDecoder;
- TextEncoderFactory = PROCEDURE ():TextEncoder;
- CryptoDecoderFactory = PROCEDURE ():CryptoDecoder;
- CryptoEncoderFactory = PROCEDURE ():CryptoEncoder;
- AnimationDecoderFactory = PROCEDURE ():AnimationDecoder;
- PROCEDURE ^ GetDemuxFactoryName(CONST name: ARRAY OF CHAR; VAR module, procedure: Modules.Name; VAR res: WORD);
- PROCEDURE ^ GetDecoderFactoryName(CONST type, name: ARRAY OF CHAR; VAR module, procedure: Modules.Name; VAR res: WORD);
- PROCEDURE ^ GetEncoderFactoryName(CONST type, name: ARRAY OF CHAR; VAR module, procedure: Modules.Name; VAR res: WORD);
- PROCEDURE ^ GetDemultiplexer*(CONST name: ARRAY OF CHAR): AVDemultiplexer;
- PROCEDURE ^ GetImageDecoder*(CONST name: ARRAY OF CHAR): ImageDecoder;
- PROCEDURE ^ GetImageEncoder*(CONST name: ARRAY OF CHAR): ImageEncoder;
- PROCEDURE ^ GetVideoDecoder*(CONST name: ARRAY OF CHAR): VideoDecoder;
- PROCEDURE ^ GetVideoEncoder*(CONST name: ARRAY OF CHAR): VideoEncoder;
- PROCEDURE ^ GetAudioDecoder*(CONST name: ARRAY OF CHAR): AudioDecoder;
- PROCEDURE ^ GetAudioEncoder*(CONST name: ARRAY OF CHAR): AudioEncoder;
- PROCEDURE ^ GetTextDecoder*(CONST name: ARRAY OF CHAR): TextDecoder;
- PROCEDURE ^ GetTextEncoder*(CONST name: ARRAY OF CHAR): TextEncoder;
- PROCEDURE ^ GetCryptoDecoder*(CONST name: ARRAY OF CHAR): CryptoDecoder;
- PROCEDURE ^ GetCryptoEncoder*(CONST name: ARRAY OF CHAR): CryptoEncoder;
- PROCEDURE ^ GetAnimationDecoder*(CONST name: ARRAY OF CHAR): AnimationDecoder;
- PROCEDURE ^ SplitName*(CONST name: ARRAY OF CHAR; VAR protocol, filename: ARRAY OF CHAR);
- PROCEDURE ^ JoinName*(CONST protocol, filename: ARRAY OF CHAR; VAR name: ARRAY OF CHAR);
- PROCEDURE ^ OpenInputStream*(CONST name: ARRAY OF CHAR): Streams.Reader;
- PROCEDURE ^ OpenOutputStream*(CONST name: ARRAY OF CHAR): Streams.Writer;
- BEGIN
- END Codecs.
|