20#ifndef AVFORMAT_AVIO_H
21#define AVFORMAT_AVIO_H
41#define AVIO_SEEKABLE_NORMAL (1 << 0)
46#define AVIO_SEEKABLE_TIME (1 << 1)
259 int64_t timestamp,
int flags);
294#if FF_API_AVIOCONTEXT_WRITTEN
411 unsigned char *buffer,
415 int (*
read_packet)(
void *opaque, uint8_t *buf,
int buf_size),
416 int (*write_packet)(
void *opaque, uint8_t *buf,
int buf_size),
417 int64_t (*seek)(
void *opaque, int64_t offset,
int whence));
479#define AVSEEK_SIZE 0x10000
487#define AVSEEK_FORCE 0x20000
548#define avio_print(s, ...) \
549 avio_print_string_array(s, (const char*[]){__VA_ARGS__, NULL})
628#define AVIO_FLAG_READ 1
629#define AVIO_FLAG_WRITE 2
630#define AVIO_FLAG_READ_WRITE (AVIO_FLAG_READ|AVIO_FLAG_WRITE)
647#define AVIO_FLAG_NONBLOCK 8
655#define AVIO_FLAG_DIRECT 0x8000
800 int64_t timestamp,
int flags);
Macro definitions for various function/variable attributes.
#define av_printf_format(fmtpos, attrpos)
#define attribute_deprecated
int avio_get_str16be(AVIOContext *pb, int maxlen, char *buf, int buflen)
void avio_write_marker(AVIOContext *s, int64_t time, enum AVIODataMarkerType type)
Mark the written bytestream as a specific type.
int64_t avio_seek(AVIOContext *s, int64_t offset, int whence)
fseek() equivalent for AVIOContext.
void avio_wl64(AVIOContext *s, uint64_t val)
int avio_handshake(AVIOContext *c)
Perform one step of the protocol handshake to accept a new client.
uint64_t avio_rb64(AVIOContext *s)
void avio_wl32(AVIOContext *s, unsigned int val)
int avio_pause(AVIOContext *h, int pause)
Pause and resume playing - only meaningful if using a network streaming protocol (e....
void avio_wl16(AVIOContext *s, unsigned int val)
int avio_put_str(AVIOContext *s, const char *str)
Write a NULL-terminated string.
void avio_w8(AVIOContext *s, int b)
void avio_wb32(AVIOContext *s, unsigned int val)
int avio_vprintf(AVIOContext *s, const char *fmt, va_list ap)
Writes a formatted string to the context taking a va_list.
void avio_wb16(AVIOContext *s, unsigned int val)
AVIOContext * avio_alloc_context(unsigned char *buffer, int buffer_size, int write_flag, void *opaque, int(*read_packet)(void *opaque, uint8_t *buf, int buf_size), int(*write_packet)(void *opaque, uint8_t *buf, int buf_size), int64_t(*seek)(void *opaque, int64_t offset, int whence))
Allocate and initialize an AVIOContext for buffered I/O.
int avio_open(AVIOContext **s, const char *url, int flags)
Create and initialize a AVIOContext for accessing the resource indicated by url.
int64_t avio_size(AVIOContext *s)
Get the filesize.
unsigned int avio_rb16(AVIOContext *s)
int avio_get_str16le(AVIOContext *pb, int maxlen, char *buf, int buflen)
Read a UTF-16 string from pb and convert it to UTF-8.
int avio_feof(AVIOContext *s)
Similar to feof() but also returns nonzero on read errors.
AVIODataMarkerType
Different data types that can be returned via the AVIO write_data_type callback.
@ AVIO_DATA_MARKER_BOUNDARY_POINT
A point in the output bytestream where a demuxer can start parsing (for non self synchronizing bytest...
@ AVIO_DATA_MARKER_TRAILER
Trailer data, which doesn't contain actual content, but only for finalizing the output file.
@ AVIO_DATA_MARKER_HEADER
Header data; this needs to be present for the stream to be decodeable.
@ AVIO_DATA_MARKER_UNKNOWN
This is any, unlabelled data.
@ AVIO_DATA_MARKER_FLUSH_POINT
A point in the output bytestream where the underlying AVIOContext might flush the buffer depending on...
@ AVIO_DATA_MARKER_SYNC_POINT
A point in the output bytestream where a decoder can start decoding (i.e.
int avio_put_str16le(AVIOContext *s, const char *str)
Convert an UTF-8 string to UTF-16LE and write it.
int avio_read_partial(AVIOContext *s, unsigned char *buf, int size)
Read size bytes from AVIOContext into buf.
int avio_close_dir(AVIODirContext **s)
Close directory.
static av_always_inline int64_t avio_tell(AVIOContext *s)
ftell() equivalent for AVIOContext.
const AVClass * avio_protocol_get_class(const char *name)
Get AVClass by names of available protocols.
unsigned int avio_rl16(AVIOContext *s)
int avio_printf(AVIOContext *s, const char *fmt,...) av_printf_format(2
Writes a formatted string to the context.
int avio_open_dir(AVIODirContext **s, const char *url, AVDictionary **options)
Open directory for reading.
void avio_wb24(AVIOContext *s, unsigned int val)
const char * avio_enum_protocols(void **opaque, int output)
Iterate through names of available protocols.
int avio_accept(AVIOContext *s, AVIOContext **c)
Accept and allocate a client context on a server context.
int avio_close_dyn_buf(AVIOContext *s, uint8_t **pbuffer)
Return the written size and a pointer to the buffer.
void avio_wb64(AVIOContext *s, uint64_t val)
void avio_free_directory_entry(AVIODirEntry **entry)
Free entry allocated by avio_read_dir().
void avio_wl24(AVIOContext *s, unsigned int val)
int64_t avio_skip(AVIOContext *s, int64_t offset)
Skip given number of bytes forward.
int avio_check(const char *url, int flags)
Return AVIO_FLAG_* access flags corresponding to the access permissions of the resource in url,...
int avio_read(AVIOContext *s, unsigned char *buf, int size)
Read size bytes from AVIOContext into buf.
unsigned int avio_rl32(AVIOContext *s)
int avio_get_str(AVIOContext *pb, int maxlen, char *buf, int buflen)
Read a string from pb into buf.
unsigned int avio_rl24(AVIOContext *s)
void avio_write(AVIOContext *s, const unsigned char *buf, int size)
int avio_put_str16be(AVIOContext *s, const char *str)
Convert an UTF-8 string to UTF-16BE and write it.
void avio_context_free(AVIOContext **s)
Free the supplied IO context and everything associated with it.
int avio_close(AVIOContext *s)
Close the resource accessed by the AVIOContext s and free it.
void avio_flush(AVIOContext *s)
Force flushing of buffered data.
int avio_open_dyn_buf(AVIOContext **s)
Open a write only memory stream.
int64_t avio_seek_time(AVIOContext *h, int stream_index, int64_t timestamp, int flags)
Seek to a given timestamp relative to some component stream.
int avio_read_dir(AVIODirContext *s, AVIODirEntry **next)
Get next directory entry.
int avio_open2(AVIOContext **s, const char *url, int flags, const AVIOInterruptCB *int_cb, AVDictionary **options)
Create and initialize a AVIOContext for accessing the resource indicated by url.
int avio_closep(AVIOContext **s)
Close the resource accessed by the AVIOContext *s, free it and set the pointer pointing to it to NULL...
unsigned int avio_rb24(AVIOContext *s)
AVIODirEntryType
Directory entry types.
@ AVIO_ENTRY_BLOCK_DEVICE
@ AVIO_ENTRY_SYMBOLIC_LINK
@ AVIO_ENTRY_CHARACTER_DEVICE
int avio_read_to_bprint(AVIOContext *h, struct AVBPrint *pb, size_t max_size)
Read contents of h into print buffer, up to max_size bytes, or up to EOF.
int void avio_print_string_array(AVIOContext *s, const char *strings[])
Write a NULL terminated array of strings to the context.
unsigned int avio_rb32(AVIOContext *s)
int avio_r8(AVIOContext *s)
int avio_get_dyn_buf(AVIOContext *s, uint8_t **pbuffer)
Return the written size and a pointer to the buffer.
const char * avio_find_protocol_name(const char *url)
Return the name of the protocol that will handle the passed URL.
uint64_t avio_rl64(AVIOContext *s)
static int read_packet(void *opaque, uint8_t *buf, int buf_size)
struct AVDictionary AVDictionary
Describe the class of an AVClass context structure.
int buffer_size
Maximum buffer size.
unsigned char * buf_end
End of the data, may be less than buffer+buffer_size if the read function returned less data than req...
int seekable
A combination of AVIO_SEEKABLE_ flags or 0 when the stream is not seekable.
unsigned char * checksum_ptr
const AVClass * av_class
A class for private options.
int64_t bytes_read
Read-only statistic of bytes read for this AVIOContext.
unsigned char * buf_ptr
Current position in the buffer.
int ignore_boundary_point
If set, don't call write_data_type separately for AVIO_DATA_MARKER_BOUNDARY_POINT,...
int min_packet_size
Try to buffer at least this amount of data before flushing it.
int64_t(* seek)(void *opaque, int64_t offset, int whence)
unsigned char * buf_ptr_max
Maximum reached position before a backward seek in the write buffer, used keeping track of already wr...
const char * protocol_whitelist
',' separated list of allowed protocols.
int64_t pos
position in the file of the current buffer
unsigned long(* update_checksum)(unsigned long checksum, const uint8_t *buf, unsigned int size)
const char * protocol_blacklist
',' separated list of disallowed protocols.
int64_t bytes_written
Read-only statistic of bytes written for this AVIOContext.
unsigned char * buffer
Start of the buffer.
int(* read_packet)(void *opaque, uint8_t *buf, int buf_size)
int eof_reached
true if was unable to read due to error or eof
int write_flag
true if open for writing
int64_t(* read_seek)(void *opaque, int stream_index, int64_t timestamp, int flags)
Seek to a given timestamp in stream with the specified stream_index.
int(* read_pause)(void *opaque, int pause)
Pause or resume playback for network streaming protocols - e.g.
int(* write_data_type)(void *opaque, uint8_t *buf, int buf_size, enum AVIODataMarkerType type, int64_t time)
A callback that is used instead of write_packet.
int direct
avio_read and avio_write should if possible be satisfied directly instead of going through a buffer,...
void * opaque
A private pointer, passed to the read/write/seek/... functions.
int(* write_packet)(void *opaque, uint8_t *buf, int buf_size)
int error
contains the error code or 0 if no error happened
struct URLContext * url_context
Describes single entry of the directory.
int64_t user_id
User ID of owner, -1 if unknown.
int type
Type of the entry.
int64_t access_timestamp
Time of last access in microseconds since unix epoch, -1 if unknown.
int64_t status_change_timestamp
Time of last status change in microseconds since unix epoch, -1 if unknown.
int64_t size
File size in bytes, -1 if unknown.
int64_t group_id
Group ID of owner, -1 if unknown.
int utf8
Set to 1 when name is encoded with UTF-8, 0 otherwise.
int64_t modification_timestamp
Time of last modification in microseconds since unix epoch, -1 if unknown.
int64_t filemode
Unix file mode, -1 if unknown.
Callback for checking whether to abort blocking functions.