Loading...
Searching...
No Matches
avio.h File Reference
libavformat » I/O Read/Write

Buffered I/O operations. More...

`#include <stdint.h>`
`#include <stdio.h>`
`#include "libavutil/attributes.h"`
`#include "libavutil/dict.h"`
`#include "libavutil/log.h"`
`#include "libavformat/version_major.h"`

Go to the source code of this file.

## Data Structures

struct | AVIOInterruptCB
| Callback for checking whether to abort blocking functions. More...
struct | AVIODirEntry
| Describes single entry of the directory. More...
struct | AVIOContext
| Bytestream IO Context. More...

## Macros

#define | AVIO_SEEKABLE_NORMAL (1 << 0)
| Seeking works like for a local file.
#define | AVIO_SEEKABLE_TIME (1 << 1)
| Seeking by timestamp with avio_seek_time() is possible.
#define | AVSEEK_SIZE 0x10000
| Passing this as the "whence" parameter to a seek function causes it to return the filesize without seeking anywhere.
#define | AVSEEK_FORCE 0x20000
| OR'ing this flag into the "whence" parameter to a seek function causes it to seek by any means (like reopening and linear reading) or other normally unreasonable means that can be extremely slow.
#define | avio_print(s, ...)
| Write strings (const char *) to the context.
#define | AVIO_FLAG_NONBLOCK 8
| Use non-blocking mode.
#define | AVIO_FLAG_DIRECT 0x8000
| Use direct mode.
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
#define | AVIO_FLAG_WRITE 2
| write-only
#define | AVIO_FLAG_READ_WRITE (AVIO_FLAG_READ|AVIO_FLAG_WRITE)
| read-write pseudo flag

## Typedefs

typedef struct AVIODirContext | AVIODirContext

## Enumerations

enum | AVIODirEntryType { AVIO_ENTRY_UNKNOWN , AVIO_ENTRY_BLOCK_DEVICE , AVIO_ENTRY_CHARACTER_DEVICE , AVIO_ENTRY_DIRECTORY , AVIO_ENTRY_NAMED_PIPE , AVIO_ENTRY_SYMBOLIC_LINK , AVIO_ENTRY_SOCKET , AVIO_ENTRY_FILE , AVIO_ENTRY_SERVER , AVIO_ENTRY_SHARE , AVIO_ENTRY_WORKGROUP }
| Directory entry types. More...
enum | AVIODataMarkerType { AVIO_DATA_MARKER_HEADER , AVIO_DATA_MARKER_SYNC_POINT , AVIO_DATA_MARKER_BOUNDARY_POINT , AVIO_DATA_MARKER_UNKNOWN , AVIO_DATA_MARKER_TRAILER , AVIO_DATA_MARKER_FLUSH_POINT }
| Different data types that can be returned via the AVIO write_data_type callback. More...

## Functions

