Loading...
Searching...
No Matches
Utility functions
libavformat

Miscellaneous utility functions related to both muxing and demuxing (or neither). More...

## Topics

| RIFF FourCCs
| Get the tables mapping RIFF FourCCs to libavcodec AVCodecIDs.

## Macros

#define | AV_FRAME_FILENAME_FLAGS_MULTIPLE 1
| Allow multiple d.
#define | AV_FRAME_FILENAME_FLAGS_IGNORE_TRUNCATION 2
| Ignore truncated output instead of returning an error.

## Functions

void | av_hex_dump (FILE *f, const uint8_t *buf, int size)
| Send a nice hexadecimal dump of a buffer to the specified file stream.
void | av_hex_dump_log (void *avcl, int level, const uint8_t *buf, int size)
| Send a nice hexadecimal dump of a buffer to the log.
void | av_pkt_dump2 (FILE *f, const AVPacket *pkt, int dump_payload, const AVStream *st)
| Send a nice dump of a packet to the specified file stream.
void | av_pkt_dump_log2 (void *avcl, int level, const AVPacket *pkt, int dump_payload, const AVStream *st)
| Send a nice dump of a packet to the log.
enum AVCodecID | av_codec_get_id (const struct AVCodecTag *const *tags, unsigned int tag)
| Get the AVCodecID for the given codec tag tag.
unsigned int | av_codec_get_tag (const struct AVCodecTag *const *tags, enum AVCodecID id)
| Get the codec tag for the given codec id id.
int | av_codec_get_tag2 (const struct AVCodecTag *const *tags, enum AVCodecID id, unsigned int *tag)
| Get the codec tag for the given codec id.
int | av_find_default_stream_index (AVFormatContext *s)
int | av_index_search_timestamp (AVStream *st, int64_t timestamp, int flags)
| Get the index for a specific timestamp.
int | avformat_index_get_entries_count (const AVStream *st)
| Get the index entry count for the given AVStream.
const AVIndexEntry * | avformat_index_get_entry (AVStream *st, int idx)
| Get the AVIndexEntry corresponding to the given index.
const AVIndexEntry * | avformat_index_get_entry_from_timestamp (AVStream *st, int64_t wanted_timestamp, int flags)
| Get the AVIndexEntry corresponding to the given timestamp.
int | av_add_index_entry (AVStream *st, int64_t pos, int64_t timestamp, int size, int distance, int flags)
| Add an index entry into a sorted list.
void | av_url_split (char *proto, int proto_size, char *authorization, int authorization_size, char *hostname, int hostname_size, int *port_ptr, char *path, int path_size, const char *url)
| Split a URL string into components.
void | av_dump_format (AVFormatContext *ic, int index, const char *url, int is_output)
| Print detailed information about the input or output format, such as duration, bitrate, streams, container, programs, metadata, side data, codec and time base.
int | av_get_frame_filename2 (char *buf, int buf_size, const char *path, int number, int flags)
| Return in 'buf' the path with 'd' replaced by a number.
int | av_get_frame_filename (char *buf, int buf_size, const char *path, int number)
int | av_filename_number_test (const char *filename)
| Check whether filename actually is a numbered sequence generator.
int | av_sdp_create (AVFormatContext *ac[], int n_files, char *buf, int size)
| Generate an SDP for an RTP session.
int | av_match_ext (const char *filename, const char *extensions)
| Return a positive value if the given filename has one of the given extensions, 0 otherwise.
int | avformat_query_codec (const AVOutputFormat *ofmt, enum AVCodecID codec_id, int std_compliance)
| Test if the given container can store a codec.
int | av_mime_codec_str (const AVCodecParameters *par, AVRational frame_rate, struct AVBPrint *out)
| Make a RFC 4281/6381 like string describing a codec for MIME types.
AVRational | av_guess_sample_aspect_ratio (AVFormatContext *format, AVStream *stream, struct AVFrame *frame)
| Guess the sample aspect ratio of a frame, based on both the stream and the frame aspect ratio.
AVRational | av_guess_frame_rate (AVFormatContext *ctx, AVStream *stream, struct AVFrame *frame)
| Guess the frame rate, based on both the container and codec information.
int | avformat_match_stream_specifier (AVFormatContext *s, AVStream *st, const char *spec)
| Check if the stream st contained in s is matched by the stream specifier spec.
int | avformat_queue_attached_pictures (AVFormatContext *s)

