diff options
Diffstat (limited to 'Game/Code/lib/ffmpeg/avio.pas')
-rw-r--r-- | Game/Code/lib/ffmpeg/avio.pas | 492 |
1 files changed, 249 insertions, 243 deletions
diff --git a/Game/Code/lib/ffmpeg/avio.pas b/Game/Code/lib/ffmpeg/avio.pas index 7d0e8c04..84622f0d 100644 --- a/Game/Code/lib/ffmpeg/avio.pas +++ b/Game/Code/lib/ffmpeg/avio.pas @@ -1,243 +1,249 @@ - (*
- * unbuffered io for ffmpeg system
- * copyright (c) 2001 Fabrice Bellard
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License as published by the Free Software Foundation; either
- * version 2 of the License, or (at your option) any later version.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this library; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
- *)
-unit avio;
-
-interface
-
-uses
- windows;
-
-const
- av__format = 'avformat-50.dll';
-
- URL_RDONLY = 0;
- URL_WRONLY = 1;
- URL_RDWR = 2;
-
-(* output byte stream handling *)
-
-type
- offset_t = int64;
- int = integer;
-
-(* unbuffered I/O *)
- PURLProtocol = ^TURLProtocol;
- PURLContext = ^TURLContext;
- TURLContext = record
- prot: PURLProtocol;
- flags: int;
- is_streamed: int; //* true if streamed (no seek possible), default = false */
- max_packet_size: int; //* if non zero, the stream is packetized with this max packet size */
- priv_data: pointer;
- filename: array [0..0] of char; (* specified filename *)
- end;
-
- PURLPollEntry = ^TURLPollEntry;
- TURLPollEntry = record
- handle: PURLContext;
- events: integer;
- revents: integer;
- end;
-
- TURLProtocol = record
- name: pchar;
- url_open: function (h: PURLContext; const filename: pchar; flags: integer): integer; cdecl;
- url_read: function (h: PURLContext; buf: pchar; size: integer): integer; cdecl;
- url_write: function (h: PURLContext; buf: pchar; size: integer): integer; cdecl;
- url_seek: function (h: PURLContext; pos: int64; whence: integer): int64; cdecl;
- url_close: function (h: PURLContext): integer; cdecl;
- next: PURLProtocol;
- end;
-
- PByteIOContext = ^TByteIOContext;
- TByteIOContext = record
- buffer: pchar;
- buffer_size: integer;
- buf_ptr: pchar;
- buf_end: pchar;
- opaque: pointer;
- read_packet: function (opaque: pointer; buf: pchar; buf_size: integer): integer; cdecl;
- write_packet: function (opaque: pointer; buf: pchar; buf_size: integer): integer; cdecl;
- seek: function (opaque: pointer; offset: int64; whence: integer): int64; cdecl;
- pos: int64; (* position in the file of the current buffer *)
- must_flush: integer; (* true if the next seek should flush *)
- eof_reached: integer; (* true if eof reached *)
- write_flag: integer; (* true if open for writing *)
- is_streamed: integer;
- max_packet_size: integer;
- checksum: longword;
- checksum_ptr: pchar;
- update_checksum: function (checksum: cardinal; const buf: pchar; size: cardinal): LongWord; cdecl;
- error: integer; ///< contains the error code or 0 if no error happened
- end;
-
- function url_open(h: PPointer; const filename: pchar; flags: integer): integer;
- cdecl; external av__format;
- function url_read (h: PURLContext; buf: pchar; size: integer): integer;
- cdecl; external av__format;
- function url_write (h: PURLContext; buf: pchar; size: integer): integer;
- cdecl; external av__format;
- function url_seek (h: PURLContext; pos: int64; whence: integer): int64;
- cdecl; external av__format;
- function url_close (h: PURLContext): integer;
- cdecl; external av__format;
- function url_exist(const filename: pchar): integer;
- cdecl; external av__format;
- function url_filesize (h: PURLContext): int64;
- cdecl; external av__format;
- function url_get_max_packet_size(h: PURLContext): integer;
- cdecl; external av__format;
- procedure url_get_filename(h: PURLContext; buf: pchar; buf_size: integer);
- cdecl; external av__format;
-
-(* the callback is called in blocking functions to test regulary if
- asynchronous interruption is needed. -EINTR is returned in this
- case by the interrupted function. 'NULL' means no interrupt
- callback is given. *)
- procedure url_set_interrupt_cb (interrupt_cb: pinteger);
- cdecl; external av__format;
-
-(* not implemented *)
-//int url_poll(URLPollEntry *poll_table, int n, int timeout);
-
- function register_protocol (protocol: PURLProtocol): integer;
- cdecl; external av__format;
-
- function init_put_byte(s: PByteIOContext;
- buffer: pchar;
- buffer_size: integer; write_flag: integer;
- opaque: pointer;
- read_packet: pointer; //int (*read_packet)(void *opaque, uint8_t *buf, int buf_size),
- write_packet: pointer; //int (*write_packet)(void *opaque, uint8_t *buf, int buf_size),
- seek: pointer //offset_t (*seek)(void *opaque, offset_t offset, int whence)
- ): integer;
- cdecl; external av__format;
- procedure put_byte(s: PByteIOContext; b: integer);
- cdecl; external av__format;
- procedure put_buffer (s: PByteIOContext; const buf: pchar; size: integer);
- cdecl; external av__format;
- procedure put_le64(s: PByteIOContext; val: int64);
- cdecl; external av__format;
- procedure put_be64(s: PByteIOContext; val: int64);
- cdecl; external av__format;
- procedure put_le32(s: PByteIOContext; val: cardinal);
- cdecl; external av__format;
- procedure put_be32(s: PByteIOContext; val: cardinal);
- cdecl; external av__format;
- procedure put_be24(s: PByteIOContext; val: cardinal);
- cdecl; external av__format;
- procedure put_le16(s: PByteIOContext; val: cardinal);
- cdecl; external av__format;
- procedure put_be16(s: PByteIOContext; val: cardinal);
- cdecl; external av__format;
- procedure put_tag(s: PByteIOContext; const tag: pchar);
- cdecl; external av__format;
-
- procedure put_strz(s: PByteIOContext; const buf: pchar);
- cdecl; external av__format;
-
- function url_fseek(s: PByteIOContext; offset: int64; whence: integer): int64;
- cdecl; external av__format;
- procedure url_fskip(s: PByteIOContext; offset: int64);
- cdecl; external av__format;
- function url_ftell(s: PByteIOContext): int64;
- cdecl; external av__format;
- function url_fsize(s: PByteIOContext): int64;
- cdecl; external av__format;
- function url_feof(s: PByteIOContext): integer;
- cdecl; external av__format;
- function url_ferror(s: PByteIOContext): integer;
- cdecl; external av__format;
-
- procedure put_flush_packet (s: PByteIOContext);
- cdecl; external av__format;
- function get_buffer(s: PByteIOContext; buf: pchar; size: integer): integer;
- cdecl; external av__format;
- function get_partial_buffer(s: PByteIOContext; buf: pchar; size: integer): integer;
- cdecl; external av__format;
- function get_byte(s: PByteIOContext): integer;
- cdecl; external av__format;
- function get_le32(s: PByteIOContext): cardinal;
- cdecl; external av__format;
- function get_le64(s: PByteIOContext): int64;
- cdecl; external av__format;
- function get_le16(s: PByteIOContext): cardinal;
- cdecl; external av__format;
-
- function get_strz(s: PByteIOContext; buf: pchar; maxlen: integer): pchar;
- cdecl; external av__format;
- function get_be16(s: PByteIOContext): cardinal;
- cdecl; external av__format;
- function get_be24(s: PByteIOContext): cardinal;
- cdecl; external av__format;
- function get_be32(s: PByteIOContext): cardinal;
- cdecl; external av__format;
- function get_be64(s: PByteIOContext): int64;
- cdecl; external av__format;
-
- function url_is_streamed(s: PByteIOContext): integer;
-
- function url_fdopen (s: PByteIOContext; h: PURLContext): integer;
- cdecl; external av__format;
- function url_setbufsize (s: PByteIOContext; buf_size: integer): integer;
- cdecl; external av__format;
- function url_fopen(s: PByteIOContext; const filename: pchar; flags: integer): integer;
- cdecl; external av__format;
- function url_fclose(s: PByteIOContext): integer;
- cdecl; external av__format;
-
- function url_fileno(s: PByteIOContext): PURLContext;
- cdecl; external av__format;
- function url_fget_max_packet_size (s: PByteIOContext): integer;
- cdecl; external av__format;
- function url_open_buf(s: PByteIOContext; buf: pchar; buf_size: integer; flags: integer): integer;
- cdecl; external av__format;
- function url_close_buf(s: PByteIOContext): integer;
- cdecl; external av__format;
-
- function url_open_dyn_buf(s: PByteIOContext): integer;
- cdecl; external av__format;
- function url_open_dyn_packet_buf(s: PByteIOContext; max_packet_size: integer): integer;
- cdecl; external av__format;
- function url_close_dyn_buf(s: PByteIOContext; pbuffer:PPointer): integer;
- cdecl; external av__format;
-
- function get_checksum(s: PByteIOContext): cardinal;
- cdecl; external av__format;
-
- procedure init_checksum (s: PByteIOContext; update_checksum: pointer; checksum: cardinal);
- cdecl; external av__format;
-
- {$IFNDEF FPC}
- function udp_set_remote_url(h: PURLContext; const uri: pchar): integer;
- cdecl; external av__format;
- function udp_get_local_port(h: PURLContext): integer;
- cdecl; external av__format;
- function udp_get_file_handle(h: PURLContext): integer;
- cdecl; external av__format;
- {$ENDIF}
-
-implementation
-
-function url_is_streamed(s: PByteIOContext): integer;
-begin
- Result := s^.is_streamed;
-end;
-
-end.
+ (* + * unbuffered io for ffmpeg system + * copyright (c) 2001 Fabrice Bellard + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + *) +unit avio; + +interface + +{$IFDEF win32} +uses + windows; +{$ENDIF} + +const + {$IFDEF win32} + av__format = 'avformat-50.dll'; + {$ELSE} + av__format = 'libavformat.so'; // .0d + {$ENDIF} + + URL_RDONLY = 0; + URL_WRONLY = 1; + URL_RDWR = 2; + +(* output byte stream handling *) + +type + offset_t = int64; + int = integer; + +(* unbuffered I/O *) + PURLProtocol = ^TURLProtocol; + PURLContext = ^TURLContext; + TURLContext = record + prot: PURLProtocol; + flags: int; + is_streamed: int; //* true if streamed (no seek possible), default = false */ + max_packet_size: int; //* if non zero, the stream is packetized with this max packet size */ + priv_data: pointer; + filename: array [0..0] of char; (* specified filename *) + end; + + PURLPollEntry = ^TURLPollEntry; + TURLPollEntry = record + handle: PURLContext; + events: integer; + revents: integer; + end; + + TURLProtocol = record + name: pchar; + url_open: function (h: PURLContext; const filename: pchar; flags: integer): integer; cdecl; + url_read: function (h: PURLContext; buf: pchar; size: integer): integer; cdecl; + url_write: function (h: PURLContext; buf: pchar; size: integer): integer; cdecl; + url_seek: function (h: PURLContext; pos: int64; whence: integer): int64; cdecl; + url_close: function (h: PURLContext): integer; cdecl; + next: PURLProtocol; + end; + + PByteIOContext = ^TByteIOContext; + TByteIOContext = record + buffer: pchar; + buffer_size: integer; + buf_ptr: pchar; + buf_end: pchar; + opaque: pointer; + read_packet: function (opaque: pointer; buf: pchar; buf_size: integer): integer; cdecl; + write_packet: function (opaque: pointer; buf: pchar; buf_size: integer): integer; cdecl; + seek: function (opaque: pointer; offset: int64; whence: integer): int64; cdecl; + pos: int64; (* position in the file of the current buffer *) + must_flush: integer; (* true if the next seek should flush *) + eof_reached: integer; (* true if eof reached *) + write_flag: integer; (* true if open for writing *) + is_streamed: integer; + max_packet_size: integer; + checksum: longword; + checksum_ptr: pchar; + update_checksum: function (checksum: cardinal; const buf: pchar; size: cardinal): LongWord; cdecl; + error: integer; ///< contains the error code or 0 if no error happened + end; + + function url_open(h: PPointer; const filename: pchar; flags: integer): integer; + cdecl; external av__format; + function url_read (h: PURLContext; buf: pchar; size: integer): integer; + cdecl; external av__format; + function url_write (h: PURLContext; buf: pchar; size: integer): integer; + cdecl; external av__format; + function url_seek (h: PURLContext; pos: int64; whence: integer): int64; + cdecl; external av__format; + function url_close (h: PURLContext): integer; + cdecl; external av__format; + function url_exist(const filename: pchar): integer; + cdecl; external av__format; + function url_filesize (h: PURLContext): int64; + cdecl; external av__format; + function url_get_max_packet_size(h: PURLContext): integer; + cdecl; external av__format; + procedure url_get_filename(h: PURLContext; buf: pchar; buf_size: integer); + cdecl; external av__format; + +(* the callback is called in blocking functions to test regulary if + asynchronous interruption is needed. -EINTR is returned in this + case by the interrupted function. 'NULL' means no interrupt + callback is given. *) + procedure url_set_interrupt_cb (interrupt_cb: pinteger); + cdecl; external av__format; + +(* not implemented *) +//int url_poll(URLPollEntry *poll_table, int n, int timeout); + + function register_protocol (protocol: PURLProtocol): integer; + cdecl; external av__format; + + function init_put_byte(s: PByteIOContext; + buffer: pchar; + buffer_size: integer; write_flag: integer; + opaque: pointer; + read_packet: pointer; //int (*read_packet)(void *opaque, uint8_t *buf, int buf_size), + write_packet: pointer; //int (*write_packet)(void *opaque, uint8_t *buf, int buf_size), + seek: pointer //offset_t (*seek)(void *opaque, offset_t offset, int whence) + ): integer; + cdecl; external av__format; + procedure put_byte(s: PByteIOContext; b: integer); + cdecl; external av__format; + procedure put_buffer (s: PByteIOContext; const buf: pchar; size: integer); + cdecl; external av__format; + procedure put_le64(s: PByteIOContext; val: int64); + cdecl; external av__format; + procedure put_be64(s: PByteIOContext; val: int64); + cdecl; external av__format; + procedure put_le32(s: PByteIOContext; val: cardinal); + cdecl; external av__format; + procedure put_be32(s: PByteIOContext; val: cardinal); + cdecl; external av__format; + procedure put_be24(s: PByteIOContext; val: cardinal); + cdecl; external av__format; + procedure put_le16(s: PByteIOContext; val: cardinal); + cdecl; external av__format; + procedure put_be16(s: PByteIOContext; val: cardinal); + cdecl; external av__format; + procedure put_tag(s: PByteIOContext; const tag: pchar); + cdecl; external av__format; + + procedure put_strz(s: PByteIOContext; const buf: pchar); + cdecl; external av__format; + + function url_fseek(s: PByteIOContext; offset: int64; whence: integer): int64; + cdecl; external av__format; + procedure url_fskip(s: PByteIOContext; offset: int64); + cdecl; external av__format; + function url_ftell(s: PByteIOContext): int64; + cdecl; external av__format; + function url_fsize(s: PByteIOContext): int64; + cdecl; external av__format; + function url_feof(s: PByteIOContext): integer; + cdecl; external av__format; + function url_ferror(s: PByteIOContext): integer; + cdecl; external av__format; + + procedure put_flush_packet (s: PByteIOContext); + cdecl; external av__format; + function get_buffer(s: PByteIOContext; buf: pchar; size: integer): integer; + cdecl; external av__format; + function get_partial_buffer(s: PByteIOContext; buf: pchar; size: integer): integer; + cdecl; external av__format; + function get_byte(s: PByteIOContext): integer; + cdecl; external av__format; + function get_le32(s: PByteIOContext): cardinal; + cdecl; external av__format; + function get_le64(s: PByteIOContext): int64; + cdecl; external av__format; + function get_le16(s: PByteIOContext): cardinal; + cdecl; external av__format; + + function get_strz(s: PByteIOContext; buf: pchar; maxlen: integer): pchar; + cdecl; external av__format; + function get_be16(s: PByteIOContext): cardinal; + cdecl; external av__format; + function get_be24(s: PByteIOContext): cardinal; + cdecl; external av__format; + function get_be32(s: PByteIOContext): cardinal; + cdecl; external av__format; + function get_be64(s: PByteIOContext): int64; + cdecl; external av__format; + + function url_is_streamed(s: PByteIOContext): integer; + + function url_fdopen (s: PByteIOContext; h: PURLContext): integer; + cdecl; external av__format; + function url_setbufsize (s: PByteIOContext; buf_size: integer): integer; + cdecl; external av__format; + function url_fopen(s: PByteIOContext; const filename: pchar; flags: integer): integer; + cdecl; external av__format; + function url_fclose(s: PByteIOContext): integer; + cdecl; external av__format; + + function url_fileno(s: PByteIOContext): PURLContext; + cdecl; external av__format; + function url_fget_max_packet_size (s: PByteIOContext): integer; + cdecl; external av__format; + function url_open_buf(s: PByteIOContext; buf: pchar; buf_size: integer; flags: integer): integer; + cdecl; external av__format; + function url_close_buf(s: PByteIOContext): integer; + cdecl; external av__format; + + function url_open_dyn_buf(s: PByteIOContext): integer; + cdecl; external av__format; + function url_open_dyn_packet_buf(s: PByteIOContext; max_packet_size: integer): integer; + cdecl; external av__format; + function url_close_dyn_buf(s: PByteIOContext; pbuffer:PPointer): integer; + cdecl; external av__format; + + function get_checksum(s: PByteIOContext): cardinal; + cdecl; external av__format; + + procedure init_checksum (s: PByteIOContext; update_checksum: pointer; checksum: cardinal); + cdecl; external av__format; + + {$IFNDEF FPC} + function udp_set_remote_url(h: PURLContext; const uri: pchar): integer; + cdecl; external av__format; + function udp_get_local_port(h: PURLContext): integer; + cdecl; external av__format; + function udp_get_file_handle(h: PURLContext): integer; + cdecl; external av__format; + {$ENDIF} + +implementation + +function url_is_streamed(s: PByteIOContext): integer; +begin + Result := s^.is_streamed; +end; + +end. |