const char * | avio_find_protocol_name (const char *url)
| Return the name of the protocol that will handle the passed URL.
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.
int | avio_open_dir (AVIODirContext **s, const char *url, AVDictionary **options)
| Open directory for reading.
int | avio_read_dir (AVIODirContext *s, AVIODirEntry **next)
| Get next directory entry.
int | avio_close_dir (AVIODirContext **s)
| Close directory.
void | avio_free_directory_entry (AVIODirEntry **entry)
| Free entry allocated by avio_read_dir().
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, const 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.
void | avio_context_free (AVIOContext **s)
| Free the supplied IO context and everything associated with it.
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.
int | avio_put_str16le (AVIOContext *s, const char *str)
| Convert an UTF-8 string to UTF-16LE and write it.
int | avio_put_str16be (AVIOContext *s, const char *str)
| Convert an UTF-8 string to UTF-16BE and write it.
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.
int64_t | avio_skip (AVIOContext *s, int64_t offset)
| Skip given number of bytes forward.
static av_always_inline int64_t | avio_tell (AVIOContext *s)
| ftell() equivalent for AVIOContext.
int64_t | avio_size (AVIOContext *s)
| Get the filesize.
int | avio_feof (AVIOContext *s)
| Similar to feof() but also returns nonzero on read errors.
int | avio_vprintf (AVIOContext *s, const char *fmt, va_list ap)
| Writes a formatted string to the context taking a va_list.
int | avio_printf (AVIOContext *s, const char *fmt,...) av_printf_format(2
| Writes a formatted string to the context.
int void | avio_print_string_array (AVIOContext *s, const char *const strings[])
| Write a NULL terminated array of strings to the context.
void | avio_flush (AVIOContext *s)
| Force flushing of buffered data.
int | avio_read (AVIOContext *s, unsigned char *buf, int size)
| Read size bytes from AVIOContext into buf.
int | avio_read_partial (AVIOContext *s, unsigned char *buf, int size)
| Read size bytes from AVIOContext into buf.
int | avio_get_str (AVIOContext *pb, int maxlen, char *buf, int buflen)
| Read a string from pb into buf.
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_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.
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_close (AVIOContext *s)
| Close the resource accessed by the AVIOContext s and free it.
int | avio_closep (AVIOContext **s)
| Close the resource accessed by the AVIOContext *s, free it and set the pointer pointing to it to NULL.
int | avio_open_dyn_buf (AVIOContext **s)
| Open a write only memory stream.
int | avio_get_dyn_buf (AVIOContext *s, uint8_t **pbuffer)
| Return the written size and a pointer to the buffer.
int | avio_close_dyn_buf (AVIOContext *s, uint8_t **pbuffer)
| Return the written size and a pointer to the buffer.
const char * | avio_enum_protocols (void **opaque, int output)
| Iterate through names of available protocols.
const AVClass * | avio_protocol_get_class (const char *name)
| Get AVClass by names of available protocols.
int | avio_pause (AVIOContext *h, int pause)
| Pause and resume playing - only meaningful if using a network streaming protocol (e.g.
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_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 | avio_accept (AVIOContext *s, AVIOContext **c)
| Accept and allocate a client context on a server context.
int | avio_handshake (AVIOContext *c)
| Perform one step of the protocol handshake to accept a new client.
Functions for reading from AVIOContext

Note
  return 0 if EOF, so you cannot use it if EOF handling is necessary

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)

## Detailed Description

Buffered I/O operations.

Definition in file avio.h.

## Macro Definition Documentation

## AVIO_SEEKABLE_NORMAL

#define AVIO_SEEKABLE_NORMAL (1 << 0)

Seeking works like for a local file.

Definition at line 41 of file avio.h.

## AVIO_SEEKABLE_TIME

#define AVIO_SEEKABLE_TIME (1 << 1)

Seeking by timestamp with avio_seek_time() is possible.

Definition at line 46 of file avio.h.

## AVSEEK_SIZE

#define AVSEEK_SIZE 0x10000

Passing this as the "whence" parameter to a seek function causes it to return the filesize without seeking anywhere.

Supporting this is optional. If it is not supported then the seek function will return <0.

Definition at line 468 of file avio.h.

## AVSEEK_FORCE

#define AVSEEK_FORCE 0x20000

OR'ing this flag into the "whence" parameter to a seek function causes it to seek by any means (like reopening and linear reading) or other normally unreasonable means that can be extremely slow.

This is the default and therefore ignored by the seek code since 2010.

Definition at line 476 of file avio.h.

## avio_print

#define avio_print | ( |  | s,
|  |  | ... )

Value:
avio_print_string_array(s, (const char*[]){__VA_ARGS__, NULL})
avio_print_string_array
int void avio_print_string_array(AVIOContext *s, const char *const strings[])
Write a NULL terminated array of strings to the context.

Write strings (const char *) to the context.

This is a convenience macro around avio_print_string_array and it automatically creates the string array from the variable argument list. For simple string concatenations this function is more performant than using avio_printf since it does not need a temporary buffer.

Definition at line 537 of file avio.h.

## AVIO_FLAG_READ

#define AVIO_FLAG_READ 1

read-only

Definition at line 617 of file avio.h.

## AVIO_FLAG_WRITE

#define AVIO_FLAG_WRITE 2

write-only

Examples
  mux.c, qsv_decode.c, qsv_transcode.c, remux.c, transcode.c, transcode_aac.c, and vaapi_transcode.c.

Definition at line 618 of file avio.h.