## Detailed Description

Miscellaneous utility functions related to both muxing and demuxing (or neither).

## Macro Definition Documentation

## AV_FRAME_FILENAME_FLAGS_MULTIPLE

#define AV_FRAME_FILENAME_FLAGS_MULTIPLE 1

Allow multiple d.

Definition at line 2919 of file avformat.h.

## AV_FRAME_FILENAME_FLAGS_IGNORE_TRUNCATION

#define AV_FRAME_FILENAME_FLAGS_IGNORE_TRUNCATION 2

Ignore truncated output instead of returning an error.

Definition at line 2920 of file avformat.h.

## Function Documentation

## av_hex_dump()

void av_hex_dump | ( | FILE * | f,
|  | const uint8_t * | buf,
|  | int | size )

Send a nice hexadecimal dump of a buffer to the specified file stream.

Parameters

  f | The file stream pointer where the dump should be sent to.
  buf | buffer
  size | buffer size

See also
  av_hex_dump_log, av_pkt_dump2, av_pkt_dump_log2

## av_hex_dump_log()

void av_hex_dump_log | ( | void * | avcl,
|  | int | level,
|  | const uint8_t * | buf,
|  | int | size )

Send a nice hexadecimal dump of a buffer to the log.

Parameters

  avcl | A pointer to an arbitrary struct of which the first field is a pointer to an AVClass struct.
  level | The importance level of the message, lower values signifying higher importance.
  buf | buffer
  size | buffer size

See also
  av_hex_dump, av_pkt_dump2, av_pkt_dump_log2

## av_pkt_dump2()

void av_pkt_dump2 | ( | FILE * | f,
|  | const AVPacket * | pkt,
|  | int | dump_payload,
|  | const AVStream * | st )

Send a nice dump of a packet to the specified file stream.

Parameters

  f | The file stream pointer where the dump should be sent to.
  pkt | packet to dump
  dump_payload | True if the payload must be displayed, too.
  st | AVStream that the packet belongs to

## av_pkt_dump_log2()

void av_pkt_dump_log2 | ( | void * | avcl,
|  | int | level,
|  | const AVPacket * | pkt,
|  | int | dump_payload,
|  | const AVStream * | st )

Send a nice dump of a packet to the log.

Parameters

  avcl | A pointer to an arbitrary struct of which the first field is a pointer to an AVClass struct.
  level | The importance level of the message, lower values signifying higher importance.
  pkt | packet to dump
  dump_payload | True if the payload must be displayed, too.
  st | AVStream that the packet belongs to

## av_codec_get_id()

enum AVCodecID av_codec_get_id | ( | const struct AVCodecTag *const * | tags,
|  | unsigned int | tag )

Get the AVCodecID for the given codec tag tag.

If no codec id is found returns AV_CODEC_ID_NONE.

Parameters

  tags | list of supported codec_id-codec_tag pairs, as stored in AVInputFormat.codec_tag and AVOutputFormat.codec_tag
  tag | codec tag to match to a codec ID

## av_codec_get_tag()

unsigned int av_codec_get_tag | ( | const struct AVCodecTag *const * | tags,
|  | enum AVCodecID | id )

Get the codec tag for the given codec id id.

If no codec tag is found returns 0.

Parameters

  tags | list of supported codec_id-codec_tag pairs, as stored in AVInputFormat.codec_tag and AVOutputFormat.codec_tag
  id | codec ID to match to a codec tag

## av_codec_get_tag2()

int av_codec_get_tag2 | ( | const struct AVCodecTag *const * | tags,
|  | enum AVCodecID | id,
|  | unsigned int * | tag )

Get the codec tag for the given codec id.

Parameters

  tags | list of supported codec_id - codec_tag pairs, as stored in AVInputFormat.codec_tag and AVOutputFormat.codec_tag
  id | codec id that should be searched for in the list
  tag | A pointer to the found tag

Returns
  0 if id was not found in tags, > 0 if it was found

## av_find_default_stream_index()

int av_find_default_stream_index | ( | AVFormatContext * | s | ) |

## av_index_search_timestamp()

int av_index_search_timestamp | ( | AVStream * | st,
|  | int64_t | timestamp,
|  | int | flags )

Get the index for a specific timestamp.

