Libav
|
Buffered I/O operations. More...
#include <stdint.h>
#include "libavutil/common.h"
#include "libavutil/dict.h"
#include "libavutil/log.h"
#include "libavformat/version.h"
Go to the source code of this file.
Data Structures | |
struct | AVIOInterruptCB |
Callback for checking whether to abort blocking functions. More... | |
struct | AVIOContext |
Bytestream IO Context. More... | |
Macros | |
#define | AVIO_SEEKABLE_NORMAL 0x0001 |
Seeking works like for a local file. More... | |
#define | AVSEEK_SIZE 0x10000 |
Passing this as the "whence" parameter to a seek function causes it to return the filesize without seeking anywhere. More... | |
#define | AVSEEK_FORCE 0x20000 |
Oring this flag as into the "whence" parameter to a seek function causes it to seek by any means (like reopening and linear reading) or other normally unreasonble means that can be extreemly slow. More... | |
#define | AVIO_FLAG_NONBLOCK 8 |
Use non-blocking mode. More... | |
URL open modes | |
The flags argument to avio_open must be one of the following constants, optionally ORed with other flags. | |
#define | AVIO_FLAG_READ 1 |
read-only More... | |
#define | AVIO_FLAG_WRITE 2 |
write-only More... | |
#define | AVIO_FLAG_READ_WRITE (AVIO_FLAG_READ|AVIO_FLAG_WRITE) |
read-write pseudo flag More... | |
Functions | |
int | avio_check (const char *url, int flags) |
Return AVIO_FLAG_* access flags corresponding to the access permissions of the resource in url, or a negative value corresponding to an AVERROR code in case of failure. More... | |
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. More... | |
void | avio_w8 (AVIOContext *s, int b) |
void | avio_write (AVIOContext *s, const unsigned char *buf, int size) |
void | avio_wl64 (AVIOContext *s, uint64_t val) |
void | avio_wb64 (AVIOContext *s, uint64_t val) |
void | avio_wl32 (AVIOContext *s, unsigned int val) |
void | avio_wb32 (AVIOContext *s, unsigned int val) |
void | avio_wl24 (AVIOContext *s, unsigned int val) |
void | avio_wb24 (AVIOContext *s, unsigned int val) |
void | avio_wl16 (AVIOContext *s, unsigned int val) |
void | avio_wb16 (AVIOContext *s, unsigned int val) |
int | avio_put_str (AVIOContext *s, const char *str) |
Write a NULL-terminated string. More... | |
int | avio_put_str16le (AVIOContext *s, const char *str) |
Convert an UTF-8 string to UTF-16LE and write it. More... | |
int64_t | avio_seek (AVIOContext *s, int64_t offset, int whence) |
fseek() equivalent for AVIOContext. More... | |
static av_always_inline int64_t | avio_skip (AVIOContext *s, int64_t offset) |
Skip given number of bytes forward. More... | |
static av_always_inline int64_t | avio_tell (AVIOContext *s) |
ftell() equivalent for AVIOContext. More... | |
int64_t | avio_size (AVIOContext *s) |
Get the filesize. More... | |
int | avio_printf (AVIOContext *s, const char *fmt,...) av_printf_format(2 |
int void | avio_flush (AVIOContext *s) |
int | avio_read (AVIOContext *s, unsigned char *buf, int size) |
Read size bytes from AVIOContext into buf. More... | |
int | avio_get_str (AVIOContext *pb, int maxlen, char *buf, int buflen) |
Read a string from pb into buf. More... | |
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. More... | |
int | avio_get_str16be (AVIOContext *pb, int maxlen, char *buf, int buflen) |
int | avio_open (AVIOContext **s, const char *url, int flags) |
Create and initialize a AVIOContext for accessing the resource indicated by url. More... | |
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. More... | |
int | avio_close (AVIOContext *s) |
Close the resource accessed by the AVIOContext s and free it. More... | |
int | avio_closep (AVIOContext **s) |
Close the resource accessed by the AVIOContext *s, free it and set the pointer pointing to it to NULL. More... | |
int | avio_open_dyn_buf (AVIOContext **s) |
Open a write only memory stream. More... | |
int | avio_close_dyn_buf (AVIOContext *s, uint8_t **pbuffer) |
Return the written size and a pointer to the buffer. More... | |
const char * | avio_enum_protocols (void **opaque, int output) |
Iterate through names of available protocols. More... | |
int | avio_pause (AVIOContext *h, int pause) |
Pause and resume playing - only meaningful if using a network streaming protocol (e.g. More... | |
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. More... | |
Functions for reading from AVIOContext | |
| |
int | avio_r8 (AVIOContext *s) |
unsigned int | avio_rl16 (AVIOContext *s) |
unsigned int | avio_rl24 (AVIOContext *s) |
unsigned int | avio_rl32 (AVIOContext *s) |
uint64_t | avio_rl64 (AVIOContext *s) |
unsigned int | avio_rb16 (AVIOContext *s) |
unsigned int | avio_rb24 (AVIOContext *s) |
unsigned int | avio_rb32 (AVIOContext *s) |
uint64_t | avio_rb64 (AVIOContext *s) |
Buffered I/O operations.
Definition in file avio.h.
#define AVIO_SEEKABLE_NORMAL 0x0001 |
#define AVSEEK_SIZE 0x10000 |
#define AVSEEK_FORCE 0x20000 |
#define AVIO_FLAG_READ_WRITE (AVIO_FLAG_READ|AVIO_FLAG_WRITE) |
#define AVIO_FLAG_NONBLOCK 8 |
Use non-blocking mode.
If this flag is set, operations on the context will return AVERROR(EAGAIN) if they can not be performed immediately. If this flag is not set, operations on the context will never return AVERROR(EAGAIN). Note that this flag does not affect the opening/connecting of the context. Connecting a protocol will always block if necessary (e.g. on network protocols) but never hang (e.g. on busy devices). Warning: non-blocking protocols is work-in-progress; this flag may be silently ignored.
int avio_check | ( | const char * | url, |
int | flags | ||
) |
Return AVIO_FLAG_* access flags corresponding to the access permissions of the resource in url, or a negative value corresponding to an AVERROR code in case of failure.
The returned access flags are masked by the value in flags.
AVIOContext* avio_alloc_context | ( | unsigned char * | buffer, |
int | buffer_size, | ||
int | write_flag, | ||
void * | opaque, | ||
int(*)(void *opaque, uint8_t *buf, int buf_size) | read_packet, | ||
int(*)(void *opaque, uint8_t *buf, int buf_size) | write_packet, | ||
int64_t(*)(void *opaque, int64_t offset, int whence) | seek | ||
) |
Allocate and initialize an AVIOContext for buffered I/O.
It must be later freed with av_free().
buffer | Memory block for input/output operations via AVIOContext. The buffer must be allocated with av_malloc() and friends. |
buffer_size | The buffer size is very important for performance. For protocols with fixed blocksize it should be set to this blocksize. For others a typical size is a cache page, e.g. 4kb. |
write_flag | Set to 1 if the buffer should be writable, 0 otherwise. |
opaque | An opaque pointer to user-specific data. |
read_packet | A function for refilling the buffer, may be NULL. |
write_packet | A function for writing the buffer contents, may be NULL. |
seek | A function for seeking to specified byte position, may be NULL. |
Definition at line 107 of file aviobuf.c.
Referenced by ffio_fdopen(), and url_open_dyn_buf_internal().
void avio_w8 | ( | AVIOContext * | s, |
int | b | ||
) |
Definition at line 144 of file aviobuf.c.
Referenced by avio_put_str(), avio_wb16(), avio_wb24(), avio_wb32(), avio_wl16(), avio_wl24(), avio_wl32(), and ff_put_v().
void avio_write | ( | AVIOContext * | s, |
const unsigned char * | buf, | ||
int | size | ||
) |
Definition at line 165 of file aviobuf.c.
Referenced by avio_close_dyn_buf(), avio_printf(), and avio_put_str().
void avio_wl64 | ( | AVIOContext * | s, |
uint64_t | val | ||
) |
void avio_wb64 | ( | AVIOContext * | s, |
uint64_t | val | ||
) |
void avio_wl32 | ( | AVIOContext * | s, |
unsigned int | val | ||
) |
Definition at line 260 of file aviobuf.c.
Referenced by avio_wl64().
void avio_wb32 | ( | AVIOContext * | s, |
unsigned int | val | ||
) |
Definition at line 268 of file aviobuf.c.
Referenced by avio_wb64().
void avio_wl24 | ( | AVIOContext * | s, |
unsigned int | val | ||
) |
void avio_wb24 | ( | AVIOContext * | s, |
unsigned int | val | ||
) |
void avio_wl16 | ( | AVIOContext * | s, |
unsigned int | val | ||
) |
Definition at line 336 of file aviobuf.c.
Referenced by avio_put_str16le(), and avio_wl24().
void avio_wb16 | ( | AVIOContext * | s, |
unsigned int | val | ||
) |
Definition at line 342 of file aviobuf.c.
Referenced by avio_wb24().
int avio_put_str | ( | AVIOContext * | s, |
const char * | str | ||
) |
int avio_put_str16le | ( | AVIOContext * | s, |
const char * | str | ||
) |
int64_t avio_seek | ( | AVIOContext * | s, |
int64_t | offset, | ||
int | whence | ||
) |
fseek() equivalent for AVIOContext.
|
static |
|
static |
ftell() equivalent for AVIOContext.
int64_t avio_size | ( | AVIOContext * | s | ) |
int avio_printf | ( | AVIOContext * | s, |
const char * | fmt, | ||
... | |||
) |
int void avio_flush | ( | AVIOContext * | s | ) |
Definition at line 180 of file aviobuf.c.
Referenced by avio_close(), avio_close_dyn_buf(), and ffio_close_null_buf().
int avio_read | ( | AVIOContext * | s, |
unsigned char * | buf, | ||
int | size | ||
) |
Read size bytes from AVIOContext into buf.
Definition at line 452 of file aviobuf.c.
Referenced by ffio_read_indirect().
int avio_r8 | ( | AVIOContext * | s | ) |
Definition at line 443 of file aviobuf.c.
Referenced by avio_get_str(), avio_rb16(), avio_rb24(), avio_rl16(), avio_rl24(), ff_get_line(), and ffio_read_varlen().
unsigned int avio_rl16 | ( | AVIOContext * | s | ) |
Definition at line 548 of file aviobuf.c.
Referenced by avio_rl24(), and avio_rl32().
unsigned int avio_rl24 | ( | AVIOContext * | s | ) |
unsigned int avio_rl32 | ( | AVIOContext * | s | ) |
Definition at line 564 of file aviobuf.c.
Referenced by avio_rl64().
uint64_t avio_rl64 | ( | AVIOContext * | s | ) |
unsigned int avio_rb16 | ( | AVIOContext * | s | ) |
Definition at line 580 of file aviobuf.c.
Referenced by avio_rb24(), and avio_rb32().
unsigned int avio_rb24 | ( | AVIOContext * | s | ) |
unsigned int avio_rb32 | ( | AVIOContext * | s | ) |
Definition at line 595 of file aviobuf.c.
Referenced by avio_rb64().
uint64_t avio_rb64 | ( | AVIOContext * | s | ) |
int avio_get_str | ( | AVIOContext * | pb, |
int | maxlen, | ||
char * | buf, | ||
int | buflen | ||
) |
Read a string from pb into buf.
The reading will terminate when either a NULL character was encountered, maxlen bytes have been read, or nothing more can be read from pb. The result is guaranteed to be NULL-terminated, it will be truncated if buf is too small. Note that the string is not interpreted or validated in any way, it might get truncated in the middle of a sequence for multi-byte encodings.
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.
The reading will terminate when either a null or invalid character was encountered or maxlen bytes have been read.
int avio_get_str16be | ( | AVIOContext * | pb, |
int | maxlen, | ||
char * | buf, | ||
int | buflen | ||
) |
int avio_open | ( | AVIOContext ** | s, |
const char * | url, | ||
int | flags | ||
) |
Create and initialize a AVIOContext for accessing the resource indicated by url.
s | Used to return the pointer to the created AVIOContext. In case of failure the pointed to value is set to NULL. |
url | resource to access |
flags | flags which control how the resource indicated by url is to be opened |
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.
s | Used to return the pointer to the created AVIOContext. In case of failure the pointed to value is set to NULL. |
url | resource to access |
flags | flags which control how the resource indicated by url is to be opened |
int_cb | an interrupt callback to be used at the protocols level |
options | A dictionary filled with protocol-private options. On return this parameter will be destroyed and replaced with a dict containing options that were not found. May be NULL. |
Definition at line 783 of file aviobuf.c.
Referenced by avio_open().
int avio_close | ( | AVIOContext * | s | ) |
Close the resource accessed by the AVIOContext s and free it.
This function can only be used if s was opened by avio_open().
The internal buffer is automatically flushed before closing the resource.
Definition at line 800 of file aviobuf.c.
Referenced by avio_closep().
int avio_closep | ( | AVIOContext ** | s | ) |
Close the resource accessed by the AVIOContext *s, free it and set the pointer pointing to it to NULL.
This function can only be used if s was opened by avio_open().
The internal buffer is automatically flushed before closing the resource.
int avio_open_dyn_buf | ( | AVIOContext ** | s | ) |
int avio_close_dyn_buf | ( | AVIOContext * | s, |
uint8_t ** | pbuffer | ||
) |
const char* avio_enum_protocols | ( | void ** | opaque, |
int | output | ||
) |
Iterate through names of available protocols.
opaque | A private pointer representing current protocol. It must be a pointer to NULL on first iteration and will be updated by successive calls to avio_enum_protocols. |
output | If set to 1, iterate over output protocols, otherwise over input protocols. |
Definition at line 86 of file avio.c.
Referenced by avio_enum_protocols().
int avio_pause | ( | AVIOContext * | h, |
int | pause | ||
) |
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.
Only meaningful if using a network streaming protocol (e.g. MMS.).
h | IO context from which to call the seek function pointers |
stream_index | The stream index that the timestamp is relative to. If stream_index is (-1) the timestamp should be in AV_TIME_BASE units from the beginning of the presentation. If a stream_index >= 0 is used and the protocol does not support seeking based on component streams, the call will fail with ENOTSUP. |
timestamp | timestamp in AVStream.time_base units or if there is no stream specified then in AV_TIME_BASE units. |
flags | Optional combination of AVSEEK_FLAG_BACKWARD, AVSEEK_FLAG_BYTE and AVSEEK_FLAG_ANY. The protocol may silently ignore AVSEEK_FLAG_BACKWARD and AVSEEK_FLAG_ANY, but AVSEEK_FLAG_BYTE will fail with ENOTSUP if used and not supported. |