Referenced by main(), open_output_file(), and open_output_file().

## AVIO_FLAG_READ_WRITE

#define AVIO_FLAG_READ_WRITE (AVIO_FLAG_READ|AVIO_FLAG_WRITE)

read-write pseudo flag

Definition at line 619 of file avio.h.

## AVIO_FLAG_NONBLOCK

#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.

Definition at line 636 of file avio.h.

## AVIO_FLAG_DIRECT

#define AVIO_FLAG_DIRECT 0x8000

Use direct mode.

avio_read and avio_write should if possible be satisfied directly instead of going through a buffer, and avio_seek will always call the underlying seek function directly.

Definition at line 644 of file avio.h.

## Typedef Documentation

## AVIODirContext

typedef struct AVIODirContext AVIODirContext

Examples
  avio_list_dir.c.

Definition at line 104 of file avio.h.

## Enumeration Type Documentation

## AVIODirEntryType

enum AVIODirEntryType

Directory entry types.

Enumerator
AVIO_ENTRY_UNKNOWN |
AVIO_ENTRY_BLOCK_DEVICE |
AVIO_ENTRY_CHARACTER_DEVICE |
AVIO_ENTRY_DIRECTORY |
AVIO_ENTRY_NAMED_PIPE |
AVIO_ENTRY_SYMBOLIC_LINK |
AVIO_ENTRY_SOCKET |
AVIO_ENTRY_FILE |
AVIO_ENTRY_SERVER |
AVIO_ENTRY_SHARE |
AVIO_ENTRY_WORKGROUP |

Definition at line 67 of file avio.h.

## AVIODataMarkerType

enum AVIODataMarkerType

Different data types that can be returned via the AVIO write_data_type callback.

Enumerator
AVIO_DATA_MARKER_HEADER | Header data; this needs to be present for the stream to be decodeable.
AVIO_DATA_MARKER_SYNC_POINT | A point in the output bytestream where a decoder can start decoding (i.e. a keyframe). A demuxer/decoder given the data flagged with AVIO_DATA_MARKER_HEADER, followed by any AVIO_DATA_MARKER_SYNC_POINT, should give decodeable results.
AVIO_DATA_MARKER_BOUNDARY_POINT | A point in the output bytestream where a demuxer can start parsing (for non self synchronizing bytestream formats). That is, any non-keyframe packet start point.
AVIO_DATA_MARKER_UNKNOWN | This is any, unlabelled data. It can either be a muxer not marking any positions at all, it can be an actual boundary/sync point that the muxer chooses not to mark, or a later part of a packet/fragment that is cut into multiple write callbacks due to limited IO buffer size.
AVIO_DATA_MARKER_TRAILER | Trailer data, which doesn't contain actual content, but only for finalizing the output file.
AVIO_DATA_MARKER_FLUSH_POINT | A point in the output bytestream where the underlying AVIOContext might flush the buffer depending on latency or buffering requirements. Typically means the end of a packet.

Definition at line 110 of file avio.h.

## Function Documentation

## avio_find_protocol_name()

const char * avio_find_protocol_name | ( | const char * | url | ) |

Return the name of the protocol that will handle the passed URL.

NULL is returned if no protocol could be found for the given URL.

Returns
  Name of the protocol or NULL.

## avio_check()

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.

Note
  This function is intrinsically unsafe, in the sense that the checked resource may change its existence or permission status from one call to another. Thus you should not trust the returned value, unless you are sure that no other processes are accessing the checked resource.

## avio_open_dir()

int avio_open_dir | ( | AVIODirContext ** | s,
|  | const char * | url,
|  | AVDictionary ** | options )

Open directory for reading.

Parameters

  s | directory read context. Pointer to a NULL pointer must be passed.
  url | directory to be listed.
  options | A dictionary filled with protocol-private options. On return this parameter will be destroyed and replaced with a dictionary containing options that were not found. May be NULL.

Returns
  >=0 on success or negative on error.

Examples
  avio_list_dir.c.

Referenced by list_op().

## avio_read_dir()

int avio_read_dir | ( | AVIODirContext * | s,
|  | AVIODirEntry ** | next )

Get next directory entry.