Parameters

  st | stream that the timestamp belongs to
  timestamp | timestamp to retrieve the index for
  flags | if AVSEEK_FLAG_BACKWARD then the returned index will correspond to the timestamp which is <= the requested one, if backward is 0, then it will be >= if AVSEEK_FLAG_ANY seek to any frame, only keyframes otherwise

Returns
  < 0 if no such timestamp could be found

## avformat_index_get_entries_count()

int avformat_index_get_entries_count | ( | const AVStream * | st | ) |

Get the index entry count for the given AVStream.

Parameters

  st | stream

Returns
  the number of index entries in the stream

## avformat_index_get_entry()

const AVIndexEntry * avformat_index_get_entry | ( | AVStream * | st,
|  | int | idx )

Get the AVIndexEntry corresponding to the given index.

Parameters

  st | Stream containing the requested AVIndexEntry.
  idx | The desired index.

Returns
  A pointer to the requested AVIndexEntry if it exists, NULL otherwise.

Note
  The pointer returned by this function is only guaranteed to be valid until any function that takes the stream or the parent AVFormatContext as input argument is called.

## avformat_index_get_entry_from_timestamp()

const AVIndexEntry * avformat_index_get_entry_from_timestamp | ( | AVStream * | st,
|  | int64_t | wanted_timestamp,
|  | int | flags )

Get the AVIndexEntry corresponding to the given timestamp.

Parameters

  st | Stream containing the requested AVIndexEntry.
  wanted_timestamp | Timestamp to retrieve the index entry for.
  flags | If AVSEEK_FLAG_BACKWARD then the returned entry will correspond to the timestamp which is <= the requested one, if backward is 0, then it will be >= if AVSEEK_FLAG_ANY seek to any frame, only keyframes otherwise.

Returns
  A pointer to the requested AVIndexEntry if it exists, NULL otherwise.

Note
  The pointer returned by this function is only guaranteed to be valid until any function that takes the stream or the parent AVFormatContext as input argument is called.

## av_add_index_entry()

int av_add_index_entry | ( | AVStream * | st,
|  | int64_t | pos,
|  | int64_t | timestamp,
|  | int | size,
|  | int | distance,
|  | int | flags )

Add an index entry into a sorted list.

Update the entry if the list already contains it.

Parameters

  timestamp | timestamp in the time base of the given stream

## av_url_split()

void av_url_split | ( | char * | proto,
|  | int | proto_size,
|  | char * | authorization,
|  | int | authorization_size,
|  | char * | hostname,
|  | int | hostname_size,
|  | int * | port_ptr,
|  | char * | path,
|  | int | path_size,
|  | const char * | url )

Split a URL string into components.

The pointers to buffers for storing individual components may be null, in order to ignore that component. Buffers for components not found are set to empty strings. If the port is not found, it is set to a negative value.

Parameters

  proto | the buffer for the protocol
  proto_size | the size of the proto buffer
  authorization | the buffer for the authorization
  authorization_size | the size of the authorization buffer
  hostname | the buffer for the host name
  hostname_size | the size of the hostname buffer
  port_ptr | a pointer to store the port number in
  path | the buffer for the path
  path_size | the size of the path buffer
  url | the URL to split

## av_dump_format()

void av_dump_format | ( | AVFormatContext * | ic,
|  | int | index,
|  | const char * | url,
|  | int | is_output )

Print detailed information about the input or output format, such as duration, bitrate, streams, container, programs, metadata, side data, codec and time base.

Parameters

  ic | the context to analyze
  index | index of the stream to dump information about
  url | the URL to print, such as source or destination file
  is_output | Select whether the specified context is an input(0) or output(1)

Examples
  avio_read_callback.c, demux_decode.c, extract_mvs.c, mux.c, remux.c, and transcode.c.

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

## av_get_frame_filename2()

int av_get_frame_filename2 | ( | char * | buf,
|  | int | buf_size,
|  | const char * | path,
|  | int | number,
|  | int | flags )

Return in 'buf' the path with 'd' replaced by a number.

Also handles the '%0nd' format where 'n' is the total number of digits and '%'.

Parameters

  buf | destination buffer
  buf_size | destination buffer size
  path | numbered sequence string
  number | frame number
  flags | AV_FRAME_FILENAME_FLAGS_*

Returns
  0 if OK, -1 on format error

## av_get_frame_filename()

int av_get_frame_filename | ( | char * | buf,
|  | int | buf_size,
|  | const char * | path,
|  | int | number )