Returned entry must be freed with avio_free_directory_entry(). In particular it may outlive AVIODirContext.

Parameters

  | s | directory read context.
  [out] | next | next entry or NULL when no more entries.

Returns
  >=0 on success or negative on error. End of list is not considered an error.

Examples
  avio_list_dir.c.

Referenced by list_op().

## avio_close_dir()

int avio_close_dir | ( | AVIODirContext ** | s | ) |

Close directory.

Note
  Entries created using avio_read_dir() are not deleted and must be freeded with avio_free_directory_entry().

Parameters

  s | directory read context.

Returns
  >=0 on success or negative on error.

Examples
  avio_list_dir.c.

Referenced by list_op().

## avio_free_directory_entry()

void avio_free_directory_entry | ( | AVIODirEntry ** | entry | ) |

Free entry allocated by avio_read_dir().

Parameters

  entry | entry to be freed.

Examples
  avio_list_dir.c.

Referenced by list_op().

## avio_alloc_context()

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, const 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.

It must be later freed with avio_context_free().

Parameters

  buffer | Memory block for input/output operations via AVIOContext. The buffer must be allocated with av_malloc() and friends. It may be freed and replaced with a new buffer by libavformat. AVIOContext.buffer holds the buffer currently in use, which must be later freed with av_free().
  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. For stream protocols, must never return 0 but rather a proper AVERROR code.
  write_packet | A function for writing the buffer contents, may be NULL. The function may not change the input buffers content.
  seek | A function for seeking to specified byte position, may be NULL.

Returns
  Allocated AVIOContext or NULL on failure.

Examples
  avio_read_callback.c.

Referenced by main().

## avio_context_free()

void avio_context_free | ( | AVIOContext ** | s | ) |

Free the supplied IO context and everything associated with it.

Parameters

  s | Double pointer to the IO context. This function will write NULL into s.

Examples
  avio_read_callback.c.

Referenced by main().

## avio_w8()

void avio_w8 | ( | AVIOContext * | s,
|  | int | b )

## avio_write()

void avio_write | ( | AVIOContext * | s,
|  | const unsigned char * | buf,
|  | int | size )

Examples
  qsv_decode.c.

Referenced by decode_packet().

## avio_wl64()

void avio_wl64 | ( | AVIOContext * | s,
|  | uint64_t | val )

## avio_wb64()

void avio_wb64 | ( | AVIOContext * | s,
|  | uint64_t | val )

## avio_wl32()

void avio_wl32 | ( | AVIOContext * | s,
|  | unsigned int | val )

## avio_wb32()

void avio_wb32 | ( | AVIOContext * | s,
|  | unsigned int | val )

## avio_wl24()

void avio_wl24 | ( | AVIOContext * | s,
|  | unsigned int | val )

## avio_wb24()

void avio_wb24 | ( | AVIOContext * | s,
|  | unsigned int | val )

## avio_wl16()

void avio_wl16 | ( | AVIOContext * | s,
|  | unsigned int | val )

## avio_wb16()

void avio_wb16 | ( | AVIOContext * | s,
|  | unsigned int | val )

## avio_put_str()

int avio_put_str | ( | AVIOContext * | s,
|  | const char * | str )

Write a NULL-terminated string.

Returns
  number of bytes written.

## avio_put_str16le()

int avio_put_str16le | ( | AVIOContext * | s,
|  | const char * | str )

Convert an UTF-8 string to UTF-16LE and write it.

Parameters

  s | the AVIOContext
  str | NULL-terminated UTF-8 string

Returns
  number of bytes written.

## avio_put_str16be()

int avio_put_str16be | ( | AVIOContext * | s,
|  | const char * | str )

Convert an UTF-8 string to UTF-16BE and write it.

Parameters

  s | the AVIOContext
  str | NULL-terminated UTF-8 string

Returns
  number of bytes written.

## avio_write_marker()

void avio_write_marker | ( | AVIOContext * | s,
|  | int64_t | time,
|  | enum AVIODataMarkerType | type )

Mark the written bytestream as a specific type.

Zero-length ranges are omitted from the output.

Parameters

  s | the AVIOContext
  time | the stream time the current bytestream pos corresponds to (in AV_TIME_BASE units), or AV_NOPTS_VALUE if unknown or not applicable
  type | the kind of data written starting at the current pos

## avio_seek()

int64_t avio_seek | ( | AVIOContext * | s,
|  | int64_t | offset,
|  | int | whence )

fseek() equivalent for AVIOContext.

Returns
  new position or AVERROR.

Referenced by avio_tell().

## avio_skip()

int64_t avio_skip | ( | AVIOContext * | s,
|  | int64_t | offset )

Skip given number of bytes forward.

Returns
  new position or AVERROR.

## avio_tell()

av_always_inline int64_t avio_tell | ( | AVIOContext * | s | ) |

static

ftell() equivalent for AVIOContext.

Returns
  position or AVERROR.

Definition at line 494 of file avio.h.

## avio_size()

int64_t avio_size | ( | AVIOContext * | s | ) |

Get the filesize.

Returns
  filesize or AVERROR

## avio_feof()

int avio_feof | ( | AVIOContext * | s | ) |

Similar to feof() but also returns nonzero on read errors.

Returns
  non zero if and only if at end of file or a read error happened when reading.

## avio_vprintf()

int avio_vprintf | ( | AVIOContext * | s,
|  | const char * | fmt,
|  | va_list | ap )

Writes a formatted string to the context taking a va_list.

Returns
  number of bytes written, < 0 on error.

## avio_printf()

int avio_printf | ( | AVIOContext * | s,
|  | const char * | fmt,
|  |  | ... )

Writes a formatted string to the context.

Returns
  number of bytes written, < 0 on error.

## avio_print_string_array()

int void avio_print_string_array | ( | AVIOContext * | s,
|  | const char *const | strings[] )

Write a NULL terminated array of strings to the context.

Usually you don't need to use this function directly but its macro wrapper, avio_print.

Referenced by avio_print_string_array().

## avio_flush()

void avio_flush | ( | AVIOContext * | s | ) |

Force flushing of buffered data.

For write streams, force the buffered data to be immediately written to the output, without to wait to fill the internal buffer.

For read streams, discard all currently buffered data, and advance the reported file position to that of the underlying stream. This does not read new data, and does not perform any seeks.

## avio_read()

int avio_read | ( | AVIOContext * | s,
|  | unsigned char * | buf,
|  | int | size )

Read size bytes from AVIOContext into buf.

Returns
  number of bytes read or AVERROR

## avio_read_partial()

int avio_read_partial | ( | AVIOContext * | s,
|  | unsigned char * | buf,
|  | int | size )

Read size bytes from AVIOContext into buf.

Unlike avio_read(), this is allowed to read fewer bytes than requested. The missing bytes can be read in the next call. This always tries to read at least 1 byte. Useful to reduce latency in certain cases.

Returns
  number of bytes read or AVERROR

## avio_r8()

int avio_r8 | ( | AVIOContext * | s | ) |

## avio_rl16()

unsigned int avio_rl16 | ( | AVIOContext * | s | ) |

## avio_rl24()

unsigned int avio_rl24 | ( | AVIOContext * | s | ) |

## avio_rl32()

unsigned int avio_rl32 | ( | AVIOContext * | s | ) |

## avio_rl64()

uint64_t avio_rl64 | ( | AVIOContext * | s | ) |

## avio_rb16()

unsigned int avio_rb16 | ( | AVIOContext * | s | ) |

## avio_rb24()

unsigned int avio_rb24 | ( | AVIOContext * | s | ) |

## avio_rb32()

unsigned int avio_rb32 | ( | AVIOContext * | s | ) |

## avio_rb64()

uint64_t avio_rb64 | ( | AVIOContext * | s | ) |

## avio_get_str()

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.

Returns
  number of bytes read (is always <= maxlen). If reading ends on EOF or error, the return value will be one more than bytes actually read.

## avio_get_str16le()

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.

Returns
  number of bytes read (is always <= maxlen)

## avio_get_str16be()

int avio_get_str16be | ( | AVIOContext * | pb,
|  | int | maxlen,
|  | char * | buf,
|  | int | buflen )

## avio_open()

int avio_open | ( | AVIOContext ** | s,
|  | const char * | url,
|  | int | flags )