## av_filename_number_test()

int av_filename_number_test | ( | const char * | filename | ) |

Check whether filename actually is a numbered sequence generator.

Parameters

  filename | possible numbered sequence string

Returns
  1 if a valid numbered sequence string, 0 otherwise

## av_sdp_create()

int av_sdp_create | ( | AVFormatContext * | ac[],
|  | int | n_files,
|  | char * | buf,
|  | int | size )

Generate an SDP for an RTP session.

Note, this overwrites the id values of AVStreams in the muxer contexts for getting unique dynamic payload types.

Parameters

  ac | array of AVFormatContexts describing the RTP streams. If the array is composed by only one context, such context can contain multiple AVStreams (one AVStream per RTP stream). Otherwise, all the contexts in the array (an AVCodecContext per RTP stream) must contain only one AVStream.
  n_files | number of AVCodecContexts contained in ac
  buf | buffer where the SDP will be stored (must be allocated by the caller)
  size | the size of the buffer

Returns
  0 if OK, AVERROR_xxx on error

## av_match_ext()

int av_match_ext | ( | const char * | filename,
|  | const char * | extensions )

Return a positive value if the given filename has one of the given extensions, 0 otherwise.

Parameters

  filename | file name to check against the given extensions
  extensions | a comma-separated list of filename extensions

## avformat_query_codec()

int avformat_query_codec | ( | const AVOutputFormat * | ofmt,
|  | enum AVCodecID | codec_id,
|  | int | std_compliance )

Test if the given container can store a codec.

Parameters

  ofmt | container to check for compatibility
  codec_id | codec to potentially store in container
  std_compliance | standards compliance level, one of FF_COMPLIANCE_*

Returns
  1 if codec with ID codec_id can be stored in ofmt, 0 if it cannot. A negative number if this information is not available.

## av_mime_codec_str()

int av_mime_codec_str | ( | const AVCodecParameters * | par,
|  | AVRational | frame_rate,
|  | struct AVBPrint * | out )

Make a RFC 4281/6381 like string describing a codec for MIME types.

Parameters

  par | pointer to an AVCodecParameters struct describing the codec
  frame_rate | an AVRational for the frame rate, for deciding the right profile for video codecs. Pass an invalid AVRational (1/0) to indicate that it is unknown.
  out | the AVBPrint to write the output to

Returns
  <0 on error

## av_guess_sample_aspect_ratio()

AVRational av_guess_sample_aspect_ratio | ( | AVFormatContext * | format,
|  | AVStream * | stream,
|  | struct AVFrame * | frame )

Guess the sample aspect ratio of a frame, based on both the stream and the frame aspect ratio.

Since the frame aspect ratio is set by the codec but the stream aspect ratio is set by the demuxer, these two may not be equal. This function tries to return the value that you should use if you would like to display the frame.

Basic logic is to use the stream aspect ratio if it is set to something sane otherwise use the frame aspect ratio. This way a container setting, which is usually easy to modify can override the coded value in the frames.

Parameters

  format | the format context which the stream is part of
  stream | the stream which the frame is part of
  frame | the frame with the aspect ratio to be determined

Returns
  the guessed (valid) sample_aspect_ratio, 0/1 if no idea

## av_guess_frame_rate()

AVRational av_guess_frame_rate | ( | AVFormatContext * | ctx,
|  | AVStream * | stream,
|  | struct AVFrame * | frame )

Guess the frame rate, based on both the container and codec information.

Parameters

  ctx | the format context which the stream is part of
  stream | the stream which the frame is part of
  frame | the frame for which the frame rate should be determined, may be NULL

Returns
  the guessed (valid) frame rate, 0/1 if no idea

Examples
  qsv_transcode.c, and transcode.c.

Referenced by open_input_file(), and open_input_file().

## avformat_match_stream_specifier()

int avformat_match_stream_specifier | ( | AVFormatContext * | s,
|  | AVStream * | st,
|  | const char * | spec )

Check if the stream st contained in s is matched by the stream specifier spec.

See the "stream specifiers" chapter in the documentation for the syntax of spec.

Returns
  >0 if st is matched by spec; 0 if st is not matched by spec; AVERROR code if spec is invalid

Note
  A stream specifier can match several streams in the format.

## avformat_queue_attached_pictures()

int avformat_queue_attached_pictures | ( | AVFormatContext * | s | ) |