Create and initialize a AVIOContext for accessing the resource indicated by url.

Note
  When the resource indicated by url has been opened in read+write mode, the AVIOContext can be used only for writing.

Parameters

  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

Returns
  >= 0 in case of success, a negative value corresponding to an AVERROR code in case of failure

Examples
  mux.c, qsv_decode.c, qsv_transcode.c, remux.c, transcode.c, transcode_aac.c, and vaapi_transcode.c.

Referenced by main(), open_output_file(), and open_output_file().

## avio_open2()

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.

Note
  When the resource indicated by url has been opened in read+write mode, the AVIOContext can be used only for writing.

Parameters

  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.

Returns
  >= 0 in case of success, a negative value corresponding to an AVERROR code in case of failure

## avio_close()

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.

Returns
  0 on success, an AVERROR < 0 on error.

See also
  avio_closep

Examples
  qsv_decode.c.

Referenced by main().

## 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.

Returns
  0 on success, an AVERROR < 0 on error.

See also
  avio_close

Examples
  mux.c, remux.c, transcode.c, and transcode_aac.c.

Referenced by main(), and open_output_file().

## avio_open_dyn_buf()

int avio_open_dyn_buf | ( | AVIOContext ** | s | ) |

Open a write only memory stream.

Parameters

  s | new IO context

Returns
  zero if no error.

## avio_get_dyn_buf()

int avio_get_dyn_buf | ( | AVIOContext * | s,
|  | uint8_t ** | pbuffer )

Return the written size and a pointer to the buffer.

The AVIOContext stream is left intact. The buffer must NOT be freed. No padding is added to the buffer.

Parameters

  s | IO context
  pbuffer | pointer to a byte buffer

Returns
  the length of the byte buffer

## avio_close_dyn_buf()

int avio_close_dyn_buf | ( | AVIOContext * | s,
|  | uint8_t ** | pbuffer )

Return the written size and a pointer to the buffer.

The buffer must be freed with av_free(). Padding of AV_INPUT_BUFFER_PADDING_SIZE is added to the buffer.

Parameters

  s | IO context
  pbuffer | pointer to a byte buffer

Returns
  the length of the byte buffer

## avio_enum_protocols()

const char * avio_enum_protocols | ( | void ** | opaque,
|  | int | output )

Iterate through names of available protocols.

Parameters

  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.

Returns
  A static string containing the name of current protocol or NULL

## avio_protocol_get_class()

const AVClass * avio_protocol_get_class | ( | const char * | name | ) |

Get AVClass by names of available protocols.

Returns
  A AVClass of input protocol name or NULL

## avio_pause()

int avio_pause | ( | AVIOContext * | h,
|  | int | pause )

Pause and resume playing - only meaningful if using a network streaming protocol (e.g.

MMS).

Parameters

  h | IO context from which to call the read_pause function pointer
  pause | 1 for pause, 0 for resume

## avio_seek_time()

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.).

Parameters

  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.
  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 if used and not supported.

Returns
  >= 0 on success

See also
  AVInputFormat::read_seek

## avio_read_to_bprint()

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.

Returns
  0 for success (max_size bytes read or EOF reached), negative error code otherwise

## avio_accept()

int avio_accept | ( | AVIOContext * | s,
|  | AVIOContext ** | c )

Accept and allocate a client context on a server context.

Parameters

  s | the server context
  c | the client context, must be unallocated

Returns
  >= 0 on success or a negative value corresponding to an AVERROR on failure

## avio_handshake()

int avio_handshake | ( | AVIOContext * | c | ) |

Perform one step of the protocol handshake to accept a new client.

This function must be called on a client returned by avio_accept() before using it as a read/write context. It is separate from avio_accept() because it may block. A step of the handshake is defined by places where the application may decide to change the proceedings. For example, on a protocol with a request header and a reply header, each one can constitute a step because the application may use the parameters from the request to change parameters in the reply; or each individual chunk of the request can constitute a step. If the handshake is already finished, avio_handshake() does nothing and returns 0 immediately.

Parameters

  c | the client context to perform the handshake on

Returns
  0 on a complete and successful handshake > 0 if the handshake progressed, but is not complete < 0 for an AVERROR code