Repository URL to install this package:
Version:
7:2.7.1-1ubuntu3 ▾
|
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<title>FFmpeg: libavformat/avformat.h Source File</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
<link href="search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="search/search.js"></script>
<script type="text/javascript">
$(document).ready(function() { searchBox.OnSelectItem(0); });
</script>
</head>
<body>
<div id="top"><!-- do not remove this div! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr style="height: 56px;">
<td style="padding-left: 0.5em;">
<div id="projectname">FFmpeg
 <span id="projectnumber">2.7.1</span>
</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- Generated by Doxygen 1.7.6.1 -->
<script type="text/javascript">
var searchBox = new SearchBox("searchBox", "search",false,'Search');
</script>
<div id="navrow1" class="tabs">
<ul class="tablist">
<li><a href="index.html"><span>Main Page</span></a></li>
<li><a href="pages.html"><span>Related Pages</span></a></li>
<li><a href="modules.html"><span>Modules</span></a></li>
<li><a href="annotated.html"><span>Data Structures</span></a></li>
<li class="current"><a href="files.html"><span>Files</span></a></li>
<li><a href="examples.html"><span>Examples</span></a></li>
<li>
<div id="MSearchBox" class="MSearchBoxInactive">
<span class="left">
<img id="MSearchSelect" src="search/mag_sel.png"
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
alt=""/>
<input type="text" id="MSearchField" value="Search" accesskey="S"
onfocus="searchBox.OnSearchFieldFocus(true)"
onblur="searchBox.OnSearchFieldFocus(false)"
onkeyup="searchBox.OnSearchFieldChange(event)"/>
</span><span class="right">
<a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.png" alt=""/></a>
</span>
</div>
</li>
</ul>
</div>
<div id="navrow2" class="tabs2">
<ul class="tablist">
<li><a href="files.html"><span>File List</span></a></li>
<li><a href="globals.html"><span>Globals</span></a></li>
</ul>
</div>
</div>
<div class="header">
<div class="headertitle">
<div class="title">libavformat/avformat.h</div> </div>
</div><!--header-->
<div class="contents">
<a href="avformat_8h.html">Go to the documentation of this file.</a><div class="fragment"><pre class="fragment"><a name="l00001"></a>00001 <span class="comment">/*</span>
<a name="l00002"></a>00002 <span class="comment"> * copyright (c) 2001 Fabrice Bellard</span>
<a name="l00003"></a>00003 <span class="comment"> *</span>
<a name="l00004"></a>00004 <span class="comment"> * This file is part of FFmpeg.</span>
<a name="l00005"></a>00005 <span class="comment"> *</span>
<a name="l00006"></a>00006 <span class="comment"> * FFmpeg is free software; you can redistribute it and/or</span>
<a name="l00007"></a>00007 <span class="comment"> * modify it under the terms of the GNU Lesser General Public</span>
<a name="l00008"></a>00008 <span class="comment"> * License as published by the Free Software Foundation; either</span>
<a name="l00009"></a>00009 <span class="comment"> * version 2.1 of the License, or (at your option) any later version.</span>
<a name="l00010"></a>00010 <span class="comment"> *</span>
<a name="l00011"></a>00011 <span class="comment"> * FFmpeg is distributed in the hope that it will be useful,</span>
<a name="l00012"></a>00012 <span class="comment"> * but WITHOUT ANY WARRANTY; without even the implied warranty of</span>
<a name="l00013"></a>00013 <span class="comment"> * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU</span>
<a name="l00014"></a>00014 <span class="comment"> * Lesser General Public License for more details.</span>
<a name="l00015"></a>00015 <span class="comment"> *</span>
<a name="l00016"></a>00016 <span class="comment"> * You should have received a copy of the GNU Lesser General Public</span>
<a name="l00017"></a>00017 <span class="comment"> * License along with FFmpeg; if not, write to the Free Software</span>
<a name="l00018"></a>00018 <span class="comment"> * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA</span>
<a name="l00019"></a>00019 <span class="comment"> */</span>
<a name="l00020"></a>00020
<a name="l00021"></a>00021 <span class="preprocessor">#ifndef AVFORMAT_AVFORMAT_H</span>
<a name="l00022"></a>00022 <span class="preprocessor"></span><span class="preprocessor">#define AVFORMAT_AVFORMAT_H</span>
<a name="l00023"></a>00023 <span class="preprocessor"></span><span class="comment"></span>
<a name="l00024"></a>00024 <span class="comment">/**</span>
<a name="l00025"></a>00025 <span class="comment"> * @file</span>
<a name="l00026"></a>00026 <span class="comment"> * @ingroup libavf</span>
<a name="l00027"></a>00027 <span class="comment"> * Main libavformat public API header</span>
<a name="l00028"></a>00028 <span class="comment"> */</span>
<a name="l00029"></a>00029 <span class="comment"></span>
<a name="l00030"></a>00030 <span class="comment">/**</span>
<a name="l00031"></a>00031 <span class="comment"> * @defgroup libavf I/O and Muxing/Demuxing Library</span>
<a name="l00032"></a>00032 <span class="comment"> * @{</span>
<a name="l00033"></a>00033 <span class="comment"> *</span>
<a name="l00034"></a>00034 <span class="comment"> * Libavformat (lavf) is a library for dealing with various media container</span>
<a name="l00035"></a>00035 <span class="comment"> * formats. Its main two purposes are demuxing - i.e. splitting a media file</span>
<a name="l00036"></a>00036 <span class="comment"> * into component streams, and the reverse process of muxing - writing supplied</span>
<a name="l00037"></a>00037 <span class="comment"> * data in a specified container format. It also has an @ref lavf_io</span>
<a name="l00038"></a>00038 <span class="comment"> * "I/O module" which supports a number of protocols for accessing the data (e.g.</span>
<a name="l00039"></a>00039 <span class="comment"> * file, tcp, http and others). Before using lavf, you need to call</span>
<a name="l00040"></a>00040 <span class="comment"> * av_register_all() to register all compiled muxers, demuxers and protocols.</span>
<a name="l00041"></a>00041 <span class="comment"> * Unless you are absolutely sure you won't use libavformat's network</span>
<a name="l00042"></a>00042 <span class="comment"> * capabilities, you should also call avformat_network_init().</span>
<a name="l00043"></a>00043 <span class="comment"> *</span>
<a name="l00044"></a>00044 <span class="comment"> * A supported input format is described by an AVInputFormat struct, conversely</span>
<a name="l00045"></a>00045 <span class="comment"> * an output format is described by AVOutputFormat. You can iterate over all</span>
<a name="l00046"></a>00046 <span class="comment"> * registered input/output formats using the av_iformat_next() /</span>
<a name="l00047"></a>00047 <span class="comment"> * av_oformat_next() functions. The protocols layer is not part of the public</span>
<a name="l00048"></a>00048 <span class="comment"> * API, so you can only get the names of supported protocols with the</span>
<a name="l00049"></a>00049 <span class="comment"> * avio_enum_protocols() function.</span>
<a name="l00050"></a>00050 <span class="comment"> *</span>
<a name="l00051"></a>00051 <span class="comment"> * Main lavf structure used for both muxing and demuxing is AVFormatContext,</span>
<a name="l00052"></a>00052 <span class="comment"> * which exports all information about the file being read or written. As with</span>
<a name="l00053"></a>00053 <span class="comment"> * most Libavformat structures, its size is not part of public ABI, so it cannot be</span>
<a name="l00054"></a>00054 <span class="comment"> * allocated on stack or directly with av_malloc(). To create an</span>
<a name="l00055"></a>00055 <span class="comment"> * AVFormatContext, use avformat_alloc_context() (some functions, like</span>
<a name="l00056"></a>00056 <span class="comment"> * avformat_open_input() might do that for you).</span>
<a name="l00057"></a>00057 <span class="comment"> *</span>
<a name="l00058"></a>00058 <span class="comment"> * Most importantly an AVFormatContext contains:</span>
<a name="l00059"></a>00059 <span class="comment"> * @li the @ref AVFormatContext.iformat "input" or @ref AVFormatContext.oformat</span>
<a name="l00060"></a>00060 <span class="comment"> * "output" format. It is either autodetected or set by user for input;</span>
<a name="l00061"></a>00061 <span class="comment"> * always set by user for output.</span>
<a name="l00062"></a>00062 <span class="comment"> * @li an @ref AVFormatContext.streams "array" of AVStreams, which describe all</span>
<a name="l00063"></a>00063 <span class="comment"> * elementary streams stored in the file. AVStreams are typically referred to</span>
<a name="l00064"></a>00064 <span class="comment"> * using their index in this array.</span>
<a name="l00065"></a>00065 <span class="comment"> * @li an @ref AVFormatContext.pb "I/O context". It is either opened by lavf or</span>
<a name="l00066"></a>00066 <span class="comment"> * set by user for input, always set by user for output (unless you are dealing</span>
<a name="l00067"></a>00067 <span class="comment"> * with an AVFMT_NOFILE format).</span>
<a name="l00068"></a>00068 <span class="comment"> *</span>
<a name="l00069"></a>00069 <span class="comment"> * @section lavf_options Passing options to (de)muxers</span>
<a name="l00070"></a>00070 <span class="comment"> * It is possible to configure lavf muxers and demuxers using the @ref avoptions</span>
<a name="l00071"></a>00071 <span class="comment"> * mechanism. Generic (format-independent) libavformat options are provided by</span>
<a name="l00072"></a>00072 <span class="comment"> * AVFormatContext, they can be examined from a user program by calling</span>
<a name="l00073"></a>00073 <span class="comment"> * av_opt_next() / av_opt_find() on an allocated AVFormatContext (or its AVClass</span>
<a name="l00074"></a>00074 <span class="comment"> * from avformat_get_class()). Private (format-specific) options are provided by</span>
<a name="l00075"></a>00075 <span class="comment"> * AVFormatContext.priv_data if and only if AVInputFormat.priv_class /</span>
<a name="l00076"></a>00076 <span class="comment"> * AVOutputFormat.priv_class of the corresponding format struct is non-NULL.</span>
<a name="l00077"></a>00077 <span class="comment"> * Further options may be provided by the @ref AVFormatContext.pb "I/O context",</span>
<a name="l00078"></a>00078 <span class="comment"> * if its AVClass is non-NULL, and the protocols layer. See the discussion on</span>
<a name="l00079"></a>00079 <span class="comment"> * nesting in @ref avoptions documentation to learn how to access those.</span>
<a name="l00080"></a>00080 <span class="comment"> *</span>
<a name="l00081"></a>00081 <span class="comment"> * @defgroup lavf_decoding Demuxing</span>
<a name="l00082"></a>00082 <span class="comment"> * @{</span>
<a name="l00083"></a>00083 <span class="comment"> * Demuxers read a media file and split it into chunks of data (@em packets). A</span>
<a name="l00084"></a>00084 <span class="comment"> * @ref AVPacket "packet" contains one or more encoded frames which belongs to a</span>
<a name="l00085"></a>00085 <span class="comment"> * single elementary stream. In the lavf API this process is represented by the</span>
<a name="l00086"></a>00086 <span class="comment"> * avformat_open_input() function for opening a file, av_read_frame() for</span>
<a name="l00087"></a>00087 <span class="comment"> * reading a single packet and finally avformat_close_input(), which does the</span>
<a name="l00088"></a>00088 <span class="comment"> * cleanup.</span>
<a name="l00089"></a>00089 <span class="comment"> *</span>
<a name="l00090"></a>00090 <span class="comment"> * @section lavf_decoding_open Opening a media file</span>
<a name="l00091"></a>00091 <span class="comment"> * The minimum information required to open a file is its URL or filename, which</span>
<a name="l00092"></a>00092 <span class="comment"> * is passed to avformat_open_input(), as in the following code:</span>
<a name="l00093"></a>00093 <span class="comment"> * @code</span>
<a name="l00094"></a>00094 <span class="comment"> * const char *url = "in.mp3";</span>
<a name="l00095"></a>00095 <span class="comment"> * AVFormatContext *s = NULL;</span>
<a name="l00096"></a>00096 <span class="comment"> * int ret = avformat_open_input(&s, url, NULL, NULL);</span>
<a name="l00097"></a>00097 <span class="comment"> * if (ret < 0)</span>
<a name="l00098"></a>00098 <span class="comment"> * abort();</span>
<a name="l00099"></a>00099 <span class="comment"> * @endcode</span>
<a name="l00100"></a>00100 <span class="comment"> * The above code attempts to allocate an AVFormatContext, open the</span>
<a name="l00101"></a>00101 <span class="comment"> * specified file (autodetecting the format) and read the header, exporting the</span>
<a name="l00102"></a>00102 <span class="comment"> * information stored there into s. Some formats do not have a header or do not</span>
<a name="l00103"></a>00103 <span class="comment"> * store enough information there, so it is recommended that you call the</span>
<a name="l00104"></a>00104 <span class="comment"> * avformat_find_stream_info() function which tries to read and decode a few</span>
<a name="l00105"></a>00105 <span class="comment"> * frames to find missing information.</span>
<a name="l00106"></a>00106 <span class="comment"> *</span>
<a name="l00107"></a>00107 <span class="comment"> * In some cases you might want to preallocate an AVFormatContext yourself with</span>
<a name="l00108"></a>00108 <span class="comment"> * avformat_alloc_context() and do some tweaking on it before passing it to</span>
<a name="l00109"></a>00109 <span class="comment"> * avformat_open_input(). One such case is when you want to use custom functions</span>
<a name="l00110"></a>00110 <span class="comment"> * for reading input data instead of lavf internal I/O layer.</span>
<a name="l00111"></a>00111 <span class="comment"> * To do that, create your own AVIOContext with avio_alloc_context(), passing</span>
<a name="l00112"></a>00112 <span class="comment"> * your reading callbacks to it. Then set the @em pb field of your</span>
<a name="l00113"></a>00113 <span class="comment"> * AVFormatContext to newly created AVIOContext.</span>
<a name="l00114"></a>00114 <span class="comment"> *</span>
<a name="l00115"></a>00115 <span class="comment"> * Since the format of the opened file is in general not known until after</span>
<a name="l00116"></a>00116 <span class="comment"> * avformat_open_input() has returned, it is not possible to set demuxer private</span>
<a name="l00117"></a>00117 <span class="comment"> * options on a preallocated context. Instead, the options should be passed to</span>
<a name="l00118"></a>00118 <span class="comment"> * avformat_open_input() wrapped in an AVDictionary:</span>
<a name="l00119"></a>00119 <span class="comment"> * @code</span>
<a name="l00120"></a>00120 <span class="comment"> * AVDictionary *options = NULL;</span>
<a name="l00121"></a>00121 <span class="comment"> * av_dict_set(&options, "video_size", "640x480", 0);</span>
<a name="l00122"></a>00122 <span class="comment"> * av_dict_set(&options, "pixel_format", "rgb24", 0);</span>
<a name="l00123"></a>00123 <span class="comment"> *</span>
<a name="l00124"></a>00124 <span class="comment"> * if (avformat_open_input(&s, url, NULL, &options) < 0)</span>
<a name="l00125"></a>00125 <span class="comment"> * abort();</span>
<a name="l00126"></a>00126 <span class="comment"> * av_dict_free(&options);</span>
<a name="l00127"></a>00127 <span class="comment"> * @endcode</span>
<a name="l00128"></a>00128 <span class="comment"> * This code passes the private options 'video_size' and 'pixel_format' to the</span>
<a name="l00129"></a>00129 <span class="comment"> * demuxer. They would be necessary for e.g. the rawvideo demuxer, since it</span>
<a name="l00130"></a>00130 <span class="comment"> * cannot know how to interpret raw video data otherwise. If the format turns</span>
<a name="l00131"></a>00131 <span class="comment"> * out to be something different than raw video, those options will not be</span>
<a name="l00132"></a>00132 <span class="comment"> * recognized by the demuxer and therefore will not be applied. Such unrecognized</span>
<a name="l00133"></a>00133 <span class="comment"> * options are then returned in the options dictionary (recognized options are</span>
<a name="l00134"></a>00134 <span class="comment"> * consumed). The calling program can handle such unrecognized options as it</span>
<a name="l00135"></a>00135 <span class="comment"> * wishes, e.g.</span>
<a name="l00136"></a>00136 <span class="comment"> * @code</span>
<a name="l00137"></a>00137 <span class="comment"> * AVDictionaryEntry *e;</span>
<a name="l00138"></a>00138 <span class="comment"> * if (e = av_dict_get(options, "", NULL, AV_DICT_IGNORE_SUFFIX)) {</span>
<a name="l00139"></a>00139 <span class="comment"> * fprintf(stderr, "Option %s not recognized by the demuxer.\n", e->key);</span>
<a name="l00140"></a>00140 <span class="comment"> * abort();</span>
<a name="l00141"></a>00141 <span class="comment"> * }</span>
<a name="l00142"></a>00142 <span class="comment"> * @endcode</span>
<a name="l00143"></a>00143 <span class="comment"> *</span>
<a name="l00144"></a>00144 <span class="comment"> * After you have finished reading the file, you must close it with</span>
<a name="l00145"></a>00145 <span class="comment"> * avformat_close_input(). It will free everything associated with the file.</span>
<a name="l00146"></a>00146 <span class="comment"> *</span>
<a name="l00147"></a>00147 <span class="comment"> * @section lavf_decoding_read Reading from an opened file</span>
<a name="l00148"></a>00148 <span class="comment"> * Reading data from an opened AVFormatContext is done by repeatedly calling</span>
<a name="l00149"></a>00149 <span class="comment"> * av_read_frame() on it. Each call, if successful, will return an AVPacket</span>
<a name="l00150"></a>00150 <span class="comment"> * containing encoded data for one AVStream, identified by</span>
<a name="l00151"></a>00151 <span class="comment"> * AVPacket.stream_index. This packet may be passed straight into the libavcodec</span>
<a name="l00152"></a>00152 <span class="comment"> * decoding functions avcodec_decode_video2(), avcodec_decode_audio4() or</span>
<a name="l00153"></a>00153 <span class="comment"> * avcodec_decode_subtitle2() if the caller wishes to decode the data.</span>
<a name="l00154"></a>00154 <span class="comment"> *</span>
<a name="l00155"></a>00155 <span class="comment"> * AVPacket.pts, AVPacket.dts and AVPacket.duration timing information will be</span>
<a name="l00156"></a>00156 <span class="comment"> * set if known. They may also be unset (i.e. AV_NOPTS_VALUE for</span>
<a name="l00157"></a>00157 <span class="comment"> * pts/dts, 0 for duration) if the stream does not provide them. The timing</span>
<a name="l00158"></a>00158 <span class="comment"> * information will be in AVStream.time_base units, i.e. it has to be</span>
<a name="l00159"></a>00159 <span class="comment"> * multiplied by the timebase to convert them to seconds.</span>
<a name="l00160"></a>00160 <span class="comment"> *</span>
<a name="l00161"></a>00161 <span class="comment"> * If AVPacket.buf is set on the returned packet, then the packet is</span>
<a name="l00162"></a>00162 <span class="comment"> * allocated dynamically and the user may keep it indefinitely.</span>
<a name="l00163"></a>00163 <span class="comment"> * Otherwise, if AVPacket.buf is NULL, the packet data is backed by a</span>
<a name="l00164"></a>00164 <span class="comment"> * static storage somewhere inside the demuxer and the packet is only valid</span>
<a name="l00165"></a>00165 <span class="comment"> * until the next av_read_frame() call or closing the file. If the caller</span>
<a name="l00166"></a>00166 <span class="comment"> * requires a longer lifetime, av_dup_packet() will make an av_malloc()ed copy</span>
<a name="l00167"></a>00167 <span class="comment"> * of it.</span>
<a name="l00168"></a>00168 <span class="comment"> * In both cases, the packet must be freed with av_free_packet() when it is no</span>
<a name="l00169"></a>00169 <span class="comment"> * longer needed.</span>
<a name="l00170"></a>00170 <span class="comment"> *</span>
<a name="l00171"></a>00171 <span class="comment"> * @section lavf_decoding_seek Seeking</span>
<a name="l00172"></a>00172 <span class="comment"> * @}</span>
<a name="l00173"></a>00173 <span class="comment"> *</span>
<a name="l00174"></a>00174 <span class="comment"> * @defgroup lavf_encoding Muxing</span>
<a name="l00175"></a>00175 <span class="comment"> * @{</span>
<a name="l00176"></a>00176 <span class="comment"> * Muxers take encoded data in the form of @ref AVPacket "AVPackets" and write</span>
<a name="l00177"></a>00177 <span class="comment"> * it into files or other output bytestreams in the specified container format.</span>
<a name="l00178"></a>00178 <span class="comment"> *</span>
<a name="l00179"></a>00179 <span class="comment"> * The main API functions for muxing are avformat_write_header() for writing the</span>
<a name="l00180"></a>00180 <span class="comment"> * file header, av_write_frame() / av_interleaved_write_frame() for writing the</span>
<a name="l00181"></a>00181 <span class="comment"> * packets and av_write_trailer() for finalizing the file.</span>
<a name="l00182"></a>00182 <span class="comment"> *</span>
<a name="l00183"></a>00183 <span class="comment"> * At the beginning of the muxing process, the caller must first call</span>
<a name="l00184"></a>00184 <span class="comment"> * avformat_alloc_context() to create a muxing context. The caller then sets up</span>
<a name="l00185"></a>00185 <span class="comment"> * the muxer by filling the various fields in this context:</span>
<a name="l00186"></a>00186 <span class="comment"> *</span>
<a name="l00187"></a>00187 <span class="comment"> * - The @ref AVFormatContext.oformat "oformat" field must be set to select the</span>
<a name="l00188"></a>00188 <span class="comment"> * muxer that will be used.</span>
<a name="l00189"></a>00189 <span class="comment"> * - Unless the format is of the AVFMT_NOFILE type, the @ref AVFormatContext.pb</span>
<a name="l00190"></a>00190 <span class="comment"> * "pb" field must be set to an opened IO context, either returned from</span>
<a name="l00191"></a>00191 <span class="comment"> * avio_open2() or a custom one.</span>
<a name="l00192"></a>00192 <span class="comment"> * - Unless the format is of the AVFMT_NOSTREAMS type, at least one stream must</span>
<a name="l00193"></a>00193 <span class="comment"> * be created with the avformat_new_stream() function. The caller should fill</span>
<a name="l00194"></a>00194 <span class="comment"> * the @ref AVStream.codec "stream codec context" information, such as the</span>
<a name="l00195"></a>00195 <span class="comment"> * codec @ref AVCodecContext.codec_type "type", @ref AVCodecContext.codec_id</span>
<a name="l00196"></a>00196 <span class="comment"> * "id" and other parameters (e.g. width / height, the pixel or sample format,</span>
<a name="l00197"></a>00197 <span class="comment"> * etc.) as known. The @ref AVStream.time_base "stream timebase" should</span>
<a name="l00198"></a>00198 <span class="comment"> * be set to the timebase that the caller desires to use for this stream (note</span>
<a name="l00199"></a>00199 <span class="comment"> * that the timebase actually used by the muxer can be different, as will be</span>
<a name="l00200"></a>00200 <span class="comment"> * described later).</span>
<a name="l00201"></a>00201 <span class="comment"> * - It is advised to manually initialize only the relevant fields in</span>
<a name="l00202"></a>00202 <span class="comment"> * AVCodecContext, rather than using @ref avcodec_copy_context() during</span>
<a name="l00203"></a>00203 <span class="comment"> * remuxing: there is no guarantee that the codec context values remain valid</span>
<a name="l00204"></a>00204 <span class="comment"> * for both input and output format contexts.</span>
<a name="l00205"></a>00205 <span class="comment"> * - The caller may fill in additional information, such as @ref</span>
<a name="l00206"></a>00206 <span class="comment"> * AVFormatContext.metadata "global" or @ref AVStream.metadata "per-stream"</span>
<a name="l00207"></a>00207 <span class="comment"> * metadata, @ref AVFormatContext.chapters "chapters", @ref</span>
<a name="l00208"></a>00208 <span class="comment"> * AVFormatContext.programs "programs", etc. as described in the</span>
<a name="l00209"></a>00209 <span class="comment"> * AVFormatContext documentation. Whether such information will actually be</span>
<a name="l00210"></a>00210 <span class="comment"> * stored in the output depends on what the container format and the muxer</span>
<a name="l00211"></a>00211 <span class="comment"> * support.</span>
<a name="l00212"></a>00212 <span class="comment"> *</span>
<a name="l00213"></a>00213 <span class="comment"> * When the muxing context is fully set up, the caller must call</span>
<a name="l00214"></a>00214 <span class="comment"> * avformat_write_header() to initialize the muxer internals and write the file</span>
<a name="l00215"></a>00215 <span class="comment"> * header. Whether anything actually is written to the IO context at this step</span>
<a name="l00216"></a>00216 <span class="comment"> * depends on the muxer, but this function must always be called. Any muxer</span>
<a name="l00217"></a>00217 <span class="comment"> * private options must be passed in the options parameter to this function.</span>
<a name="l00218"></a>00218 <span class="comment"> *</span>
<a name="l00219"></a>00219 <span class="comment"> * The data is then sent to the muxer by repeatedly calling av_write_frame() or</span>
<a name="l00220"></a>00220 <span class="comment"> * av_interleaved_write_frame() (consult those functions' documentation for</span>
<a name="l00221"></a>00221 <span class="comment"> * discussion on the difference between them; only one of them may be used with</span>
<a name="l00222"></a>00222 <span class="comment"> * a single muxing context, they should not be mixed). Do note that the timing</span>
<a name="l00223"></a>00223 <span class="comment"> * information on the packets sent to the muxer must be in the corresponding</span>
<a name="l00224"></a>00224 <span class="comment"> * AVStream's timebase. That timebase is set by the muxer (in the</span>
<a name="l00225"></a>00225 <span class="comment"> * avformat_write_header() step) and may be different from the timebase</span>
<a name="l00226"></a>00226 <span class="comment"> * requested by the caller.</span>
<a name="l00227"></a>00227 <span class="comment"> *</span>
<a name="l00228"></a>00228 <span class="comment"> * Once all the data has been written, the caller must call av_write_trailer()</span>
<a name="l00229"></a>00229 <span class="comment"> * to flush any buffered packets and finalize the output file, then close the IO</span>
<a name="l00230"></a>00230 <span class="comment"> * context (if any) and finally free the muxing context with</span>
<a name="l00231"></a>00231 <span class="comment"> * avformat_free_context().</span>
<a name="l00232"></a>00232 <span class="comment"> * @}</span>
<a name="l00233"></a>00233 <span class="comment"> *</span>
<a name="l00234"></a>00234 <span class="comment"> * @defgroup lavf_io I/O Read/Write</span>
<a name="l00235"></a>00235 <span class="comment"> * @{</span>
<a name="l00236"></a>00236 <span class="comment"> * @section lavf_io_dirlist Directory listing</span>
<a name="l00237"></a>00237 <span class="comment"> * The directory listing API makes it possible to list files on remote servers.</span>
<a name="l00238"></a>00238 <span class="comment"> *</span>
<a name="l00239"></a>00239 <span class="comment"> * Some of possible use cases:</span>
<a name="l00240"></a>00240 <span class="comment"> * - an "open file" dialog to choose files from a remote location,</span>
<a name="l00241"></a>00241 <span class="comment"> * - a recursive media finder providing a player with an ability to play all</span>
<a name="l00242"></a>00242 <span class="comment"> * files from a given directory.</span>
<a name="l00243"></a>00243 <span class="comment"> *</span>
<a name="l00244"></a>00244 <span class="comment"> * @subsection lavf_io_dirlist_open Opening a directory</span>
<a name="l00245"></a>00245 <span class="comment"> * At first, a directory needs to be opened by calling avio_open_dir()</span>
<a name="l00246"></a>00246 <span class="comment"> * supplied with a URL and, optionally, ::AVDictionary containing</span>
<a name="l00247"></a>00247 <span class="comment"> * protocol-specific parameters. The function returns zero or positive</span>
<a name="l00248"></a>00248 <span class="comment"> * integer and allocates AVIODirContext on success.</span>
<a name="l00249"></a>00249 <span class="comment"> *</span>
<a name="l00250"></a>00250 <span class="comment"> * @code</span>
<a name="l00251"></a>00251 <span class="comment"> * AVIODirContext *ctx = NULL;</span>
<a name="l00252"></a>00252 <span class="comment"> * if (avio_open_dir(&ctx, "smb://example.com/some_dir", NULL) < 0) {</span>
<a name="l00253"></a>00253 <span class="comment"> * fprintf(stderr, "Cannot open directory.\n");</span>
<a name="l00254"></a>00254 <span class="comment"> * abort();</span>
<a name="l00255"></a>00255 <span class="comment"> * }</span>
<a name="l00256"></a>00256 <span class="comment"> * @endcode</span>
<a name="l00257"></a>00257 <span class="comment"> *</span>
<a name="l00258"></a>00258 <span class="comment"> * This code tries to open a sample directory using smb protocol without</span>
<a name="l00259"></a>00259 <span class="comment"> * any additional parameters.</span>
<a name="l00260"></a>00260 <span class="comment"> *</span>
<a name="l00261"></a>00261 <span class="comment"> * @subsection lavf_io_dirlist_read Reading entries</span>
<a name="l00262"></a>00262 <span class="comment"> * Each directory's entry (i.e. file, another directory, anything else</span>
<a name="l00263"></a>00263 <span class="comment"> * within ::AVIODirEntryType) is represented by AVIODirEntry.</span>
<a name="l00264"></a>00264 <span class="comment"> * Reading consecutive entries from an opened AVIODirContext is done by</span>
<a name="l00265"></a>00265 <span class="comment"> * repeatedly calling avio_read_dir() on it. Each call returns zero or</span>
<a name="l00266"></a>00266 <span class="comment"> * positive integer if successful. Reading can be stopped right after the</span>
<a name="l00267"></a>00267 <span class="comment"> * NULL entry has been read -- it means there are no entries left to be</span>
<a name="l00268"></a>00268 <span class="comment"> * read. The following code reads all entries from a directory associated</span>
<a name="l00269"></a>00269 <span class="comment"> * with ctx and prints their names to standard output.</span>
<a name="l00270"></a>00270 <span class="comment"> * @code</span>
<a name="l00271"></a>00271 <span class="comment"> * AVIODirEntry *entry = NULL;</span>
<a name="l00272"></a>00272 <span class="comment"> * for (;;) {</span>
<a name="l00273"></a>00273 <span class="comment"> * if (avio_read_dir(ctx, &entry) < 0) {</span>
<a name="l00274"></a>00274 <span class="comment"> * fprintf(stderr, "Cannot list directory.\n");</span>
<a name="l00275"></a>00275 <span class="comment"> * abort();</span>
<a name="l00276"></a>00276 <span class="comment"> * }</span>
<a name="l00277"></a>00277 <span class="comment"> * if (!entry)</span>
<a name="l00278"></a>00278 <span class="comment"> * break;</span>
<a name="l00279"></a>00279 <span class="comment"> * printf("%s\n", entry->name);</span>
<a name="l00280"></a>00280 <span class="comment"> * avio_free_directory_entry(&entry);</span>
<a name="l00281"></a>00281 <span class="comment"> * }</span>
<a name="l00282"></a>00282 <span class="comment"> * @endcode</span>
<a name="l00283"></a>00283 <span class="comment"> * @}</span>
<a name="l00284"></a>00284 <span class="comment"> *</span>
<a name="l00285"></a>00285 <span class="comment"> * @defgroup lavf_codec Demuxers</span>
<a name="l00286"></a>00286 <span class="comment"> * @{</span>
<a name="l00287"></a>00287 <span class="comment"> * @defgroup lavf_codec_native Native Demuxers</span>
<a name="l00288"></a>00288 <span class="comment"> * @{</span>
<a name="l00289"></a>00289 <span class="comment"> * @}</span>
<a name="l00290"></a>00290 <span class="comment"> * @defgroup lavf_codec_wrappers External library wrappers</span>
<a name="l00291"></a>00291 <span class="comment"> * @{</span>
<a name="l00292"></a>00292 <span class="comment"> * @}</span>
<a name="l00293"></a>00293 <span class="comment"> * @}</span>
<a name="l00294"></a>00294 <span class="comment"> * @defgroup lavf_protos I/O Protocols</span>
<a name="l00295"></a>00295 <span class="comment"> * @{</span>
<a name="l00296"></a>00296 <span class="comment"> * @}</span>
<a name="l00297"></a>00297 <span class="comment"> * @defgroup lavf_internal Internal</span>
<a name="l00298"></a>00298 <span class="comment"> * @{</span>
<a name="l00299"></a>00299 <span class="comment"> * @}</span>
<a name="l00300"></a>00300 <span class="comment"> * @}</span>
<a name="l00301"></a>00301 <span class="comment"> *</span>
<a name="l00302"></a>00302 <span class="comment"> */</span>
<a name="l00303"></a>00303
<a name="l00304"></a>00304 <span class="preprocessor">#include <<a class="code" href="time_8h.html">time.h</a>></span>
<a name="l00305"></a>00305 <span class="preprocessor">#include <stdio.h></span> <span class="comment">/* FILE */</span>
<a name="l00306"></a>00306 <span class="preprocessor">#include "<a class="code" href="libavcodec_2avcodec_8h.html" title="Libavcodec external API header.">libavcodec/avcodec.h</a>"</span>
<a name="l00307"></a>00307 <span class="preprocessor">#include "<a class="code" href="dict_8h.html" title="Public dictionary API.">libavutil/dict.h</a>"</span>
<a name="l00308"></a>00308 <span class="preprocessor">#include "<a class="code" href="log_8h.html">libavutil/log.h</a>"</span>
<a name="l00309"></a>00309
<a name="l00310"></a>00310 <span class="preprocessor">#include "<a class="code" href="avio_8h.html" title="Buffered I/O operations.">avio.h</a>"</span>
<a name="l00311"></a>00311 <span class="preprocessor">#include "<a class="code" href="libavformat_2version_8h.html" title="Libavformat version macros.">libavformat/version.h</a>"</span>
<a name="l00312"></a>00312
<a name="l00313"></a>00313 <span class="keyword">struct </span><a class="code" href="structAVFormatContext.html" title="Format I/O context.">AVFormatContext</a>;
<a name="l00314"></a>00314
<a name="l00315"></a>00315 <span class="keyword">struct </span><a class="code" href="structAVDeviceInfoList.html" title="List of devices.">AVDeviceInfoList</a>;
<a name="l00316"></a>00316 <span class="keyword">struct </span><a class="code" href="structAVDeviceCapabilitiesQuery.html" title="Following API allows user to probe device capabilities (supported codecs, pixel formats, sample formats, resolutions, channel counts, etc).">AVDeviceCapabilitiesQuery</a>;
<a name="l00317"></a>00317 <span class="comment"></span>
<a name="l00318"></a>00318 <span class="comment">/**</span>
<a name="l00319"></a>00319 <span class="comment"> * @defgroup metadata_api Public Metadata API</span>
<a name="l00320"></a>00320 <span class="comment"> * @{</span>
<a name="l00321"></a>00321 <span class="comment"> * @ingroup libavf</span>
<a name="l00322"></a>00322 <span class="comment"> * The metadata API allows libavformat to export metadata tags to a client</span>
<a name="l00323"></a>00323 <span class="comment"> * application when demuxing. Conversely it allows a client application to</span>
<a name="l00324"></a>00324 <span class="comment"> * set metadata when muxing.</span>
<a name="l00325"></a>00325 <span class="comment"> *</span>
<a name="l00326"></a>00326 <span class="comment"> * Metadata is exported or set as pairs of key/value strings in the 'metadata'</span>
<a name="l00327"></a>00327 <span class="comment"> * fields of the AVFormatContext, AVStream, AVChapter and AVProgram structs</span>
<a name="l00328"></a>00328 <span class="comment"> * using the @ref lavu_dict "AVDictionary" API. Like all strings in FFmpeg,</span>
<a name="l00329"></a>00329 <span class="comment"> * metadata is assumed to be UTF-8 encoded Unicode. Note that metadata</span>
<a name="l00330"></a>00330 <span class="comment"> * exported by demuxers isn't checked to be valid UTF-8 in most cases.</span>
<a name="l00331"></a>00331 <span class="comment"> *</span>
<a name="l00332"></a>00332 <span class="comment"> * Important concepts to keep in mind:</span>
<a name="l00333"></a>00333 <span class="comment"> * - Keys are unique; there can never be 2 tags with the same key. This is</span>
<a name="l00334"></a>00334 <span class="comment"> * also meant semantically, i.e., a demuxer should not knowingly produce</span>
<a name="l00335"></a>00335 <span class="comment"> * several keys that are literally different but semantically identical.</span>
<a name="l00336"></a>00336 <span class="comment"> * E.g., key=Author5, key=Author6. In this example, all authors must be</span>
<a name="l00337"></a>00337 <span class="comment"> * placed in the same tag.</span>
<a name="l00338"></a>00338 <span class="comment"> * - Metadata is flat, not hierarchical; there are no subtags. If you</span>
<a name="l00339"></a>00339 <span class="comment"> * want to store, e.g., the email address of the child of producer Alice</span>
<a name="l00340"></a>00340 <span class="comment"> * and actor Bob, that could have key=alice_and_bobs_childs_email_address.</span>
<a name="l00341"></a>00341 <span class="comment"> * - Several modifiers can be applied to the tag name. This is done by</span>
<a name="l00342"></a>00342 <span class="comment"> * appending a dash character ('-') and the modifier name in the order</span>
<a name="l00343"></a>00343 <span class="comment"> * they appear in the list below -- e.g. foo-eng-sort, not foo-sort-eng.</span>
<a name="l00344"></a>00344 <span class="comment"> * - language -- a tag whose value is localized for a particular language</span>
<a name="l00345"></a>00345 <span class="comment"> * is appended with the ISO 639-2/B 3-letter language code.</span>
<a name="l00346"></a>00346 <span class="comment"> * For example: Author-ger=Michael, Author-eng=Mike</span>
<a name="l00347"></a>00347 <span class="comment"> * The original/default language is in the unqualified "Author" tag.</span>
<a name="l00348"></a>00348 <span class="comment"> * A demuxer should set a default if it sets any translated tag.</span>
<a name="l00349"></a>00349 <span class="comment"> * - sorting -- a modified version of a tag that should be used for</span>
<a name="l00350"></a>00350 <span class="comment"> * sorting will have '-sort' appended. E.g. artist="The Beatles",</span>
<a name="l00351"></a>00351 <span class="comment"> * artist-sort="Beatles, The".</span>
<a name="l00352"></a>00352 <span class="comment"> * - Some protocols and demuxers support metadata updates. After a successful</span>
<a name="l00353"></a>00353 <span class="comment"> * call to av_read_packet(), AVFormatContext.event_flags or AVStream.event_flags</span>
<a name="l00354"></a>00354 <span class="comment"> * will be updated to indicate if metadata changed. In order to detect metadata</span>
<a name="l00355"></a>00355 <span class="comment"> * changes on a stream, you need to loop through all streams in the AVFormatContext</span>
<a name="l00356"></a>00356 <span class="comment"> * and check their individual event_flags.</span>
<a name="l00357"></a>00357 <span class="comment"> *</span>
<a name="l00358"></a>00358 <span class="comment"> * - Demuxers attempt to export metadata in a generic format, however tags</span>
<a name="l00359"></a>00359 <span class="comment"> * with no generic equivalents are left as they are stored in the container.</span>
<a name="l00360"></a>00360 <span class="comment"> * Follows a list of generic tag names:</span>
<a name="l00361"></a>00361 <span class="comment"> *</span>
<a name="l00362"></a>00362 <span class="comment"> @verbatim</span>
<a name="l00363"></a>00363 <span class="comment"> album -- name of the set this work belongs to</span>
<a name="l00364"></a>00364 <span class="comment"> album_artist -- main creator of the set/album, if different from artist.</span>
<a name="l00365"></a>00365 <span class="comment"> e.g. "Various Artists" for compilation albums.</span>
<a name="l00366"></a>00366 <span class="comment"> artist -- main creator of the work</span>
<a name="l00367"></a>00367 <span class="comment"> comment -- any additional description of the file.</span>
<a name="l00368"></a>00368 <span class="comment"> composer -- who composed the work, if different from artist.</span>
<a name="l00369"></a>00369 <span class="comment"> copyright -- name of copyright holder.</span>
<a name="l00370"></a>00370 <span class="comment"> creation_time-- date when the file was created, preferably in ISO 8601.</span>
<a name="l00371"></a>00371 <span class="comment"> date -- date when the work was created, preferably in ISO 8601.</span>
<a name="l00372"></a>00372 <span class="comment"> disc -- number of a subset, e.g. disc in a multi-disc collection.</span>
<a name="l00373"></a>00373 <span class="comment"> encoder -- name/settings of the software/hardware that produced the file.</span>
<a name="l00374"></a>00374 <span class="comment"> encoded_by -- person/group who created the file.</span>
<a name="l00375"></a>00375 <span class="comment"> filename -- original name of the file.</span>
<a name="l00376"></a>00376 <span class="comment"> genre -- <self-evident>.</span>
<a name="l00377"></a>00377 <span class="comment"> language -- main language in which the work is performed, preferably</span>
<a name="l00378"></a>00378 <span class="comment"> in ISO 639-2 format. Multiple languages can be specified by</span>
<a name="l00379"></a>00379 <span class="comment"> separating them with commas.</span>
<a name="l00380"></a>00380 <span class="comment"> performer -- artist who performed the work, if different from artist.</span>
<a name="l00381"></a>00381 <span class="comment"> E.g for "Also sprach Zarathustra", artist would be "Richard</span>
<a name="l00382"></a>00382 <span class="comment"> Strauss" and performer "London Philharmonic Orchestra".</span>
<a name="l00383"></a>00383 <span class="comment"> publisher -- name of the label/publisher.</span>
<a name="l00384"></a>00384 <span class="comment"> service_name -- name of the service in broadcasting (channel name).</span>
<a name="l00385"></a>00385 <span class="comment"> service_provider -- name of the service provider in broadcasting.</span>
<a name="l00386"></a>00386 <span class="comment"> title -- name of the work.</span>
<a name="l00387"></a>00387 <span class="comment"> track -- number of this work in the set, can be in form current/total.</span>
<a name="l00388"></a>00388 <span class="comment"> variant_bitrate -- the total bitrate of the bitrate variant that the current stream is part of</span>
<a name="l00389"></a>00389 <span class="comment"> @endverbatim</span>
<a name="l00390"></a>00390 <span class="comment"> *</span>
<a name="l00391"></a>00391 <span class="comment"> * Look in the examples section for an application example how to use the Metadata API.</span>
<a name="l00392"></a>00392 <span class="comment"> *</span>
<a name="l00393"></a>00393 <span class="comment"> * @}</span>
<a name="l00394"></a>00394 <span class="comment"> */</span>
<a name="l00395"></a>00395
<a name="l00396"></a>00396 <span class="comment">/* packet functions */</span>
<a name="l00397"></a>00397
<a name="l00398"></a>00398 <span class="comment"></span>
<a name="l00399"></a>00399 <span class="comment">/**</span>
<a name="l00400"></a>00400 <span class="comment"> * Allocate and read the payload of a packet and initialize its</span>
<a name="l00401"></a>00401 <span class="comment"> * fields with default values.</span>
<a name="l00402"></a>00402 <span class="comment"> *</span>
<a name="l00403"></a>00403 <span class="comment"> * @param s associated IO context</span>
<a name="l00404"></a>00404 <span class="comment"> * @param pkt packet</span>
<a name="l00405"></a>00405 <span class="comment"> * @param size desired payload size</span>
<a name="l00406"></a>00406 <span class="comment"> * @return >0 (read size) if OK, AVERROR_xxx otherwise</span>
<a name="l00407"></a>00407 <span class="comment"> */</span>
<a name="l00408"></a>00408 <span class="keywordtype">int</span> <a class="code" href="avformat_8h.html#a9d2e6f22150d98c36dcc2c6c49318019" title="Allocate and read the payload of a packet and initialize its fields with default values.">av_get_packet</a>(<a class="code" href="structAVIOContext.html" title="Bytestream IO Context.">AVIOContext</a> *s, <a class="code" href="structAVPacket.html" title="This structure stores compressed data.">AVPacket</a> *<a class="code" href="demuxing__decoding_8c.html#a3d4c6562f0b27cf0cacbbea5c038c090">pkt</a>, <span class="keywordtype">int</span> size);
<a name="l00409"></a>00409
<a name="l00410"></a>00410 <span class="comment"></span>
<a name="l00411"></a>00411 <span class="comment">/**</span>
<a name="l00412"></a>00412 <span class="comment"> * Read data and append it to the current content of the AVPacket.</span>
<a name="l00413"></a>00413 <span class="comment"> * If pkt->size is 0 this is identical to av_get_packet.</span>
<a name="l00414"></a>00414 <span class="comment"> * Note that this uses av_grow_packet and thus involves a realloc</span>
<a name="l00415"></a>00415 <span class="comment"> * which is inefficient. Thus this function should only be used</span>
<a name="l00416"></a>00416 <span class="comment"> * when there is no reasonable way to know (an upper bound of)</span>
<a name="l00417"></a>00417 <span class="comment"> * the final size.</span>
<a name="l00418"></a>00418 <span class="comment"> *</span>
<a name="l00419"></a>00419 <span class="comment"> * @param s associated IO context</span>
<a name="l00420"></a>00420 <span class="comment"> * @param pkt packet</span>
<a name="l00421"></a>00421 <span class="comment"> * @param size amount of data to read</span>
<a name="l00422"></a>00422 <span class="comment"> * @return >0 (read size) if OK, AVERROR_xxx otherwise, previous data</span>
<a name="l00423"></a>00423 <span class="comment"> * will not be lost even if an error occurs.</span>
<a name="l00424"></a>00424 <span class="comment"> */</span>
<a name="l00425"></a>00425 <span class="keywordtype">int</span> <a class="code" href="avformat_8h.html#a0e991213ccc3d642972b57a1decb797b" title="Read data and append it to the current content of the AVPacket.">av_append_packet</a>(<a class="code" href="structAVIOContext.html" title="Bytestream IO Context.">AVIOContext</a> *s, <a class="code" href="structAVPacket.html" title="This structure stores compressed data.">AVPacket</a> *<a class="code" href="demuxing__decoding_8c.html#a3d4c6562f0b27cf0cacbbea5c038c090">pkt</a>, <span class="keywordtype">int</span> size);
<a name="l00426"></a>00426
<a name="l00427"></a>00427 <span class="preprocessor">#if FF_API_LAVF_FRAC</span>
<a name="l00428"></a>00428 <span class="preprocessor"></span><span class="comment">/*************************************************/</span>
<a name="l00429"></a>00429 <span class="comment">/* fractional numbers for exact pts handling */</span>
<a name="l00430"></a>00430 <span class="comment"></span>
<a name="l00431"></a>00431 <span class="comment">/**</span>
<a name="l00432"></a>00432 <span class="comment"> * The exact value of the fractional number is: 'val + num / den'.</span>
<a name="l00433"></a>00433 <span class="comment"> * num is assumed to be 0 <= num < den.</span>
<a name="l00434"></a>00434 <span class="comment"> */</span>
<a name="l00435"></a>00435 <span class="keyword">typedef</span> <span class="keyword">struct </span>AVFrac {
<a name="l00436"></a>00436 int64_t val, num, den;
<a name="l00437"></a>00437 } AVFrac;
<a name="l00438"></a>00438 <span class="preprocessor">#endif</span>
<a name="l00439"></a>00439 <span class="preprocessor"></span>
<a name="l00440"></a>00440 <span class="comment">/*************************************************/</span>
<a name="l00441"></a>00441 <span class="comment">/* input/output formats */</span>
<a name="l00442"></a>00442
<a name="l00443"></a>00443 <span class="keyword">struct </span>AVCodecTag;
<a name="l00444"></a>00444 <span class="comment"></span>
<a name="l00445"></a>00445 <span class="comment">/**</span>
<a name="l00446"></a>00446 <span class="comment"> * This structure contains the data a format has to probe a file.</span>
<a name="l00447"></a>00447 <span class="comment"> */</span>
<a name="l00448"></a><a class="code" href="structAVProbeData.html">00448</a> <span class="keyword">typedef</span> <span class="keyword">struct </span><a class="code" href="structAVProbeData.html" title="This structure contains the data a format has to probe a file.">AVProbeData</a> {
<a name="l00449"></a><a class="code" href="structAVProbeData.html#a0e8504127aff8af25cc9f3c6400b9651">00449</a> <span class="keyword">const</span> <span class="keywordtype">char</span> *<a class="code" href="structAVProbeData.html#a0e8504127aff8af25cc9f3c6400b9651">filename</a>;
<a name="l00450"></a><a class="code" href="structAVProbeData.html#a814cca49dda3f578ebb32d4b2f74368a">00450</a> <span class="keywordtype">unsigned</span> <span class="keywordtype">char</span> *<a class="code" href="structAVProbeData.html#a814cca49dda3f578ebb32d4b2f74368a" title="Buffer must have AVPROBE_PADDING_SIZE of extra allocated bytes filled with zero.">buf</a>; <span class="comment">/**< Buffer must have AVPROBE_PADDING_SIZE of extra allocated bytes filled with zero. */</span>
<a name="l00451"></a><a class="code" href="structAVProbeData.html#a30309e4de25c1a411c635eab767e1e53">00451</a> <span class="keywordtype">int</span> <a class="code" href="structAVProbeData.html#a30309e4de25c1a411c635eab767e1e53" title="Size of buf except extra allocated bytes.">buf_size</a>; <span class="comment">/**< Size of buf except extra allocated bytes */</span>
<a name="l00452"></a><a class="code" href="structAVProbeData.html#a20533bdafa6230d2ef8392cb7cb38382">00452</a> <span class="keyword">const</span> <span class="keywordtype">char</span> *<a class="code" href="structAVProbeData.html#a20533bdafa6230d2ef8392cb7cb38382" title="mime_type, when known.">mime_type</a>; <span class="comment">/**< mime_type, when known. */</span>
<a name="l00453"></a>00453 } <a class="code" href="structAVProbeData.html" title="This structure contains the data a format has to probe a file.">AVProbeData</a>;
<a name="l00454"></a>00454
<a name="l00455"></a><a class="code" href="avformat_8h.html#adeacd8263046043734062588db39bce9">00455</a> <span class="preprocessor">#define AVPROBE_SCORE_RETRY (AVPROBE_SCORE_MAX/4)</span>
<a name="l00456"></a><a class="code" href="avformat_8h.html#a1b33e0f3734db4299d5aff4b78f98c43">00456</a> <span class="preprocessor"></span><span class="preprocessor">#define AVPROBE_SCORE_STREAM_RETRY (AVPROBE_SCORE_MAX/4-1)</span>
<a name="l00457"></a>00457 <span class="preprocessor"></span>
<a name="l00458"></a><a class="code" href="avformat_8h.html#a8fef570c1a6f9c445acaf97fa2da3b7e">00458</a> <span class="preprocessor">#define AVPROBE_SCORE_EXTENSION 50 ///< score for file extension</span>
<a name="l00459"></a><a class="code" href="avformat_8h.html#a09af1c3eb8b432e16f1594f57d899aef">00459</a> <span class="preprocessor"></span><span class="preprocessor">#define AVPROBE_SCORE_MIME 75 ///< score for file mime type</span>
<a name="l00460"></a><a class="code" href="avformat_8h.html#a24925a4d1138c3f17a7a27dd45c08920">00460</a> <span class="preprocessor"></span><span class="preprocessor">#define AVPROBE_SCORE_MAX 100 ///< maximum score</span>
<a name="l00461"></a>00461 <span class="preprocessor"></span>
<a name="l00462"></a><a class="code" href="avformat_8h.html#a2cba242c83a06fff914d1c8ef4cd42ac">00462</a> <span class="preprocessor">#define AVPROBE_PADDING_SIZE 32 ///< extra allocated bytes at the end of the probe buffer</span>
<a name="l00463"></a>00463 <span class="preprocessor"></span><span class="comment"></span>
<a name="l00464"></a>00464 <span class="comment">/// Demuxer will use avio_open, no opened file should be provided by the caller.</span>
<a name="l00465"></a><a class="code" href="avformat_8h.html#a752cce390d480521919aa5d8be24ac0b">00465</a> <span class="comment"></span><span class="preprocessor">#define AVFMT_NOFILE 0x0001</span>
<a name="l00466"></a><a class="code" href="avformat_8h.html#af7899d15bd762258202bdec2035d8fc8">00466</a> <span class="preprocessor"></span><span class="preprocessor">#define AVFMT_NEEDNUMBER 0x0002 </span><span class="comment">/**< Needs '%d' in filename. */</span>
<a name="l00467"></a><a class="code" href="avformat_8h.html#a90e4cbd1011b989cd7db628d2eca2675">00467</a> <span class="preprocessor">#define AVFMT_SHOW_IDS 0x0008 </span><span class="comment">/**< Show format stream IDs numbers. */</span>
<a name="l00468"></a><a class="code" href="avformat_8h.html#a71f4268e7674596c14c18b4bb3e60a3e">00468</a> <span class="preprocessor">#define AVFMT_RAWPICTURE 0x0020 </span><span class="comment">/**< Format wants AVPicture structure for</span>
<a name="l00469"></a>00469 <span class="comment"> raw picture data. */</span>
<a name="l00470"></a><a class="code" href="avformat_8h.html#ab203c7b734e9c31b7c37d34f6e2c6aef">00470</a> <span class="preprocessor">#define AVFMT_GLOBALHEADER 0x0040 </span><span class="comment">/**< Format wants global header. */</span>
<a name="l00471"></a><a class="code" href="avformat_8h.html#ae4418d32b17890be22da9c5f95087168">00471</a> <span class="preprocessor">#define AVFMT_NOTIMESTAMPS 0x0080 </span><span class="comment">/**< Format does not need / have any timestamps. */</span>
<a name="l00472"></a><a class="code" href="avformat_8h.html#ad2bd0ecdd51061b300e2ab490907bb09">00472</a> <span class="preprocessor">#define AVFMT_GENERIC_INDEX 0x0100 </span><span class="comment">/**< Use generic index building code. */</span>
<a name="l00473"></a><a class="code" href="avformat_8h.html#a4d232408e799fa2b2f2705a3e8e0b4b8">00473</a> <span class="preprocessor">#define AVFMT_TS_DISCONT 0x0200 </span><span class="comment">/**< Format allows timestamp discontinuities. Note, muxers always require valid (monotone) timestamps */</span>
<a name="l00474"></a><a class="code" href="avformat_8h.html#a4d9f21e76a3bf919c74ea40957ef21a7">00474</a> <span class="preprocessor">#define AVFMT_VARIABLE_FPS 0x0400 </span><span class="comment">/**< Format allows variable fps. */</span>
<a name="l00475"></a><a class="code" href="avformat_8h.html#a21abb57f90931c92c853e696cc1c358c">00475</a> <span class="preprocessor">#define AVFMT_NODIMENSIONS 0x0800 </span><span class="comment">/**< Format does not need width/height */</span>
<a name="l00476"></a><a class="code" href="avformat_8h.html#a1500ed92d07addf13d1e9dfd0fff6672">00476</a> <span class="preprocessor">#define AVFMT_NOSTREAMS 0x1000 </span><span class="comment">/**< Format does not require any streams */</span>
<a name="l00477"></a><a class="code" href="avformat_8h.html#a8f47c7c3b5763fc7199f41741d759a70">00477</a> <span class="preprocessor">#define AVFMT_NOBINSEARCH 0x2000 </span><span class="comment">/**< Format does not allow to fall back on binary search via read_timestamp */</span>
<a name="l00478"></a><a class="code" href="avformat_8h.html#a860dc077e9c782de0d49a2d4d968b64a">00478</a> <span class="preprocessor">#define AVFMT_NOGENSEARCH 0x4000 </span><span class="comment">/**< Format does not allow to fall back on generic search */</span>
<a name="l00479"></a><a class="code" href="avformat_8h.html#a6286e2977286a22b622cb51cf4106541">00479</a> <span class="preprocessor">#define AVFMT_NO_BYTE_SEEK 0x8000 </span><span class="comment">/**< Format does not allow seeking by bytes */</span>
<a name="l00480"></a><a class="code" href="avformat_8h.html#a3b9a2012b993edb9e2ba3db6d55db1ae">00480</a> <span class="preprocessor">#define AVFMT_ALLOW_FLUSH 0x10000 </span><span class="comment">/**< Format allows flushing. If not set, the muxer will not receive a NULL packet in the write_packet function. */</span>
<a name="l00481"></a>00481 <span class="preprocessor">#if LIBAVFORMAT_VERSION_MAJOR <= 54</span>
<a name="l00482"></a><a class="code" href="avformat_8h.html#a918dc7abf0d4f7abd36a2ea2a594feaf">00482</a> <span class="preprocessor"></span><span class="preprocessor">#define AVFMT_TS_NONSTRICT 0x8020000 //we try to be compatible to the ABIs of ffmpeg and major forks</span>
<a name="l00483"></a>00483 <span class="preprocessor"></span><span class="preprocessor">#else</span>
<a name="l00484"></a>00484 <span class="preprocessor"></span><span class="preprocessor">#define AVFMT_TS_NONSTRICT 0x20000</span>
<a name="l00485"></a>00485 <span class="preprocessor"></span><span class="preprocessor">#endif</span>
<a name="l00486"></a>00486 <span class="preprocessor"></span><span class="comment"> /**< Format does not require strictly</span>
<a name="l00487"></a>00487 <span class="comment"> increasing timestamps, but they must</span>
<a name="l00488"></a>00488 <span class="comment"> still be monotonic */</span>
<a name="l00489"></a><a class="code" href="avformat_8h.html#a886476ebe41f52a2232ee10f97ac11d0">00489</a> <span class="preprocessor">#define AVFMT_TS_NEGATIVE 0x40000 </span><span class="comment">/**< Format allows muxing negative</span>
<a name="l00490"></a>00490 <span class="comment"> timestamps. If not set the timestamp</span>
<a name="l00491"></a>00491 <span class="comment"> will be shifted in av_write_frame and</span>
<a name="l00492"></a>00492 <span class="comment"> av_interleaved_write_frame so they</span>
<a name="l00493"></a>00493 <span class="comment"> start from 0.</span>
<a name="l00494"></a>00494 <span class="comment"> The user or muxer can override this through</span>
<a name="l00495"></a>00495 <span class="comment"> AVFormatContext.avoid_negative_ts</span>
<a name="l00496"></a>00496 <span class="comment"> */</span>
<a name="l00497"></a>00497
<a name="l00498"></a><a class="code" href="avformat_8h.html#ab87b74d5eff79c28e7756f893d57c4d7">00498</a> <span class="preprocessor">#define AVFMT_SEEK_TO_PTS 0x4000000 </span><span class="comment">/**< Seeking is based on PTS */</span>
<a name="l00499"></a>00499 <span class="comment"></span>
<a name="l00500"></a>00500 <span class="comment">/**</span>
<a name="l00501"></a>00501 <span class="comment"> * @addtogroup lavf_encoding</span>
<a name="l00502"></a>00502 <span class="comment"> * @{</span>
<a name="l00503"></a>00503 <span class="comment"> */</span>
<a name="l00504"></a><a class="code" href="structAVOutputFormat.html">00504</a> <span class="keyword">typedef</span> <span class="keyword">struct </span><a class="code" href="structAVOutputFormat.html">AVOutputFormat</a> {
<a name="l00505"></a><a class="code" href="structAVOutputFormat.html#ac3abc5f47f3465b6b7eec89c9476351c">00505</a> <span class="keyword">const</span> <span class="keywordtype">char</span> *<a class="code" href="structAVOutputFormat.html#ac3abc5f47f3465b6b7eec89c9476351c">name</a>;<span class="comment"></span>
<a name="l00506"></a>00506 <span class="comment"> /**</span>
<a name="l00507"></a>00507 <span class="comment"> * Descriptive name for the format, meant to be more human-readable</span>
<a name="l00508"></a>00508 <span class="comment"> * than name. You should use the NULL_IF_CONFIG_SMALL() macro</span>
<a name="l00509"></a>00509 <span class="comment"> * to define it.</span>
<a name="l00510"></a>00510 <span class="comment"> */</span>
<a name="l00511"></a><a class="code" href="structAVOutputFormat.html#a4ff98d90aac0047a204a35a758a363fc">00511</a> <span class="keyword">const</span> <span class="keywordtype">char</span> *<a class="code" href="structAVOutputFormat.html#a4ff98d90aac0047a204a35a758a363fc" title="Descriptive name for the format, meant to be more human-readable than name.">long_name</a>;
<a name="l00512"></a><a class="code" href="structAVOutputFormat.html#ad94e0c8bd362cb9ffbfc44514481fc75">00512</a> <span class="keyword">const</span> <span class="keywordtype">char</span> *<a class="code" href="structAVOutputFormat.html#ad94e0c8bd362cb9ffbfc44514481fc75">mime_type</a>;
<a name="l00513"></a><a class="code" href="structAVOutputFormat.html#a10f19abe463890063659723c90c15335">00513</a> <span class="keyword">const</span> <span class="keywordtype">char</span> *<a class="code" href="structAVOutputFormat.html#a10f19abe463890063659723c90c15335" title="comma-separated filename extensions">extensions</a>; <span class="comment">/**< comma-separated filename extensions */</span>
<a name="l00514"></a>00514 <span class="comment">/* output support */</span>
<a name="l00515"></a><a class="code" href="structAVOutputFormat.html#a2e4fff0aa061984d586ea08ecad96141">00515</a> <span class="keyword">enum</span> <a class="code" href="group__lavc__core.html#gaadca229ad2c20e060a14fec08a5cc7ce" title="Identify the syntax and semantics of the bitstream.">AVCodecID</a> <a class="code" href="structAVOutputFormat.html#a2e4fff0aa061984d586ea08ecad96141" title="default audio codec">audio_codec</a>; <span class="comment">/**< default audio codec */</span>
<a name="l00516"></a><a class="code" href="structAVOutputFormat.html#a1354a9c8542b1b698157218336bd4754">00516</a> <span class="keyword">enum</span> <a class="code" href="group__lavc__core.html#gaadca229ad2c20e060a14fec08a5cc7ce" title="Identify the syntax and semantics of the bitstream.">AVCodecID</a> <a class="code" href="structAVOutputFormat.html#a1354a9c8542b1b698157218336bd4754" title="default video codec">video_codec</a>; <span class="comment">/**< default video codec */</span>
<a name="l00517"></a><a class="code" href="structAVOutputFormat.html#adc8b4d7a5f6610e1816dd522e362217c">00517</a> <span class="keyword">enum</span> <a class="code" href="group__lavc__core.html#gaadca229ad2c20e060a14fec08a5cc7ce" title="Identify the syntax and semantics of the bitstream.">AVCodecID</a> <a class="code" href="structAVOutputFormat.html#adc8b4d7a5f6610e1816dd522e362217c" title="default subtitle codec">subtitle_codec</a>; <span class="comment">/**< default subtitle codec */</span><span class="comment"></span>
<a name="l00518"></a>00518 <span class="comment"> /**</span>
<a name="l00519"></a>00519 <span class="comment"> * can use flags: AVFMT_NOFILE, AVFMT_NEEDNUMBER, AVFMT_RAWPICTURE,</span>
<a name="l00520"></a>00520 <span class="comment"> * AVFMT_GLOBALHEADER, AVFMT_NOTIMESTAMPS, AVFMT_VARIABLE_FPS,</span>
<a name="l00521"></a>00521 <span class="comment"> * AVFMT_NODIMENSIONS, AVFMT_NOSTREAMS, AVFMT_ALLOW_FLUSH,</span>
<a name="l00522"></a>00522 <span class="comment"> * AVFMT_TS_NONSTRICT</span>
<a name="l00523"></a>00523 <span class="comment"> */</span>
<a name="l00524"></a><a class="code" href="structAVOutputFormat.html#aad55a00e728a020c1dcfaaf695320445">00524</a> <span class="keywordtype">int</span> <a class="code" href="structAVOutputFormat.html#aad55a00e728a020c1dcfaaf695320445" title="can use flags: AVFMT_NOFILE, AVFMT_NEEDNUMBER, AVFMT_RAWPICTURE, AVFMT_GLOBALHEADER, AVFMT_NOTIMESTAMPS, AVFMT_VARIABLE_FPS, AVFMT_NODIMENSIONS, AVFMT_NOSTREAMS, AVFMT_ALLOW_FLUSH, AVFMT_TS_NONSTRICT">flags</a>;
<a name="l00525"></a>00525 <span class="comment"></span>
<a name="l00526"></a>00526 <span class="comment"> /**</span>
<a name="l00527"></a>00527 <span class="comment"> * List of supported codec_id-codec_tag pairs, ordered by "better</span>
<a name="l00528"></a>00528 <span class="comment"> * choice first". The arrays are all terminated by AV_CODEC_ID_NONE.</span>
<a name="l00529"></a>00529 <span class="comment"> */</span>
<a name="l00530"></a><a class="code" href="structAVOutputFormat.html#a33e7849a546c0f549bc9409704923d71">00530</a> <span class="keyword">const</span> <span class="keyword">struct </span>AVCodecTag * <span class="keyword">const</span> *<a class="code" href="structAVOutputFormat.html#a33e7849a546c0f549bc9409704923d71" title="List of supported codec_id-codec_tag pairs, ordered by "better choice first".">codec_tag</a>;
<a name="l00531"></a>00531
<a name="l00532"></a>00532
<a name="l00533"></a><a class="code" href="structAVOutputFormat.html#ae030463c5c08de99f8c9e727c822ca87">00533</a> <span class="keyword">const</span> <a class="code" href="structAVClass.html" title="Describe the class of an AVClass context structure.">AVClass</a> *<a class="code" href="structAVOutputFormat.html#ae030463c5c08de99f8c9e727c822ca87" title="AVClass for the private context.">priv_class</a>; <span class="comment">///< AVClass for the private context</span>
<a name="l00534"></a>00534 <span class="comment"></span>
<a name="l00535"></a>00535 <span class="comment">/*****************************************************************</span>
<a name="l00536"></a>00536 <span class="comment"> * No fields below this line are part of the public API. They</span>
<a name="l00537"></a>00537 <span class="comment"> * may not be used outside of libavformat and can be changed and</span>
<a name="l00538"></a>00538 <span class="comment"> * removed at will.</span>
<a name="l00539"></a>00539 <span class="comment"> * New public fields should be added right above.</span>
<a name="l00540"></a>00540 <span class="comment"> *****************************************************************</span>
<a name="l00541"></a>00541 <span class="comment"> */</span>
<a name="l00542"></a><a class="code" href="structAVOutputFormat.html#a381830276f0c71583a0ca014fcd2fc97">00542</a> <span class="keyword">struct </span><a class="code" href="structAVOutputFormat.html">AVOutputFormat</a> *<a class="code" href="structAVOutputFormat.html#a381830276f0c71583a0ca014fcd2fc97">next</a>;<span class="comment"></span>
<a name="l00543"></a>00543 <span class="comment"> /**</span>
<a name="l00544"></a>00544 <span class="comment"> * size of private data so that it can be allocated in the wrapper</span>
<a name="l00545"></a>00545 <span class="comment"> */</span>
<a name="l00546"></a><a class="code" href="structAVOutputFormat.html#ad7677ef35d272b2dad5498c51b4d2204">00546</a> <span class="keywordtype">int</span> <a class="code" href="structAVOutputFormat.html#ad7677ef35d272b2dad5498c51b4d2204" title="size of private data so that it can be allocated in the wrapper">priv_data_size</a>;
<a name="l00547"></a>00547
<a name="l00548"></a><a class="code" href="structAVOutputFormat.html#ad2cc65976a2a892d68ce8d9baabde926">00548</a> int (*<a class="code" href="structAVOutputFormat.html#ad2cc65976a2a892d68ce8d9baabde926">write_header</a>)(<span class="keyword">struct </span><a class="code" href="structAVFormatContext.html" title="Format I/O context.">AVFormatContext</a> *);<span class="comment"></span>
<a name="l00549"></a>00549 <span class="comment"> /**</span>
<a name="l00550"></a>00550 <span class="comment"> * Write a packet. If AVFMT_ALLOW_FLUSH is set in flags,</span>
<a name="l00551"></a>00551 <span class="comment"> * pkt can be NULL in order to flush data buffered in the muxer.</span>
<a name="l00552"></a>00552 <span class="comment"> * When flushing, return 0 if there still is more data to flush,</span>
<a name="l00553"></a>00553 <span class="comment"> * or 1 if everything was flushed and there is no more buffered</span>
<a name="l00554"></a>00554 <span class="comment"> * data.</span>
<a name="l00555"></a>00555 <span class="comment"> */</span>
<a name="l00556"></a><a class="code" href="structAVOutputFormat.html#a45acfafceda2496ff21c13368c438f35">00556</a> int (*<a class="code" href="structAVOutputFormat.html#a45acfafceda2496ff21c13368c438f35" title="Write a packet.">write_packet</a>)(<span class="keyword">struct </span><a class="code" href="structAVFormatContext.html" title="Format I/O context.">AVFormatContext</a> *, <a class="code" href="structAVPacket.html" title="This structure stores compressed data.">AVPacket</a> *<a class="code" href="demuxing__decoding_8c.html#a3d4c6562f0b27cf0cacbbea5c038c090">pkt</a>);
<a name="l00557"></a><a class="code" href="structAVOutputFormat.html#ae9e86cc0d8b2027301795e9744333ba0">00557</a> int (*<a class="code" href="structAVOutputFormat.html#ae9e86cc0d8b2027301795e9744333ba0">write_trailer</a>)(<span class="keyword">struct </span><a class="code" href="structAVFormatContext.html" title="Format I/O context.">AVFormatContext</a> *);<span class="comment"></span>
<a name="l00558"></a>00558 <span class="comment"> /**</span>
<a name="l00559"></a>00559 <span class="comment"> * Currently only used to set pixel format if not YUV420P.</span>
<a name="l00560"></a>00560 <span class="comment"> */</span>
<a name="l00561"></a><a class="code" href="structAVOutputFormat.html#adef5cf80d7258206bbd59189c407cf70">00561</a> int (*<a class="code" href="structAVOutputFormat.html#adef5cf80d7258206bbd59189c407cf70" title="Currently only used to set pixel format if not YUV420P.">interleave_packet</a>)(<span class="keyword">struct </span><a class="code" href="structAVFormatContext.html" title="Format I/O context.">AVFormatContext</a> *, <a class="code" href="structAVPacket.html" title="This structure stores compressed data.">AVPacket</a> *out,
<a name="l00562"></a>00562 <a class="code" href="structAVPacket.html" title="This structure stores compressed data.">AVPacket</a> *in, <span class="keywordtype">int</span> flush);<span class="comment"></span>
<a name="l00563"></a>00563 <span class="comment"> /**</span>
<a name="l00564"></a>00564 <span class="comment"> * Test if the given codec can be stored in this container.</span>
<a name="l00565"></a>00565 <span class="comment"> *</span>
<a name="l00566"></a>00566 <span class="comment"> * @return 1 if the codec is supported, 0 if it is not.</span>
<a name="l00567"></a>00567 <span class="comment"> * A negative number if unknown.</span>
<a name="l00568"></a>00568 <span class="comment"> * MKTAG('A', 'P', 'I', 'C') if the codec is only supported as AV_DISPOSITION_ATTACHED_PIC</span>
<a name="l00569"></a>00569 <span class="comment"> */</span>
<a name="l00570"></a><a class="code" href="structAVOutputFormat.html#a3c3b6914ae0dd07a0731d251c834d19a">00570</a> int (*<a class="code" href="structAVOutputFormat.html#a3c3b6914ae0dd07a0731d251c834d19a" title="Test if the given codec can be stored in this container.">query_codec</a>)(<span class="keyword">enum</span> <a class="code" href="group__lavc__core.html#gaadca229ad2c20e060a14fec08a5cc7ce" title="Identify the syntax and semantics of the bitstream.">AVCodecID</a> id, <span class="keywordtype">int</span> std_compliance);
<a name="l00571"></a>00571
<a name="l00572"></a><a class="code" href="structAVOutputFormat.html#a5c340d0304129ccf6da0b4c827b31d21">00572</a> void (*<a class="code" href="structAVOutputFormat.html#a5c340d0304129ccf6da0b4c827b31d21">get_output_timestamp</a>)(<span class="keyword">struct </span><a class="code" href="structAVFormatContext.html" title="Format I/O context.">AVFormatContext</a> *s, <span class="keywordtype">int</span> stream,
<a name="l00573"></a>00573 int64_t *dts, int64_t *wall);<span class="comment"></span>
<a name="l00574"></a>00574 <span class="comment"> /**</span>
<a name="l00575"></a>00575 <span class="comment"> * Allows sending messages from application to device.</span>
<a name="l00576"></a>00576 <span class="comment"> */</span>
<a name="l00577"></a><a class="code" href="structAVOutputFormat.html#aa3004e211ffb58a0a94d2ab7ab512821">00577</a> int (*<a class="code" href="structAVOutputFormat.html#aa3004e211ffb58a0a94d2ab7ab512821" title="Allows sending messages from application to device.">control_message</a>)(<span class="keyword">struct </span><a class="code" href="structAVFormatContext.html" title="Format I/O context.">AVFormatContext</a> *s, <span class="keywordtype">int</span> type,
<a name="l00578"></a>00578 <span class="keywordtype">void</span> *data, <span class="keywordtype">size_t</span> data_size);
<a name="l00579"></a>00579 <span class="comment"></span>
<a name="l00580"></a>00580 <span class="comment"> /**</span>
<a name="l00581"></a>00581 <span class="comment"> * Write an uncoded AVFrame.</span>
<a name="l00582"></a>00582 <span class="comment"> *</span>
<a name="l00583"></a>00583 <span class="comment"> * See av_write_uncoded_frame() for details.</span>
<a name="l00584"></a>00584 <span class="comment"> *</span>
<a name="l00585"></a>00585 <span class="comment"> * The library will free *frame afterwards, but the muxer can prevent it</span>
<a name="l00586"></a>00586 <span class="comment"> * by setting the pointer to NULL.</span>
<a name="l00587"></a>00587 <span class="comment"> */</span>
<a name="l00588"></a><a class="code" href="structAVOutputFormat.html#a833efe36d6bf37af597b2af5f9dd51a8">00588</a> int (*<a class="code" href="structAVOutputFormat.html#a833efe36d6bf37af597b2af5f9dd51a8" title="Write an uncoded AVFrame.">write_uncoded_frame</a>)(<span class="keyword">struct </span><a class="code" href="structAVFormatContext.html" title="Format I/O context.">AVFormatContext</a> *, <span class="keywordtype">int</span> stream_index,
<a name="l00589"></a>00589 <a class="code" href="structAVFrame.html" title="This structure describes decoded (raw) audio or video data.">AVFrame</a> **<a class="code" href="demuxing__decoding_8c.html#ad7d33d579a8d4241a5e643e39287a209">frame</a>, <span class="keywordtype">unsigned</span> <a class="code" href="structAVOutputFormat.html#aad55a00e728a020c1dcfaaf695320445" title="can use flags: AVFMT_NOFILE, AVFMT_NEEDNUMBER, AVFMT_RAWPICTURE, AVFMT_GLOBALHEADER, AVFMT_NOTIMESTAMPS, AVFMT_VARIABLE_FPS, AVFMT_NODIMENSIONS, AVFMT_NOSTREAMS, AVFMT_ALLOW_FLUSH, AVFMT_TS_NONSTRICT">flags</a>);<span class="comment"></span>
<a name="l00590"></a>00590 <span class="comment"> /**</span>
<a name="l00591"></a>00591 <span class="comment"> * Returns device list with it properties.</span>
<a name="l00592"></a>00592 <span class="comment"> * @see avdevice_list_devices() for more details.</span>
<a name="l00593"></a>00593 <span class="comment"> */</span>
<a name="l00594"></a><a class="code" href="structAVOutputFormat.html#a41ad9b9ab41c2b6004fa36976c894ab9">00594</a> int (*<a class="code" href="structAVOutputFormat.html#a41ad9b9ab41c2b6004fa36976c894ab9" title="Returns device list with it properties.">get_device_list</a>)(<span class="keyword">struct </span><a class="code" href="structAVFormatContext.html" title="Format I/O context.">AVFormatContext</a> *s, <span class="keyword">struct </span><a class="code" href="structAVDeviceInfoList.html" title="List of devices.">AVDeviceInfoList</a> *device_list);<span class="comment"></span>
<a name="l00595"></a>00595 <span class="comment"> /**</span>
<a name="l00596"></a>00596 <span class="comment"> * Initialize device capabilities submodule.</span>
<a name="l00597"></a>00597 <span class="comment"> * @see avdevice_capabilities_create() for more details.</span>
<a name="l00598"></a>00598 <span class="comment"> */</span>
<a name="l00599"></a><a class="code" href="structAVOutputFormat.html#a1adba301a96724239af155f4d7e3cd9a">00599</a> int (*<a class="code" href="structAVOutputFormat.html#a1adba301a96724239af155f4d7e3cd9a" title="Initialize device capabilities submodule.">create_device_capabilities</a>)(<span class="keyword">struct </span><a class="code" href="structAVFormatContext.html" title="Format I/O context.">AVFormatContext</a> *s, <span class="keyword">struct </span><a class="code" href="structAVDeviceCapabilitiesQuery.html" title="Following API allows user to probe device capabilities (supported codecs, pixel formats, sample formats, resolutions, channel counts, etc).">AVDeviceCapabilitiesQuery</a> *caps);<span class="comment"></span>
<a name="l00600"></a>00600 <span class="comment"> /**</span>
<a name="l00601"></a>00601 <span class="comment"> * Free device capabilities submodule.</span>
<a name="l00602"></a>00602 <span class="comment"> * @see avdevice_capabilities_free() for more details.</span>
<a name="l00603"></a>00603 <span class="comment"> */</span>
<a name="l00604"></a><a class="code" href="structAVOutputFormat.html#aa896421290601089b659ab2abd39f088">00604</a> int (*<a class="code" href="structAVOutputFormat.html#aa896421290601089b659ab2abd39f088" title="Free device capabilities submodule.">free_device_capabilities</a>)(<span class="keyword">struct </span><a class="code" href="structAVFormatContext.html" title="Format I/O context.">AVFormatContext</a> *s, <span class="keyword">struct </span><a class="code" href="structAVDeviceCapabilitiesQuery.html" title="Following API allows user to probe device capabilities (supported codecs, pixel formats, sample formats, resolutions, channel counts, etc).">AVDeviceCapabilitiesQuery</a> *caps);
<a name="l00605"></a><a class="code" href="structAVOutputFormat.html#ac4c06882481a62fd0de7396909b02796">00605</a> <span class="keyword">enum</span> <a class="code" href="group__lavc__core.html#gaadca229ad2c20e060a14fec08a5cc7ce" title="Identify the syntax and semantics of the bitstream.">AVCodecID</a> <a class="code" href="structAVOutputFormat.html#ac4c06882481a62fd0de7396909b02796" title="default data codec">data_codec</a>; <span class="comment">/**< default data codec */</span>
<a name="l00606"></a>00606 } <a class="code" href="structAVOutputFormat.html">AVOutputFormat</a>;<span class="comment"></span>
<a name="l00607"></a>00607 <span class="comment">/**</span>
<a name="l00608"></a>00608 <span class="comment"> * @}</span>
<a name="l00609"></a>00609 <span class="comment"> */</span>
<a name="l00610"></a>00610 <span class="comment"></span>
<a name="l00611"></a>00611 <span class="comment">/**</span>
<a name="l00612"></a>00612 <span class="comment"> * @addtogroup lavf_decoding</span>
<a name="l00613"></a>00613 <span class="comment"> * @{</span>
<a name="l00614"></a>00614 <span class="comment"> */</span>
<a name="l00615"></a><a class="code" href="structAVInputFormat.html">00615</a> <span class="keyword">typedef</span> <span class="keyword">struct </span><a class="code" href="structAVInputFormat.html">AVInputFormat</a> {<span class="comment"></span>
<a name="l00616"></a>00616 <span class="comment"> /**</span>
<a name="l00617"></a>00617 <span class="comment"> * A comma separated list of short names for the format. New names</span>
<a name="l00618"></a>00618 <span class="comment"> * may be appended with a minor bump.</span>
<a name="l00619"></a>00619 <span class="comment"> */</span>
<a name="l00620"></a><a class="code" href="structAVInputFormat.html#a850db3eb225e22b64f3304d72134ca0c">00620</a> <span class="keyword">const</span> <span class="keywordtype">char</span> *<a class="code" href="structAVInputFormat.html#a850db3eb225e22b64f3304d72134ca0c" title="A comma separated list of short names for the format.">name</a>;
<a name="l00621"></a>00621 <span class="comment"></span>
<a name="l00622"></a>00622 <span class="comment"> /**</span>
<a name="l00623"></a>00623 <span class="comment"> * Descriptive name for the format, meant to be more human-readable</span>
<a name="l00624"></a>00624 <span class="comment"> * than name. You should use the NULL_IF_CONFIG_SMALL() macro</span>
<a name="l00625"></a>00625 <span class="comment"> * to define it.</span>
<a name="l00626"></a>00626 <span class="comment"> */</span>
<a name="l00627"></a><a class="code" href="structAVInputFormat.html#a1f67064a527941944017f1dfe65d3aa9">00627</a> <span class="keyword">const</span> <span class="keywordtype">char</span> *<a class="code" href="structAVInputFormat.html#a1f67064a527941944017f1dfe65d3aa9" title="Descriptive name for the format, meant to be more human-readable than name.">long_name</a>;
<a name="l00628"></a>00628 <span class="comment"></span>
<a name="l00629"></a>00629 <span class="comment"> /**</span>
<a name="l00630"></a>00630 <span class="comment"> * Can use flags: AVFMT_NOFILE, AVFMT_NEEDNUMBER, AVFMT_SHOW_IDS,</span>
<a name="l00631"></a>00631 <span class="comment"> * AVFMT_GENERIC_INDEX, AVFMT_TS_DISCONT, AVFMT_NOBINSEARCH,</span>
<a name="l00632"></a>00632 <span class="comment"> * AVFMT_NOGENSEARCH, AVFMT_NO_BYTE_SEEK, AVFMT_SEEK_TO_PTS.</span>
<a name="l00633"></a>00633 <span class="comment"> */</span>
<a name="l00634"></a><a class="code" href="structAVInputFormat.html#a1b30f6647d0c2faf38ba8786d7c3a838">00634</a> <span class="keywordtype">int</span> <a class="code" href="structAVInputFormat.html#a1b30f6647d0c2faf38ba8786d7c3a838" title="Can use flags: AVFMT_NOFILE, AVFMT_NEEDNUMBER, AVFMT_SHOW_IDS, AVFMT_GENERIC_INDEX, AVFMT_TS_DISCONT, AVFMT_NOBINSEARCH, AVFMT_NOGENSEARCH, AVFMT_NO_BYTE_SEEK, AVFMT_SEEK_TO_PTS.">flags</a>;
<a name="l00635"></a>00635 <span class="comment"></span>
<a name="l00636"></a>00636 <span class="comment"> /**</span>
<a name="l00637"></a>00637 <span class="comment"> * If extensions are defined, then no probe is done. You should</span>
<a name="l00638"></a>00638 <span class="comment"> * usually not use extension format guessing because it is not</span>
<a name="l00639"></a>00639 <span class="comment"> * reliable enough</span>
<a name="l00640"></a>00640 <span class="comment"> */</span>
<a name="l00641"></a><a class="code" href="structAVInputFormat.html#ae692e27e532f664f26e2501967b09eab">00641</a> <span class="keyword">const</span> <span class="keywordtype">char</span> *<a class="code" href="structAVInputFormat.html#ae692e27e532f664f26e2501967b09eab" title="If extensions are defined, then no probe is done.">extensions</a>;
<a name="l00642"></a>00642
<a name="l00643"></a><a class="code" href="structAVInputFormat.html#a19e83077d47edd27d375205038062c65">00643</a> <span class="keyword">const</span> <span class="keyword">struct </span>AVCodecTag * <span class="keyword">const</span> *<a class="code" href="structAVInputFormat.html#a19e83077d47edd27d375205038062c65">codec_tag</a>;
<a name="l00644"></a>00644
<a name="l00645"></a><a class="code" href="structAVInputFormat.html#afaac829559ad9e07618c01a51d8a4c5f">00645</a> <span class="keyword">const</span> <a class="code" href="structAVClass.html" title="Describe the class of an AVClass context structure.">AVClass</a> *<a class="code" href="structAVInputFormat.html#afaac829559ad9e07618c01a51d8a4c5f" title="AVClass for the private context.">priv_class</a>; <span class="comment">///< AVClass for the private context</span>
<a name="l00646"></a>00646 <span class="comment"></span><span class="comment"></span>
<a name="l00647"></a>00647 <span class="comment"> /**</span>
<a name="l00648"></a>00648 <span class="comment"> * Comma-separated list of mime types.</span>
<a name="l00649"></a>00649 <span class="comment"> * It is used check for matching mime types while probing.</span>
<a name="l00650"></a>00650 <span class="comment"> * @see av_probe_input_format2</span>
<a name="l00651"></a>00651 <span class="comment"> */</span>
<a name="l00652"></a><a class="code" href="structAVInputFormat.html#a963cd77aa525517dcfdc18227dae788f">00652</a> <span class="keyword">const</span> <span class="keywordtype">char</span> *<a class="code" href="structAVInputFormat.html#a963cd77aa525517dcfdc18227dae788f" title="Comma-separated list of mime types.">mime_type</a>;
<a name="l00653"></a>00653
<a name="l00654"></a>00654 <span class="comment">/*****************************************************************</span>
<a name="l00655"></a>00655 <span class="comment"> * No fields below this line are part of the public API. They</span>
<a name="l00656"></a>00656 <span class="comment"> * may not be used outside of libavformat and can be changed and</span>
<a name="l00657"></a>00657 <span class="comment"> * removed at will.</span>
<a name="l00658"></a>00658 <span class="comment"> * New public fields should be added right above.</span>
<a name="l00659"></a>00659 <span class="comment"> *****************************************************************</span>
<a name="l00660"></a>00660 <span class="comment"> */</span>
<a name="l00661"></a><a class="code" href="structAVInputFormat.html#ad18d8584bb0648f53a7980be8f368164">00661</a> <span class="keyword">struct </span><a class="code" href="structAVInputFormat.html">AVInputFormat</a> *<a class="code" href="structAVInputFormat.html#ad18d8584bb0648f53a7980be8f368164">next</a>;
<a name="l00662"></a>00662 <span class="comment"></span>
<a name="l00663"></a>00663 <span class="comment"> /**</span>
<a name="l00664"></a>00664 <span class="comment"> * Raw demuxers store their codec ID here.</span>
<a name="l00665"></a>00665 <span class="comment"> */</span>
<a name="l00666"></a><a class="code" href="structAVInputFormat.html#ac12c67e8e0b7bc2b0c26ab383d9a0c76">00666</a> <span class="keywordtype">int</span> <a class="code" href="structAVInputFormat.html#ac12c67e8e0b7bc2b0c26ab383d9a0c76" title="Raw demuxers store their codec ID here.">raw_codec_id</a>;
<a name="l00667"></a>00667 <span class="comment"></span>
<a name="l00668"></a>00668 <span class="comment"> /**</span>
<a name="l00669"></a>00669 <span class="comment"> * Size of private data so that it can be allocated in the wrapper.</span>
<a name="l00670"></a>00670 <span class="comment"> */</span>
<a name="l00671"></a><a class="code" href="structAVInputFormat.html#a195b445886775084b8e075062d33f09a">00671</a> <span class="keywordtype">int</span> <a class="code" href="structAVInputFormat.html#a195b445886775084b8e075062d33f09a" title="Size of private data so that it can be allocated in the wrapper.">priv_data_size</a>;
<a name="l00672"></a>00672 <span class="comment"></span>
<a name="l00673"></a>00673 <span class="comment"> /**</span>
<a name="l00674"></a>00674 <span class="comment"> * Tell if a given file has a chance of being parsed as this format.</span>
<a name="l00675"></a>00675 <span class="comment"> * The buffer provided is guaranteed to be AVPROBE_PADDING_SIZE bytes</span>
<a name="l00676"></a>00676 <span class="comment"> * big so you do not have to check for that unless you need more.</span>
<a name="l00677"></a>00677 <span class="comment"> */</span>
<a name="l00678"></a><a class="code" href="structAVInputFormat.html#a600b56b25f0a715a5eaf39d8205a9ed4">00678</a> int (*<a class="code" href="structAVInputFormat.html#a600b56b25f0a715a5eaf39d8205a9ed4" title="Tell if a given file has a chance of being parsed as this format.">read_probe</a>)(<a class="code" href="structAVProbeData.html" title="This structure contains the data a format has to probe a file.">AVProbeData</a> *);
<a name="l00679"></a>00679 <span class="comment"></span>
<a name="l00680"></a>00680 <span class="comment"> /**</span>
<a name="l00681"></a>00681 <span class="comment"> * Read the format header and initialize the AVFormatContext</span>
<a name="l00682"></a>00682 <span class="comment"> * structure. Return 0 if OK. 'avformat_new_stream' should be</span>
<a name="l00683"></a>00683 <span class="comment"> * called to create new streams.</span>
<a name="l00684"></a>00684 <span class="comment"> */</span>
<a name="l00685"></a><a class="code" href="structAVInputFormat.html#a91a8d2bf2a85d73ae7d33a763fc9721a">00685</a> int (*<a class="code" href="structAVInputFormat.html#a91a8d2bf2a85d73ae7d33a763fc9721a" title="Read the format header and initialize the AVFormatContext structure.">read_header</a>)(<span class="keyword">struct </span><a class="code" href="structAVFormatContext.html" title="Format I/O context.">AVFormatContext</a> *);
<a name="l00686"></a>00686 <span class="comment"></span>
<a name="l00687"></a>00687 <span class="comment"> /**</span>
<a name="l00688"></a>00688 <span class="comment"> * Read one packet and put it in 'pkt'. pts and flags are also</span>
<a name="l00689"></a>00689 <span class="comment"> * set. 'avformat_new_stream' can be called only if the flag</span>
<a name="l00690"></a>00690 <span class="comment"> * AVFMTCTX_NOHEADER is used and only in the calling thread (not in a</span>
<a name="l00691"></a>00691 <span class="comment"> * background thread).</span>
<a name="l00692"></a>00692 <span class="comment"> * @return 0 on success, < 0 on error.</span>
<a name="l00693"></a>00693 <span class="comment"> * When returning an error, pkt must not have been allocated</span>
<a name="l00694"></a>00694 <span class="comment"> * or must be freed before returning</span>
<a name="l00695"></a>00695 <span class="comment"> */</span>
<a name="l00696"></a><a class="code" href="structAVInputFormat.html#a5b23ff75b9fa1a5b68fa767916d30f6f">00696</a> int (*<a class="code" href="structAVInputFormat.html#a5b23ff75b9fa1a5b68fa767916d30f6f" title="Read one packet and put it in 'pkt'.">read_packet</a>)(<span class="keyword">struct </span><a class="code" href="structAVFormatContext.html" title="Format I/O context.">AVFormatContext</a> *, <a class="code" href="structAVPacket.html" title="This structure stores compressed data.">AVPacket</a> *<a class="code" href="demuxing__decoding_8c.html#a3d4c6562f0b27cf0cacbbea5c038c090">pkt</a>);
<a name="l00697"></a>00697 <span class="comment"></span>
<a name="l00698"></a>00698 <span class="comment"> /**</span>
<a name="l00699"></a>00699 <span class="comment"> * Close the stream. The AVFormatContext and AVStreams are not</span>
<a name="l00700"></a>00700 <span class="comment"> * freed by this function</span>
<a name="l00701"></a>00701 <span class="comment"> */</span>
<a name="l00702"></a><a class="code" href="structAVInputFormat.html#ab8b8b1045df0b395224f8878b647df14">00702</a> int (*<a class="code" href="structAVInputFormat.html#ab8b8b1045df0b395224f8878b647df14" title="Close the stream.">read_close</a>)(<span class="keyword">struct </span><a class="code" href="structAVFormatContext.html" title="Format I/O context.">AVFormatContext</a> *);
<a name="l00703"></a>00703 <span class="comment"></span>
<a name="l00704"></a>00704 <span class="comment"> /**</span>
<a name="l00705"></a>00705 <span class="comment"> * Seek to a given timestamp relative to the frames in</span>
<a name="l00706"></a>00706 <span class="comment"> * stream component stream_index.</span>
<a name="l00707"></a>00707 <span class="comment"> * @param stream_index Must not be -1.</span>
<a name="l00708"></a>00708 <span class="comment"> * @param flags Selects which direction should be preferred if no exact</span>
<a name="l00709"></a>00709 <span class="comment"> * match is available.</span>
<a name="l00710"></a>00710 <span class="comment"> * @return >= 0 on success (but not necessarily the new offset)</span>
<a name="l00711"></a>00711 <span class="comment"> */</span>
<a name="l00712"></a><a class="code" href="structAVInputFormat.html#aa87eb295570be6b0995829da73add291">00712</a> int (*<a class="code" href="structAVInputFormat.html#aa87eb295570be6b0995829da73add291" title="Seek to a given timestamp relative to the frames in stream component stream_index.">read_seek</a>)(<span class="keyword">struct </span><a class="code" href="structAVFormatContext.html" title="Format I/O context.">AVFormatContext</a> *,
<a name="l00713"></a>00713 <span class="keywordtype">int</span> stream_index, int64_t timestamp, <span class="keywordtype">int</span> <a class="code" href="structAVInputFormat.html#a1b30f6647d0c2faf38ba8786d7c3a838" title="Can use flags: AVFMT_NOFILE, AVFMT_NEEDNUMBER, AVFMT_SHOW_IDS, AVFMT_GENERIC_INDEX, AVFMT_TS_DISCONT, AVFMT_NOBINSEARCH, AVFMT_NOGENSEARCH, AVFMT_NO_BYTE_SEEK, AVFMT_SEEK_TO_PTS.">flags</a>);
<a name="l00714"></a>00714 <span class="comment"></span>
<a name="l00715"></a>00715 <span class="comment"> /**</span>
<a name="l00716"></a>00716 <span class="comment"> * Get the next timestamp in stream[stream_index].time_base units.</span>
<a name="l00717"></a>00717 <span class="comment"> * @return the timestamp or AV_NOPTS_VALUE if an error occurred</span>
<a name="l00718"></a>00718 <span class="comment"> */</span>
<a name="l00719"></a><a class="code" href="structAVInputFormat.html#a108beacc3cfb783346def5184d121bd6">00719</a> int64_t (*<a class="code" href="structAVInputFormat.html#a108beacc3cfb783346def5184d121bd6" title="Get the next timestamp in stream[stream_index].time_base units.">read_timestamp</a>)(<span class="keyword">struct </span><a class="code" href="structAVFormatContext.html" title="Format I/O context.">AVFormatContext</a> *s, <span class="keywordtype">int</span> stream_index,
<a name="l00720"></a>00720 int64_t *pos, int64_t pos_limit);
<a name="l00721"></a>00721 <span class="comment"></span>
<a name="l00722"></a>00722 <span class="comment"> /**</span>
<a name="l00723"></a>00723 <span class="comment"> * Start/resume playing - only meaningful if using a network-based format</span>
<a name="l00724"></a>00724 <span class="comment"> * (RTSP).</span>
<a name="l00725"></a>00725 <span class="comment"> */</span>
<a name="l00726"></a><a class="code" href="structAVInputFormat.html#afa54d0deebe7300711f827eb228b46d2">00726</a> int (*<a class="code" href="structAVInputFormat.html#afa54d0deebe7300711f827eb228b46d2" title="Start/resume playing - only meaningful if using a network-based format (RTSP).">read_play</a>)(<span class="keyword">struct </span><a class="code" href="structAVFormatContext.html" title="Format I/O context.">AVFormatContext</a> *);
<a name="l00727"></a>00727 <span class="comment"></span>
<a name="l00728"></a>00728 <span class="comment"> /**</span>
<a name="l00729"></a>00729 <span class="comment"> * Pause playing - only meaningful if using a network-based format</span>
<a name="l00730"></a>00730 <span class="comment"> * (RTSP).</span>
<a name="l00731"></a>00731 <span class="comment"> */</span>
<a name="l00732"></a><a class="code" href="structAVInputFormat.html#a61b1454df23313aab4753cf92e22f0e3">00732</a> int (*<a class="code" href="structAVInputFormat.html#a61b1454df23313aab4753cf92e22f0e3" title="Pause playing - only meaningful if using a network-based format (RTSP).">read_pause</a>)(<span class="keyword">struct </span><a class="code" href="structAVFormatContext.html" title="Format I/O context.">AVFormatContext</a> *);
<a name="l00733"></a>00733 <span class="comment"></span>
<a name="l00734"></a>00734 <span class="comment"> /**</span>
<a name="l00735"></a>00735 <span class="comment"> * Seek to timestamp ts.</span>
<a name="l00736"></a>00736 <span class="comment"> * Seeking will be done so that the point from which all active streams</span>
<a name="l00737"></a>00737 <span class="comment"> * can be presented successfully will be closest to ts and within min/max_ts.</span>
<a name="l00738"></a>00738 <span class="comment"> * Active streams are all streams that have AVStream.discard < AVDISCARD_ALL.</span>
<a name="l00739"></a>00739 <span class="comment"> */</span>
<a name="l00740"></a><a class="code" href="structAVInputFormat.html#a98f6fd05b43f63f8ba7ed2ce7b4d04cf">00740</a> int (*<a class="code" href="structAVInputFormat.html#a98f6fd05b43f63f8ba7ed2ce7b4d04cf" title="Seek to timestamp ts.">read_seek2</a>)(<span class="keyword">struct </span><a class="code" href="structAVFormatContext.html" title="Format I/O context.">AVFormatContext</a> *s, <span class="keywordtype">int</span> stream_index, int64_t min_ts, int64_t ts, int64_t max_ts, <span class="keywordtype">int</span> <a class="code" href="structAVInputFormat.html#a1b30f6647d0c2faf38ba8786d7c3a838" title="Can use flags: AVFMT_NOFILE, AVFMT_NEEDNUMBER, AVFMT_SHOW_IDS, AVFMT_GENERIC_INDEX, AVFMT_TS_DISCONT, AVFMT_NOBINSEARCH, AVFMT_NOGENSEARCH, AVFMT_NO_BYTE_SEEK, AVFMT_SEEK_TO_PTS.">flags</a>);
<a name="l00741"></a>00741 <span class="comment"></span>
<a name="l00742"></a>00742 <span class="comment"> /**</span>
<a name="l00743"></a>00743 <span class="comment"> * Returns device list with it properties.</span>
<a name="l00744"></a>00744 <span class="comment"> * @see avdevice_list_devices() for more details.</span>
<a name="l00745"></a>00745 <span class="comment"> */</span>
<a name="l00746"></a><a class="code" href="structAVInputFormat.html#a3d4063cc8a7646f24aab052abfa77169">00746</a> int (*<a class="code" href="structAVInputFormat.html#a3d4063cc8a7646f24aab052abfa77169" title="Returns device list with it properties.">get_device_list</a>)(<span class="keyword">struct </span><a class="code" href="structAVFormatContext.html" title="Format I/O context.">AVFormatContext</a> *s, <span class="keyword">struct </span><a class="code" href="structAVDeviceInfoList.html" title="List of devices.">AVDeviceInfoList</a> *device_list);
<a name="l00747"></a>00747 <span class="comment"></span>
<a name="l00748"></a>00748 <span class="comment"> /**</span>
<a name="l00749"></a>00749 <span class="comment"> * Initialize device capabilities submodule.</span>
<a name="l00750"></a>00750 <span class="comment"> * @see avdevice_capabilities_create() for more details.</span>
<a name="l00751"></a>00751 <span class="comment"> */</span>
<a name="l00752"></a><a class="code" href="structAVInputFormat.html#adfb437ca175a3620b0475f420b84a83e">00752</a> int (*<a class="code" href="structAVInputFormat.html#adfb437ca175a3620b0475f420b84a83e" title="Initialize device capabilities submodule.">create_device_capabilities</a>)(<span class="keyword">struct </span><a class="code" href="structAVFormatContext.html" title="Format I/O context.">AVFormatContext</a> *s, <span class="keyword">struct </span><a class="code" href="structAVDeviceCapabilitiesQuery.html" title="Following API allows user to probe device capabilities (supported codecs, pixel formats, sample formats, resolutions, channel counts, etc).">AVDeviceCapabilitiesQuery</a> *caps);
<a name="l00753"></a>00753 <span class="comment"></span>
<a name="l00754"></a>00754 <span class="comment"> /**</span>
<a name="l00755"></a>00755 <span class="comment"> * Free device capabilities submodule.</span>
<a name="l00756"></a>00756 <span class="comment"> * @see avdevice_capabilities_free() for more details.</span>
<a name="l00757"></a>00757 <span class="comment"> */</span>
<a name="l00758"></a><a class="code" href="structAVInputFormat.html#a2e7bf768581d9f2738d78b43243b0d4f">00758</a> int (*<a class="code" href="structAVInputFormat.html#a2e7bf768581d9f2738d78b43243b0d4f" title="Free device capabilities submodule.">free_device_capabilities</a>)(<span class="keyword">struct </span><a class="code" href="structAVFormatContext.html" title="Format I/O context.">AVFormatContext</a> *s, <span class="keyword">struct </span><a class="code" href="structAVDeviceCapabilitiesQuery.html" title="Following API allows user to probe device capabilities (supported codecs, pixel formats, sample formats, resolutions, channel counts, etc).">AVDeviceCapabilitiesQuery</a> *caps);
<a name="l00759"></a>00759 } <a class="code" href="structAVInputFormat.html">AVInputFormat</a>;<span class="comment"></span>
<a name="l00760"></a>00760 <span class="comment">/**</span>
<a name="l00761"></a>00761 <span class="comment"> * @}</span>
<a name="l00762"></a>00762 <span class="comment"> */</span>
<a name="l00763"></a>00763
<a name="l00764"></a><a class="code" href="avformat_8h.html#afacbc85f23a50771e3801bda0a353d91">00764</a> <span class="keyword">enum</span> <a class="code" href="avformat_8h.html#afacbc85f23a50771e3801bda0a353d91">AVStreamParseType</a> {
<a name="l00765"></a><a class="code" href="avformat_8h.html#afacbc85f23a50771e3801bda0a353d91ac715de62daa60e31ce01b9671bd35f9e">00765</a> <a class="code" href="avformat_8h.html#afacbc85f23a50771e3801bda0a353d91ac715de62daa60e31ce01b9671bd35f9e">AVSTREAM_PARSE_NONE</a>,
<a name="l00766"></a><a class="code" href="avformat_8h.html#afacbc85f23a50771e3801bda0a353d91ac21d15a27dac74ca0730b4dace71d883">00766</a> <a class="code" href="avformat_8h.html#afacbc85f23a50771e3801bda0a353d91ac21d15a27dac74ca0730b4dace71d883" title="full parsing and repack">AVSTREAM_PARSE_FULL</a>, <span class="comment">/**< full parsing and repack */</span>
<a name="l00767"></a><a class="code" href="avformat_8h.html#afacbc85f23a50771e3801bda0a353d91a67bc09fcdeb0e05754f344fbc80856ca">00767</a> <a class="code" href="avformat_8h.html#afacbc85f23a50771e3801bda0a353d91a67bc09fcdeb0e05754f344fbc80856ca" title="Only parse headers, do not repack.">AVSTREAM_PARSE_HEADERS</a>, <span class="comment">/**< Only parse headers, do not repack. */</span>
<a name="l00768"></a><a class="code" href="avformat_8h.html#afacbc85f23a50771e3801bda0a353d91a10f8e7a9d88b7b5e2010ffb496b6cf1a">00768</a> <a class="code" href="avformat_8h.html#afacbc85f23a50771e3801bda0a353d91a10f8e7a9d88b7b5e2010ffb496b6cf1a" title="full parsing and interpolation of timestamps for frames not starting on a packet boundary">AVSTREAM_PARSE_TIMESTAMPS</a>, <span class="comment">/**< full parsing and interpolation of timestamps for frames not starting on a packet boundary */</span>
<a name="l00769"></a><a class="code" href="avformat_8h.html#afacbc85f23a50771e3801bda0a353d91a41eb176dd7cfc095b5ea66816a75c56a">00769</a> <a class="code" href="avformat_8h.html#afacbc85f23a50771e3801bda0a353d91a41eb176dd7cfc095b5ea66816a75c56a" title="full parsing and repack of the first frame only, only implemented for H.264 currently">AVSTREAM_PARSE_FULL_ONCE</a>, <span class="comment">/**< full parsing and repack of the first frame only, only implemented for H.264 currently */</span>
<a name="l00770"></a><a class="code" href="avformat_8h.html#afacbc85f23a50771e3801bda0a353d91a4a4190f226593e92724285f8bfef9c2e">00770</a> <a class="code" href="avformat_8h.html#afacbc85f23a50771e3801bda0a353d91a4a4190f226593e92724285f8bfef9c2e" title="full parsing and repack with timestamp and position generation by parser for raw this assumes that ea...">AVSTREAM_PARSE_FULL_RAW</a>=<a class="code" href="common_8h.html#a19c68e2b5efcbab914d79db1e4fee734">MKTAG</a>(0,<span class="charliteral">'R'</span>,<span class="charliteral">'A'</span>,<span class="charliteral">'W'</span>), <span class="comment">/**< full parsing and repack with timestamp and position generation by parser for raw</span>
<a name="l00771"></a>00771 <span class="comment"> this assumes that each packet in the file contains no demuxer level headers and</span>
<a name="l00772"></a>00772 <span class="comment"> just codec level data, otherwise position generation would fail */</span>
<a name="l00773"></a>00773 };
<a name="l00774"></a>00774
<a name="l00775"></a><a class="code" href="structAVIndexEntry.html">00775</a> <span class="keyword">typedef</span> <span class="keyword">struct </span><a class="code" href="structAVIndexEntry.html">AVIndexEntry</a> {
<a name="l00776"></a><a class="code" href="structAVIndexEntry.html#ac0dd805ffd04bb52b1a358331dd10b98">00776</a> int64_t <a class="code" href="structAVIndexEntry.html#ac0dd805ffd04bb52b1a358331dd10b98">pos</a>;
<a name="l00777"></a><a class="code" href="structAVIndexEntry.html#affef8bf4cd2f53a47ebc2d298d0d57c1">00777</a> int64_t <a class="code" href="structAVIndexEntry.html#affef8bf4cd2f53a47ebc2d298d0d57c1" title="Timestamp in AVStream.time_base units, preferably the time from which on correctly decoded frames are...">timestamp</a>; <span class="comment">/**<</span>
<a name="l00778"></a>00778 <span class="comment"> * Timestamp in AVStream.time_base units, preferably the time from which on correctly decoded frames are available</span>
<a name="l00779"></a>00779 <span class="comment"> * when seeking to this entry. That means preferable PTS on keyframe based formats.</span>
<a name="l00780"></a>00780 <span class="comment"> * But demuxers can choose to store a different timestamp, if it is more convenient for the implementation or nothing better</span>
<a name="l00781"></a>00781 <span class="comment"> * is known</span>
<a name="l00782"></a>00782 <span class="comment"> */</span>
<a name="l00783"></a><a class="code" href="avformat_8h.html#a23159bdc0b27ccf964072e30d6cc4559">00783</a> <span class="preprocessor">#define AVINDEX_KEYFRAME 0x0001</span>
<a name="l00784"></a><a class="code" href="structAVIndexEntry.html#a72366fb5dae7421e41cce6ad8dd2126b">00784</a> <span class="preprocessor"></span> <span class="keywordtype">int</span> <a class="code" href="structAVIndexEntry.html#a72366fb5dae7421e41cce6ad8dd2126b">flags</a>:2;
<a name="l00785"></a><a class="code" href="structAVIndexEntry.html#a1b57d93b863a1b605461229a65ca8b52">00785</a> <span class="keywordtype">int</span> <a class="code" href="structAVIndexEntry.html#a1b57d93b863a1b605461229a65ca8b52">size</a>:30; <span class="comment">//Yeah, trying to keep the size of this small to reduce memory requirements (it is 24 vs. 32 bytes due to possible 8-byte alignment).</span>
<a name="l00786"></a><a class="code" href="structAVIndexEntry.html#add3fa33e8b3363a96fa4c62fca1bcf42">00786</a> <span class="keywordtype">int</span> <a class="code" href="structAVIndexEntry.html#add3fa33e8b3363a96fa4c62fca1bcf42" title="Minimum distance between this and the previous keyframe, used to avoid unneeded searching.">min_distance</a>; <span class="comment">/**< Minimum distance between this and the previous keyframe, used to avoid unneeded searching. */</span>
<a name="l00787"></a>00787 } <a class="code" href="structAVIndexEntry.html">AVIndexEntry</a>;
<a name="l00788"></a>00788
<a name="l00789"></a><a class="code" href="avformat_8h.html#af09f200b4cd9bf0baa05671436eef2fb">00789</a> <span class="preprocessor">#define AV_DISPOSITION_DEFAULT 0x0001</span>
<a name="l00790"></a><a class="code" href="avformat_8h.html#a5bf41aa870351bd4e912725bcaf87031">00790</a> <span class="preprocessor"></span><span class="preprocessor">#define AV_DISPOSITION_DUB 0x0002</span>
<a name="l00791"></a><a class="code" href="avformat_8h.html#aed1d78ae5604930f7465e5f48220941e">00791</a> <span class="preprocessor"></span><span class="preprocessor">#define AV_DISPOSITION_ORIGINAL 0x0004</span>
<a name="l00792"></a><a class="code" href="avformat_8h.html#a3fd17d972522f10a6d73937482225482">00792</a> <span class="preprocessor"></span><span class="preprocessor">#define AV_DISPOSITION_COMMENT 0x0008</span>
<a name="l00793"></a><a class="code" href="avformat_8h.html#a07792fd9060493192a4d4f25714a56d6">00793</a> <span class="preprocessor"></span><span class="preprocessor">#define AV_DISPOSITION_LYRICS 0x0010</span>
<a name="l00794"></a><a class="code" href="avformat_8h.html#a4e6b75c4d996642d88b98241f0ad2979">00794</a> <span class="preprocessor"></span><span class="preprocessor">#define AV_DISPOSITION_KARAOKE 0x0020</span>
<a name="l00795"></a>00795 <span class="preprocessor"></span><span class="comment"></span>
<a name="l00796"></a>00796 <span class="comment">/**</span>
<a name="l00797"></a>00797 <span class="comment"> * Track should be used during playback by default.</span>
<a name="l00798"></a>00798 <span class="comment"> * Useful for subtitle track that should be displayed</span>
<a name="l00799"></a>00799 <span class="comment"> * even when user did not explicitly ask for subtitles.</span>
<a name="l00800"></a>00800 <span class="comment"> */</span>
<a name="l00801"></a><a class="code" href="avformat_8h.html#aa72fcb393482cb6bb302d4995990bf3b">00801</a> <span class="preprocessor">#define AV_DISPOSITION_FORCED 0x0040</span>
<a name="l00802"></a><a class="code" href="avformat_8h.html#a39ba22fdf89ec823243ba92bfd35c189">00802</a> <span class="preprocessor"></span><span class="preprocessor">#define AV_DISPOSITION_HEARING_IMPAIRED 0x0080 </span><span class="comment">/**< stream for hearing impaired audiences */</span>
<a name="l00803"></a><a class="code" href="avformat_8h.html#aa8e9704bcc842236ad048062dcf45d45">00803</a> <span class="preprocessor">#define AV_DISPOSITION_VISUAL_IMPAIRED 0x0100 </span><span class="comment">/**< stream for visual impaired audiences */</span>
<a name="l00804"></a><a class="code" href="avformat_8h.html#a9b09132b5af7f7f6fe54d61782373bc7">00804</a> <span class="preprocessor">#define AV_DISPOSITION_CLEAN_EFFECTS 0x0200 </span><span class="comment">/**< stream without voice */</span>
<a name="l00805"></a>00805 <span class="comment">/**</span>
<a name="l00806"></a>00806 <span class="comment"> * The stream is stored in the file as an attached picture/"cover art" (e.g.</span>
<a name="l00807"></a>00807 <span class="comment"> * APIC frame in ID3v2). The single packet associated with it will be returned</span>
<a name="l00808"></a>00808 <span class="comment"> * among the first few packets read from the file unless seeking takes place.</span>
<a name="l00809"></a>00809 <span class="comment"> * It can also be accessed at any time in AVStream.attached_pic.</span>
<a name="l00810"></a>00810 <span class="comment"> */</span>
<a name="l00811"></a><a class="code" href="avformat_8h.html#ab54a3e54e88a8f7d7760e60b49944e44">00811</a> <span class="preprocessor">#define AV_DISPOSITION_ATTACHED_PIC 0x0400</span>
<a name="l00812"></a>00812 <span class="preprocessor"></span><span class="comment"></span>
<a name="l00813"></a>00813 <span class="comment">/**</span>
<a name="l00814"></a>00814 <span class="comment"> * To specify text track kind (different from subtitles default).</span>
<a name="l00815"></a>00815 <span class="comment"> */</span>
<a name="l00816"></a><a class="code" href="avformat_8h.html#a51efe44185491ba0a214fe2bc92ac2a1">00816</a> <span class="preprocessor">#define AV_DISPOSITION_CAPTIONS 0x10000</span>
<a name="l00817"></a><a class="code" href="avformat_8h.html#ae578ee8b851860926955855d1234f93f">00817</a> <span class="preprocessor"></span><span class="preprocessor">#define AV_DISPOSITION_DESCRIPTIONS 0x20000</span>
<a name="l00818"></a><a class="code" href="avformat_8h.html#a5ff7b03b405295a7a9743cfa67369759">00818</a> <span class="preprocessor"></span><span class="preprocessor">#define AV_DISPOSITION_METADATA 0x40000</span>
<a name="l00819"></a>00819 <span class="preprocessor"></span><span class="comment"></span>
<a name="l00820"></a>00820 <span class="comment">/**</span>
<a name="l00821"></a>00821 <span class="comment"> * Options for behavior on timestamp wrap detection.</span>
<a name="l00822"></a>00822 <span class="comment"> */</span>
<a name="l00823"></a><a class="code" href="avformat_8h.html#a1c159fe90edbc7a6f0c5e9f3537bff1b">00823</a> <span class="preprocessor">#define AV_PTS_WRAP_IGNORE 0 ///< ignore the wrap</span>
<a name="l00824"></a><a class="code" href="avformat_8h.html#adafc4c061749f2f3a6ffac6796b844f0">00824</a> <span class="preprocessor"></span><span class="preprocessor">#define AV_PTS_WRAP_ADD_OFFSET 1 ///< add the format specific offset on wrap detection</span>
<a name="l00825"></a><a class="code" href="avformat_8h.html#a19520b122a38843e0ce95335ad92bb61">00825</a> <span class="preprocessor"></span><span class="preprocessor">#define AV_PTS_WRAP_SUB_OFFSET -1 ///< subtract the format specific offset on wrap detection</span>
<a name="l00826"></a>00826 <span class="preprocessor"></span><span class="comment"></span>
<a name="l00827"></a>00827 <span class="comment">/**</span>
<a name="l00828"></a>00828 <span class="comment"> * Stream structure.</span>
<a name="l00829"></a>00829 <span class="comment"> * New fields can be added to the end with minor version bumps.</span>
<a name="l00830"></a>00830 <span class="comment"> * Removal, reordering and changes to existing fields require a major</span>
<a name="l00831"></a>00831 <span class="comment"> * version bump.</span>
<a name="l00832"></a>00832 <span class="comment"> * sizeof(AVStream) must not be used outside libav*.</span>
<a name="l00833"></a>00833 <span class="comment"> */</span>
<a name="l00834"></a><a class="code" href="structAVStream.html">00834</a> <span class="keyword">typedef</span> <span class="keyword">struct </span><a class="code" href="structAVStream.html" title="Stream structure.">AVStream</a> {
<a name="l00835"></a><a class="code" href="structAVStream.html#a6ca823054632821e085377f7d371a2d1">00835</a> <span class="keywordtype">int</span> <a class="code" href="structAVStream.html#a6ca823054632821e085377f7d371a2d1" title="stream index in AVFormatContext">index</a>; <span class="comment">/**< stream index in AVFormatContext */</span><span class="comment"></span>
<a name="l00836"></a>00836 <span class="comment"> /**</span>
<a name="l00837"></a>00837 <span class="comment"> * Format-specific stream ID.</span>
<a name="l00838"></a>00838 <span class="comment"> * decoding: set by libavformat</span>
<a name="l00839"></a>00839 <span class="comment"> * encoding: set by the user, replaced by libavformat if left unset</span>
<a name="l00840"></a>00840 <span class="comment"> */</span>
<a name="l00841"></a><a class="code" href="structAVStream.html#a6873ed62f196c24e8bf282609231786f">00841</a> <span class="keywordtype">int</span> <a class="code" href="structAVStream.html#a6873ed62f196c24e8bf282609231786f" title="Format-specific stream ID.">id</a>;<span class="comment"></span>
<a name="l00842"></a>00842 <span class="comment"> /**</span>
<a name="l00843"></a>00843 <span class="comment"> * Codec context associated with this stream. Allocated and freed by</span>
<a name="l00844"></a>00844 <span class="comment"> * libavformat.</span>
<a name="l00845"></a>00845 <span class="comment"> *</span>
<a name="l00846"></a>00846 <span class="comment"> * - decoding: The demuxer exports codec information stored in the headers</span>
<a name="l00847"></a>00847 <span class="comment"> * here.</span>
<a name="l00848"></a>00848 <span class="comment"> * - encoding: The user sets codec information, the muxer writes it to the</span>
<a name="l00849"></a>00849 <span class="comment"> * output. Mandatory fields as specified in AVCodecContext</span>
<a name="l00850"></a>00850 <span class="comment"> * documentation must be set even if this AVCodecContext is</span>
<a name="l00851"></a>00851 <span class="comment"> * not actually used for encoding.</span>
<a name="l00852"></a>00852 <span class="comment"> */</span>
<a name="l00853"></a><a class="code" href="structAVStream.html#a56f20051fb99339cc588cd3a07ab8c96">00853</a> <a class="code" href="structAVCodecContext.html" title="main external API structure.">AVCodecContext</a> *<a class="code" href="structAVStream.html#a56f20051fb99339cc588cd3a07ab8c96" title="Codec context associated with this stream.">codec</a>;
<a name="l00854"></a><a class="code" href="structAVStream.html#a61b61b0d009be377ebcfdc30ea053d27">00854</a> <span class="keywordtype">void</span> *<a class="code" href="structAVStream.html#a61b61b0d009be377ebcfdc30ea053d27">priv_data</a>;
<a name="l00855"></a>00855
<a name="l00856"></a>00856 <span class="preprocessor">#if FF_API_LAVF_FRAC</span>
<a name="l00857"></a>00857 <span class="preprocessor"></span><span class="comment"> /**</span>
<a name="l00858"></a>00858 <span class="comment"> * @deprecated this field is unused</span>
<a name="l00859"></a>00859 <span class="comment"> */</span>
<a name="l00860"></a>00860 <a class="code" href="attributes_8h.html#aa6d076561d3a9eea4729ee632652de02">attribute_deprecated</a>
<a name="l00861"></a>00861 <span class="keyword">struct </span>AVFrac <a class="code" href="transcode__aac_8c.html#a4fbb704fb96c36a78a36eee010306ce7" title="Global timestamp for the audio frames.">pts</a>;
<a name="l00862"></a>00862 <span class="preprocessor">#endif</span>
<a name="l00863"></a>00863 <span class="preprocessor"></span><span class="comment"></span>
<a name="l00864"></a>00864 <span class="comment"> /**</span>
<a name="l00865"></a>00865 <span class="comment"> * This is the fundamental unit of time (in seconds) in terms</span>
<a name="l00866"></a>00866 <span class="comment"> * of which frame timestamps are represented.</span>
<a name="l00867"></a>00867 <span class="comment"> *</span>
<a name="l00868"></a>00868 <span class="comment"> * decoding: set by libavformat</span>
<a name="l00869"></a>00869 <span class="comment"> * encoding: May be set by the caller before avformat_write_header() to</span>
<a name="l00870"></a>00870 <span class="comment"> * provide a hint to the muxer about the desired timebase. In</span>
<a name="l00871"></a>00871 <span class="comment"> * avformat_write_header(), the muxer will overwrite this field</span>
<a name="l00872"></a>00872 <span class="comment"> * with the timebase that will actually be used for the timestamps</span>
<a name="l00873"></a>00873 <span class="comment"> * written into the file (which may or may not be related to the</span>
<a name="l00874"></a>00874 <span class="comment"> * user-provided one, depending on the format).</span>
<a name="l00875"></a>00875 <span class="comment"> */</span>
<a name="l00876"></a><a class="code" href="structAVStream.html#a9db755451f14e2bf590d4b85d82b32e6">00876</a> <a class="code" href="structAVRational.html" title="rational number numerator/denominator">AVRational</a> <a class="code" href="structAVStream.html#a9db755451f14e2bf590d4b85d82b32e6" title="This is the fundamental unit of time (in seconds) in terms of which frame timestamps are represented...">time_base</a>;
<a name="l00877"></a>00877 <span class="comment"></span>
<a name="l00878"></a>00878 <span class="comment"> /**</span>
<a name="l00879"></a>00879 <span class="comment"> * Decoding: pts of the first frame of the stream in presentation order, in stream time base.</span>
<a name="l00880"></a>00880 <span class="comment"> * Only set this if you are absolutely 100% sure that the value you set</span>
<a name="l00881"></a>00881 <span class="comment"> * it to really is the pts of the first frame.</span>
<a name="l00882"></a>00882 <span class="comment"> * This may be undefined (AV_NOPTS_VALUE).</span>
<a name="l00883"></a>00883 <span class="comment"> * @note The ASF header does NOT contain a correct start_time the ASF</span>
<a name="l00884"></a>00884 <span class="comment"> * demuxer must NOT set this.</span>
<a name="l00885"></a>00885 <span class="comment"> */</span>
<a name="l00886"></a><a class="code" href="structAVStream.html#a7c67ae70632c91df8b0f721658ec5377">00886</a> int64_t <a class="code" href="structAVStream.html#a7c67ae70632c91df8b0f721658ec5377" title="Decoding: pts of the first frame of the stream in presentation order, in stream time base...">start_time</a>;
<a name="l00887"></a>00887 <span class="comment"></span>
<a name="l00888"></a>00888 <span class="comment"> /**</span>
<a name="l00889"></a>00889 <span class="comment"> * Decoding: duration of the stream, in stream time base.</span>
<a name="l00890"></a>00890 <span class="comment"> * If a source file does not specify a duration, but does specify</span>
<a name="l00891"></a>00891 <span class="comment"> * a bitrate, this value will be estimated from bitrate and file size.</span>
<a name="l00892"></a>00892 <span class="comment"> */</span>
<a name="l00893"></a><a class="code" href="structAVStream.html#a4e04af7a5a4d8298649850df798dd0bc">00893</a> int64_t <a class="code" href="structAVStream.html#a4e04af7a5a4d8298649850df798dd0bc" title="Decoding: duration of the stream, in stream time base.">duration</a>;
<a name="l00894"></a>00894
<a name="l00895"></a><a class="code" href="structAVStream.html#a4382c3064df1c9eb232ac198dec067f9">00895</a> int64_t <a class="code" href="structAVStream.html#a4382c3064df1c9eb232ac198dec067f9" title="number of frames in this stream if known or 0">nb_frames</a>; <span class="comment">///< number of frames in this stream if known or 0</span>
<a name="l00896"></a>00896 <span class="comment"></span>
<a name="l00897"></a><a class="code" href="structAVStream.html#aea05abdb8e45405048d7923a68c23ef5">00897</a> <span class="keywordtype">int</span> <a class="code" href="structAVStream.html#aea05abdb8e45405048d7923a68c23ef5" title="AV_DISPOSITION_* bit field.">disposition</a>; <span class="comment">/**< AV_DISPOSITION_* bit field */</span>
<a name="l00898"></a>00898
<a name="l00899"></a><a class="code" href="structAVStream.html#a492fcecc45dbbd8da51edd0124e9dd30">00899</a> <span class="keyword">enum</span> <a class="code" href="group__lavc__decoding.html#ga352363bce7d3ed82c101b3bc001d1c16">AVDiscard</a> <a class="code" href="structAVStream.html#a492fcecc45dbbd8da51edd0124e9dd30" title="Selects which packets can be discarded at will and do not need to be demuxed.">discard</a>; <span class="comment">///< Selects which packets can be discarded at will and do not need to be demuxed.</span>
<a name="l00900"></a>00900 <span class="comment"></span><span class="comment"></span>
<a name="l00901"></a>00901 <span class="comment"> /**</span>
<a name="l00902"></a>00902 <span class="comment"> * sample aspect ratio (0 if unknown)</span>
<a name="l00903"></a>00903 <span class="comment"> * - encoding: Set by user.</span>
<a name="l00904"></a>00904 <span class="comment"> * - decoding: Set by libavformat.</span>
<a name="l00905"></a>00905 <span class="comment"> */</span>
<a name="l00906"></a><a class="code" href="structAVStream.html#a3f19c60ac6da237cd10e4d97150c118e">00906</a> <a class="code" href="structAVRational.html" title="rational number numerator/denominator">AVRational</a> <a class="code" href="structAVStream.html#a3f19c60ac6da237cd10e4d97150c118e" title="sample aspect ratio (0 if unknown)">sample_aspect_ratio</a>;
<a name="l00907"></a>00907
<a name="l00908"></a><a class="code" href="structAVStream.html#a50d250a128a3da9ce3d135e84213fb82">00908</a> <a class="code" href="group__lavu__dict.html#ga1d7cc0833bee918994a600556410315f">AVDictionary</a> *<a class="code" href="structAVStream.html#a50d250a128a3da9ce3d135e84213fb82">metadata</a>;
<a name="l00909"></a>00909 <span class="comment"></span>
<a name="l00910"></a>00910 <span class="comment"> /**</span>
<a name="l00911"></a>00911 <span class="comment"> * Average framerate</span>
<a name="l00912"></a>00912 <span class="comment"> *</span>
<a name="l00913"></a>00913 <span class="comment"> * - demuxing: May be set by libavformat when creating the stream or in</span>
<a name="l00914"></a>00914 <span class="comment"> * avformat_find_stream_info().</span>
<a name="l00915"></a>00915 <span class="comment"> * - muxing: May be set by the caller before avformat_write_header().</span>
<a name="l00916"></a>00916 <span class="comment"> */</span>
<a name="l00917"></a><a class="code" href="structAVStream.html#a946e1e9b89eeeae4cab8a833b482c1ad">00917</a> <a class="code" href="structAVRational.html" title="rational number numerator/denominator">AVRational</a> <a class="code" href="structAVStream.html#a946e1e9b89eeeae4cab8a833b482c1ad" title="Average framerate.">avg_frame_rate</a>;
<a name="l00918"></a>00918 <span class="comment"></span>
<a name="l00919"></a>00919 <span class="comment"> /**</span>
<a name="l00920"></a>00920 <span class="comment"> * For streams with AV_DISPOSITION_ATTACHED_PIC disposition, this packet</span>
<a name="l00921"></a>00921 <span class="comment"> * will contain the attached picture.</span>
<a name="l00922"></a>00922 <span class="comment"> *</span>
<a name="l00923"></a>00923 <span class="comment"> * decoding: set by libavformat, must not be modified by the caller.</span>
<a name="l00924"></a>00924 <span class="comment"> * encoding: unused</span>
<a name="l00925"></a>00925 <span class="comment"> */</span>
<a name="l00926"></a><a class="code" href="structAVStream.html#a8c689ee00c0dfe4313891f8a2ea21f4d">00926</a> <a class="code" href="structAVPacket.html" title="This structure stores compressed data.">AVPacket</a> <a class="code" href="structAVStream.html#a8c689ee00c0dfe4313891f8a2ea21f4d" title="For streams with AV_DISPOSITION_ATTACHED_PIC disposition, this packet will contain the attached pictu...">attached_pic</a>;
<a name="l00927"></a>00927 <span class="comment"></span>
<a name="l00928"></a>00928 <span class="comment"> /**</span>
<a name="l00929"></a>00929 <span class="comment"> * An array of side data that applies to the whole stream (i.e. the</span>
<a name="l00930"></a>00930 <span class="comment"> * container does not allow it to change between packets).</span>
<a name="l00931"></a>00931 <span class="comment"> *</span>
<a name="l00932"></a>00932 <span class="comment"> * There may be no overlap between the side data in this array and side data</span>
<a name="l00933"></a>00933 <span class="comment"> * in the packets. I.e. a given side data is either exported by the muxer</span>
<a name="l00934"></a>00934 <span class="comment"> * (demuxing) / set by the caller (muxing) in this array, then it never</span>
<a name="l00935"></a>00935 <span class="comment"> * appears in the packets, or the side data is exported / sent through</span>
<a name="l00936"></a>00936 <span class="comment"> * the packets (always in the first packet where the value becomes known or</span>
<a name="l00937"></a>00937 <span class="comment"> * changes), then it does not appear in this array.</span>
<a name="l00938"></a>00938 <span class="comment"> *</span>
<a name="l00939"></a>00939 <span class="comment"> * - demuxing: Set by libavformat when the stream is created.</span>
<a name="l00940"></a>00940 <span class="comment"> * - muxing: May be set by the caller before avformat_write_header().</span>
<a name="l00941"></a>00941 <span class="comment"> *</span>
<a name="l00942"></a>00942 <span class="comment"> * Freed by libavformat in avformat_free_context().</span>
<a name="l00943"></a>00943 <span class="comment"> *</span>
<a name="l00944"></a>00944 <span class="comment"> * @see av_format_inject_global_side_data()</span>
<a name="l00945"></a>00945 <span class="comment"> */</span>
<a name="l00946"></a><a class="code" href="structAVStream.html#a069da4bb2fba6871858065fdf25fe3b3">00946</a> <a class="code" href="structAVPacketSideData.html">AVPacketSideData</a> *<a class="code" href="structAVStream.html#a069da4bb2fba6871858065fdf25fe3b3" title="An array of side data that applies to the whole stream (i.e.">side_data</a>;<span class="comment"></span>
<a name="l00947"></a>00947 <span class="comment"> /**</span>
<a name="l00948"></a>00948 <span class="comment"> * The number of elements in the AVStream.side_data array.</span>
<a name="l00949"></a>00949 <span class="comment"> */</span>
<a name="l00950"></a><a class="code" href="structAVStream.html#ad2d413a504862fdfcf84105e898deb88">00950</a> <span class="keywordtype">int</span> <a class="code" href="structAVStream.html#ad2d413a504862fdfcf84105e898deb88" title="The number of elements in the AVStream.side_data array.">nb_side_data</a>;
<a name="l00951"></a>00951 <span class="comment"></span>
<a name="l00952"></a>00952 <span class="comment"> /**</span>
<a name="l00953"></a>00953 <span class="comment"> * Flags for the user to detect events happening on the stream. Flags must</span>
<a name="l00954"></a>00954 <span class="comment"> * be cleared by the user once the event has been handled.</span>
<a name="l00955"></a>00955 <span class="comment"> * A combination of AVSTREAM_EVENT_FLAG_*.</span>
<a name="l00956"></a>00956 <span class="comment"> */</span>
<a name="l00957"></a><a class="code" href="structAVStream.html#ab76e176c2a1d1ff09ec9c0bb88dc25e9">00957</a> <span class="keywordtype">int</span> <a class="code" href="structAVStream.html#ab76e176c2a1d1ff09ec9c0bb88dc25e9" title="Flags for the user to detect events happening on the stream.">event_flags</a>;
<a name="l00958"></a><a class="code" href="avformat_8h.html#ab3a5958310f614671f5030ed10753ba9">00958</a> <span class="preprocessor">#define AVSTREAM_EVENT_FLAG_METADATA_UPDATED 0x0001 ///< The call resulted in updated metadata.</span>
<a name="l00959"></a>00959 <span class="preprocessor"></span>
<a name="l00960"></a>00960 <span class="comment">/*****************************************************************</span>
<a name="l00961"></a>00961 <span class="comment"> * All fields below this line are not part of the public API. They</span>
<a name="l00962"></a>00962 <span class="comment"> * may not be used outside of libavformat and can be changed and</span>
<a name="l00963"></a>00963 <span class="comment"> * removed at will.</span>
<a name="l00964"></a>00964 <span class="comment"> * New public fields should be added right above.</span>
<a name="l00965"></a>00965 <span class="comment"> *****************************************************************</span>
<a name="l00966"></a>00966 <span class="comment"> */</span>
<a name="l00967"></a>00967 <span class="comment"></span>
<a name="l00968"></a>00968 <span class="comment"> /**</span>
<a name="l00969"></a>00969 <span class="comment"> * Stream information used internally by av_find_stream_info()</span>
<a name="l00970"></a>00970 <span class="comment"> */</span>
<a name="l00971"></a><a class="code" href="avformat_8h.html#a79d6ee9e699fd534e85543752f3cb775">00971</a> <span class="preprocessor">#define MAX_STD_TIMEBASES (30*12+7+6)</span>
<a name="l00972"></a>00972 <span class="preprocessor"></span> <span class="keyword">struct </span>{
<a name="l00973"></a><a class="code" href="structAVStream.html#a1c89d3d6eedba5bab6e3e12f0d6fb70e">00973</a> int64_t <a class="code" href="structAVStream.html#a1c89d3d6eedba5bab6e3e12f0d6fb70e">last_dts</a>;
<a name="l00974"></a><a class="code" href="structAVStream.html#a0074e905c9fdbd79d2ecd623361ec4f8">00974</a> int64_t <a class="code" href="structAVStream.html#a0074e905c9fdbd79d2ecd623361ec4f8">duration_gcd</a>;
<a name="l00975"></a><a class="code" href="structAVStream.html#ab1dc61f4f5b3bd8e1211c022aa04d588">00975</a> <span class="keywordtype">int</span> <a class="code" href="structAVStream.html#ab1dc61f4f5b3bd8e1211c022aa04d588">duration_count</a>;
<a name="l00976"></a><a class="code" href="structAVStream.html#afeec9883900710b1e9fc241dd6c32a20">00976</a> int64_t <a class="code" href="structAVStream.html#afeec9883900710b1e9fc241dd6c32a20">rfps_duration_sum</a>;
<a name="l00977"></a><a class="code" href="structAVStream.html#a5364ec3acec412b24d225152cf1c0fd6">00977</a> double (*<a class="code" href="structAVStream.html#a5364ec3acec412b24d225152cf1c0fd6">duration_error</a>)[2][<a class="code" href="avformat_8h.html#a79d6ee9e699fd534e85543752f3cb775" title="Stream information used internally by av_find_stream_info()">MAX_STD_TIMEBASES</a>];
<a name="l00978"></a><a class="code" href="structAVStream.html#a55fa61f39b931338e5ba270f3be7a28e">00978</a> int64_t <a class="code" href="structAVStream.html#a55fa61f39b931338e5ba270f3be7a28e">codec_info_duration</a>;
<a name="l00979"></a><a class="code" href="structAVStream.html#a5cf5e17cd1a56b141b588225fe7cf272">00979</a> int64_t <a class="code" href="structAVStream.html#a5cf5e17cd1a56b141b588225fe7cf272">codec_info_duration_fields</a>;
<a name="l00980"></a>00980 <span class="comment"></span>
<a name="l00981"></a>00981 <span class="comment"> /**</span>
<a name="l00982"></a>00982 <span class="comment"> * 0 -> decoder has not been searched for yet.</span>
<a name="l00983"></a>00983 <span class="comment"> * >0 -> decoder found</span>
<a name="l00984"></a>00984 <span class="comment"> * <0 -> decoder with codec_id == -found_decoder has not been found</span>
<a name="l00985"></a>00985 <span class="comment"> */</span>
<a name="l00986"></a><a class="code" href="structAVStream.html#aa209c846f64d54a7d73fcfdea0d3df94">00986</a> <span class="keywordtype">int</span> <a class="code" href="structAVStream.html#aa209c846f64d54a7d73fcfdea0d3df94" title="0 -> decoder has not been searched for yet.">found_decoder</a>;
<a name="l00987"></a>00987
<a name="l00988"></a><a class="code" href="structAVStream.html#af2a160604ac831709bc4f011a3a38410">00988</a> int64_t <a class="code" href="structAVStream.html#af2a160604ac831709bc4f011a3a38410">last_duration</a>;
<a name="l00989"></a>00989 <span class="comment"></span>
<a name="l00990"></a>00990 <span class="comment"> /**</span>
<a name="l00991"></a>00991 <span class="comment"> * Those are used for average framerate estimation.</span>
<a name="l00992"></a>00992 <span class="comment"> */</span>
<a name="l00993"></a><a class="code" href="structAVStream.html#a00f9cfd6b94390286360f004af7882a3">00993</a> int64_t <a class="code" href="structAVStream.html#a00f9cfd6b94390286360f004af7882a3" title="Those are used for average framerate estimation.">fps_first_dts</a>;
<a name="l00994"></a><a class="code" href="structAVStream.html#a7c3c240bfa2e64162c3811ffc33207ff">00994</a> <span class="keywordtype">int</span> <a class="code" href="structAVStream.html#a7c3c240bfa2e64162c3811ffc33207ff">fps_first_dts_idx</a>;
<a name="l00995"></a><a class="code" href="structAVStream.html#a4ec56efe4892728d0b767d55c1238faa">00995</a> int64_t <a class="code" href="structAVStream.html#a4ec56efe4892728d0b767d55c1238faa">fps_last_dts</a>;
<a name="l00996"></a><a class="code" href="structAVStream.html#ac815be62a9c05f7da2e2665ee058014b">00996</a> <span class="keywordtype">int</span> <a class="code" href="structAVStream.html#ac815be62a9c05f7da2e2665ee058014b">fps_last_dts_idx</a>;
<a name="l00997"></a>00997
<a name="l00998"></a>00998 } *<a class="code" href="structAVStream.html#a62e1aa916a2af1f2c2458fe446e7fa4f">info</a>;
<a name="l00999"></a>00999
<a name="l01000"></a><a class="code" href="structAVStream.html#a6cdb0c90a69899f4e1e54704bb654936">01000</a> <span class="keywordtype">int</span> <a class="code" href="structAVStream.html#a6cdb0c90a69899f4e1e54704bb654936" title="number of bits in pts (used for wrapping control)">pts_wrap_bits</a>; <span class="comment">/**< number of bits in pts (used for wrapping control) */</span>
<a name="l01001"></a>01001
<a name="l01002"></a>01002 <span class="comment">// Timestamp generation support:</span><span class="comment"></span>
<a name="l01003"></a>01003 <span class="comment"> /**</span>
<a name="l01004"></a>01004 <span class="comment"> * Timestamp corresponding to the last dts sync point.</span>
<a name="l01005"></a>01005 <span class="comment"> *</span>
<a name="l01006"></a>01006 <span class="comment"> * Initialized when AVCodecParserContext.dts_sync_point >= 0 and</span>
<a name="l01007"></a>01007 <span class="comment"> * a DTS is received from the underlying container. Otherwise set to</span>
<a name="l01008"></a>01008 <span class="comment"> * AV_NOPTS_VALUE by default.</span>
<a name="l01009"></a>01009 <span class="comment"> */</span>
<a name="l01010"></a><a class="code" href="structAVStream.html#a1e341587fa92b173a0d6ae73fadb0409">01010</a> int64_t <a class="code" href="structAVStream.html#a1e341587fa92b173a0d6ae73fadb0409" title="Timestamp corresponding to the last dts sync point.">first_dts</a>;
<a name="l01011"></a><a class="code" href="structAVStream.html#ad552f602c2113bd5152cff3c58ba1f9f">01011</a> int64_t <a class="code" href="structAVStream.html#ad552f602c2113bd5152cff3c58ba1f9f">cur_dts</a>;
<a name="l01012"></a><a class="code" href="structAVStream.html#af8e7b1373292e393ed210dc15aa8d2ca">01012</a> int64_t <a class="code" href="structAVStream.html#af8e7b1373292e393ed210dc15aa8d2ca">last_IP_pts</a>;
<a name="l01013"></a><a class="code" href="structAVStream.html#a5764343a4d348f453933bf73c26f84c3">01013</a> <span class="keywordtype">int</span> <a class="code" href="structAVStream.html#a5764343a4d348f453933bf73c26f84c3">last_IP_duration</a>;
<a name="l01014"></a>01014 <span class="comment"></span>
<a name="l01015"></a>01015 <span class="comment"> /**</span>
<a name="l01016"></a>01016 <span class="comment"> * Number of packets to buffer for codec probing</span>
<a name="l01017"></a>01017 <span class="comment"> */</span>
<a name="l01018"></a><a class="code" href="avformat_8h.html#a1614829d41ffec53f2348ad30663e1b5">01018</a> <span class="preprocessor">#define MAX_PROBE_PACKETS 2500</span>
<a name="l01019"></a><a class="code" href="structAVStream.html#a1cd124860be31d0d275bb838ace6a98c">01019</a> <span class="preprocessor"></span> <span class="keywordtype">int</span> <a class="code" href="structAVStream.html#a1cd124860be31d0d275bb838ace6a98c">probe_packets</a>;
<a name="l01020"></a>01020 <span class="comment"></span>
<a name="l01021"></a>01021 <span class="comment"> /**</span>
<a name="l01022"></a>01022 <span class="comment"> * Number of frames that have been demuxed during av_find_stream_info()</span>
<a name="l01023"></a>01023 <span class="comment"> */</span>
<a name="l01024"></a><a class="code" href="structAVStream.html#adc161a5c5773d42cea315a5ad0454cf2">01024</a> <span class="keywordtype">int</span> <a class="code" href="structAVStream.html#adc161a5c5773d42cea315a5ad0454cf2" title="Number of frames that have been demuxed during av_find_stream_info()">codec_info_nb_frames</a>;
<a name="l01025"></a>01025
<a name="l01026"></a>01026 <span class="comment">/* av_read_frame() support */</span>
<a name="l01027"></a><a class="code" href="structAVStream.html#acd70b72d0c0514643a5c11b2c7c8202c">01027</a> <span class="keyword">enum</span> <a class="code" href="avformat_8h.html#afacbc85f23a50771e3801bda0a353d91">AVStreamParseType</a> <a class="code" href="structAVStream.html#acd70b72d0c0514643a5c11b2c7c8202c">need_parsing</a>;
<a name="l01028"></a><a class="code" href="structAVStream.html#a5b1079c1e244d644a86457e7e27545c1">01028</a> <span class="keyword">struct </span><a class="code" href="structAVCodecParserContext.html">AVCodecParserContext</a> *<a class="code" href="structAVStream.html#a5b1079c1e244d644a86457e7e27545c1">parser</a>;
<a name="l01029"></a>01029 <span class="comment"></span>
<a name="l01030"></a>01030 <span class="comment"> /**</span>
<a name="l01031"></a>01031 <span class="comment"> * last packet in packet_buffer for this stream when muxing.</span>
<a name="l01032"></a>01032 <span class="comment"> */</span>
<a name="l01033"></a><a class="code" href="structAVStream.html#ab8d53bc29f0761a3f87ec0b5ed7dc8d4">01033</a> <span class="keyword">struct </span><a class="code" href="structAVPacketList.html">AVPacketList</a> *<a class="code" href="structAVStream.html#ab8d53bc29f0761a3f87ec0b5ed7dc8d4" title="last packet in packet_buffer for this stream when muxing.">last_in_packet_buffer</a>;
<a name="l01034"></a><a class="code" href="structAVStream.html#a9749c451ce3c41a2345933252c4f96c6">01034</a> <a class="code" href="structAVProbeData.html" title="This structure contains the data a format has to probe a file.">AVProbeData</a> <a class="code" href="structAVStream.html#a9749c451ce3c41a2345933252c4f96c6">probe_data</a>;
<a name="l01035"></a><a class="code" href="avformat_8h.html#a1a5362deb573c857ad801ec212ef3583">01035</a> <span class="preprocessor">#define MAX_REORDER_DELAY 16</span>
<a name="l01036"></a><a class="code" href="structAVStream.html#ac13a11eddbc6618f2a7cb66b75f6eb68">01036</a> <span class="preprocessor"></span> int64_t <a class="code" href="structAVStream.html#ac13a11eddbc6618f2a7cb66b75f6eb68">pts_buffer</a>[<a class="code" href="avformat_8h.html#a1a5362deb573c857ad801ec212ef3583">MAX_REORDER_DELAY</a>+1];
<a name="l01037"></a>01037
<a name="l01038"></a><a class="code" href="structAVStream.html#abd901928978d19dc6dee65e88f28c6ad">01038</a> <a class="code" href="structAVIndexEntry.html">AVIndexEntry</a> *<a class="code" href="structAVStream.html#abd901928978d19dc6dee65e88f28c6ad" title="Only used if the format does not support seeking natively.">index_entries</a>; <span class="comment">/**< Only used if the format does not</span>
<a name="l01039"></a>01039 <span class="comment"> support seeking natively. */</span>
<a name="l01040"></a><a class="code" href="structAVStream.html#a79b269ebc3f36441cf8e8a8e8ea347f8">01040</a> <span class="keywordtype">int</span> <a class="code" href="structAVStream.html#a79b269ebc3f36441cf8e8a8e8ea347f8">nb_index_entries</a>;
<a name="l01041"></a><a class="code" href="structAVStream.html#a03161c9bc3f6339876506750a9c8681f">01041</a> <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> <a class="code" href="structAVStream.html#a03161c9bc3f6339876506750a9c8681f">index_entries_allocated_size</a>;
<a name="l01042"></a>01042 <span class="comment"></span>
<a name="l01043"></a>01043 <span class="comment"> /**</span>
<a name="l01044"></a>01044 <span class="comment"> * Real base framerate of the stream.</span>
<a name="l01045"></a>01045 <span class="comment"> * This is the lowest framerate with which all timestamps can be</span>
<a name="l01046"></a>01046 <span class="comment"> * represented accurately (it is the least common multiple of all</span>
<a name="l01047"></a>01047 <span class="comment"> * framerates in the stream). Note, this value is just a guess!</span>
<a name="l01048"></a>01048 <span class="comment"> * For example, if the time base is 1/90000 and all frames have either</span>
<a name="l01049"></a>01049 <span class="comment"> * approximately 3600 or 1800 timer ticks, then r_frame_rate will be 50/1.</span>
<a name="l01050"></a>01050 <span class="comment"> *</span>
<a name="l01051"></a>01051 <span class="comment"> * Code outside avformat should access this field using:</span>
<a name="l01052"></a>01052 <span class="comment"> * av_stream_get/set_r_frame_rate(stream)</span>
<a name="l01053"></a>01053 <span class="comment"> */</span>
<a name="l01054"></a><a class="code" href="structAVStream.html#ad63fb11cc1415e278e09ddc676e8a1ad">01054</a> <a class="code" href="structAVRational.html" title="rational number numerator/denominator">AVRational</a> <a class="code" href="structAVStream.html#ad63fb11cc1415e278e09ddc676e8a1ad" title="Real base framerate of the stream.">r_frame_rate</a>;
<a name="l01055"></a>01055 <span class="comment"></span>
<a name="l01056"></a>01056 <span class="comment"> /**</span>
<a name="l01057"></a>01057 <span class="comment"> * Stream Identifier</span>
<a name="l01058"></a>01058 <span class="comment"> * This is the MPEG-TS stream identifier +1</span>
<a name="l01059"></a>01059 <span class="comment"> * 0 means unknown</span>
<a name="l01060"></a>01060 <span class="comment"> */</span>
<a name="l01061"></a><a class="code" href="structAVStream.html#a1f5662cbf07c0b0d6a190f040ba93e16">01061</a> <span class="keywordtype">int</span> <a class="code" href="structAVStream.html#a1f5662cbf07c0b0d6a190f040ba93e16" title="Stream Identifier This is the MPEG-TS stream identifier +1 0 means unknown.">stream_identifier</a>;
<a name="l01062"></a>01062
<a name="l01063"></a><a class="code" href="structAVStream.html#af131ef55cdd62eebd3b337c6eb261007">01063</a> int64_t <a class="code" href="structAVStream.html#af131ef55cdd62eebd3b337c6eb261007">interleaver_chunk_size</a>;
<a name="l01064"></a><a class="code" href="structAVStream.html#a56c15542ff9ba2e0ee860cbb7532600a">01064</a> int64_t <a class="code" href="structAVStream.html#a56c15542ff9ba2e0ee860cbb7532600a">interleaver_chunk_duration</a>;
<a name="l01065"></a>01065 <span class="comment"></span>
<a name="l01066"></a>01066 <span class="comment"> /**</span>
<a name="l01067"></a>01067 <span class="comment"> * stream probing state</span>
<a name="l01068"></a>01068 <span class="comment"> * -1 -> probing finished</span>
<a name="l01069"></a>01069 <span class="comment"> * 0 -> no probing requested</span>
<a name="l01070"></a>01070 <span class="comment"> * rest -> perform probing with request_probe being the minimum score to accept.</span>
<a name="l01071"></a>01071 <span class="comment"> * NOT PART OF PUBLIC API</span>
<a name="l01072"></a>01072 <span class="comment"> */</span>
<a name="l01073"></a><a class="code" href="structAVStream.html#ab31d9fb6014bb52726ec3144a5d11218">01073</a> <span class="keywordtype">int</span> <a class="code" href="structAVStream.html#ab31d9fb6014bb52726ec3144a5d11218" title="stream probing state">request_probe</a>;<span class="comment"></span>
<a name="l01074"></a>01074 <span class="comment"> /**</span>
<a name="l01075"></a>01075 <span class="comment"> * Indicates that everything up to the next keyframe</span>
<a name="l01076"></a>01076 <span class="comment"> * should be discarded.</span>
<a name="l01077"></a>01077 <span class="comment"> */</span>
<a name="l01078"></a><a class="code" href="structAVStream.html#a097cabf56050028604b398d097c2a5a5">01078</a> <span class="keywordtype">int</span> <a class="code" href="structAVStream.html#a097cabf56050028604b398d097c2a5a5" title="Indicates that everything up to the next keyframe should be discarded.">skip_to_keyframe</a>;
<a name="l01079"></a>01079 <span class="comment"></span>
<a name="l01080"></a>01080 <span class="comment"> /**</span>
<a name="l01081"></a>01081 <span class="comment"> * Number of samples to skip at the start of the frame decoded from the next packet.</span>
<a name="l01082"></a>01082 <span class="comment"> */</span>
<a name="l01083"></a><a class="code" href="structAVStream.html#a50093ce4f0989bfbcac3d04fedc2093a">01083</a> <span class="keywordtype">int</span> <a class="code" href="structAVStream.html#a50093ce4f0989bfbcac3d04fedc2093a" title="Number of samples to skip at the start of the frame decoded from the next packet.">skip_samples</a>;
<a name="l01084"></a>01084 <span class="comment"></span>
<a name="l01085"></a>01085 <span class="comment"> /**</span>
<a name="l01086"></a>01086 <span class="comment"> * If not 0, the number of samples that should be skipped from the start of</span>
<a name="l01087"></a>01087 <span class="comment"> * the stream (the samples are removed from packets with pts==0, which also</span>
<a name="l01088"></a>01088 <span class="comment"> * assumes negative timestamps do not happen).</span>
<a name="l01089"></a>01089 <span class="comment"> * Intended for use with formats such as mp3 with ad-hoc gapless audio</span>
<a name="l01090"></a>01090 <span class="comment"> * support.</span>
<a name="l01091"></a>01091 <span class="comment"> */</span>
<a name="l01092"></a><a class="code" href="structAVStream.html#a8e462c640917bd7058ac3cf716564cd8">01092</a> int64_t <a class="code" href="structAVStream.html#a8e462c640917bd7058ac3cf716564cd8" title="If not 0, the number of samples that should be skipped from the start of the stream (the samples are ...">start_skip_samples</a>;
<a name="l01093"></a>01093 <span class="comment"></span>
<a name="l01094"></a>01094 <span class="comment"> /**</span>
<a name="l01095"></a>01095 <span class="comment"> * If not 0, the first audio sample that should be discarded from the stream.</span>
<a name="l01096"></a>01096 <span class="comment"> * This is broken by design (needs global sample count), but can't be</span>
<a name="l01097"></a>01097 <span class="comment"> * avoided for broken by design formats such as mp3 with ad-hoc gapless</span>
<a name="l01098"></a>01098 <span class="comment"> * audio support.</span>
<a name="l01099"></a>01099 <span class="comment"> */</span>
<a name="l01100"></a><a class="code" href="structAVStream.html#ad40dedb50c20e0669176e257eedf1bc0">01100</a> int64_t <a class="code" href="structAVStream.html#ad40dedb50c20e0669176e257eedf1bc0" title="If not 0, the first audio sample that should be discarded from the stream.">first_discard_sample</a>;
<a name="l01101"></a>01101 <span class="comment"></span>
<a name="l01102"></a>01102 <span class="comment"> /**</span>
<a name="l01103"></a>01103 <span class="comment"> * The sample after last sample that is intended to be discarded after</span>
<a name="l01104"></a>01104 <span class="comment"> * first_discard_sample. Works on frame boundaries only. Used to prevent</span>
<a name="l01105"></a>01105 <span class="comment"> * early EOF if the gapless info is broken (considered concatenated mp3s).</span>
<a name="l01106"></a>01106 <span class="comment"> */</span>
<a name="l01107"></a><a class="code" href="structAVStream.html#a9c52fc235fbdf30acd2d817824f3289a">01107</a> int64_t <a class="code" href="structAVStream.html#a9c52fc235fbdf30acd2d817824f3289a" title="The sample after last sample that is intended to be discarded after first_discard_sample.">last_discard_sample</a>;
<a name="l01108"></a>01108 <span class="comment"></span>
<a name="l01109"></a>01109 <span class="comment"> /**</span>
<a name="l01110"></a>01110 <span class="comment"> * Number of internally decoded frames, used internally in libavformat, do not access</span>
<a name="l01111"></a>01111 <span class="comment"> * its lifetime differs from info which is why it is not in that structure.</span>
<a name="l01112"></a>01112 <span class="comment"> */</span>
<a name="l01113"></a><a class="code" href="structAVStream.html#a8937969e00c765697d7a8e55a0221e04">01113</a> <span class="keywordtype">int</span> <a class="code" href="structAVStream.html#a8937969e00c765697d7a8e55a0221e04" title="Number of internally decoded frames, used internally in libavformat, do not access its lifetime diffe...">nb_decoded_frames</a>;
<a name="l01114"></a>01114 <span class="comment"></span>
<a name="l01115"></a>01115 <span class="comment"> /**</span>
<a name="l01116"></a>01116 <span class="comment"> * Timestamp offset added to timestamps before muxing</span>
<a name="l01117"></a>01117 <span class="comment"> * NOT PART OF PUBLIC API</span>
<a name="l01118"></a>01118 <span class="comment"> */</span>
<a name="l01119"></a><a class="code" href="structAVStream.html#ae0598c5dc8ff45ac6cb56a7a23847a37">01119</a> int64_t <a class="code" href="structAVStream.html#ae0598c5dc8ff45ac6cb56a7a23847a37" title="Timestamp offset added to timestamps before muxing NOT PART OF PUBLIC API.">mux_ts_offset</a>;
<a name="l01120"></a>01120 <span class="comment"></span>
<a name="l01121"></a>01121 <span class="comment"> /**</span>
<a name="l01122"></a>01122 <span class="comment"> * Internal data to check for wrapping of the time stamp</span>
<a name="l01123"></a>01123 <span class="comment"> */</span>
<a name="l01124"></a><a class="code" href="structAVStream.html#a5456b9e13c27ed10d42259f46297da5d">01124</a> int64_t <a class="code" href="structAVStream.html#a5456b9e13c27ed10d42259f46297da5d" title="Internal data to check for wrapping of the time stamp.">pts_wrap_reference</a>;
<a name="l01125"></a>01125 <span class="comment"></span>
<a name="l01126"></a>01126 <span class="comment"> /**</span>
<a name="l01127"></a>01127 <span class="comment"> * Options for behavior, when a wrap is detected.</span>
<a name="l01128"></a>01128 <span class="comment"> *</span>
<a name="l01129"></a>01129 <span class="comment"> * Defined by AV_PTS_WRAP_ values.</span>
<a name="l01130"></a>01130 <span class="comment"> *</span>
<a name="l01131"></a>01131 <span class="comment"> * If correction is enabled, there are two possibilities:</span>
<a name="l01132"></a>01132 <span class="comment"> * If the first time stamp is near the wrap point, the wrap offset</span>
<a name="l01133"></a>01133 <span class="comment"> * will be subtracted, which will create negative time stamps.</span>
<a name="l01134"></a>01134 <span class="comment"> * Otherwise the offset will be added.</span>
<a name="l01135"></a>01135 <span class="comment"> */</span>
<a name="l01136"></a><a class="code" href="structAVStream.html#aeb3eeb80578432b07b73cb5951c07c5c">01136</a> <span class="keywordtype">int</span> <a class="code" href="structAVStream.html#aeb3eeb80578432b07b73cb5951c07c5c" title="Options for behavior, when a wrap is detected.">pts_wrap_behavior</a>;
<a name="l01137"></a>01137 <span class="comment"></span>
<a name="l01138"></a>01138 <span class="comment"> /**</span>
<a name="l01139"></a>01139 <span class="comment"> * Internal data to prevent doing update_initial_durations() twice</span>
<a name="l01140"></a>01140 <span class="comment"> */</span>
<a name="l01141"></a><a class="code" href="structAVStream.html#a93fae347b93594cbe8ce7d414519b78a">01141</a> <span class="keywordtype">int</span> <a class="code" href="structAVStream.html#a93fae347b93594cbe8ce7d414519b78a" title="Internal data to prevent doing update_initial_durations() twice.">update_initial_durations_done</a>;
<a name="l01142"></a>01142 <span class="comment"></span>
<a name="l01143"></a>01143 <span class="comment"> /**</span>
<a name="l01144"></a>01144 <span class="comment"> * Internal data to generate dts from pts</span>
<a name="l01145"></a>01145 <span class="comment"> */</span>
<a name="l01146"></a><a class="code" href="structAVStream.html#ad3e2b5f6e98424f1e5e5bfc909cee38b">01146</a> int64_t <a class="code" href="structAVStream.html#ad3e2b5f6e98424f1e5e5bfc909cee38b" title="Internal data to generate dts from pts.">pts_reorder_error</a>[<a class="code" href="avformat_8h.html#a1a5362deb573c857ad801ec212ef3583">MAX_REORDER_DELAY</a>+1];
<a name="l01147"></a><a class="code" href="structAVStream.html#acd6fe77bbabf1ad6727492a2749e5275">01147</a> uint8_t <a class="code" href="structAVStream.html#acd6fe77bbabf1ad6727492a2749e5275">pts_reorder_error_count</a>[<a class="code" href="avformat_8h.html#a1a5362deb573c857ad801ec212ef3583">MAX_REORDER_DELAY</a>+1];
<a name="l01148"></a>01148 <span class="comment"></span>
<a name="l01149"></a>01149 <span class="comment"> /**</span>
<a name="l01150"></a>01150 <span class="comment"> * Internal data to analyze DTS and detect faulty mpeg streams</span>
<a name="l01151"></a>01151 <span class="comment"> */</span>
<a name="l01152"></a><a class="code" href="structAVStream.html#ada8c3bd5c2de4c1b5f0895e088167e03">01152</a> int64_t <a class="code" href="structAVStream.html#ada8c3bd5c2de4c1b5f0895e088167e03" title="Internal data to analyze DTS and detect faulty mpeg streams.">last_dts_for_order_check</a>;
<a name="l01153"></a><a class="code" href="structAVStream.html#a936ec7b1aa699303d20e4489ad4054e3">01153</a> uint8_t <a class="code" href="structAVStream.html#a936ec7b1aa699303d20e4489ad4054e3">dts_ordered</a>;
<a name="l01154"></a><a class="code" href="structAVStream.html#a02b107869ea9e14c784d1bfdade3ebf2">01154</a> uint8_t <a class="code" href="structAVStream.html#a02b107869ea9e14c784d1bfdade3ebf2">dts_misordered</a>;
<a name="l01155"></a>01155 <span class="comment"></span>
<a name="l01156"></a>01156 <span class="comment"> /**</span>
<a name="l01157"></a>01157 <span class="comment"> * Internal data to inject global side data</span>
<a name="l01158"></a>01158 <span class="comment"> */</span>
<a name="l01159"></a><a class="code" href="structAVStream.html#ab266c3ac8277c4bdf1199b5b1b2b1873">01159</a> <span class="keywordtype">int</span> <a class="code" href="structAVStream.html#ab266c3ac8277c4bdf1199b5b1b2b1873" title="Internal data to inject global side data.">inject_global_side_data</a>;
<a name="l01160"></a>01160 <span class="comment"></span>
<a name="l01161"></a>01161 <span class="comment"> /**</span>
<a name="l01162"></a>01162 <span class="comment"> * String containing paris of key and values describing recommended encoder configuration.</span>
<a name="l01163"></a>01163 <span class="comment"> * Paris are separated by ','.</span>
<a name="l01164"></a>01164 <span class="comment"> * Keys are separated from values by '='.</span>
<a name="l01165"></a>01165 <span class="comment"> */</span>
<a name="l01166"></a><a class="code" href="structAVStream.html#a990a5b024db89126b507197ebc4de4d0">01166</a> <span class="keywordtype">char</span> *<a class="code" href="structAVStream.html#a990a5b024db89126b507197ebc4de4d0" title="String containing paris of key and values describing recommended encoder configuration.">recommended_encoder_configuration</a>;
<a name="l01167"></a>01167 <span class="comment"></span>
<a name="l01168"></a>01168 <span class="comment"> /**</span>
<a name="l01169"></a>01169 <span class="comment"> * display aspect ratio (0 if unknown)</span>
<a name="l01170"></a>01170 <span class="comment"> * - encoding: unused</span>
<a name="l01171"></a>01171 <span class="comment"> * - decoding: Set by libavformat to calculate sample_aspect_ratio internally</span>
<a name="l01172"></a>01172 <span class="comment"> */</span>
<a name="l01173"></a><a class="code" href="structAVStream.html#a36740140a5b28afefab96c546e268df3">01173</a> <a class="code" href="structAVRational.html" title="rational number numerator/denominator">AVRational</a> <a class="code" href="structAVStream.html#a36740140a5b28afefab96c546e268df3" title="display aspect ratio (0 if unknown)">display_aspect_ratio</a>;
<a name="l01174"></a>01174 } <a class="code" href="structAVStream.html" title="Stream structure.">AVStream</a>;
<a name="l01175"></a>01175
<a name="l01176"></a>01176 <a class="code" href="structAVRational.html" title="rational number numerator/denominator">AVRational</a> <a class="code" href="avformat_8h.html#a7de783c245b561f78c8e57448922c5c4">av_stream_get_r_frame_rate</a>(<span class="keyword">const</span> <a class="code" href="structAVStream.html" title="Stream structure.">AVStream</a> *s);
<a name="l01177"></a>01177 <span class="keywordtype">void</span> <a class="code" href="avformat_8h.html#aa80eccaee483dd956fbfd95ae3be7bde">av_stream_set_r_frame_rate</a>(<a class="code" href="structAVStream.html" title="Stream structure.">AVStream</a> *s, <a class="code" href="structAVRational.html" title="rational number numerator/denominator">AVRational</a> r);
<a name="l01178"></a>01178 <span class="keyword">struct </span><a class="code" href="structAVCodecParserContext.html">AVCodecParserContext</a> *<a class="code" href="avformat_8h.html#a125e78a8250557501479986fead28a43">av_stream_get_parser</a>(<span class="keyword">const</span> <a class="code" href="structAVStream.html" title="Stream structure.">AVStream</a> *s);
<a name="l01179"></a>01179 <span class="keywordtype">char</span>* <a class="code" href="avformat_8h.html#aae3615058d8b33e0d85699f92f815993">av_stream_get_recommended_encoder_configuration</a>(<span class="keyword">const</span> <a class="code" href="structAVStream.html" title="Stream structure.">AVStream</a> *s);
<a name="l01180"></a>01180 <span class="keywordtype">void</span> <a class="code" href="avformat_8h.html#aab7af708867682c8b66023402937060c">av_stream_set_recommended_encoder_configuration</a>(<a class="code" href="structAVStream.html" title="Stream structure.">AVStream</a> *s, <span class="keywordtype">char</span> *configuration);
<a name="l01181"></a>01181 <span class="comment"></span>
<a name="l01182"></a>01182 <span class="comment">/**</span>
<a name="l01183"></a>01183 <span class="comment"> * Returns the pts of the last muxed packet + its duration</span>
<a name="l01184"></a>01184 <span class="comment"> *</span>
<a name="l01185"></a>01185 <span class="comment"> * the retuned value is undefined when used with a demuxer.</span>
<a name="l01186"></a>01186 <span class="comment"> */</span>
<a name="l01187"></a>01187 int64_t <a class="code" href="avformat_8h.html#aea2211b21ee4a9a443886c2e0a63be1c" title="Returns the pts of the last muxed packet + its duration.">av_stream_get_end_pts</a>(<span class="keyword">const</span> <a class="code" href="structAVStream.html" title="Stream structure.">AVStream</a> *st);
<a name="l01188"></a>01188
<a name="l01189"></a><a class="code" href="avformat_8h.html#a1f70b27f61ebf7a52fd53515af132f60">01189</a> <span class="preprocessor">#define AV_PROGRAM_RUNNING 1</span>
<a name="l01190"></a>01190 <span class="preprocessor"></span><span class="comment"></span>
<a name="l01191"></a>01191 <span class="comment">/**</span>
<a name="l01192"></a>01192 <span class="comment"> * New fields can be added to the end with minor version bumps.</span>
<a name="l01193"></a>01193 <span class="comment"> * Removal, reordering and changes to existing fields require a major</span>
<a name="l01194"></a>01194 <span class="comment"> * version bump.</span>
<a name="l01195"></a>01195 <span class="comment"> * sizeof(AVProgram) must not be used outside libav*.</span>
<a name="l01196"></a>01196 <span class="comment"> */</span>
<a name="l01197"></a><a class="code" href="structAVProgram.html">01197</a> <span class="keyword">typedef</span> <span class="keyword">struct </span><a class="code" href="structAVProgram.html" title="New fields can be added to the end with minor version bumps.">AVProgram</a> {
<a name="l01198"></a><a class="code" href="structAVProgram.html#a10cc799a98b37335e820b0bdb386eb95">01198</a> <span class="keywordtype">int</span> <a class="code" href="structAVProgram.html#a10cc799a98b37335e820b0bdb386eb95">id</a>;
<a name="l01199"></a><a class="code" href="structAVProgram.html#a8c87564167b87f54be9171778d51fe49">01199</a> <span class="keywordtype">int</span> <a class="code" href="structAVProgram.html#a8c87564167b87f54be9171778d51fe49">flags</a>;
<a name="l01200"></a><a class="code" href="structAVProgram.html#a9c7a07c08a1f960aaa49f3f47633af5c">01200</a> <span class="keyword">enum</span> <a class="code" href="group__lavc__decoding.html#ga352363bce7d3ed82c101b3bc001d1c16">AVDiscard</a> <a class="code" href="structAVProgram.html#a9c7a07c08a1f960aaa49f3f47633af5c" title="selects which program to discard and which to feed to the caller">discard</a>; <span class="comment">///< selects which program to discard and which to feed to the caller</span>
<a name="l01201"></a><a class="code" href="structAVProgram.html#a7967d41af4812ed61a28762e988c7a02">01201</a> <span class="comment"></span> <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> *<a class="code" href="structAVProgram.html#a7967d41af4812ed61a28762e988c7a02">stream_index</a>;
<a name="l01202"></a><a class="code" href="structAVProgram.html#a136cf29d2aa5b0e4c6d743406c5e39d1">01202</a> <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> <a class="code" href="structAVProgram.html#a136cf29d2aa5b0e4c6d743406c5e39d1">nb_stream_indexes</a>;
<a name="l01203"></a><a class="code" href="structAVProgram.html#ae9dab38d4694e3da9cba0f882f4e43d3">01203</a> <a class="code" href="group__lavu__dict.html#ga1d7cc0833bee918994a600556410315f">AVDictionary</a> *<a class="code" href="structAVProgram.html#ae9dab38d4694e3da9cba0f882f4e43d3">metadata</a>;
<a name="l01204"></a>01204
<a name="l01205"></a><a class="code" href="structAVProgram.html#a4c1539ea3c98da979b95a59a3ea163cb">01205</a> <span class="keywordtype">int</span> <a class="code" href="structAVProgram.html#a4c1539ea3c98da979b95a59a3ea163cb">program_num</a>;
<a name="l01206"></a><a class="code" href="structAVProgram.html#a02011963a63c291c6dc6d4eefa56cd69">01206</a> <span class="keywordtype">int</span> <a class="code" href="structAVProgram.html#a02011963a63c291c6dc6d4eefa56cd69">pmt_pid</a>;
<a name="l01207"></a><a class="code" href="structAVProgram.html#a7e026323df87e84a72ec5e5c8ce341a5">01207</a> <span class="keywordtype">int</span> <a class="code" href="structAVProgram.html#a7e026323df87e84a72ec5e5c8ce341a5">pcr_pid</a>;
<a name="l01208"></a>01208
<a name="l01209"></a>01209 <span class="comment">/*****************************************************************</span>
<a name="l01210"></a>01210 <span class="comment"> * All fields below this line are not part of the public API. They</span>
<a name="l01211"></a>01211 <span class="comment"> * may not be used outside of libavformat and can be changed and</span>
<a name="l01212"></a>01212 <span class="comment"> * removed at will.</span>
<a name="l01213"></a>01213 <span class="comment"> * New public fields should be added right above.</span>
<a name="l01214"></a>01214 <span class="comment"> *****************************************************************</span>
<a name="l01215"></a>01215 <span class="comment"> */</span>
<a name="l01216"></a><a class="code" href="structAVProgram.html#a2276db4d51695120664d527f20b7c532">01216</a> int64_t <a class="code" href="structAVProgram.html#a2276db4d51695120664d527f20b7c532">start_time</a>;
<a name="l01217"></a><a class="code" href="structAVProgram.html#a5a7795c918153d0f64d68a838e172db4">01217</a> int64_t <a class="code" href="structAVProgram.html#a5a7795c918153d0f64d68a838e172db4">end_time</a>;
<a name="l01218"></a>01218
<a name="l01219"></a><a class="code" href="structAVProgram.html#a7e539e286876577e158039f6e7678452">01219</a> int64_t <a class="code" href="structAVProgram.html#a7e539e286876577e158039f6e7678452" title="reference dts for wrap detection">pts_wrap_reference</a>; <span class="comment">///< reference dts for wrap detection</span>
<a name="l01220"></a><a class="code" href="structAVProgram.html#aa3f8af78093a910ff766ac5af381758b">01220</a> <span class="comment"></span> <span class="keywordtype">int</span> <a class="code" href="structAVProgram.html#aa3f8af78093a910ff766ac5af381758b" title="behavior on wrap detection">pts_wrap_behavior</a>; <span class="comment">///< behavior on wrap detection</span>
<a name="l01221"></a>01221 <span class="comment"></span>} <a class="code" href="structAVProgram.html" title="New fields can be added to the end with minor version bumps.">AVProgram</a>;
<a name="l01222"></a>01222
<a name="l01223"></a><a class="code" href="avformat_8h.html#a42e3c3d72e561fdc501613962fccc4aa">01223</a> <span class="preprocessor">#define AVFMTCTX_NOHEADER 0x0001 </span><span class="comment">/**< signal that no header is present</span>
<a name="l01224"></a>01224 <span class="comment"> (streams are added dynamically) */</span>
<a name="l01225"></a>01225
<a name="l01226"></a><a class="code" href="structAVChapter.html">01226</a> <span class="keyword">typedef</span> <span class="keyword">struct </span><a class="code" href="structAVChapter.html">AVChapter</a> {
<a name="l01227"></a><a class="code" href="structAVChapter.html#a2a48026c205e948f8bfaafe92d41f752">01227</a> <span class="keywordtype">int</span> <a class="code" href="structAVChapter.html#a2a48026c205e948f8bfaafe92d41f752" title="unique ID to identify the chapter">id</a>; <span class="comment">///< unique ID to identify the chapter</span>
<a name="l01228"></a><a class="code" href="structAVChapter.html#acb5cb6ce9bb6b9f4b970a919f4899818">01228</a> <span class="comment"></span> <a class="code" href="structAVRational.html" title="rational number numerator/denominator">AVRational</a> <a class="code" href="structAVChapter.html#acb5cb6ce9bb6b9f4b970a919f4899818" title="time base in which the start/end timestamps are specified">time_base</a>; <span class="comment">///< time base in which the start/end timestamps are specified</span>
<a name="l01229"></a><a class="code" href="structAVChapter.html#a499a5062224e22249be6f2d16f74c449">01229</a> <span class="comment"></span> int64_t <a class="code" href="structAVChapter.html#a499a5062224e22249be6f2d16f74c449">start</a>, <a class="code" href="structAVChapter.html#ab68f32dc07fac89b4364e86483b00f3e" title="chapter start/end time in time_base units">end</a>; <span class="comment">///< chapter start/end time in time_base units</span>
<a name="l01230"></a><a class="code" href="structAVChapter.html#a998ea9c9f86547970d58f0b405d55332">01230</a> <span class="comment"></span> <a class="code" href="group__lavu__dict.html#ga1d7cc0833bee918994a600556410315f">AVDictionary</a> *<a class="code" href="structAVChapter.html#a998ea9c9f86547970d58f0b405d55332">metadata</a>;
<a name="l01231"></a>01231 } <a class="code" href="structAVChapter.html">AVChapter</a>;
<a name="l01232"></a>01232
<a name="l01233"></a>01233 <span class="comment"></span>
<a name="l01234"></a>01234 <span class="comment">/**</span>
<a name="l01235"></a>01235 <span class="comment"> * Callback used by devices to communicate with application.</span>
<a name="l01236"></a>01236 <span class="comment"> */</span>
<a name="l01237"></a><a class="code" href="avformat_8h.html#a8232a706c09cba000025f64ddcd05495">01237</a> <span class="keyword">typedef</span> int (*<a class="code" href="avformat_8h.html#a8232a706c09cba000025f64ddcd05495" title="Callback used by devices to communicate with application.">av_format_control_message</a>)(<span class="keyword">struct </span><a class="code" href="structAVFormatContext.html" title="Format I/O context.">AVFormatContext</a> *s, <span class="keywordtype">int</span> type,
<a name="l01238"></a>01238 <span class="keywordtype">void</span> *data, <span class="keywordtype">size_t</span> data_size);
<a name="l01239"></a>01239
<a name="l01240"></a><a class="code" href="avformat_8h.html#ab669581238f1509dc9d66f58924a955d">01240</a> <span class="keyword">typedef</span> int (*<a class="code" href="avformat_8h.html#ab669581238f1509dc9d66f58924a955d">AVOpenCallback</a>)(<span class="keyword">struct </span><a class="code" href="structAVFormatContext.html" title="Format I/O context.">AVFormatContext</a> *s, <a class="code" href="structAVIOContext.html" title="Bytestream IO Context.">AVIOContext</a> **<a class="code" href="structAVFormatContext.html#a1e7324262b6b78522e52064daaa7bc87" title="I/O context.">pb</a>, <span class="keyword">const</span> <span class="keywordtype">char</span> *url, <span class="keywordtype">int</span> <a class="code" href="structAVFormatContext.html#a32379cc371463b235d54235d4af06a15" title="Flags modifying the (de)muxer behaviour.">flags</a>,
<a name="l01241"></a>01241 <span class="keyword">const</span> <a class="code" href="structAVIOInterruptCB.html" title="Callback for checking whether to abort blocking functions.">AVIOInterruptCB</a> *int_cb, <a class="code" href="group__lavu__dict.html#ga1d7cc0833bee918994a600556410315f">AVDictionary</a> **options);
<a name="l01242"></a>01242 <span class="comment"></span>
<a name="l01243"></a>01243 <span class="comment">/**</span>
<a name="l01244"></a>01244 <span class="comment"> * The duration of a video can be estimated through various ways, and this enum can be used</span>
<a name="l01245"></a>01245 <span class="comment"> * to know how the duration was estimated.</span>
<a name="l01246"></a>01246 <span class="comment"> */</span>
<a name="l01247"></a><a class="code" href="avformat_8h.html#a7c2692ffa20d3e888e40e79eeda6d73b">01247</a> <span class="keyword">enum</span> <a class="code" href="avformat_8h.html#a7c2692ffa20d3e888e40e79eeda6d73b" title="The duration of a video can be estimated through various ways, and this enum can be used to know how ...">AVDurationEstimationMethod</a> {
<a name="l01248"></a><a class="code" href="avformat_8h.html#a7c2692ffa20d3e888e40e79eeda6d73bac94465d3290399477775fe094ab8f75a">01248</a> <a class="code" href="avformat_8h.html#a7c2692ffa20d3e888e40e79eeda6d73bac94465d3290399477775fe094ab8f75a" title="Duration accurately estimated from PTSes.">AVFMT_DURATION_FROM_PTS</a>, <span class="comment">///< Duration accurately estimated from PTSes</span>
<a name="l01249"></a><a class="code" href="avformat_8h.html#a7c2692ffa20d3e888e40e79eeda6d73bae92edb9576c3d6dd68f49a849a2ec6c0">01249</a> <span class="comment"></span> <a class="code" href="avformat_8h.html#a7c2692ffa20d3e888e40e79eeda6d73bae92edb9576c3d6dd68f49a849a2ec6c0" title="Duration estimated from a stream with a known duration.">AVFMT_DURATION_FROM_STREAM</a>, <span class="comment">///< Duration estimated from a stream with a known duration</span>
<a name="l01250"></a><a class="code" href="avformat_8h.html#a7c2692ffa20d3e888e40e79eeda6d73ba6185e1e7f8dfae85596779408ef496b2">01250</a> <span class="comment"></span> <a class="code" href="avformat_8h.html#a7c2692ffa20d3e888e40e79eeda6d73ba6185e1e7f8dfae85596779408ef496b2" title="Duration estimated from bitrate (less accurate)">AVFMT_DURATION_FROM_BITRATE</a> <span class="comment">///< Duration estimated from bitrate (less accurate)</span>
<a name="l01251"></a>01251 <span class="comment"></span>};
<a name="l01252"></a>01252
<a name="l01253"></a><a class="code" href="avformat_8h.html#a7bec8d592652431045d81a02fef74f28">01253</a> <span class="keyword">typedef</span> <span class="keyword">struct </span><a class="code" href="avformat_8h.html#a7bec8d592652431045d81a02fef74f28">AVFormatInternal</a> <a class="code" href="avformat_8h.html#a7bec8d592652431045d81a02fef74f28">AVFormatInternal</a>;
<a name="l01254"></a>01254 <span class="comment"></span>
<a name="l01255"></a>01255 <span class="comment">/**</span>
<a name="l01256"></a>01256 <span class="comment"> * Format I/O context.</span>
<a name="l01257"></a>01257 <span class="comment"> * New fields can be added to the end with minor version bumps.</span>
<a name="l01258"></a>01258 <span class="comment"> * Removal, reordering and changes to existing fields require a major</span>
<a name="l01259"></a>01259 <span class="comment"> * version bump.</span>
<a name="l01260"></a>01260 <span class="comment"> * sizeof(AVFormatContext) must not be used outside libav*, use</span>
<a name="l01261"></a>01261 <span class="comment"> * avformat_alloc_context() to create an AVFormatContext.</span>
<a name="l01262"></a>01262 <span class="comment"> */</span>
<a name="l01263"></a><a class="code" href="structAVFormatContext.html">01263</a> <span class="keyword">typedef</span> <span class="keyword">struct </span><a class="code" href="structAVFormatContext.html" title="Format I/O context.">AVFormatContext</a> {<span class="comment"></span>
<a name="l01264"></a>01264 <span class="comment"> /**</span>
<a name="l01265"></a>01265 <span class="comment"> * A class for logging and @ref avoptions. Set by avformat_alloc_context().</span>
<a name="l01266"></a>01266 <span class="comment"> * Exports (de)muxer private options if they exist.</span>
<a name="l01267"></a>01267 <span class="comment"> */</span>
<a name="l01268"></a><a class="code" href="structAVFormatContext.html#a0c396740b9a2487aa57d4352d2dc1687">01268</a> <span class="keyword">const</span> <a class="code" href="structAVClass.html" title="Describe the class of an AVClass context structure.">AVClass</a> *<a class="code" href="structAVFormatContext.html#a0c396740b9a2487aa57d4352d2dc1687" title="A class for logging and AVOptions.">av_class</a>;
<a name="l01269"></a>01269 <span class="comment"></span>
<a name="l01270"></a>01270 <span class="comment"> /**</span>
<a name="l01271"></a>01271 <span class="comment"> * The input container format.</span>
<a name="l01272"></a>01272 <span class="comment"> *</span>
<a name="l01273"></a>01273 <span class="comment"> * Demuxing only, set by avformat_open_input().</span>
<a name="l01274"></a>01274 <span class="comment"> */</span>
<a name="l01275"></a><a class="code" href="structAVFormatContext.html#a78efc5a53c21c8d81197445207ac4374">01275</a> <span class="keyword">struct </span><a class="code" href="structAVInputFormat.html">AVInputFormat</a> *<a class="code" href="structAVFormatContext.html#a78efc5a53c21c8d81197445207ac4374" title="The input container format.">iformat</a>;
<a name="l01276"></a>01276 <span class="comment"></span>
<a name="l01277"></a>01277 <span class="comment"> /**</span>
<a name="l01278"></a>01278 <span class="comment"> * The output container format.</span>
<a name="l01279"></a>01279 <span class="comment"> *</span>
<a name="l01280"></a>01280 <span class="comment"> * Muxing only, must be set by the caller before avformat_write_header().</span>
<a name="l01281"></a>01281 <span class="comment"> */</span>
<a name="l01282"></a><a class="code" href="structAVFormatContext.html#a20d80ac07e38ff5c268d15aaf2798b98">01282</a> <span class="keyword">struct </span><a class="code" href="structAVOutputFormat.html">AVOutputFormat</a> *<a class="code" href="structAVFormatContext.html#a20d80ac07e38ff5c268d15aaf2798b98" title="The output container format.">oformat</a>;
<a name="l01283"></a>01283 <span class="comment"></span>
<a name="l01284"></a>01284 <span class="comment"> /**</span>
<a name="l01285"></a>01285 <span class="comment"> * Format private data. This is an AVOptions-enabled struct</span>
<a name="l01286"></a>01286 <span class="comment"> * if and only if iformat/oformat.priv_class is not NULL.</span>
<a name="l01287"></a>01287 <span class="comment"> *</span>
<a name="l01288"></a>01288 <span class="comment"> * - muxing: set by avformat_write_header()</span>
<a name="l01289"></a>01289 <span class="comment"> * - demuxing: set by avformat_open_input()</span>
<a name="l01290"></a>01290 <span class="comment"> */</span>
<a name="l01291"></a><a class="code" href="structAVFormatContext.html#ac4c0777e54085af2f3f1b27130e2b21b">01291</a> <span class="keywordtype">void</span> *<a class="code" href="structAVFormatContext.html#ac4c0777e54085af2f3f1b27130e2b21b" title="Format private data.">priv_data</a>;
<a name="l01292"></a>01292 <span class="comment"></span>
<a name="l01293"></a>01293 <span class="comment"> /**</span>
<a name="l01294"></a>01294 <span class="comment"> * I/O context.</span>
<a name="l01295"></a>01295 <span class="comment"> *</span>
<a name="l01296"></a>01296 <span class="comment"> * - demuxing: either set by the user before avformat_open_input() (then</span>
<a name="l01297"></a>01297 <span class="comment"> * the user must close it manually) or set by avformat_open_input().</span>
<a name="l01298"></a>01298 <span class="comment"> * - muxing: set by the user before avformat_write_header(). The caller must</span>
<a name="l01299"></a>01299 <span class="comment"> * take care of closing / freeing the IO context.</span>
<a name="l01300"></a>01300 <span class="comment"> *</span>
<a name="l01301"></a>01301 <span class="comment"> * Do NOT set this field if AVFMT_NOFILE flag is set in</span>
<a name="l01302"></a>01302 <span class="comment"> * iformat/oformat.flags. In such a case, the (de)muxer will handle</span>
<a name="l01303"></a>01303 <span class="comment"> * I/O in some other way and this field will be NULL.</span>
<a name="l01304"></a>01304 <span class="comment"> */</span>
<a name="l01305"></a><a class="code" href="structAVFormatContext.html#a1e7324262b6b78522e52064daaa7bc87">01305</a> <a class="code" href="structAVIOContext.html" title="Bytestream IO Context.">AVIOContext</a> *<a class="code" href="structAVFormatContext.html#a1e7324262b6b78522e52064daaa7bc87" title="I/O context.">pb</a>;
<a name="l01306"></a>01306
<a name="l01307"></a>01307 <span class="comment">/* stream info */</span><span class="comment"></span>
<a name="l01308"></a>01308 <span class="comment"> /**</span>
<a name="l01309"></a>01309 <span class="comment"> * Flags signalling stream properties. A combination of AVFMTCTX_*.</span>
<a name="l01310"></a>01310 <span class="comment"> * Set by libavformat.</span>
<a name="l01311"></a>01311 <span class="comment"> */</span>
<a name="l01312"></a><a class="code" href="structAVFormatContext.html#a4e6076343df1ffc2e16cedbba3f3f397">01312</a> <span class="keywordtype">int</span> <a class="code" href="structAVFormatContext.html#a4e6076343df1ffc2e16cedbba3f3f397" title="Flags signalling stream properties.">ctx_flags</a>;
<a name="l01313"></a>01313 <span class="comment"></span>
<a name="l01314"></a>01314 <span class="comment"> /**</span>
<a name="l01315"></a>01315 <span class="comment"> * Number of elements in AVFormatContext.streams.</span>
<a name="l01316"></a>01316 <span class="comment"> *</span>
<a name="l01317"></a>01317 <span class="comment"> * Set by avformat_new_stream(), must not be modified by any other code.</span>
<a name="l01318"></a>01318 <span class="comment"> */</span>
<a name="l01319"></a><a class="code" href="structAVFormatContext.html#a0b748d924898b08b89ff4974afd17285">01319</a> <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> <a class="code" href="structAVFormatContext.html#a0b748d924898b08b89ff4974afd17285" title="Number of elements in AVFormatContext.streams.">nb_streams</a>;<span class="comment"></span>
<a name="l01320"></a>01320 <span class="comment"> /**</span>
<a name="l01321"></a>01321 <span class="comment"> * A list of all streams in the file. New streams are created with</span>
<a name="l01322"></a>01322 <span class="comment"> * avformat_new_stream().</span>
<a name="l01323"></a>01323 <span class="comment"> *</span>
<a name="l01324"></a>01324 <span class="comment"> * - demuxing: streams are created by libavformat in avformat_open_input().</span>
<a name="l01325"></a>01325 <span class="comment"> * If AVFMTCTX_NOHEADER is set in ctx_flags, then new streams may also</span>
<a name="l01326"></a>01326 <span class="comment"> * appear in av_read_frame().</span>
<a name="l01327"></a>01327 <span class="comment"> * - muxing: streams are created by the user before avformat_write_header().</span>
<a name="l01328"></a>01328 <span class="comment"> *</span>
<a name="l01329"></a>01329 <span class="comment"> * Freed by libavformat in avformat_free_context().</span>
<a name="l01330"></a>01330 <span class="comment"> */</span>
<a name="l01331"></a><a class="code" href="structAVFormatContext.html#acfefb6b6cf21e87a0dcbd1a547ba2348">01331</a> <a class="code" href="structAVStream.html" title="Stream structure.">AVStream</a> **<a class="code" href="structAVFormatContext.html#acfefb6b6cf21e87a0dcbd1a547ba2348" title="A list of all streams in the file.">streams</a>;
<a name="l01332"></a>01332 <span class="comment"></span>
<a name="l01333"></a>01333 <span class="comment"> /**</span>
<a name="l01334"></a>01334 <span class="comment"> * input or output filename</span>
<a name="l01335"></a>01335 <span class="comment"> *</span>
<a name="l01336"></a>01336 <span class="comment"> * - demuxing: set by avformat_open_input()</span>
<a name="l01337"></a>01337 <span class="comment"> * - muxing: may be set by the caller before avformat_write_header()</span>
<a name="l01338"></a>01338 <span class="comment"> */</span>
<a name="l01339"></a><a class="code" href="structAVFormatContext.html#a65a978cf0ca3c0f0da52840d2e97f9ea">01339</a> <span class="keywordtype">char</span> <a class="code" href="structAVFormatContext.html#a65a978cf0ca3c0f0da52840d2e97f9ea" title="input or output filename">filename</a>[1024];
<a name="l01340"></a>01340 <span class="comment"></span>
<a name="l01341"></a>01341 <span class="comment"> /**</span>
<a name="l01342"></a>01342 <span class="comment"> * Position of the first frame of the component, in</span>
<a name="l01343"></a>01343 <span class="comment"> * AV_TIME_BASE fractional seconds. NEVER set this value directly:</span>
<a name="l01344"></a>01344 <span class="comment"> * It is deduced from the AVStream values.</span>
<a name="l01345"></a>01345 <span class="comment"> *</span>
<a name="l01346"></a>01346 <span class="comment"> * Demuxing only, set by libavformat.</span>
<a name="l01347"></a>01347 <span class="comment"> */</span>
<a name="l01348"></a><a class="code" href="structAVFormatContext.html#a2590129e00adfa726ab2033a10e905e9">01348</a> int64_t <a class="code" href="structAVFormatContext.html#a2590129e00adfa726ab2033a10e905e9" title="Position of the first frame of the component, in AV_TIME_BASE fractional seconds.">start_time</a>;
<a name="l01349"></a>01349 <span class="comment"></span>
<a name="l01350"></a>01350 <span class="comment"> /**</span>
<a name="l01351"></a>01351 <span class="comment"> * Duration of the stream, in AV_TIME_BASE fractional</span>
<a name="l01352"></a>01352 <span class="comment"> * seconds. Only set this value if you know none of the individual stream</span>
<a name="l01353"></a>01353 <span class="comment"> * durations and also do not set any of them. This is deduced from the</span>
<a name="l01354"></a>01354 <span class="comment"> * AVStream values if not set.</span>
<a name="l01355"></a>01355 <span class="comment"> *</span>
<a name="l01356"></a>01356 <span class="comment"> * Demuxing only, set by libavformat.</span>
<a name="l01357"></a>01357 <span class="comment"> */</span>
<a name="l01358"></a><a class="code" href="structAVFormatContext.html#ad0ea78ac48f5bb0a15a15c1c472744d9">01358</a> int64_t <a class="code" href="structAVFormatContext.html#ad0ea78ac48f5bb0a15a15c1c472744d9" title="Duration of the stream, in AV_TIME_BASE fractional seconds.">duration</a>;
<a name="l01359"></a>01359 <span class="comment"></span>
<a name="l01360"></a>01360 <span class="comment"> /**</span>
<a name="l01361"></a>01361 <span class="comment"> * Total stream bitrate in bit/s, 0 if not</span>
<a name="l01362"></a>01362 <span class="comment"> * available. Never set it directly if the file_size and the</span>
<a name="l01363"></a>01363 <span class="comment"> * duration are known as FFmpeg can compute it automatically.</span>
<a name="l01364"></a>01364 <span class="comment"> */</span>
<a name="l01365"></a><a class="code" href="structAVFormatContext.html#a4f7a7b9b1313907c88e62b03f3e569e6">01365</a> <span class="keywordtype">int</span> <a class="code" href="structAVFormatContext.html#a4f7a7b9b1313907c88e62b03f3e569e6" title="Total stream bitrate in bit/s, 0 if not available.">bit_rate</a>;
<a name="l01366"></a>01366
<a name="l01367"></a><a class="code" href="structAVFormatContext.html#a0739c2952969d3c67788f02ea829f549">01367</a> <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> <a class="code" href="structAVFormatContext.html#a0739c2952969d3c67788f02ea829f549">packet_size</a>;
<a name="l01368"></a><a class="code" href="structAVFormatContext.html#a58422ed3d461b3440a15cf057ac5f5b7">01368</a> <span class="keywordtype">int</span> <a class="code" href="structAVFormatContext.html#a58422ed3d461b3440a15cf057ac5f5b7">max_delay</a>;
<a name="l01369"></a>01369 <span class="comment"></span>
<a name="l01370"></a>01370 <span class="comment"> /**</span>
<a name="l01371"></a>01371 <span class="comment"> * Flags modifying the (de)muxer behaviour. A combination of AVFMT_FLAG_*.</span>
<a name="l01372"></a>01372 <span class="comment"> * Set by the user before avformat_open_input() / avformat_write_header().</span>
<a name="l01373"></a>01373 <span class="comment"> */</span>
<a name="l01374"></a><a class="code" href="structAVFormatContext.html#a32379cc371463b235d54235d4af06a15">01374</a> <span class="keywordtype">int</span> <a class="code" href="structAVFormatContext.html#a32379cc371463b235d54235d4af06a15" title="Flags modifying the (de)muxer behaviour.">flags</a>;
<a name="l01375"></a><a class="code" href="avformat_8h.html#a69e2c8bc119c0245ff6092f9db4d12ae">01375</a> <span class="preprocessor">#define AVFMT_FLAG_GENPTS 0x0001 ///< Generate missing pts even if it requires parsing future frames.</span>
<a name="l01376"></a><a class="code" href="avformat_8h.html#a2d5c3fab0686ccb9f517dec49048d421">01376</a> <span class="preprocessor"></span><span class="preprocessor">#define AVFMT_FLAG_IGNIDX 0x0002 ///< Ignore index.</span>
<a name="l01377"></a><a class="code" href="avformat_8h.html#a4fd189c4f2464afad342133be7bf6aeb">01377</a> <span class="preprocessor"></span><span class="preprocessor">#define AVFMT_FLAG_NONBLOCK 0x0004 ///< Do not block when reading packets from input.</span>
<a name="l01378"></a><a class="code" href="avformat_8h.html#a48978eb2565907e8794910a1178897e0">01378</a> <span class="preprocessor"></span><span class="preprocessor">#define AVFMT_FLAG_IGNDTS 0x0008 ///< Ignore DTS on frames that contain both DTS & PTS</span>
<a name="l01379"></a><a class="code" href="avformat_8h.html#acafe6c256110801c5bfb79da1d4ec0fa">01379</a> <span class="preprocessor"></span><span class="preprocessor">#define AVFMT_FLAG_NOFILLIN 0x0010 ///< Do not infer any values from other values, just return what is stored in the container</span>
<a name="l01380"></a><a class="code" href="avformat_8h.html#af94b1dbe5f4e7c0ab04dc05ea18c1d81">01380</a> <span class="preprocessor"></span><span class="preprocessor">#define AVFMT_FLAG_NOPARSE 0x0020 ///< Do not use AVParsers, you also must set AVFMT_FLAG_NOFILLIN as the fillin code works on frames and no parsing -> no frames. Also seeking to frames can not work if parsing to find frame boundaries has been disabled</span>
<a name="l01381"></a><a class="code" href="avformat_8h.html#aee579ebc55f7067a964fbfd09c14e8c2">01381</a> <span class="preprocessor"></span><span class="preprocessor">#define AVFMT_FLAG_NOBUFFER 0x0040 ///< Do not buffer frames when possible</span>
<a name="l01382"></a><a class="code" href="avformat_8h.html#ac5fdea71141dcc30346a57df75cf408e">01382</a> <span class="preprocessor"></span><span class="preprocessor">#define AVFMT_FLAG_CUSTOM_IO 0x0080 ///< The caller has supplied a custom AVIOContext, don't avio_close() it.</span>
<a name="l01383"></a><a class="code" href="avformat_8h.html#a936da4a8820e0d9206856620ee451a10">01383</a> <span class="preprocessor"></span><span class="preprocessor">#define AVFMT_FLAG_DISCARD_CORRUPT 0x0100 ///< Discard frames marked corrupted</span>
<a name="l01384"></a><a class="code" href="avformat_8h.html#a1d9ca54477304fc143bc6594c4dec102">01384</a> <span class="preprocessor"></span><span class="preprocessor">#define AVFMT_FLAG_FLUSH_PACKETS 0x0200 ///< Flush the AVIOContext every packet.</span>
<a name="l01385"></a>01385 <span class="preprocessor"></span><span class="comment">/**</span>
<a name="l01386"></a>01386 <span class="comment"> * When muxing, try to avoid writing any random/volatile data to the output.</span>
<a name="l01387"></a>01387 <span class="comment"> * This includes any random IDs, real-time timestamps/dates, muxer version, etc.</span>
<a name="l01388"></a>01388 <span class="comment"> *</span>
<a name="l01389"></a>01389 <span class="comment"> * This flag is mainly intended for testing.</span>
<a name="l01390"></a>01390 <span class="comment"> */</span>
<a name="l01391"></a><a class="code" href="avformat_8h.html#a2fa1d95841e62af509ba733a11c1b25b">01391</a> <span class="preprocessor">#define AVFMT_FLAG_BITEXACT 0x0400</span>
<a name="l01392"></a><a class="code" href="avformat_8h.html#a3b150996e2b51660a01398a161c0cd1d">01392</a> <span class="preprocessor"></span><span class="preprocessor">#define AVFMT_FLAG_MP4A_LATM 0x8000 ///< Enable RTP MP4A-LATM payload</span>
<a name="l01393"></a><a class="code" href="avformat_8h.html#a19d3097af30fbd65caa79464657ce4bd">01393</a> <span class="preprocessor"></span><span class="preprocessor">#define AVFMT_FLAG_SORT_DTS 0x10000 ///< try to interleave outputted packets by dts (using this flag can slow demuxing down)</span>
<a name="l01394"></a><a class="code" href="avformat_8h.html#a50b1ae2089b32bf048b79ff3bd7175f4">01394</a> <span class="preprocessor"></span><span class="preprocessor">#define AVFMT_FLAG_PRIV_OPT 0x20000 ///< Enable use of private options by delaying codec open (this could be made default once all code is converted)</span>
<a name="l01395"></a><a class="code" href="avformat_8h.html#ae71b7bb752351a8b326bf8c092b0e509">01395</a> <span class="preprocessor"></span><span class="preprocessor">#define AVFMT_FLAG_KEEP_SIDE_DATA 0x40000 ///< Don't merge side data but keep it separate.</span>
<a name="l01396"></a><a class="code" href="avformat_8h.html#a68c81e3fd8f1229965ae6dfceb42f5bf">01396</a> <span class="preprocessor"></span><span class="preprocessor">#define AVFMT_FLAG_FAST_SEEK 0x80000 ///< Enable fast, but inaccurate seeks for some formats</span>
<a name="l01397"></a>01397 <span class="preprocessor"></span><span class="comment"></span>
<a name="l01398"></a>01398 <span class="comment"> /**</span>
<a name="l01399"></a>01399 <span class="comment"> * @deprecated deprecated in favor of probesize2</span>
<a name="l01400"></a>01400 <span class="comment"> */</span>
<a name="l01401"></a><a class="code" href="structAVFormatContext.html#afcff2757459cf56050b2d908f46957b0">01401</a> <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> <a class="code" href="structAVFormatContext.html#afcff2757459cf56050b2d908f46957b0">probesize</a>;
<a name="l01402"></a>01402 <span class="comment"></span>
<a name="l01403"></a>01403 <span class="comment"> /**</span>
<a name="l01404"></a>01404 <span class="comment"> * @deprecated deprecated in favor of max_analyze_duration2</span>
<a name="l01405"></a>01405 <span class="comment"> */</span>
<a name="l01406"></a>01406 <a class="code" href="attributes_8h.html#aa6d076561d3a9eea4729ee632652de02">attribute_deprecated</a>
<a name="l01407"></a><a class="code" href="structAVFormatContext.html#ae5e988daf153680f8e213708cfa1dd08">01407</a> <span class="keywordtype">int</span> <a class="code" href="structAVFormatContext.html#ae5e988daf153680f8e213708cfa1dd08">max_analyze_duration</a>;
<a name="l01408"></a>01408
<a name="l01409"></a><a class="code" href="structAVFormatContext.html#a19cb4471ba011fc7adc5e17344c608f5">01409</a> <span class="keyword">const</span> uint8_t *<a class="code" href="structAVFormatContext.html#a19cb4471ba011fc7adc5e17344c608f5">key</a>;
<a name="l01410"></a><a class="code" href="structAVFormatContext.html#a1f2c1db3070cc100938eaed81ff3767d">01410</a> <span class="keywordtype">int</span> <a class="code" href="structAVFormatContext.html#a1f2c1db3070cc100938eaed81ff3767d">keylen</a>;
<a name="l01411"></a>01411
<a name="l01412"></a><a class="code" href="structAVFormatContext.html#a58c8c4d0ea974e0fcb0ce06fb1174f9f">01412</a> <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> <a class="code" href="structAVFormatContext.html#a58c8c4d0ea974e0fcb0ce06fb1174f9f">nb_programs</a>;
<a name="l01413"></a><a class="code" href="structAVFormatContext.html#a4c2c5a4c758966349ff513e95154d062">01413</a> <a class="code" href="structAVProgram.html" title="New fields can be added to the end with minor version bumps.">AVProgram</a> **<a class="code" href="structAVFormatContext.html#a4c2c5a4c758966349ff513e95154d062">programs</a>;
<a name="l01414"></a>01414 <span class="comment"></span>
<a name="l01415"></a>01415 <span class="comment"> /**</span>
<a name="l01416"></a>01416 <span class="comment"> * Forced video codec_id.</span>
<a name="l01417"></a>01417 <span class="comment"> * Demuxing: Set by user.</span>
<a name="l01418"></a>01418 <span class="comment"> */</span>
<a name="l01419"></a><a class="code" href="structAVFormatContext.html#ab179ade0dbe905ab2867b7001bf618ec">01419</a> <span class="keyword">enum</span> <a class="code" href="group__lavc__core.html#gaadca229ad2c20e060a14fec08a5cc7ce" title="Identify the syntax and semantics of the bitstream.">AVCodecID</a> <a class="code" href="structAVFormatContext.html#ab179ade0dbe905ab2867b7001bf618ec" title="Forced video codec_id.">video_codec_id</a>;
<a name="l01420"></a>01420 <span class="comment"></span>
<a name="l01421"></a>01421 <span class="comment"> /**</span>
<a name="l01422"></a>01422 <span class="comment"> * Forced audio codec_id.</span>
<a name="l01423"></a>01423 <span class="comment"> * Demuxing: Set by user.</span>
<a name="l01424"></a>01424 <span class="comment"> */</span>
<a name="l01425"></a><a class="code" href="structAVFormatContext.html#a1c99fc118bf047959a0284bffc2c1a9a">01425</a> <span class="keyword">enum</span> <a class="code" href="group__lavc__core.html#gaadca229ad2c20e060a14fec08a5cc7ce" title="Identify the syntax and semantics of the bitstream.">AVCodecID</a> <a class="code" href="structAVFormatContext.html#a1c99fc118bf047959a0284bffc2c1a9a" title="Forced audio codec_id.">audio_codec_id</a>;
<a name="l01426"></a>01426 <span class="comment"></span>
<a name="l01427"></a>01427 <span class="comment"> /**</span>
<a name="l01428"></a>01428 <span class="comment"> * Forced subtitle codec_id.</span>
<a name="l01429"></a>01429 <span class="comment"> * Demuxing: Set by user.</span>
<a name="l01430"></a>01430 <span class="comment"> */</span>
<a name="l01431"></a><a class="code" href="structAVFormatContext.html#acca61846d663b15e5a56b35c903e4d3b">01431</a> <span class="keyword">enum</span> <a class="code" href="group__lavc__core.html#gaadca229ad2c20e060a14fec08a5cc7ce" title="Identify the syntax and semantics of the bitstream.">AVCodecID</a> <a class="code" href="structAVFormatContext.html#acca61846d663b15e5a56b35c903e4d3b" title="Forced subtitle codec_id.">subtitle_codec_id</a>;
<a name="l01432"></a>01432 <span class="comment"></span>
<a name="l01433"></a>01433 <span class="comment"> /**</span>
<a name="l01434"></a>01434 <span class="comment"> * Maximum amount of memory in bytes to use for the index of each stream.</span>
<a name="l01435"></a>01435 <span class="comment"> * If the index exceeds this size, entries will be discarded as</span>
<a name="l01436"></a>01436 <span class="comment"> * needed to maintain a smaller size. This can lead to slower or less</span>
<a name="l01437"></a>01437 <span class="comment"> * accurate seeking (depends on demuxer).</span>
<a name="l01438"></a>01438 <span class="comment"> * Demuxers for which a full in-memory index is mandatory will ignore</span>
<a name="l01439"></a>01439 <span class="comment"> * this.</span>
<a name="l01440"></a>01440 <span class="comment"> * - muxing: unused</span>
<a name="l01441"></a>01441 <span class="comment"> * - demuxing: set by user</span>
<a name="l01442"></a>01442 <span class="comment"> */</span>
<a name="l01443"></a><a class="code" href="structAVFormatContext.html#ab0470d586a71d4f356194d202591617d">01443</a> <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> <a class="code" href="structAVFormatContext.html#ab0470d586a71d4f356194d202591617d" title="Maximum amount of memory in bytes to use for the index of each stream.">max_index_size</a>;
<a name="l01444"></a>01444 <span class="comment"></span>
<a name="l01445"></a>01445 <span class="comment"> /**</span>
<a name="l01446"></a>01446 <span class="comment"> * Maximum amount of memory in bytes to use for buffering frames</span>
<a name="l01447"></a>01447 <span class="comment"> * obtained from realtime capture devices.</span>
<a name="l01448"></a>01448 <span class="comment"> */</span>
<a name="l01449"></a><a class="code" href="structAVFormatContext.html#ae188350a3838a14a233bf272d68998be">01449</a> <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> <a class="code" href="structAVFormatContext.html#ae188350a3838a14a233bf272d68998be" title="Maximum amount of memory in bytes to use for buffering frames obtained from realtime capture devices...">max_picture_buffer</a>;
<a name="l01450"></a>01450 <span class="comment"></span>
<a name="l01451"></a>01451 <span class="comment"> /**</span>
<a name="l01452"></a>01452 <span class="comment"> * Number of chapters in AVChapter array.</span>
<a name="l01453"></a>01453 <span class="comment"> * When muxing, chapters are normally written in the file header,</span>
<a name="l01454"></a>01454 <span class="comment"> * so nb_chapters should normally be initialized before write_header</span>
<a name="l01455"></a>01455 <span class="comment"> * is called. Some muxers (e.g. mov and mkv) can also write chapters</span>
<a name="l01456"></a>01456 <span class="comment"> * in the trailer. To write chapters in the trailer, nb_chapters</span>
<a name="l01457"></a>01457 <span class="comment"> * must be zero when write_header is called and non-zero when</span>
<a name="l01458"></a>01458 <span class="comment"> * write_trailer is called.</span>
<a name="l01459"></a>01459 <span class="comment"> * - muxing: set by user</span>
<a name="l01460"></a>01460 <span class="comment"> * - demuxing: set by libavformat</span>
<a name="l01461"></a>01461 <span class="comment"> */</span>
<a name="l01462"></a><a class="code" href="structAVFormatContext.html#a6f60043baf4abd0d201ccefc27bb4306">01462</a> <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> <a class="code" href="structAVFormatContext.html#a6f60043baf4abd0d201ccefc27bb4306" title="Number of chapters in AVChapter array.">nb_chapters</a>;
<a name="l01463"></a><a class="code" href="structAVFormatContext.html#ac17d5fc2dcdb00806cc83b02d9f940f3">01463</a> <a class="code" href="structAVChapter.html">AVChapter</a> **<a class="code" href="structAVFormatContext.html#ac17d5fc2dcdb00806cc83b02d9f940f3">chapters</a>;
<a name="l01464"></a>01464 <span class="comment"></span>
<a name="l01465"></a>01465 <span class="comment"> /**</span>
<a name="l01466"></a>01466 <span class="comment"> * Metadata that applies to the whole file.</span>
<a name="l01467"></a>01467 <span class="comment"> *</span>
<a name="l01468"></a>01468 <span class="comment"> * - demuxing: set by libavformat in avformat_open_input()</span>
<a name="l01469"></a>01469 <span class="comment"> * - muxing: may be set by the caller before avformat_write_header()</span>
<a name="l01470"></a>01470 <span class="comment"> *</span>
<a name="l01471"></a>01471 <span class="comment"> * Freed by libavformat in avformat_free_context().</span>
<a name="l01472"></a>01472 <span class="comment"> */</span>
<a name="l01473"></a><a class="code" href="structAVFormatContext.html#a3019a56080ed2e3297ff25bc2ff88adf">01473</a> <a class="code" href="group__lavu__dict.html#ga1d7cc0833bee918994a600556410315f">AVDictionary</a> *<a class="code" href="structAVFormatContext.html#a3019a56080ed2e3297ff25bc2ff88adf" title="Metadata that applies to the whole file.">metadata</a>;
<a name="l01474"></a>01474 <span class="comment"></span>
<a name="l01475"></a>01475 <span class="comment"> /**</span>
<a name="l01476"></a>01476 <span class="comment"> * Start time of the stream in real world time, in microseconds</span>
<a name="l01477"></a>01477 <span class="comment"> * since the Unix epoch (00:00 1st January 1970). That is, pts=0 in the</span>
<a name="l01478"></a>01478 <span class="comment"> * stream was captured at this real world time.</span>
<a name="l01479"></a>01479 <span class="comment"> * - muxing: Set by the caller before avformat_write_header(). If set to</span>
<a name="l01480"></a>01480 <span class="comment"> * either 0 or AV_NOPTS_VALUE, then the current wall-time will</span>
<a name="l01481"></a>01481 <span class="comment"> * be used.</span>
<a name="l01482"></a>01482 <span class="comment"> * - demuxing: Set by libavformat. AV_NOPTS_VALUE if unknown. Note that</span>
<a name="l01483"></a>01483 <span class="comment"> * the value may become known after some number of frames</span>
<a name="l01484"></a>01484 <span class="comment"> * have been received.</span>
<a name="l01485"></a>01485 <span class="comment"> */</span>
<a name="l01486"></a><a class="code" href="structAVFormatContext.html#aa5ddb5cee1df28f21739133f2e37f1c5">01486</a> int64_t <a class="code" href="structAVFormatContext.html#aa5ddb5cee1df28f21739133f2e37f1c5" title="Start time of the stream in real world time, in microseconds since the Unix epoch (00:00 1st January ...">start_time_realtime</a>;
<a name="l01487"></a>01487 <span class="comment"></span>
<a name="l01488"></a>01488 <span class="comment"> /**</span>
<a name="l01489"></a>01489 <span class="comment"> * The number of frames used for determining the framerate in</span>
<a name="l01490"></a>01490 <span class="comment"> * avformat_find_stream_info().</span>
<a name="l01491"></a>01491 <span class="comment"> * Demuxing only, set by the caller before avformat_find_stream_info().</span>
<a name="l01492"></a>01492 <span class="comment"> */</span>
<a name="l01493"></a><a class="code" href="structAVFormatContext.html#a517e6b5dcada506a49ef413d4d8d477a">01493</a> <span class="keywordtype">int</span> <a class="code" href="structAVFormatContext.html#a517e6b5dcada506a49ef413d4d8d477a" title="The number of frames used for determining the framerate in avformat_find_stream_info().">fps_probe_size</a>;
<a name="l01494"></a>01494 <span class="comment"></span>
<a name="l01495"></a>01495 <span class="comment"> /**</span>
<a name="l01496"></a>01496 <span class="comment"> * Error recognition; higher values will detect more errors but may</span>
<a name="l01497"></a>01497 <span class="comment"> * misdetect some more or less valid parts as errors.</span>
<a name="l01498"></a>01498 <span class="comment"> * Demuxing only, set by the caller before avformat_open_input().</span>
<a name="l01499"></a>01499 <span class="comment"> */</span>
<a name="l01500"></a><a class="code" href="structAVFormatContext.html#aeebb15a72d1503e641b633aeb3be0bf0">01500</a> <span class="keywordtype">int</span> <a class="code" href="structAVFormatContext.html#aeebb15a72d1503e641b633aeb3be0bf0" title="Error recognition; higher values will detect more errors but may misdetect some more or less valid pa...">error_recognition</a>;
<a name="l01501"></a>01501 <span class="comment"></span>
<a name="l01502"></a>01502 <span class="comment"> /**</span>
<a name="l01503"></a>01503 <span class="comment"> * Custom interrupt callbacks for the I/O layer.</span>
<a name="l01504"></a>01504 <span class="comment"> *</span>
<a name="l01505"></a>01505 <span class="comment"> * demuxing: set by the user before avformat_open_input().</span>
<a name="l01506"></a>01506 <span class="comment"> * muxing: set by the user before avformat_write_header()</span>
<a name="l01507"></a>01507 <span class="comment"> * (mainly useful for AVFMT_NOFILE formats). The callback</span>
<a name="l01508"></a>01508 <span class="comment"> * should also be passed to avio_open2() if it's used to</span>
<a name="l01509"></a>01509 <span class="comment"> * open the file.</span>
<a name="l01510"></a>01510 <span class="comment"> */</span>
<a name="l01511"></a><a class="code" href="structAVFormatContext.html#a5b37acfe4024d92ee510064e80920b40">01511</a> <a class="code" href="structAVIOInterruptCB.html" title="Callback for checking whether to abort blocking functions.">AVIOInterruptCB</a> <a class="code" href="structAVFormatContext.html#a5b37acfe4024d92ee510064e80920b40" title="Custom interrupt callbacks for the I/O layer.">interrupt_callback</a>;
<a name="l01512"></a>01512 <span class="comment"></span>
<a name="l01513"></a>01513 <span class="comment"> /**</span>
<a name="l01514"></a>01514 <span class="comment"> * Flags to enable debugging.</span>
<a name="l01515"></a>01515 <span class="comment"> */</span>
<a name="l01516"></a><a class="code" href="structAVFormatContext.html#ab4478e9742f661800cf7e0af84136cae">01516</a> <span class="keywordtype">int</span> <a class="code" href="structAVFormatContext.html#ab4478e9742f661800cf7e0af84136cae" title="Flags to enable debugging.">debug</a>;
<a name="l01517"></a><a class="code" href="avformat_8h.html#a3d60713d578ad1ef6505e05779c112cf">01517</a> <span class="preprocessor">#define FF_FDEBUG_TS 0x0001</span>
<a name="l01518"></a>01518 <span class="preprocessor"></span><span class="comment"></span>
<a name="l01519"></a>01519 <span class="comment"> /**</span>
<a name="l01520"></a>01520 <span class="comment"> * Maximum buffering duration for interleaving.</span>
<a name="l01521"></a>01521 <span class="comment"> *</span>
<a name="l01522"></a>01522 <span class="comment"> * To ensure all the streams are interleaved correctly,</span>
<a name="l01523"></a>01523 <span class="comment"> * av_interleaved_write_frame() will wait until it has at least one packet</span>
<a name="l01524"></a>01524 <span class="comment"> * for each stream before actually writing any packets to the output file.</span>
<a name="l01525"></a>01525 <span class="comment"> * When some streams are "sparse" (i.e. there are large gaps between</span>
<a name="l01526"></a>01526 <span class="comment"> * successive packets), this can result in excessive buffering.</span>
<a name="l01527"></a>01527 <span class="comment"> *</span>
<a name="l01528"></a>01528 <span class="comment"> * This field specifies the maximum difference between the timestamps of the</span>
<a name="l01529"></a>01529 <span class="comment"> * first and the last packet in the muxing queue, above which libavformat</span>
<a name="l01530"></a>01530 <span class="comment"> * will output a packet regardless of whether it has queued a packet for all</span>
<a name="l01531"></a>01531 <span class="comment"> * the streams.</span>
<a name="l01532"></a>01532 <span class="comment"> *</span>
<a name="l01533"></a>01533 <span class="comment"> * Muxing only, set by the caller before avformat_write_header().</span>
<a name="l01534"></a>01534 <span class="comment"> */</span>
<a name="l01535"></a><a class="code" href="structAVFormatContext.html#a00edb6b7a31f8dabfa668334ca1f92d7">01535</a> int64_t <a class="code" href="structAVFormatContext.html#a00edb6b7a31f8dabfa668334ca1f92d7" title="Maximum buffering duration for interleaving.">max_interleave_delta</a>;
<a name="l01536"></a>01536 <span class="comment"></span>
<a name="l01537"></a>01537 <span class="comment"> /**</span>
<a name="l01538"></a>01538 <span class="comment"> * Allow non-standard and experimental extension</span>
<a name="l01539"></a>01539 <span class="comment"> * @see AVCodecContext.strict_std_compliance</span>
<a name="l01540"></a>01540 <span class="comment"> */</span>
<a name="l01541"></a><a class="code" href="structAVFormatContext.html#a5017684cf0a84c990f60c8d50adec144">01541</a> <span class="keywordtype">int</span> <a class="code" href="structAVFormatContext.html#a5017684cf0a84c990f60c8d50adec144" title="Allow non-standard and experimental extension.">strict_std_compliance</a>;
<a name="l01542"></a>01542 <span class="comment"></span>
<a name="l01543"></a>01543 <span class="comment"> /**</span>
<a name="l01544"></a>01544 <span class="comment"> * Flags for the user to detect events happening on the file. Flags must</span>
<a name="l01545"></a>01545 <span class="comment"> * be cleared by the user once the event has been handled.</span>
<a name="l01546"></a>01546 <span class="comment"> * A combination of AVFMT_EVENT_FLAG_*.</span>
<a name="l01547"></a>01547 <span class="comment"> */</span>
<a name="l01548"></a><a class="code" href="structAVFormatContext.html#a0302506d4b3434da77b8b3db43821aa0">01548</a> <span class="keywordtype">int</span> <a class="code" href="structAVFormatContext.html#a0302506d4b3434da77b8b3db43821aa0" title="Flags for the user to detect events happening on the file.">event_flags</a>;
<a name="l01549"></a><a class="code" href="avformat_8h.html#a19485b8b52e579db560875e9a1e44e7a">01549</a> <span class="preprocessor">#define AVFMT_EVENT_FLAG_METADATA_UPDATED 0x0001 ///< The call resulted in updated metadata.</span>
<a name="l01550"></a>01550 <span class="preprocessor"></span><span class="comment"></span>
<a name="l01551"></a>01551 <span class="comment"> /**</span>
<a name="l01552"></a>01552 <span class="comment"> * Maximum number of packets to read while waiting for the first timestamp.</span>
<a name="l01553"></a>01553 <span class="comment"> * Decoding only.</span>
<a name="l01554"></a>01554 <span class="comment"> */</span>
<a name="l01555"></a><a class="code" href="structAVFormatContext.html#ad7854e5186dd14ce91dea1dfd0bb826f">01555</a> <span class="keywordtype">int</span> <a class="code" href="structAVFormatContext.html#ad7854e5186dd14ce91dea1dfd0bb826f" title="Maximum number of packets to read while waiting for the first timestamp.">max_ts_probe</a>;
<a name="l01556"></a>01556 <span class="comment"></span>
<a name="l01557"></a>01557 <span class="comment"> /**</span>
<a name="l01558"></a>01558 <span class="comment"> * Avoid negative timestamps during muxing.</span>
<a name="l01559"></a>01559 <span class="comment"> * Any value of the AVFMT_AVOID_NEG_TS_* constants.</span>
<a name="l01560"></a>01560 <span class="comment"> * Note, this only works when using av_interleaved_write_frame. (interleave_packet_per_dts is in use)</span>
<a name="l01561"></a>01561 <span class="comment"> * - muxing: Set by user</span>
<a name="l01562"></a>01562 <span class="comment"> * - demuxing: unused</span>
<a name="l01563"></a>01563 <span class="comment"> */</span>
<a name="l01564"></a><a class="code" href="structAVFormatContext.html#a032c7d859883eddc9d87a9e3b2cc3853">01564</a> <span class="keywordtype">int</span> <a class="code" href="structAVFormatContext.html#a032c7d859883eddc9d87a9e3b2cc3853" title="Avoid negative timestamps during muxing.">avoid_negative_ts</a>;
<a name="l01565"></a><a class="code" href="avformat_8h.html#a8de664fdbd6e2a5bd327f75b185a97ef">01565</a> <span class="preprocessor">#define AVFMT_AVOID_NEG_TS_AUTO -1 ///< Enabled when required by target format</span>
<a name="l01566"></a><a class="code" href="avformat_8h.html#ab82d3e1a4a5bba30941fcc4402317831">01566</a> <span class="preprocessor"></span><span class="preprocessor">#define AVFMT_AVOID_NEG_TS_MAKE_NON_NEGATIVE 1 ///< Shift timestamps so they are non negative</span>
<a name="l01567"></a><a class="code" href="avformat_8h.html#aeb387b52a67154ded3aeee38400f358a">01567</a> <span class="preprocessor"></span><span class="preprocessor">#define AVFMT_AVOID_NEG_TS_MAKE_ZERO 2 ///< Shift timestamps so that they start at 0</span>
<a name="l01568"></a>01568 <span class="preprocessor"></span><span class="comment"></span>
<a name="l01569"></a>01569 <span class="comment"> /**</span>
<a name="l01570"></a>01570 <span class="comment"> * Transport stream id.</span>
<a name="l01571"></a>01571 <span class="comment"> * This will be moved into demuxer private options. Thus no API/ABI compatibility</span>
<a name="l01572"></a>01572 <span class="comment"> */</span>
<a name="l01573"></a><a class="code" href="structAVFormatContext.html#a5d331e9a0609a93dd4593af6c118cc4b">01573</a> <span class="keywordtype">int</span> <a class="code" href="structAVFormatContext.html#a5d331e9a0609a93dd4593af6c118cc4b" title="Transport stream id.">ts_id</a>;
<a name="l01574"></a>01574 <span class="comment"></span>
<a name="l01575"></a>01575 <span class="comment"> /**</span>
<a name="l01576"></a>01576 <span class="comment"> * Audio preload in microseconds.</span>
<a name="l01577"></a>01577 <span class="comment"> * Note, not all formats support this and unpredictable things may happen if it is used when not supported.</span>
<a name="l01578"></a>01578 <span class="comment"> * - encoding: Set by user via AVOptions (NO direct access)</span>
<a name="l01579"></a>01579 <span class="comment"> * - decoding: unused</span>
<a name="l01580"></a>01580 <span class="comment"> */</span>
<a name="l01581"></a><a class="code" href="structAVFormatContext.html#ac02383c2106cca8022f8a293399aed58">01581</a> <span class="keywordtype">int</span> <a class="code" href="structAVFormatContext.html#ac02383c2106cca8022f8a293399aed58" title="Audio preload in microseconds.">audio_preload</a>;
<a name="l01582"></a>01582 <span class="comment"></span>
<a name="l01583"></a>01583 <span class="comment"> /**</span>
<a name="l01584"></a>01584 <span class="comment"> * Max chunk time in microseconds.</span>
<a name="l01585"></a>01585 <span class="comment"> * Note, not all formats support this and unpredictable things may happen if it is used when not supported.</span>
<a name="l01586"></a>01586 <span class="comment"> * - encoding: Set by user via AVOptions (NO direct access)</span>
<a name="l01587"></a>01587 <span class="comment"> * - decoding: unused</span>
<a name="l01588"></a>01588 <span class="comment"> */</span>
<a name="l01589"></a><a class="code" href="structAVFormatContext.html#ae20c589e20f22f74f1687702de6d2e8e">01589</a> <span class="keywordtype">int</span> <a class="code" href="structAVFormatContext.html#ae20c589e20f22f74f1687702de6d2e8e" title="Max chunk time in microseconds.">max_chunk_duration</a>;
<a name="l01590"></a>01590 <span class="comment"></span>
<a name="l01591"></a>01591 <span class="comment"> /**</span>
<a name="l01592"></a>01592 <span class="comment"> * Max chunk size in bytes</span>
<a name="l01593"></a>01593 <span class="comment"> * Note, not all formats support this and unpredictable things may happen if it is used when not supported.</span>
<a name="l01594"></a>01594 <span class="comment"> * - encoding: Set by user via AVOptions (NO direct access)</span>
<a name="l01595"></a>01595 <span class="comment"> * - decoding: unused</span>
<a name="l01596"></a>01596 <span class="comment"> */</span>
<a name="l01597"></a><a class="code" href="structAVFormatContext.html#a3d8cfff712c81d1cbc725b40ce02f7e7">01597</a> <span class="keywordtype">int</span> <a class="code" href="structAVFormatContext.html#a3d8cfff712c81d1cbc725b40ce02f7e7" title="Max chunk size in bytes Note, not all formats support this and unpredictable things may happen if it ...">max_chunk_size</a>;
<a name="l01598"></a>01598 <span class="comment"></span>
<a name="l01599"></a>01599 <span class="comment"> /**</span>
<a name="l01600"></a>01600 <span class="comment"> * forces the use of wallclock timestamps as pts/dts of packets</span>
<a name="l01601"></a>01601 <span class="comment"> * This has undefined results in the presence of B frames.</span>
<a name="l01602"></a>01602 <span class="comment"> * - encoding: unused</span>
<a name="l01603"></a>01603 <span class="comment"> * - decoding: Set by user via AVOptions (NO direct access)</span>
<a name="l01604"></a>01604 <span class="comment"> */</span>
<a name="l01605"></a><a class="code" href="structAVFormatContext.html#a90251622aa2b78badbb846274aff4633">01605</a> <span class="keywordtype">int</span> <a class="code" href="structAVFormatContext.html#a90251622aa2b78badbb846274aff4633" title="forces the use of wallclock timestamps as pts/dts of packets This has undefined results in the presen...">use_wallclock_as_timestamps</a>;
<a name="l01606"></a>01606 <span class="comment"></span>
<a name="l01607"></a>01607 <span class="comment"> /**</span>
<a name="l01608"></a>01608 <span class="comment"> * avio flags, used to force AVIO_FLAG_DIRECT.</span>
<a name="l01609"></a>01609 <span class="comment"> * - encoding: unused</span>
<a name="l01610"></a>01610 <span class="comment"> * - decoding: Set by user via AVOptions (NO direct access)</span>
<a name="l01611"></a>01611 <span class="comment"> */</span>
<a name="l01612"></a><a class="code" href="structAVFormatContext.html#a5e6814c9de3c272396f07e2ff18c7b27">01612</a> <span class="keywordtype">int</span> <a class="code" href="structAVFormatContext.html#a5e6814c9de3c272396f07e2ff18c7b27" title="avio flags, used to force AVIO_FLAG_DIRECT.">avio_flags</a>;
<a name="l01613"></a>01613 <span class="comment"></span>
<a name="l01614"></a>01614 <span class="comment"> /**</span>
<a name="l01615"></a>01615 <span class="comment"> * The duration field can be estimated through various ways, and this field can be used</span>
<a name="l01616"></a>01616 <span class="comment"> * to know how the duration was estimated.</span>
<a name="l01617"></a>01617 <span class="comment"> * - encoding: unused</span>
<a name="l01618"></a>01618 <span class="comment"> * - decoding: Read by user via AVOptions (NO direct access)</span>
<a name="l01619"></a>01619 <span class="comment"> */</span>
<a name="l01620"></a><a class="code" href="structAVFormatContext.html#a95035552afae17c1b7cd701ad72e67b5">01620</a> <span class="keyword">enum</span> <a class="code" href="avformat_8h.html#a7c2692ffa20d3e888e40e79eeda6d73b" title="The duration of a video can be estimated through various ways, and this enum can be used to know how ...">AVDurationEstimationMethod</a> <a class="code" href="structAVFormatContext.html#a95035552afae17c1b7cd701ad72e67b5" title="The duration field can be estimated through various ways, and this field can be used to know how the ...">duration_estimation_method</a>;
<a name="l01621"></a>01621 <span class="comment"></span>
<a name="l01622"></a>01622 <span class="comment"> /**</span>
<a name="l01623"></a>01623 <span class="comment"> * Skip initial bytes when opening stream</span>
<a name="l01624"></a>01624 <span class="comment"> * - encoding: unused</span>
<a name="l01625"></a>01625 <span class="comment"> * - decoding: Set by user via AVOptions (NO direct access)</span>
<a name="l01626"></a>01626 <span class="comment"> */</span>
<a name="l01627"></a><a class="code" href="structAVFormatContext.html#ad9042cdda3a644e4ef46bfeffa34e4f3">01627</a> int64_t <a class="code" href="structAVFormatContext.html#ad9042cdda3a644e4ef46bfeffa34e4f3" title="Skip initial bytes when opening stream.">skip_initial_bytes</a>;
<a name="l01628"></a>01628 <span class="comment"></span>
<a name="l01629"></a>01629 <span class="comment"> /**</span>
<a name="l01630"></a>01630 <span class="comment"> * Correct single timestamp overflows</span>
<a name="l01631"></a>01631 <span class="comment"> * - encoding: unused</span>
<a name="l01632"></a>01632 <span class="comment"> * - decoding: Set by user via AVOptions (NO direct access)</span>
<a name="l01633"></a>01633 <span class="comment"> */</span>
<a name="l01634"></a><a class="code" href="structAVFormatContext.html#afe4c7f02033d4b58b3636b9e42db25de">01634</a> <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> <a class="code" href="structAVFormatContext.html#afe4c7f02033d4b58b3636b9e42db25de" title="Correct single timestamp overflows.">correct_ts_overflow</a>;
<a name="l01635"></a>01635 <span class="comment"></span>
<a name="l01636"></a>01636 <span class="comment"> /**</span>
<a name="l01637"></a>01637 <span class="comment"> * Force seeking to any (also non key) frames.</span>
<a name="l01638"></a>01638 <span class="comment"> * - encoding: unused</span>
<a name="l01639"></a>01639 <span class="comment"> * - decoding: Set by user via AVOptions (NO direct access)</span>
<a name="l01640"></a>01640 <span class="comment"> */</span>
<a name="l01641"></a><a class="code" href="structAVFormatContext.html#a41a1f108aa38e851f65ff4f0a70ce5a5">01641</a> <span class="keywordtype">int</span> <a class="code" href="structAVFormatContext.html#a41a1f108aa38e851f65ff4f0a70ce5a5" title="Force seeking to any (also non key) frames.">seek2any</a>;
<a name="l01642"></a>01642 <span class="comment"></span>
<a name="l01643"></a>01643 <span class="comment"> /**</span>
<a name="l01644"></a>01644 <span class="comment"> * Flush the I/O context after each packet.</span>
<a name="l01645"></a>01645 <span class="comment"> * - encoding: Set by user via AVOptions (NO direct access)</span>
<a name="l01646"></a>01646 <span class="comment"> * - decoding: unused</span>
<a name="l01647"></a>01647 <span class="comment"> */</span>
<a name="l01648"></a><a class="code" href="structAVFormatContext.html#a1fdd77fff4c7df1e30ce1d42e10922e9">01648</a> <span class="keywordtype">int</span> <a class="code" href="structAVFormatContext.html#a1fdd77fff4c7df1e30ce1d42e10922e9" title="Flush the I/O context after each packet.">flush_packets</a>;
<a name="l01649"></a>01649 <span class="comment"></span>
<a name="l01650"></a>01650 <span class="comment"> /**</span>
<a name="l01651"></a>01651 <span class="comment"> * format probing score.</span>
<a name="l01652"></a>01652 <span class="comment"> * The maximal score is AVPROBE_SCORE_MAX, its set when the demuxer probes</span>
<a name="l01653"></a>01653 <span class="comment"> * the format.</span>
<a name="l01654"></a>01654 <span class="comment"> * - encoding: unused</span>
<a name="l01655"></a>01655 <span class="comment"> * - decoding: set by avformat, read by user via av_format_get_probe_score() (NO direct access)</span>
<a name="l01656"></a>01656 <span class="comment"> */</span>
<a name="l01657"></a><a class="code" href="structAVFormatContext.html#a65f11f94f40f83866ebe651c8ae111cf">01657</a> <span class="keywordtype">int</span> <a class="code" href="structAVFormatContext.html#a65f11f94f40f83866ebe651c8ae111cf" title="format probing score.">probe_score</a>;
<a name="l01658"></a>01658 <span class="comment"></span>
<a name="l01659"></a>01659 <span class="comment"> /**</span>
<a name="l01660"></a>01660 <span class="comment"> * number of bytes to read maximally to identify format.</span>
<a name="l01661"></a>01661 <span class="comment"> * - encoding: unused</span>
<a name="l01662"></a>01662 <span class="comment"> * - decoding: set by user through AVOPtions (NO direct access)</span>
<a name="l01663"></a>01663 <span class="comment"> */</span>
<a name="l01664"></a><a class="code" href="structAVFormatContext.html#a7d1f665ecabe03e3d18accbb1ebb32b1">01664</a> <span class="keywordtype">int</span> <a class="code" href="structAVFormatContext.html#a7d1f665ecabe03e3d18accbb1ebb32b1" title="number of bytes to read maximally to identify format.">format_probesize</a>;
<a name="l01665"></a>01665 <span class="comment"></span>
<a name="l01666"></a>01666 <span class="comment"> /**</span>
<a name="l01667"></a>01667 <span class="comment"> * ',' separated list of allowed decoders.</span>
<a name="l01668"></a>01668 <span class="comment"> * If NULL then all are allowed</span>
<a name="l01669"></a>01669 <span class="comment"> * - encoding: unused</span>
<a name="l01670"></a>01670 <span class="comment"> * - decoding: set by user through AVOptions (NO direct access)</span>
<a name="l01671"></a>01671 <span class="comment"> */</span>
<a name="l01672"></a><a class="code" href="structAVFormatContext.html#aa3b43e2a040a3ce658620711a8345234">01672</a> <span class="keywordtype">char</span> *<a class="code" href="structAVFormatContext.html#aa3b43e2a040a3ce658620711a8345234" title="',' separated list of allowed decoders.">codec_whitelist</a>;
<a name="l01673"></a>01673 <span class="comment"></span>
<a name="l01674"></a>01674 <span class="comment"> /**</span>
<a name="l01675"></a>01675 <span class="comment"> * ',' separated list of allowed demuxers.</span>
<a name="l01676"></a>01676 <span class="comment"> * If NULL then all are allowed</span>
<a name="l01677"></a>01677 <span class="comment"> * - encoding: unused</span>
<a name="l01678"></a>01678 <span class="comment"> * - decoding: set by user through AVOptions (NO direct access)</span>
<a name="l01679"></a>01679 <span class="comment"> */</span>
<a name="l01680"></a><a class="code" href="structAVFormatContext.html#abcaa5a7c53d4b0224a5fc2d23e88ea03">01680</a> <span class="keywordtype">char</span> *<a class="code" href="structAVFormatContext.html#abcaa5a7c53d4b0224a5fc2d23e88ea03" title="',' separated list of allowed demuxers.">format_whitelist</a>;
<a name="l01681"></a>01681 <span class="comment"></span>
<a name="l01682"></a>01682 <span class="comment"> /**</span>
<a name="l01683"></a>01683 <span class="comment"> * An opaque field for libavformat internal usage.</span>
<a name="l01684"></a>01684 <span class="comment"> * Must not be accessed in any way by callers.</span>
<a name="l01685"></a>01685 <span class="comment"> */</span>
<a name="l01686"></a><a class="code" href="structAVFormatContext.html#a8a8bec51da36db65ff864f88a85805d9">01686</a> <a class="code" href="avformat_8h.html#a7bec8d592652431045d81a02fef74f28">AVFormatInternal</a> *<span class="keyword">internal</span>;
<a name="l01687"></a>01687 <span class="comment"></span>
<a name="l01688"></a>01688 <span class="comment"> /**</span>
<a name="l01689"></a>01689 <span class="comment"> * IO repositioned flag.</span>
<a name="l01690"></a>01690 <span class="comment"> * This is set by avformat when the underlaying IO context read pointer</span>
<a name="l01691"></a>01691 <span class="comment"> * is repositioned, for example when doing byte based seeking.</span>
<a name="l01692"></a>01692 <span class="comment"> * Demuxers can use the flag to detect such changes.</span>
<a name="l01693"></a>01693 <span class="comment"> */</span>
<a name="l01694"></a><a class="code" href="structAVFormatContext.html#a45afe89c377463a1b9446ac94b3c513b">01694</a> <span class="keywordtype">int</span> <a class="code" href="structAVFormatContext.html#a45afe89c377463a1b9446ac94b3c513b" title="IO repositioned flag.">io_repositioned</a>;
<a name="l01695"></a>01695 <span class="comment"></span>
<a name="l01696"></a>01696 <span class="comment"> /**</span>
<a name="l01697"></a>01697 <span class="comment"> * Forced video codec.</span>
<a name="l01698"></a>01698 <span class="comment"> * This allows forcing a specific decoder, even when there are multiple with</span>
<a name="l01699"></a>01699 <span class="comment"> * the same codec_id.</span>
<a name="l01700"></a>01700 <span class="comment"> * Demuxing: Set by user via av_format_set_video_codec (NO direct access).</span>
<a name="l01701"></a>01701 <span class="comment"> */</span>
<a name="l01702"></a><a class="code" href="structAVFormatContext.html#a1891d82f7f853a16ebcba7cae939c4f0">01702</a> <a class="code" href="structAVCodec.html" title="AVCodec.">AVCodec</a> *<a class="code" href="structAVFormatContext.html#a1891d82f7f853a16ebcba7cae939c4f0" title="Forced video codec.">video_codec</a>;
<a name="l01703"></a>01703 <span class="comment"></span>
<a name="l01704"></a>01704 <span class="comment"> /**</span>
<a name="l01705"></a>01705 <span class="comment"> * Forced audio codec.</span>
<a name="l01706"></a>01706 <span class="comment"> * This allows forcing a specific decoder, even when there are multiple with</span>
<a name="l01707"></a>01707 <span class="comment"> * the same codec_id.</span>
<a name="l01708"></a>01708 <span class="comment"> * Demuxing: Set by user via av_format_set_audio_codec (NO direct access).</span>
<a name="l01709"></a>01709 <span class="comment"> */</span>
<a name="l01710"></a><a class="code" href="structAVFormatContext.html#ab73f76ceac8ed711c56decc2d64456f0">01710</a> <a class="code" href="structAVCodec.html" title="AVCodec.">AVCodec</a> *<a class="code" href="structAVFormatContext.html#ab73f76ceac8ed711c56decc2d64456f0" title="Forced audio codec.">audio_codec</a>;
<a name="l01711"></a>01711 <span class="comment"></span>
<a name="l01712"></a>01712 <span class="comment"> /**</span>
<a name="l01713"></a>01713 <span class="comment"> * Forced subtitle codec.</span>
<a name="l01714"></a>01714 <span class="comment"> * This allows forcing a specific decoder, even when there are multiple with</span>
<a name="l01715"></a>01715 <span class="comment"> * the same codec_id.</span>
<a name="l01716"></a>01716 <span class="comment"> * Demuxing: Set by user via av_format_set_subtitle_codec (NO direct access).</span>
<a name="l01717"></a>01717 <span class="comment"> */</span>
<a name="l01718"></a><a class="code" href="structAVFormatContext.html#a9cc6a317755fa4f65b0bab36bcb18c87">01718</a> <a class="code" href="structAVCodec.html" title="AVCodec.">AVCodec</a> *<a class="code" href="structAVFormatContext.html#a9cc6a317755fa4f65b0bab36bcb18c87" title="Forced subtitle codec.">subtitle_codec</a>;
<a name="l01719"></a>01719 <span class="comment"></span>
<a name="l01720"></a>01720 <span class="comment"> /**</span>
<a name="l01721"></a>01721 <span class="comment"> * Forced data codec.</span>
<a name="l01722"></a>01722 <span class="comment"> * This allows forcing a specific decoder, even when there are multiple with</span>
<a name="l01723"></a>01723 <span class="comment"> * the same codec_id.</span>
<a name="l01724"></a>01724 <span class="comment"> * Demuxing: Set by user via av_format_set_data_codec (NO direct access).</span>
<a name="l01725"></a>01725 <span class="comment"> */</span>
<a name="l01726"></a><a class="code" href="structAVFormatContext.html#a6f39359931d266a5cd68223ca68dd3a1">01726</a> <a class="code" href="structAVCodec.html" title="AVCodec.">AVCodec</a> *<a class="code" href="structAVFormatContext.html#a6f39359931d266a5cd68223ca68dd3a1" title="Forced data codec.">data_codec</a>;
<a name="l01727"></a>01727 <span class="comment"></span>
<a name="l01728"></a>01728 <span class="comment"> /**</span>
<a name="l01729"></a>01729 <span class="comment"> * Number of bytes to be written as padding in a metadata header.</span>
<a name="l01730"></a>01730 <span class="comment"> * Demuxing: Unused.</span>
<a name="l01731"></a>01731 <span class="comment"> * Muxing: Set by user via av_format_set_metadata_header_padding.</span>
<a name="l01732"></a>01732 <span class="comment"> */</span>
<a name="l01733"></a><a class="code" href="structAVFormatContext.html#a6fc5a51cf62b6e8ad379c1ac57d4a0c4">01733</a> <span class="keywordtype">int</span> <a class="code" href="structAVFormatContext.html#a6fc5a51cf62b6e8ad379c1ac57d4a0c4" title="Number of bytes to be written as padding in a metadata header.">metadata_header_padding</a>;
<a name="l01734"></a>01734 <span class="comment"></span>
<a name="l01735"></a>01735 <span class="comment"> /**</span>
<a name="l01736"></a>01736 <span class="comment"> * User data.</span>
<a name="l01737"></a>01737 <span class="comment"> * This is a place for some private data of the user.</span>
<a name="l01738"></a>01738 <span class="comment"> * Mostly usable with control_message_cb or any future callbacks in device's context.</span>
<a name="l01739"></a>01739 <span class="comment"> */</span>
<a name="l01740"></a><a class="code" href="structAVFormatContext.html#a71797838db59ca0682dd2d18b149134e">01740</a> <span class="keywordtype">void</span> *<a class="code" href="structAVFormatContext.html#a71797838db59ca0682dd2d18b149134e" title="User data.">opaque</a>;
<a name="l01741"></a>01741 <span class="comment"></span>
<a name="l01742"></a>01742 <span class="comment"> /**</span>
<a name="l01743"></a>01743 <span class="comment"> * Callback used by devices to communicate with application.</span>
<a name="l01744"></a>01744 <span class="comment"> */</span>
<a name="l01745"></a><a class="code" href="structAVFormatContext.html#ab569e23a4966ca1f708fb498dd6b3d5f">01745</a> <a class="code" href="avformat_8h.html#a8232a706c09cba000025f64ddcd05495" title="Callback used by devices to communicate with application.">av_format_control_message</a> <a class="code" href="structAVFormatContext.html#ab569e23a4966ca1f708fb498dd6b3d5f" title="Callback used by devices to communicate with application.">control_message_cb</a>;
<a name="l01746"></a>01746 <span class="comment"></span>
<a name="l01747"></a>01747 <span class="comment"> /**</span>
<a name="l01748"></a>01748 <span class="comment"> * Output timestamp offset, in microseconds.</span>
<a name="l01749"></a>01749 <span class="comment"> * Muxing: set by user via AVOptions (NO direct access)</span>
<a name="l01750"></a>01750 <span class="comment"> */</span>
<a name="l01751"></a><a class="code" href="structAVFormatContext.html#a711dc3e6159c44dc31843f915b893a12">01751</a> int64_t <a class="code" href="structAVFormatContext.html#a711dc3e6159c44dc31843f915b893a12" title="Output timestamp offset, in microseconds.">output_ts_offset</a>;
<a name="l01752"></a>01752 <span class="comment"></span>
<a name="l01753"></a>01753 <span class="comment"> /**</span>
<a name="l01754"></a>01754 <span class="comment"> * Maximum duration (in AV_TIME_BASE units) of the data read</span>
<a name="l01755"></a>01755 <span class="comment"> * from input in avformat_find_stream_info().</span>
<a name="l01756"></a>01756 <span class="comment"> * Demuxing only, set by the caller before avformat_find_stream_info()</span>
<a name="l01757"></a>01757 <span class="comment"> * via AVOptions (NO direct access).</span>
<a name="l01758"></a>01758 <span class="comment"> * Can be set to 0 to let avformat choose using a heuristic.</span>
<a name="l01759"></a>01759 <span class="comment"> */</span>
<a name="l01760"></a><a class="code" href="structAVFormatContext.html#ae37d8ef296a546a242209c886881275b">01760</a> int64_t <a class="code" href="structAVFormatContext.html#ae37d8ef296a546a242209c886881275b" title="Maximum duration (in AV_TIME_BASE units) of the data read from input in avformat_find_stream_info().">max_analyze_duration2</a>;
<a name="l01761"></a>01761 <span class="comment"></span>
<a name="l01762"></a>01762 <span class="comment"> /**</span>
<a name="l01763"></a>01763 <span class="comment"> * Maximum size of the data read from input for determining</span>
<a name="l01764"></a>01764 <span class="comment"> * the input container format.</span>
<a name="l01765"></a>01765 <span class="comment"> * Demuxing only, set by the caller before avformat_open_input()</span>
<a name="l01766"></a>01766 <span class="comment"> * via AVOptions (NO direct access).</span>
<a name="l01767"></a>01767 <span class="comment"> */</span>
<a name="l01768"></a><a class="code" href="structAVFormatContext.html#a423ea33665de4caba4a77ecf68c63722">01768</a> int64_t <a class="code" href="structAVFormatContext.html#a423ea33665de4caba4a77ecf68c63722" title="Maximum size of the data read from input for determining the input container format.">probesize2</a>;
<a name="l01769"></a>01769 <span class="comment"></span>
<a name="l01770"></a>01770 <span class="comment"> /**</span>
<a name="l01771"></a>01771 <span class="comment"> * dump format separator.</span>
<a name="l01772"></a>01772 <span class="comment"> * can be ", " or "\n " or anything else</span>
<a name="l01773"></a>01773 <span class="comment"> * Code outside libavformat should access this field using AVOptions</span>
<a name="l01774"></a>01774 <span class="comment"> * (NO direct access).</span>
<a name="l01775"></a>01775 <span class="comment"> * - muxing: Set by user.</span>
<a name="l01776"></a>01776 <span class="comment"> * - demuxing: Set by user.</span>
<a name="l01777"></a>01777 <span class="comment"> */</span>
<a name="l01778"></a><a class="code" href="structAVFormatContext.html#afeccb79eb120b1c79d7d269e8049237a">01778</a> uint8_t *<a class="code" href="structAVFormatContext.html#afeccb79eb120b1c79d7d269e8049237a" title="dump format separator.">dump_separator</a>;
<a name="l01779"></a>01779 <span class="comment"></span>
<a name="l01780"></a>01780 <span class="comment"> /**</span>
<a name="l01781"></a>01781 <span class="comment"> * Forced Data codec_id.</span>
<a name="l01782"></a>01782 <span class="comment"> * Demuxing: Set by user.</span>
<a name="l01783"></a>01783 <span class="comment"> */</span>
<a name="l01784"></a><a class="code" href="structAVFormatContext.html#a2112b67f2f7a58bde5b6d13dc353b58d">01784</a> <span class="keyword">enum</span> <a class="code" href="group__lavc__core.html#gaadca229ad2c20e060a14fec08a5cc7ce" title="Identify the syntax and semantics of the bitstream.">AVCodecID</a> <a class="code" href="structAVFormatContext.html#a2112b67f2f7a58bde5b6d13dc353b58d" title="Forced Data codec_id.">data_codec_id</a>;
<a name="l01785"></a>01785 <span class="comment"></span>
<a name="l01786"></a>01786 <span class="comment"> /**</span>
<a name="l01787"></a>01787 <span class="comment"> * Called to open further IO contexts when needed for demuxing.</span>
<a name="l01788"></a>01788 <span class="comment"> *</span>
<a name="l01789"></a>01789 <span class="comment"> * This can be set by the user application to perform security checks on</span>
<a name="l01790"></a>01790 <span class="comment"> * the URLs before opening them.</span>
<a name="l01791"></a>01791 <span class="comment"> * The function should behave like avio_open2(), AVFormatContext is provided</span>
<a name="l01792"></a>01792 <span class="comment"> * as contextual information and to reach AVFormatContext.opaque.</span>
<a name="l01793"></a>01793 <span class="comment"> *</span>
<a name="l01794"></a>01794 <span class="comment"> * If NULL then some simple checks are used together with avio_open2().</span>
<a name="l01795"></a>01795 <span class="comment"> *</span>
<a name="l01796"></a>01796 <span class="comment"> * Must not be accessed directly from outside avformat.</span>
<a name="l01797"></a>01797 <span class="comment"> * @See av_format_set_open_cb()</span>
<a name="l01798"></a>01798 <span class="comment"> *</span>
<a name="l01799"></a>01799 <span class="comment"> * Demuxing: Set by user.</span>
<a name="l01800"></a>01800 <span class="comment"> */</span>
<a name="l01801"></a><a class="code" href="structAVFormatContext.html#a5b40817d7dae87863741179ceac022ac">01801</a> int (*<a class="code" href="structAVFormatContext.html#a5b40817d7dae87863741179ceac022ac" title="Called to open further IO contexts when needed for demuxing.">open_cb</a>)(<span class="keyword">struct </span><a class="code" href="structAVFormatContext.html" title="Format I/O context.">AVFormatContext</a> *s, <a class="code" href="structAVIOContext.html" title="Bytestream IO Context.">AVIOContext</a> **p, <span class="keyword">const</span> <span class="keywordtype">char</span> *url, <span class="keywordtype">int</span> <a class="code" href="structAVFormatContext.html#a32379cc371463b235d54235d4af06a15" title="Flags modifying the (de)muxer behaviour.">flags</a>, <span class="keyword">const</span> <a class="code" href="structAVIOInterruptCB.html" title="Callback for checking whether to abort blocking functions.">AVIOInterruptCB</a> *int_cb, <a class="code" href="group__lavu__dict.html#ga1d7cc0833bee918994a600556410315f">AVDictionary</a> **options);
<a name="l01802"></a>01802 } <a class="code" href="structAVFormatContext.html" title="Format I/O context.">AVFormatContext</a>;
<a name="l01803"></a>01803
<a name="l01804"></a>01804 <span class="keywordtype">int</span> <a class="code" href="avformat_8h.html#ad332941a01e30dd7d20a25f98dd69907">av_format_get_probe_score</a>(<span class="keyword">const</span> <a class="code" href="structAVFormatContext.html" title="Format I/O context.">AVFormatContext</a> *s);
<a name="l01805"></a>01805 <a class="code" href="structAVCodec.html" title="AVCodec.">AVCodec</a> * <a class="code" href="avformat_8h.html#a02b77e5add312ccb0563396f4fb6dc79">av_format_get_video_codec</a>(<span class="keyword">const</span> <a class="code" href="structAVFormatContext.html" title="Format I/O context.">AVFormatContext</a> *s);
<a name="l01806"></a>01806 <span class="keywordtype">void</span> <a class="code" href="avformat_8h.html#a4570da40de5e973587d8c75b2be0fe7d">av_format_set_video_codec</a>(<a class="code" href="structAVFormatContext.html" title="Format I/O context.">AVFormatContext</a> *s, <a class="code" href="structAVCodec.html" title="AVCodec.">AVCodec</a> *c);
<a name="l01807"></a>01807 <a class="code" href="structAVCodec.html" title="AVCodec.">AVCodec</a> * <a class="code" href="avformat_8h.html#a782fd30d7d2d72c1cfd9aca8efce885d">av_format_get_audio_codec</a>(<span class="keyword">const</span> <a class="code" href="structAVFormatContext.html" title="Format I/O context.">AVFormatContext</a> *s);
<a name="l01808"></a>01808 <span class="keywordtype">void</span> <a class="code" href="avformat_8h.html#a3c4fdc15d6ae69fdc046421711d594a9">av_format_set_audio_codec</a>(<a class="code" href="structAVFormatContext.html" title="Format I/O context.">AVFormatContext</a> *s, <a class="code" href="structAVCodec.html" title="AVCodec.">AVCodec</a> *c);
<a name="l01809"></a>01809 <a class="code" href="structAVCodec.html" title="AVCodec.">AVCodec</a> * <a class="code" href="avformat_8h.html#a3b036bd91012956a06e802140d207767">av_format_get_subtitle_codec</a>(<span class="keyword">const</span> <a class="code" href="structAVFormatContext.html" title="Format I/O context.">AVFormatContext</a> *s);
<a name="l01810"></a>01810 <span class="keywordtype">void</span> <a class="code" href="avformat_8h.html#af7d25817b7501a5a1abce5af7f796fb7">av_format_set_subtitle_codec</a>(<a class="code" href="structAVFormatContext.html" title="Format I/O context.">AVFormatContext</a> *s, <a class="code" href="structAVCodec.html" title="AVCodec.">AVCodec</a> *c);
<a name="l01811"></a>01811 <a class="code" href="structAVCodec.html" title="AVCodec.">AVCodec</a> * <a class="code" href="avformat_8h.html#acbd972cea279ea629129ca3b496d0588">av_format_get_data_codec</a>(<span class="keyword">const</span> <a class="code" href="structAVFormatContext.html" title="Format I/O context.">AVFormatContext</a> *s);
<a name="l01812"></a>01812 <span class="keywordtype">void</span> <a class="code" href="avformat_8h.html#ab22ac7df1907f7f2e273ca11363ad4df">av_format_set_data_codec</a>(<a class="code" href="structAVFormatContext.html" title="Format I/O context.">AVFormatContext</a> *s, <a class="code" href="structAVCodec.html" title="AVCodec.">AVCodec</a> *c);
<a name="l01813"></a>01813 <span class="keywordtype">int</span> <a class="code" href="avformat_8h.html#ae7e7da7c69b51e4339f4942ab76807d6">av_format_get_metadata_header_padding</a>(<span class="keyword">const</span> <a class="code" href="structAVFormatContext.html" title="Format I/O context.">AVFormatContext</a> *s);
<a name="l01814"></a>01814 <span class="keywordtype">void</span> <a class="code" href="avformat_8h.html#ae1757ab39373897605bc564366a5b2af">av_format_set_metadata_header_padding</a>(<a class="code" href="structAVFormatContext.html" title="Format I/O context.">AVFormatContext</a> *s, <span class="keywordtype">int</span> c);
<a name="l01815"></a>01815 <span class="keywordtype">void</span> * <a class="code" href="avformat_8h.html#a5fd65a8af1d5876c2280b822c5629f4a">av_format_get_opaque</a>(<span class="keyword">const</span> <a class="code" href="structAVFormatContext.html" title="Format I/O context.">AVFormatContext</a> *s);
<a name="l01816"></a>01816 <span class="keywordtype">void</span> <a class="code" href="avformat_8h.html#a0ab75741a82f9f0f3340a4f460119702">av_format_set_opaque</a>(<a class="code" href="structAVFormatContext.html" title="Format I/O context.">AVFormatContext</a> *s, <span class="keywordtype">void</span> *<a class="code" href="structAVFormatContext.html#a71797838db59ca0682dd2d18b149134e" title="User data.">opaque</a>);
<a name="l01817"></a>01817 <a class="code" href="avformat_8h.html#a8232a706c09cba000025f64ddcd05495" title="Callback used by devices to communicate with application.">av_format_control_message</a> <a class="code" href="avformat_8h.html#ad81dc5aa7a94419da69fc98dba91056e">av_format_get_control_message_cb</a>(<span class="keyword">const</span> <a class="code" href="structAVFormatContext.html" title="Format I/O context.">AVFormatContext</a> *s);
<a name="l01818"></a>01818 <span class="keywordtype">void</span> <a class="code" href="avformat_8h.html#abc5b1cdf24f51eecc24cf4b5a9c0d82c">av_format_set_control_message_cb</a>(<a class="code" href="structAVFormatContext.html" title="Format I/O context.">AVFormatContext</a> *s, <a class="code" href="avformat_8h.html#a8232a706c09cba000025f64ddcd05495" title="Callback used by devices to communicate with application.">av_format_control_message</a> callback);
<a name="l01819"></a>01819 <a class="code" href="avformat_8h.html#ab669581238f1509dc9d66f58924a955d">AVOpenCallback</a> <a class="code" href="avformat_8h.html#a8ab5616c0f7fc2607c4e698104e44ead">av_format_get_open_cb</a>(<span class="keyword">const</span> <a class="code" href="structAVFormatContext.html" title="Format I/O context.">AVFormatContext</a> *s);
<a name="l01820"></a>01820 <span class="keywordtype">void</span> <a class="code" href="avformat_8h.html#a5d810ed581b87580c36e63445172244e">av_format_set_open_cb</a>(<a class="code" href="structAVFormatContext.html" title="Format I/O context.">AVFormatContext</a> *s, <a class="code" href="avformat_8h.html#ab669581238f1509dc9d66f58924a955d">AVOpenCallback</a> callback);
<a name="l01821"></a>01821 <span class="comment"></span>
<a name="l01822"></a>01822 <span class="comment">/**</span>
<a name="l01823"></a>01823 <span class="comment"> * This function will cause global side data to be injected in the next packet</span>
<a name="l01824"></a>01824 <span class="comment"> * of each stream as well as after any subsequent seek.</span>
<a name="l01825"></a>01825 <span class="comment"> */</span>
<a name="l01826"></a>01826 <span class="keywordtype">void</span> <a class="code" href="avformat_8h.html#aa3a096ee52bc6b1e0f31278d26996777" title="This function will cause global side data to be injected in the next packet of each stream as well as...">av_format_inject_global_side_data</a>(<a class="code" href="structAVFormatContext.html" title="Format I/O context.">AVFormatContext</a> *s);
<a name="l01827"></a>01827 <span class="comment"></span>
<a name="l01828"></a>01828 <span class="comment">/**</span>
<a name="l01829"></a>01829 <span class="comment"> * Returns the method used to set ctx->duration.</span>
<a name="l01830"></a>01830 <span class="comment"> *</span>
<a name="l01831"></a>01831 <span class="comment"> * @return AVFMT_DURATION_FROM_PTS, AVFMT_DURATION_FROM_STREAM, or AVFMT_DURATION_FROM_BITRATE.</span>
<a name="l01832"></a>01832 <span class="comment"> */</span>
<a name="l01833"></a>01833 <span class="keyword">enum</span> <a class="code" href="avformat_8h.html#a7c2692ffa20d3e888e40e79eeda6d73b" title="The duration of a video can be estimated through various ways, and this enum can be used to know how ...">AVDurationEstimationMethod</a> <a class="code" href="avformat_8h.html#ac7070b68d7ca5fd577f9f835556ebeff" title="Returns the method used to set ctx->duration.">av_fmt_ctx_get_duration_estimation_method</a>(<span class="keyword">const</span> <a class="code" href="structAVFormatContext.html" title="Format I/O context.">AVFormatContext</a>* ctx);
<a name="l01834"></a>01834
<a name="l01835"></a><a class="code" href="structAVPacketList.html">01835</a> <span class="keyword">typedef</span> <span class="keyword">struct </span><a class="code" href="structAVPacketList.html">AVPacketList</a> {
<a name="l01836"></a><a class="code" href="structAVPacketList.html#a2d7ef80c60c0c3a804248ab691b9c5a7">01836</a> <a class="code" href="structAVPacket.html" title="This structure stores compressed data.">AVPacket</a> <a class="code" href="structAVPacketList.html#a2d7ef80c60c0c3a804248ab691b9c5a7">pkt</a>;
<a name="l01837"></a><a class="code" href="structAVPacketList.html#a6a1d0f1a75cfafa4643b93752edef643">01837</a> <span class="keyword">struct </span><a class="code" href="structAVPacketList.html">AVPacketList</a> *<a class="code" href="structAVPacketList.html#a6a1d0f1a75cfafa4643b93752edef643">next</a>;
<a name="l01838"></a>01838 } <a class="code" href="structAVPacketList.html">AVPacketList</a>;
<a name="l01839"></a>01839
<a name="l01840"></a>01840 <span class="comment"></span>
<a name="l01841"></a>01841 <span class="comment">/**</span>
<a name="l01842"></a>01842 <span class="comment"> * @defgroup lavf_core Core functions</span>
<a name="l01843"></a>01843 <span class="comment"> * @ingroup libavf</span>
<a name="l01844"></a>01844 <span class="comment"> *</span>
<a name="l01845"></a>01845 <span class="comment"> * Functions for querying libavformat capabilities, allocating core structures,</span>
<a name="l01846"></a>01846 <span class="comment"> * etc.</span>
<a name="l01847"></a>01847 <span class="comment"> * @{</span>
<a name="l01848"></a>01848 <span class="comment"> */</span>
<a name="l01849"></a>01849 <span class="comment"></span>
<a name="l01850"></a>01850 <span class="comment">/**</span>
<a name="l01851"></a>01851 <span class="comment"> * Return the LIBAVFORMAT_VERSION_INT constant.</span>
<a name="l01852"></a>01852 <span class="comment"> */</span>
<a name="l01853"></a>01853 <span class="keywordtype">unsigned</span> <a class="code" href="group__lavf__core.html#gaf2d4e0fee66cef99dea2153933e6b907" title="Return the LIBAVFORMAT_VERSION_INT constant.">avformat_version</a>(<span class="keywordtype">void</span>);
<a name="l01854"></a>01854 <span class="comment"></span>
<a name="l01855"></a>01855 <span class="comment">/**</span>
<a name="l01856"></a>01856 <span class="comment"> * Return the libavformat build-time configuration.</span>
<a name="l01857"></a>01857 <span class="comment"> */</span>
<a name="l01858"></a>01858 <span class="keyword">const</span> <span class="keywordtype">char</span> *<a class="code" href="group__lavf__core.html#ga5f48b0398d77d8eeb45d6c649e4e3404" title="Return the libavformat build-time configuration.">avformat_configuration</a>(<span class="keywordtype">void</span>);
<a name="l01859"></a>01859 <span class="comment"></span>
<a name="l01860"></a>01860 <span class="comment">/**</span>
<a name="l01861"></a>01861 <span class="comment"> * Return the libavformat license.</span>
<a name="l01862"></a>01862 <span class="comment"> */</span>
<a name="l01863"></a>01863 <span class="keyword">const</span> <span class="keywordtype">char</span> *<a class="code" href="group__lavf__core.html#ga160fef784175409f945c70e8931accc8" title="Return the libavformat license.">avformat_license</a>(<span class="keywordtype">void</span>);
<a name="l01864"></a>01864 <span class="comment"></span>
<a name="l01865"></a>01865 <span class="comment">/**</span>
<a name="l01866"></a>01866 <span class="comment"> * Initialize libavformat and register all the muxers, demuxers and</span>
<a name="l01867"></a>01867 <span class="comment"> * protocols. If you do not call this function, then you can select</span>
<a name="l01868"></a>01868 <span class="comment"> * exactly which formats you want to support.</span>
<a name="l01869"></a>01869 <span class="comment"> *</span>
<a name="l01870"></a>01870 <span class="comment"> * @see av_register_input_format()</span>
<a name="l01871"></a>01871 <span class="comment"> * @see av_register_output_format()</span>
<a name="l01872"></a>01872 <span class="comment"> */</span>
<a name="l01873"></a>01873 <span class="keywordtype">void</span> <a class="code" href="group__lavf__core.html#ga917265caec45ef5a0646356ed1a507e3" title="Initialize libavformat and register all the muxers, demuxers and protocols.">av_register_all</a>(<span class="keywordtype">void</span>);
<a name="l01874"></a>01874
<a name="l01875"></a>01875 <span class="keywordtype">void</span> <a class="code" href="group__lavf__core.html#ga896f319308627b5b66fd41a4b1d53ae6">av_register_input_format</a>(<a class="code" href="structAVInputFormat.html">AVInputFormat</a> *format);
<a name="l01876"></a>01876 <span class="keywordtype">void</span> <a class="code" href="group__lavf__core.html#gabf0629358bc40c7874932ef6f4dda6b8">av_register_output_format</a>(<a class="code" href="structAVOutputFormat.html">AVOutputFormat</a> *format);
<a name="l01877"></a>01877 <span class="comment"></span>
<a name="l01878"></a>01878 <span class="comment">/**</span>
<a name="l01879"></a>01879 <span class="comment"> * Do global initialization of network components. This is optional,</span>
<a name="l01880"></a>01880 <span class="comment"> * but recommended, since it avoids the overhead of implicitly</span>
<a name="l01881"></a>01881 <span class="comment"> * doing the setup for each session.</span>
<a name="l01882"></a>01882 <span class="comment"> *</span>
<a name="l01883"></a>01883 <span class="comment"> * Calling this function will become mandatory if using network</span>
<a name="l01884"></a>01884 <span class="comment"> * protocols at some major version bump.</span>
<a name="l01885"></a>01885 <span class="comment"> */</span>
<a name="l01886"></a>01886 <span class="keywordtype">int</span> <a class="code" href="group__lavf__core.html#ga84542023693d61e8564c5d457979c932" title="Do global initialization of network components.">avformat_network_init</a>(<span class="keywordtype">void</span>);
<a name="l01887"></a>01887 <span class="comment"></span>
<a name="l01888"></a>01888 <span class="comment">/**</span>
<a name="l01889"></a>01889 <span class="comment"> * Undo the initialization done by avformat_network_init.</span>
<a name="l01890"></a>01890 <span class="comment"> */</span>
<a name="l01891"></a>01891 <span class="keywordtype">int</span> <a class="code" href="group__lavf__core.html#ga245f2875f80ce67ec3d1e0f54dacf2c4" title="Undo the initialization done by avformat_network_init.">avformat_network_deinit</a>(<span class="keywordtype">void</span>);
<a name="l01892"></a>01892 <span class="comment"></span>
<a name="l01893"></a>01893 <span class="comment">/**</span>
<a name="l01894"></a>01894 <span class="comment"> * If f is NULL, returns the first registered input format,</span>
<a name="l01895"></a>01895 <span class="comment"> * if f is non-NULL, returns the next registered input format after f</span>
<a name="l01896"></a>01896 <span class="comment"> * or NULL if f is the last one.</span>
<a name="l01897"></a>01897 <span class="comment"> */</span>
<a name="l01898"></a>01898 <a class="code" href="structAVInputFormat.html">AVInputFormat</a> *<a class="code" href="group__lavf__core.html#ga64ff7d30d32639e69fe57f99bb48f680" title="If f is NULL, returns the first registered input format, if f is non-NULL, returns the next registere...">av_iformat_next</a>(<span class="keyword">const</span> <a class="code" href="structAVInputFormat.html">AVInputFormat</a> *f);
<a name="l01899"></a>01899 <span class="comment"></span>
<a name="l01900"></a>01900 <span class="comment">/**</span>
<a name="l01901"></a>01901 <span class="comment"> * If f is NULL, returns the first registered output format,</span>
<a name="l01902"></a>01902 <span class="comment"> * if f is non-NULL, returns the next registered output format after f</span>
<a name="l01903"></a>01903 <span class="comment"> * or NULL if f is the last one.</span>
<a name="l01904"></a>01904 <span class="comment"> */</span>
<a name="l01905"></a>01905 <a class="code" href="structAVOutputFormat.html">AVOutputFormat</a> *<a class="code" href="group__lavf__core.html#ga8fe016b9e8df67a5ffde855f2f891d71" title="If f is NULL, returns the first registered output format, if f is non-NULL, returns the next register...">av_oformat_next</a>(<span class="keyword">const</span> <a class="code" href="structAVOutputFormat.html">AVOutputFormat</a> *f);
<a name="l01906"></a>01906 <span class="comment"></span>
<a name="l01907"></a>01907 <span class="comment">/**</span>
<a name="l01908"></a>01908 <span class="comment"> * Allocate an AVFormatContext.</span>
<a name="l01909"></a>01909 <span class="comment"> * avformat_free_context() can be used to free the context and everything</span>
<a name="l01910"></a>01910 <span class="comment"> * allocated by the framework within it.</span>
<a name="l01911"></a>01911 <span class="comment"> */</span>
<a name="l01912"></a>01912 <a class="code" href="structAVFormatContext.html" title="Format I/O context.">AVFormatContext</a> *<a class="code" href="group__lavf__core.html#gac7a91abf2f59648d995894711f070f62" title="Allocate an AVFormatContext.">avformat_alloc_context</a>(<span class="keywordtype">void</span>);
<a name="l01913"></a>01913 <span class="comment"></span>
<a name="l01914"></a>01914 <span class="comment">/**</span>
<a name="l01915"></a>01915 <span class="comment"> * Free an AVFormatContext and all its streams.</span>
<a name="l01916"></a>01916 <span class="comment"> * @param s context to free</span>
<a name="l01917"></a>01917 <span class="comment"> */</span>
<a name="l01918"></a>01918 <span class="keywordtype">void</span> <a class="code" href="group__lavf__core.html#gac2990b13b68e831a408fce8e1d0d6445" title="Free an AVFormatContext and all its streams.">avformat_free_context</a>(<a class="code" href="structAVFormatContext.html" title="Format I/O context.">AVFormatContext</a> *s);
<a name="l01919"></a>01919 <span class="comment"></span>
<a name="l01920"></a>01920 <span class="comment">/**</span>
<a name="l01921"></a>01921 <span class="comment"> * Get the AVClass for AVFormatContext. It can be used in combination with</span>
<a name="l01922"></a>01922 <span class="comment"> * AV_OPT_SEARCH_FAKE_OBJ for examining options.</span>
<a name="l01923"></a>01923 <span class="comment"> *</span>
<a name="l01924"></a>01924 <span class="comment"> * @see av_opt_find().</span>
<a name="l01925"></a>01925 <span class="comment"> */</span>
<a name="l01926"></a>01926 <span class="keyword">const</span> <a class="code" href="structAVClass.html" title="Describe the class of an AVClass context structure.">AVClass</a> *<a class="code" href="group__lavf__core.html#ga6030789ce395ef543306bbe933619749" title="Get the AVClass for AVFormatContext.">avformat_get_class</a>(<span class="keywordtype">void</span>);
<a name="l01927"></a>01927 <span class="comment"></span>
<a name="l01928"></a>01928 <span class="comment">/**</span>
<a name="l01929"></a>01929 <span class="comment"> * Add a new stream to a media file.</span>
<a name="l01930"></a>01930 <span class="comment"> *</span>
<a name="l01931"></a>01931 <span class="comment"> * When demuxing, it is called by the demuxer in read_header(). If the</span>
<a name="l01932"></a>01932 <span class="comment"> * flag AVFMTCTX_NOHEADER is set in s.ctx_flags, then it may also</span>
<a name="l01933"></a>01933 <span class="comment"> * be called in read_packet().</span>
<a name="l01934"></a>01934 <span class="comment"> *</span>
<a name="l01935"></a>01935 <span class="comment"> * When muxing, should be called by the user before avformat_write_header().</span>
<a name="l01936"></a>01936 <span class="comment"> *</span>
<a name="l01937"></a>01937 <span class="comment"> * User is required to call avcodec_close() and avformat_free_context() to</span>
<a name="l01938"></a>01938 <span class="comment"> * clean up the allocation by avformat_new_stream().</span>
<a name="l01939"></a>01939 <span class="comment"> *</span>
<a name="l01940"></a>01940 <span class="comment"> * @param s media file handle</span>
<a name="l01941"></a>01941 <span class="comment"> * @param c If non-NULL, the AVCodecContext corresponding to the new stream</span>
<a name="l01942"></a>01942 <span class="comment"> * will be initialized to use this codec. This is needed for e.g. codec-specific</span>
<a name="l01943"></a>01943 <span class="comment"> * defaults to be set, so codec should be provided if it is known.</span>
<a name="l01944"></a>01944 <span class="comment"> *</span>
<a name="l01945"></a>01945 <span class="comment"> * @return newly created stream or NULL on error.</span>
<a name="l01946"></a>01946 <span class="comment"> */</span>
<a name="l01947"></a>01947 <a class="code" href="structAVStream.html" title="Stream structure.">AVStream</a> *<a class="code" href="group__lavf__core.html#gadcb0fd3e507d9b58fe78f61f8ad39827" title="Add a new stream to a media file.">avformat_new_stream</a>(<a class="code" href="structAVFormatContext.html" title="Format I/O context.">AVFormatContext</a> *s, <span class="keyword">const</span> <a class="code" href="structAVCodec.html" title="AVCodec.">AVCodec</a> *c);
<a name="l01948"></a>01948 <span class="comment"></span>
<a name="l01949"></a>01949 <span class="comment">/**</span>
<a name="l01950"></a>01950 <span class="comment"> * Get side information from stream.</span>
<a name="l01951"></a>01951 <span class="comment"> *</span>
<a name="l01952"></a>01952 <span class="comment"> * @param stream stream</span>
<a name="l01953"></a>01953 <span class="comment"> * @param type desired side information type</span>
<a name="l01954"></a>01954 <span class="comment"> * @param size pointer for side information size to store (optional)</span>
<a name="l01955"></a>01955 <span class="comment"> * @return pointer to data if present or NULL otherwise</span>
<a name="l01956"></a>01956 <span class="comment"> */</span>
<a name="l01957"></a>01957 uint8_t *<a class="code" href="group__lavf__core.html#ga602e5ccdb9c1113a1765ed85f377fdb3" title="Get side information from stream.">av_stream_get_side_data</a>(<a class="code" href="structAVStream.html" title="Stream structure.">AVStream</a> *stream,
<a name="l01958"></a>01958 <span class="keyword">enum</span> <a class="code" href="group__lavc__packet.html#ga9a80bfcacc586b483a973272800edb97">AVPacketSideDataType</a> type, <span class="keywordtype">int</span> *size);
<a name="l01959"></a>01959
<a name="l01960"></a>01960 <a class="code" href="structAVProgram.html" title="New fields can be added to the end with minor version bumps.">AVProgram</a> *<a class="code" href="group__lavf__core.html#gab31f7c7c99dcadead38e8e83e0fdb828">av_new_program</a>(<a class="code" href="structAVFormatContext.html" title="Format I/O context.">AVFormatContext</a> *s, <span class="keywordtype">int</span> <span class="keywordtype">id</span>);
<a name="l01961"></a>01961 <span class="comment"></span>
<a name="l01962"></a>01962 <span class="comment">/**</span>
<a name="l01963"></a>01963 <span class="comment"> * @}</span>
<a name="l01964"></a>01964 <span class="comment"> */</span>
<a name="l01965"></a>01965
<a name="l01966"></a>01966 <span class="comment"></span>
<a name="l01967"></a>01967 <span class="comment">/**</span>
<a name="l01968"></a>01968 <span class="comment"> * Allocate an AVFormatContext for an output format.</span>
<a name="l01969"></a>01969 <span class="comment"> * avformat_free_context() can be used to free the context and</span>
<a name="l01970"></a>01970 <span class="comment"> * everything allocated by the framework within it.</span>
<a name="l01971"></a>01971 <span class="comment"> *</span>
<a name="l01972"></a>01972 <span class="comment"> * @param *ctx is set to the created format context, or to NULL in</span>
<a name="l01973"></a>01973 <span class="comment"> * case of failure</span>
<a name="l01974"></a>01974 <span class="comment"> * @param oformat format to use for allocating the context, if NULL</span>
<a name="l01975"></a>01975 <span class="comment"> * format_name and filename are used instead</span>
<a name="l01976"></a>01976 <span class="comment"> * @param format_name the name of output format to use for allocating the</span>
<a name="l01977"></a>01977 <span class="comment"> * context, if NULL filename is used instead</span>
<a name="l01978"></a>01978 <span class="comment"> * @param filename the name of the filename to use for allocating the</span>
<a name="l01979"></a>01979 <span class="comment"> * context, may be NULL</span>
<a name="l01980"></a>01980 <span class="comment"> * @return >= 0 in case of success, a negative AVERROR code in case of</span>
<a name="l01981"></a>01981 <span class="comment"> * failure</span>
<a name="l01982"></a>01982 <span class="comment"> */</span>
<a name="l01983"></a>01983 <span class="keywordtype">int</span> <a class="code" href="avformat_8h.html#a6ddf3d982feb45fa5081420ee911f5d5" title="Allocate an AVFormatContext for an output format.">avformat_alloc_output_context2</a>(<a class="code" href="structAVFormatContext.html" title="Format I/O context.">AVFormatContext</a> **ctx, <a class="code" href="structAVOutputFormat.html">AVOutputFormat</a> *oformat,
<a name="l01984"></a>01984 <span class="keyword">const</span> <span class="keywordtype">char</span> *format_name, <span class="keyword">const</span> <span class="keywordtype">char</span> *filename);
<a name="l01985"></a>01985 <span class="comment"></span>
<a name="l01986"></a>01986 <span class="comment">/**</span>
<a name="l01987"></a>01987 <span class="comment"> * @addtogroup lavf_decoding</span>
<a name="l01988"></a>01988 <span class="comment"> * @{</span>
<a name="l01989"></a>01989 <span class="comment"> */</span>
<a name="l01990"></a>01990 <span class="comment"></span>
<a name="l01991"></a>01991 <span class="comment">/**</span>
<a name="l01992"></a>01992 <span class="comment"> * Find AVInputFormat based on the short name of the input format.</span>
<a name="l01993"></a>01993 <span class="comment"> */</span>
<a name="l01994"></a>01994 <a class="code" href="structAVInputFormat.html">AVInputFormat</a> *<a class="code" href="group__lavf__decoding.html#ga7d2f532c6653c2419b17956712fdf3da" title="Find AVInputFormat based on the short name of the input format.">av_find_input_format</a>(<span class="keyword">const</span> <span class="keywordtype">char</span> *short_name);
<a name="l01995"></a>01995 <span class="comment"></span>
<a name="l01996"></a>01996 <span class="comment">/**</span>
<a name="l01997"></a>01997 <span class="comment"> * Guess the file format.</span>
<a name="l01998"></a>01998 <span class="comment"> *</span>
<a name="l01999"></a>01999 <span class="comment"> * @param pd data to be probed</span>
<a name="l02000"></a>02000 <span class="comment"> * @param is_opened Whether the file is already opened; determines whether</span>
<a name="l02001"></a>02001 <span class="comment"> * demuxers with or without AVFMT_NOFILE are probed.</span>
<a name="l02002"></a>02002 <span class="comment"> */</span>
<a name="l02003"></a>02003 <a class="code" href="structAVInputFormat.html">AVInputFormat</a> *<a class="code" href="group__lavf__decoding.html#gad8a1268228fff3aeae0aeaa99a767a24" title="Guess the file format.">av_probe_input_format</a>(<a class="code" href="structAVProbeData.html" title="This structure contains the data a format has to probe a file.">AVProbeData</a> *pd, <span class="keywordtype">int</span> is_opened);
<a name="l02004"></a>02004 <span class="comment"></span>
<a name="l02005"></a>02005 <span class="comment">/**</span>
<a name="l02006"></a>02006 <span class="comment"> * Guess the file format.</span>
<a name="l02007"></a>02007 <span class="comment"> *</span>
<a name="l02008"></a>02008 <span class="comment"> * @param pd data to be probed</span>
<a name="l02009"></a>02009 <span class="comment"> * @param is_opened Whether the file is already opened; determines whether</span>
<a name="l02010"></a>02010 <span class="comment"> * demuxers with or without AVFMT_NOFILE are probed.</span>
<a name="l02011"></a>02011 <span class="comment"> * @param score_max A probe score larger that this is required to accept a</span>
<a name="l02012"></a>02012 <span class="comment"> * detection, the variable is set to the actual detection</span>
<a name="l02013"></a>02013 <span class="comment"> * score afterwards.</span>
<a name="l02014"></a>02014 <span class="comment"> * If the score is <= AVPROBE_SCORE_MAX / 4 it is recommended</span>
<a name="l02015"></a>02015 <span class="comment"> * to retry with a larger probe buffer.</span>
<a name="l02016"></a>02016 <span class="comment"> */</span>
<a name="l02017"></a>02017 <a class="code" href="structAVInputFormat.html">AVInputFormat</a> *<a class="code" href="group__lavf__decoding.html#gae8b938f6e7c3741dd27a6c171e72f33d" title="Guess the file format.">av_probe_input_format2</a>(<a class="code" href="structAVProbeData.html" title="This structure contains the data a format has to probe a file.">AVProbeData</a> *pd, <span class="keywordtype">int</span> is_opened, <span class="keywordtype">int</span> *score_max);
<a name="l02018"></a>02018 <span class="comment"></span>
<a name="l02019"></a>02019 <span class="comment">/**</span>
<a name="l02020"></a>02020 <span class="comment"> * Guess the file format.</span>
<a name="l02021"></a>02021 <span class="comment"> *</span>
<a name="l02022"></a>02022 <span class="comment"> * @param is_opened Whether the file is already opened; determines whether</span>
<a name="l02023"></a>02023 <span class="comment"> * demuxers with or without AVFMT_NOFILE are probed.</span>
<a name="l02024"></a>02024 <span class="comment"> * @param score_ret The score of the best detection.</span>
<a name="l02025"></a>02025 <span class="comment"> */</span>
<a name="l02026"></a>02026 <a class="code" href="structAVInputFormat.html">AVInputFormat</a> *<a class="code" href="group__lavf__decoding.html#ga7e4318244afd6c5fe55cec75d27258b2" title="Guess the file format.">av_probe_input_format3</a>(<a class="code" href="structAVProbeData.html" title="This structure contains the data a format has to probe a file.">AVProbeData</a> *pd, <span class="keywordtype">int</span> is_opened, <span class="keywordtype">int</span> *score_ret);
<a name="l02027"></a>02027 <span class="comment"></span>
<a name="l02028"></a>02028 <span class="comment">/**</span>
<a name="l02029"></a>02029 <span class="comment"> * Probe a bytestream to determine the input format. Each time a probe returns</span>
<a name="l02030"></a>02030 <span class="comment"> * with a score that is too low, the probe buffer size is increased and another</span>
<a name="l02031"></a>02031 <span class="comment"> * attempt is made. When the maximum probe size is reached, the input format</span>
<a name="l02032"></a>02032 <span class="comment"> * with the highest score is returned.</span>
<a name="l02033"></a>02033 <span class="comment"> *</span>
<a name="l02034"></a>02034 <span class="comment"> * @param pb the bytestream to probe</span>
<a name="l02035"></a>02035 <span class="comment"> * @param fmt the input format is put here</span>
<a name="l02036"></a>02036 <span class="comment"> * @param filename the filename of the stream</span>
<a name="l02037"></a>02037 <span class="comment"> * @param logctx the log context</span>
<a name="l02038"></a>02038 <span class="comment"> * @param offset the offset within the bytestream to probe from</span>
<a name="l02039"></a>02039 <span class="comment"> * @param max_probe_size the maximum probe buffer size (zero for default)</span>
<a name="l02040"></a>02040 <span class="comment"> * @return the score in case of success, a negative value corresponding to an</span>
<a name="l02041"></a>02041 <span class="comment"> * the maximal score is AVPROBE_SCORE_MAX</span>
<a name="l02042"></a>02042 <span class="comment"> * AVERROR code otherwise</span>
<a name="l02043"></a>02043 <span class="comment"> */</span>
<a name="l02044"></a>02044 <span class="keywordtype">int</span> <a class="code" href="group__lavf__decoding.html#ga69e44bd9ade0160a8cd6196aa37505ea" title="Probe a bytestream to determine the input format.">av_probe_input_buffer2</a>(<a class="code" href="structAVIOContext.html" title="Bytestream IO Context.">AVIOContext</a> *pb, <a class="code" href="structAVInputFormat.html">AVInputFormat</a> **fmt,
<a name="l02045"></a>02045 <span class="keyword">const</span> <span class="keywordtype">char</span> *filename, <span class="keywordtype">void</span> *logctx,
<a name="l02046"></a>02046 <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> offset, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> max_probe_size);
<a name="l02047"></a>02047 <span class="comment"></span>
<a name="l02048"></a>02048 <span class="comment">/**</span>
<a name="l02049"></a>02049 <span class="comment"> * Like av_probe_input_buffer2() but returns 0 on success</span>
<a name="l02050"></a>02050 <span class="comment"> */</span>
<a name="l02051"></a>02051 <span class="keywordtype">int</span> <a class="code" href="group__lavf__decoding.html#ga5ef11a57aa4ed1d55703b66d59afbd0b" title="Like av_probe_input_buffer2() but returns 0 on success.">av_probe_input_buffer</a>(<a class="code" href="structAVIOContext.html" title="Bytestream IO Context.">AVIOContext</a> *pb, <a class="code" href="structAVInputFormat.html">AVInputFormat</a> **fmt,
<a name="l02052"></a>02052 <span class="keyword">const</span> <span class="keywordtype">char</span> *filename, <span class="keywordtype">void</span> *logctx,
<a name="l02053"></a>02053 <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> offset, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> max_probe_size);
<a name="l02054"></a>02054 <span class="comment"></span>
<a name="l02055"></a>02055 <span class="comment">/**</span>
<a name="l02056"></a>02056 <span class="comment"> * Open an input stream and read the header. The codecs are not opened.</span>
<a name="l02057"></a>02057 <span class="comment"> * The stream must be closed with avformat_close_input().</span>
<a name="l02058"></a>02058 <span class="comment"> *</span>
<a name="l02059"></a>02059 <span class="comment"> * @param ps Pointer to user-supplied AVFormatContext (allocated by avformat_alloc_context).</span>
<a name="l02060"></a>02060 <span class="comment"> * May be a pointer to NULL, in which case an AVFormatContext is allocated by this</span>
<a name="l02061"></a>02061 <span class="comment"> * function and written into ps.</span>
<a name="l02062"></a>02062 <span class="comment"> * Note that a user-supplied AVFormatContext will be freed on failure.</span>
<a name="l02063"></a>02063 <span class="comment"> * @param filename Name of the stream to open.</span>
<a name="l02064"></a>02064 <span class="comment"> * @param fmt If non-NULL, this parameter forces a specific input format.</span>
<a name="l02065"></a>02065 <span class="comment"> * Otherwise the format is autodetected.</span>
<a name="l02066"></a>02066 <span class="comment"> * @param options A dictionary filled with AVFormatContext and demuxer-private options.</span>
<a name="l02067"></a>02067 <span class="comment"> * On return this parameter will be destroyed and replaced with a dict containing</span>
<a name="l02068"></a>02068 <span class="comment"> * options that were not found. May be NULL.</span>
<a name="l02069"></a>02069 <span class="comment"> *</span>
<a name="l02070"></a>02070 <span class="comment"> * @return 0 on success, a negative AVERROR on failure.</span>
<a name="l02071"></a>02071 <span class="comment"> *</span>
<a name="l02072"></a>02072 <span class="comment"> * @note If you want to use custom IO, preallocate the format context and set its pb field.</span>
<a name="l02073"></a>02073 <span class="comment"> */</span>
<a name="l02074"></a>02074 <span class="keywordtype">int</span> <a class="code" href="group__lavf__decoding.html#ga10a404346c646e4ab58f4ed798baca32" title="Open an input stream and read the header.">avformat_open_input</a>(<a class="code" href="structAVFormatContext.html" title="Format I/O context.">AVFormatContext</a> **ps, <span class="keyword">const</span> <span class="keywordtype">char</span> *filename, <a class="code" href="structAVInputFormat.html">AVInputFormat</a> *fmt, <a class="code" href="group__lavu__dict.html#ga1d7cc0833bee918994a600556410315f">AVDictionary</a> **options);
<a name="l02075"></a>02075
<a name="l02076"></a>02076 <a class="code" href="attributes_8h.html#aa6d076561d3a9eea4729ee632652de02">attribute_deprecated</a>
<a name="l02077"></a>02077 <span class="keywordtype">int</span> <a class="code" href="group__lavf__decoding.html#ga71091e146791c4d181635485447c2830">av_demuxer_open</a>(<a class="code" href="structAVFormatContext.html" title="Format I/O context.">AVFormatContext</a> *ic);
<a name="l02078"></a>02078 <span class="comment"></span>
<a name="l02079"></a>02079 <span class="comment">/**</span>
<a name="l02080"></a>02080 <span class="comment"> * Read packets of a media file to get stream information. This</span>
<a name="l02081"></a>02081 <span class="comment"> * is useful for file formats with no headers such as MPEG. This</span>
<a name="l02082"></a>02082 <span class="comment"> * function also computes the real framerate in case of MPEG-2 repeat</span>
<a name="l02083"></a>02083 <span class="comment"> * frame mode.</span>
<a name="l02084"></a>02084 <span class="comment"> * The logical file position is not changed by this function;</span>
<a name="l02085"></a>02085 <span class="comment"> * examined packets may be buffered for later processing.</span>
<a name="l02086"></a>02086 <span class="comment"> *</span>
<a name="l02087"></a>02087 <span class="comment"> * @param ic media file handle</span>
<a name="l02088"></a>02088 <span class="comment"> * @param options If non-NULL, an ic.nb_streams long array of pointers to</span>
<a name="l02089"></a>02089 <span class="comment"> * dictionaries, where i-th member contains options for</span>
<a name="l02090"></a>02090 <span class="comment"> * codec corresponding to i-th stream.</span>
<a name="l02091"></a>02091 <span class="comment"> * On return each dictionary will be filled with options that were not found.</span>
<a name="l02092"></a>02092 <span class="comment"> * @return >=0 if OK, AVERROR_xxx on error</span>
<a name="l02093"></a>02093 <span class="comment"> *</span>
<a name="l02094"></a>02094 <span class="comment"> * @note this function isn't guaranteed to open all the codecs, so</span>
<a name="l02095"></a>02095 <span class="comment"> * options being non-empty at return is a perfectly normal behavior.</span>
<a name="l02096"></a>02096 <span class="comment"> *</span>
<a name="l02097"></a>02097 <span class="comment"> * @todo Let the user decide somehow what information is needed so that</span>
<a name="l02098"></a>02098 <span class="comment"> * we do not waste time getting stuff the user does not need.</span>
<a name="l02099"></a>02099 <span class="comment"> */</span>
<a name="l02100"></a>02100 <span class="keywordtype">int</span> <a class="code" href="group__lavf__decoding.html#gad42172e27cddafb81096939783b157bb" title="Read packets of a media file to get stream information.">avformat_find_stream_info</a>(<a class="code" href="structAVFormatContext.html" title="Format I/O context.">AVFormatContext</a> *ic, <a class="code" href="group__lavu__dict.html#ga1d7cc0833bee918994a600556410315f">AVDictionary</a> **options);
<a name="l02101"></a>02101 <span class="comment"></span>
<a name="l02102"></a>02102 <span class="comment">/**</span>
<a name="l02103"></a>02103 <span class="comment"> * Find the programs which belong to a given stream.</span>
<a name="l02104"></a>02104 <span class="comment"> *</span>
<a name="l02105"></a>02105 <span class="comment"> * @param ic media file handle</span>
<a name="l02106"></a>02106 <span class="comment"> * @param last the last found program, the search will start after this</span>
<a name="l02107"></a>02107 <span class="comment"> * program, or from the beginning if it is NULL</span>
<a name="l02108"></a>02108 <span class="comment"> * @param s stream index</span>
<a name="l02109"></a>02109 <span class="comment"> * @return the next program which belongs to s, NULL if no program is found or</span>
<a name="l02110"></a>02110 <span class="comment"> * the last program is not among the programs of ic.</span>
<a name="l02111"></a>02111 <span class="comment"> */</span>
<a name="l02112"></a>02112 <a class="code" href="structAVProgram.html" title="New fields can be added to the end with minor version bumps.">AVProgram</a> *<a class="code" href="group__lavf__decoding.html#ga9edb9ac206ed05dc5baa9d168f31de48" title="Find the programs which belong to a given stream.">av_find_program_from_stream</a>(<a class="code" href="structAVFormatContext.html" title="Format I/O context.">AVFormatContext</a> *ic, <a class="code" href="structAVProgram.html" title="New fields can be added to the end with minor version bumps.">AVProgram</a> *last, <span class="keywordtype">int</span> s);
<a name="l02113"></a>02113 <span class="comment"></span>
<a name="l02114"></a>02114 <span class="comment">/**</span>
<a name="l02115"></a>02115 <span class="comment"> * Find the "best" stream in the file.</span>
<a name="l02116"></a>02116 <span class="comment"> * The best stream is determined according to various heuristics as the most</span>
<a name="l02117"></a>02117 <span class="comment"> * likely to be what the user expects.</span>
<a name="l02118"></a>02118 <span class="comment"> * If the decoder parameter is non-NULL, av_find_best_stream will find the</span>
<a name="l02119"></a>02119 <span class="comment"> * default decoder for the stream's codec; streams for which no decoder can</span>
<a name="l02120"></a>02120 <span class="comment"> * be found are ignored.</span>
<a name="l02121"></a>02121 <span class="comment"> *</span>
<a name="l02122"></a>02122 <span class="comment"> * @param ic media file handle</span>
<a name="l02123"></a>02123 <span class="comment"> * @param type stream type: video, audio, subtitles, etc.</span>
<a name="l02124"></a>02124 <span class="comment"> * @param wanted_stream_nb user-requested stream number,</span>
<a name="l02125"></a>02125 <span class="comment"> * or -1 for automatic selection</span>
<a name="l02126"></a>02126 <span class="comment"> * @param related_stream try to find a stream related (eg. in the same</span>
<a name="l02127"></a>02127 <span class="comment"> * program) to this one, or -1 if none</span>
<a name="l02128"></a>02128 <span class="comment"> * @param decoder_ret if non-NULL, returns the decoder for the</span>
<a name="l02129"></a>02129 <span class="comment"> * selected stream</span>
<a name="l02130"></a>02130 <span class="comment"> * @param flags flags; none are currently defined</span>
<a name="l02131"></a>02131 <span class="comment"> * @return the non-negative stream number in case of success,</span>
<a name="l02132"></a>02132 <span class="comment"> * AVERROR_STREAM_NOT_FOUND if no stream with the requested type</span>
<a name="l02133"></a>02133 <span class="comment"> * could be found,</span>
<a name="l02134"></a>02134 <span class="comment"> * AVERROR_DECODER_NOT_FOUND if streams were found but no decoder</span>
<a name="l02135"></a>02135 <span class="comment"> * @note If av_find_best_stream returns successfully and decoder_ret is not</span>
<a name="l02136"></a>02136 <span class="comment"> * NULL, then *decoder_ret is guaranteed to be set to a valid AVCodec.</span>
<a name="l02137"></a>02137 <span class="comment"> */</span>
<a name="l02138"></a>02138 <span class="keywordtype">int</span> <a class="code" href="group__lavf__decoding.html#gaa6fa468c922ff5c60a6021dcac09aff9" title="Find the "best" stream in the file.">av_find_best_stream</a>(<a class="code" href="structAVFormatContext.html" title="Format I/O context.">AVFormatContext</a> *ic,
<a name="l02139"></a>02139 <span class="keyword">enum</span> <a class="code" href="group__lavu__misc.html#ga9a84bba4713dfced21a1a56163be1f48">AVMediaType</a> type,
<a name="l02140"></a>02140 <span class="keywordtype">int</span> wanted_stream_nb,
<a name="l02141"></a>02141 <span class="keywordtype">int</span> related_stream,
<a name="l02142"></a>02142 <a class="code" href="structAVCodec.html" title="AVCodec.">AVCodec</a> **decoder_ret,
<a name="l02143"></a>02143 <span class="keywordtype">int</span> flags);
<a name="l02144"></a>02144 <span class="comment"></span>
<a name="l02145"></a>02145 <span class="comment">/**</span>
<a name="l02146"></a>02146 <span class="comment"> * Return the next frame of a stream.</span>
<a name="l02147"></a>02147 <span class="comment"> * This function returns what is stored in the file, and does not validate</span>
<a name="l02148"></a>02148 <span class="comment"> * that what is there are valid frames for the decoder. It will split what is</span>
<a name="l02149"></a>02149 <span class="comment"> * stored in the file into frames and return one for each call. It will not</span>
<a name="l02150"></a>02150 <span class="comment"> * omit invalid data between valid frames so as to give the decoder the maximum</span>
<a name="l02151"></a>02151 <span class="comment"> * information possible for decoding.</span>
<a name="l02152"></a>02152 <span class="comment"> *</span>
<a name="l02153"></a>02153 <span class="comment"> * If pkt->buf is NULL, then the packet is valid until the next</span>
<a name="l02154"></a>02154 <span class="comment"> * av_read_frame() or until avformat_close_input(). Otherwise the packet</span>
<a name="l02155"></a>02155 <span class="comment"> * is valid indefinitely. In both cases the packet must be freed with</span>
<a name="l02156"></a>02156 <span class="comment"> * av_free_packet when it is no longer needed. For video, the packet contains</span>
<a name="l02157"></a>02157 <span class="comment"> * exactly one frame. For audio, it contains an integer number of frames if each</span>
<a name="l02158"></a>02158 <span class="comment"> * frame has a known fixed size (e.g. PCM or ADPCM data). If the audio frames</span>
<a name="l02159"></a>02159 <span class="comment"> * have a variable size (e.g. MPEG audio), then it contains one frame.</span>
<a name="l02160"></a>02160 <span class="comment"> *</span>
<a name="l02161"></a>02161 <span class="comment"> * pkt->pts, pkt->dts and pkt->duration are always set to correct</span>
<a name="l02162"></a>02162 <span class="comment"> * values in AVStream.time_base units (and guessed if the format cannot</span>
<a name="l02163"></a>02163 <span class="comment"> * provide them). pkt->pts can be AV_NOPTS_VALUE if the video format</span>
<a name="l02164"></a>02164 <span class="comment"> * has B-frames, so it is better to rely on pkt->dts if you do not</span>
<a name="l02165"></a>02165 <span class="comment"> * decompress the payload.</span>
<a name="l02166"></a>02166 <span class="comment"> *</span>
<a name="l02167"></a>02167 <span class="comment"> * @return 0 if OK, < 0 on error or end of file</span>
<a name="l02168"></a>02168 <span class="comment"> */</span>
<a name="l02169"></a>02169 <span class="keywordtype">int</span> <a class="code" href="group__lavf__decoding.html#ga4fdb3084415a82e3810de6ee60e46a61" title="Return the next frame of a stream.">av_read_frame</a>(<a class="code" href="structAVFormatContext.html" title="Format I/O context.">AVFormatContext</a> *s, <a class="code" href="structAVPacket.html" title="This structure stores compressed data.">AVPacket</a> *<a class="code" href="demuxing__decoding_8c.html#a3d4c6562f0b27cf0cacbbea5c038c090">pkt</a>);
<a name="l02170"></a>02170 <span class="comment"></span>
<a name="l02171"></a>02171 <span class="comment">/**</span>
<a name="l02172"></a>02172 <span class="comment"> * Seek to the keyframe at timestamp.</span>
<a name="l02173"></a>02173 <span class="comment"> * 'timestamp' in 'stream_index'.</span>
<a name="l02174"></a>02174 <span class="comment"> *</span>
<a name="l02175"></a>02175 <span class="comment"> * @param s media file handle</span>
<a name="l02176"></a>02176 <span class="comment"> * @param stream_index If stream_index is (-1), a default</span>
<a name="l02177"></a>02177 <span class="comment"> * stream is selected, and timestamp is automatically converted</span>
<a name="l02178"></a>02178 <span class="comment"> * from AV_TIME_BASE units to the stream specific time_base.</span>
<a name="l02179"></a>02179 <span class="comment"> * @param timestamp Timestamp in AVStream.time_base units</span>
<a name="l02180"></a>02180 <span class="comment"> * or, if no stream is specified, in AV_TIME_BASE units.</span>
<a name="l02181"></a>02181 <span class="comment"> * @param flags flags which select direction and seeking mode</span>
<a name="l02182"></a>02182 <span class="comment"> * @return >= 0 on success</span>
<a name="l02183"></a>02183 <span class="comment"> */</span>
<a name="l02184"></a>02184 <span class="keywordtype">int</span> <a class="code" href="group__lavf__decoding.html#gaa23f7619d8d4ea0857065d9979c75ac8" title="Seek to the keyframe at timestamp.">av_seek_frame</a>(<a class="code" href="structAVFormatContext.html" title="Format I/O context.">AVFormatContext</a> *s, <span class="keywordtype">int</span> stream_index, int64_t timestamp,
<a name="l02185"></a>02185 <span class="keywordtype">int</span> flags);
<a name="l02186"></a>02186 <span class="comment"></span>
<a name="l02187"></a>02187 <span class="comment">/**</span>
<a name="l02188"></a>02188 <span class="comment"> * Seek to timestamp ts.</span>
<a name="l02189"></a>02189 <span class="comment"> * Seeking will be done so that the point from which all active streams</span>
<a name="l02190"></a>02190 <span class="comment"> * can be presented successfully will be closest to ts and within min/max_ts.</span>
<a name="l02191"></a>02191 <span class="comment"> * Active streams are all streams that have AVStream.discard < AVDISCARD_ALL.</span>
<a name="l02192"></a>02192 <span class="comment"> *</span>
<a name="l02193"></a>02193 <span class="comment"> * If flags contain AVSEEK_FLAG_BYTE, then all timestamps are in bytes and</span>
<a name="l02194"></a>02194 <span class="comment"> * are the file position (this may not be supported by all demuxers).</span>
<a name="l02195"></a>02195 <span class="comment"> * If flags contain AVSEEK_FLAG_FRAME, then all timestamps are in frames</span>
<a name="l02196"></a>02196 <span class="comment"> * in the stream with stream_index (this may not be supported by all demuxers).</span>
<a name="l02197"></a>02197 <span class="comment"> * Otherwise all timestamps are in units of the stream selected by stream_index</span>
<a name="l02198"></a>02198 <span class="comment"> * or if stream_index is -1, in AV_TIME_BASE units.</span>
<a name="l02199"></a>02199 <span class="comment"> * If flags contain AVSEEK_FLAG_ANY, then non-keyframes are treated as</span>
<a name="l02200"></a>02200 <span class="comment"> * keyframes (this may not be supported by all demuxers).</span>
<a name="l02201"></a>02201 <span class="comment"> * If flags contain AVSEEK_FLAG_BACKWARD, it is ignored.</span>
<a name="l02202"></a>02202 <span class="comment"> *</span>
<a name="l02203"></a>02203 <span class="comment"> * @param s media file handle</span>
<a name="l02204"></a>02204 <span class="comment"> * @param stream_index index of the stream which is used as time base reference</span>
<a name="l02205"></a>02205 <span class="comment"> * @param min_ts smallest acceptable timestamp</span>
<a name="l02206"></a>02206 <span class="comment"> * @param ts target timestamp</span>
<a name="l02207"></a>02207 <span class="comment"> * @param max_ts largest acceptable timestamp</span>
<a name="l02208"></a>02208 <span class="comment"> * @param flags flags</span>
<a name="l02209"></a>02209 <span class="comment"> * @return >=0 on success, error code otherwise</span>
<a name="l02210"></a>02210 <span class="comment"> *</span>
<a name="l02211"></a>02211 <span class="comment"> * @note This is part of the new seek API which is still under construction.</span>
<a name="l02212"></a>02212 <span class="comment"> * Thus do not use this yet. It may change at any time, do not expect</span>
<a name="l02213"></a>02213 <span class="comment"> * ABI compatibility yet!</span>
<a name="l02214"></a>02214 <span class="comment"> */</span>
<a name="l02215"></a>02215 <span class="keywordtype">int</span> <a class="code" href="group__lavf__decoding.html#ga3b40fc8d2fda6992ae6ea2567d71ba30" title="Seek to timestamp ts.">avformat_seek_file</a>(<a class="code" href="structAVFormatContext.html" title="Format I/O context.">AVFormatContext</a> *s, <span class="keywordtype">int</span> stream_index, int64_t min_ts, int64_t ts, int64_t max_ts, <span class="keywordtype">int</span> flags);
<a name="l02216"></a>02216 <span class="comment"></span>
<a name="l02217"></a>02217 <span class="comment">/**</span>
<a name="l02218"></a>02218 <span class="comment"> * Discard all internally buffered data. This can be useful when dealing with</span>
<a name="l02219"></a>02219 <span class="comment"> * discontinuities in the byte stream. Generally works only with formats that</span>
<a name="l02220"></a>02220 <span class="comment"> * can resync. This includes headerless formats like MPEG-TS/TS but should also</span>
<a name="l02221"></a>02221 <span class="comment"> * work with NUT, Ogg and in a limited way AVI for example.</span>
<a name="l02222"></a>02222 <span class="comment"> *</span>
<a name="l02223"></a>02223 <span class="comment"> * The set of streams, the detected duration, stream parameters and codecs do</span>
<a name="l02224"></a>02224 <span class="comment"> * not change when calling this function. If you want a complete reset, it's</span>
<a name="l02225"></a>02225 <span class="comment"> * better to open a new AVFormatContext.</span>
<a name="l02226"></a>02226 <span class="comment"> *</span>
<a name="l02227"></a>02227 <span class="comment"> * This does not flush the AVIOContext (s->pb). If necessary, call</span>
<a name="l02228"></a>02228 <span class="comment"> * avio_flush(s->pb) before calling this function.</span>
<a name="l02229"></a>02229 <span class="comment"> *</span>
<a name="l02230"></a>02230 <span class="comment"> * @param s media file handle</span>
<a name="l02231"></a>02231 <span class="comment"> * @return >=0 on success, error code otherwise</span>
<a name="l02232"></a>02232 <span class="comment"> */</span>
<a name="l02233"></a>02233 <span class="keywordtype">int</span> <a class="code" href="group__lavf__decoding.html#gaa03a82c5fd4fe3af312d229ca94cd6f3" title="Discard all internally buffered data.">avformat_flush</a>(<a class="code" href="structAVFormatContext.html" title="Format I/O context.">AVFormatContext</a> *s);
<a name="l02234"></a>02234 <span class="comment"></span>
<a name="l02235"></a>02235 <span class="comment">/**</span>
<a name="l02236"></a>02236 <span class="comment"> * Start playing a network-based stream (e.g. RTSP stream) at the</span>
<a name="l02237"></a>02237 <span class="comment"> * current position.</span>
<a name="l02238"></a>02238 <span class="comment"> */</span>
<a name="l02239"></a>02239 <span class="keywordtype">int</span> <a class="code" href="group__lavf__decoding.html#ga7494bb63a59e79e9fe88eb1682d4d7b3" title="Start playing a network-based stream (e.g.">av_read_play</a>(<a class="code" href="structAVFormatContext.html" title="Format I/O context.">AVFormatContext</a> *s);
<a name="l02240"></a>02240 <span class="comment"></span>
<a name="l02241"></a>02241 <span class="comment">/**</span>
<a name="l02242"></a>02242 <span class="comment"> * Pause a network-based stream (e.g. RTSP stream).</span>
<a name="l02243"></a>02243 <span class="comment"> *</span>
<a name="l02244"></a>02244 <span class="comment"> * Use av_read_play() to resume it.</span>
<a name="l02245"></a>02245 <span class="comment"> */</span>
<a name="l02246"></a>02246 <span class="keywordtype">int</span> <a class="code" href="group__lavf__decoding.html#ga27db687592d99f25ccf81a3b3ee8da9c" title="Pause a network-based stream (e.g.">av_read_pause</a>(<a class="code" href="structAVFormatContext.html" title="Format I/O context.">AVFormatContext</a> *s);
<a name="l02247"></a>02247 <span class="comment"></span>
<a name="l02248"></a>02248 <span class="comment">/**</span>
<a name="l02249"></a>02249 <span class="comment"> * Close an opened input AVFormatContext. Free it and all its contents</span>
<a name="l02250"></a>02250 <span class="comment"> * and set *s to NULL.</span>
<a name="l02251"></a>02251 <span class="comment"> */</span>
<a name="l02252"></a>02252 <span class="keywordtype">void</span> <a class="code" href="group__lavf__decoding.html#gae804b99aec044690162b8b9b110236a4" title="Close an opened input AVFormatContext.">avformat_close_input</a>(<a class="code" href="structAVFormatContext.html" title="Format I/O context.">AVFormatContext</a> **s);<span class="comment"></span>
<a name="l02253"></a>02253 <span class="comment">/**</span>
<a name="l02254"></a>02254 <span class="comment"> * @}</span>
<a name="l02255"></a>02255 <span class="comment"> */</span>
<a name="l02256"></a>02256
<a name="l02257"></a><a class="code" href="avformat_8h.html#ac736f8f4afc930ca1cda0b43638cc678">02257</a> <span class="preprocessor">#define AVSEEK_FLAG_BACKWARD 1 ///< seek backward</span>
<a name="l02258"></a><a class="code" href="avformat_8h.html#a754de906e0da116c009846547741f869">02258</a> <span class="preprocessor"></span><span class="preprocessor">#define AVSEEK_FLAG_BYTE 2 ///< seeking based on position in bytes</span>
<a name="l02259"></a><a class="code" href="avformat_8h.html#a998c3af80d050fd3d4f6a209fd5a87bc">02259</a> <span class="preprocessor"></span><span class="preprocessor">#define AVSEEK_FLAG_ANY 4 ///< seek to any frame, even non-keyframes</span>
<a name="l02260"></a><a class="code" href="avformat_8h.html#ab83ca408a574b40c76f681b616096fc8">02260</a> <span class="preprocessor"></span><span class="preprocessor">#define AVSEEK_FLAG_FRAME 8 ///< seeking based on frame number</span>
<a name="l02261"></a>02261 <span class="preprocessor"></span><span class="comment"></span>
<a name="l02262"></a>02262 <span class="comment">/**</span>
<a name="l02263"></a>02263 <span class="comment"> * @addtogroup lavf_encoding</span>
<a name="l02264"></a>02264 <span class="comment"> * @{</span>
<a name="l02265"></a>02265 <span class="comment"> */</span><span class="comment"></span>
<a name="l02266"></a>02266 <span class="comment">/**</span>
<a name="l02267"></a>02267 <span class="comment"> * Allocate the stream private data and write the stream header to</span>
<a name="l02268"></a>02268 <span class="comment"> * an output media file.</span>
<a name="l02269"></a>02269 <span class="comment"> *</span>
<a name="l02270"></a>02270 <span class="comment"> * @param s Media file handle, must be allocated with avformat_alloc_context().</span>
<a name="l02271"></a>02271 <span class="comment"> * Its oformat field must be set to the desired output format;</span>
<a name="l02272"></a>02272 <span class="comment"> * Its pb field must be set to an already opened AVIOContext.</span>
<a name="l02273"></a>02273 <span class="comment"> * @param options An AVDictionary filled with AVFormatContext and muxer-private options.</span>
<a name="l02274"></a>02274 <span class="comment"> * On return this parameter will be destroyed and replaced with a dict containing</span>
<a name="l02275"></a>02275 <span class="comment"> * options that were not found. May be NULL.</span>
<a name="l02276"></a>02276 <span class="comment"> *</span>
<a name="l02277"></a>02277 <span class="comment"> * @return 0 on success, negative AVERROR on failure.</span>
<a name="l02278"></a>02278 <span class="comment"> *</span>
<a name="l02279"></a>02279 <span class="comment"> * @see av_opt_find, av_dict_set, avio_open, av_oformat_next.</span>
<a name="l02280"></a>02280 <span class="comment"> */</span>
<a name="l02281"></a>02281 <span class="keywordtype">int</span> <a class="code" href="group__lavf__encoding.html#ga78d4e734fecb1d2385536e6dd5b7b9f5" title="Allocate the stream private data and write the stream header to an output media file.">avformat_write_header</a>(<a class="code" href="structAVFormatContext.html" title="Format I/O context.">AVFormatContext</a> *s, <a class="code" href="group__lavu__dict.html#ga1d7cc0833bee918994a600556410315f">AVDictionary</a> **options);
<a name="l02282"></a>02282 <span class="comment"></span>
<a name="l02283"></a>02283 <span class="comment">/**</span>
<a name="l02284"></a>02284 <span class="comment"> * Write a packet to an output media file.</span>
<a name="l02285"></a>02285 <span class="comment"> *</span>
<a name="l02286"></a>02286 <span class="comment"> * This function passes the packet directly to the muxer, without any buffering</span>
<a name="l02287"></a>02287 <span class="comment"> * or reordering. The caller is responsible for correctly interleaving the</span>
<a name="l02288"></a>02288 <span class="comment"> * packets if the format requires it. Callers that want libavformat to handle</span>
<a name="l02289"></a>02289 <span class="comment"> * the interleaving should call av_interleaved_write_frame() instead of this</span>
<a name="l02290"></a>02290 <span class="comment"> * function.</span>
<a name="l02291"></a>02291 <span class="comment"> *</span>
<a name="l02292"></a>02292 <span class="comment"> * @param s media file handle</span>
<a name="l02293"></a>02293 <span class="comment"> * @param pkt The packet containing the data to be written. Note that unlike</span>
<a name="l02294"></a>02294 <span class="comment"> * av_interleaved_write_frame(), this function does not take</span>
<a name="l02295"></a>02295 <span class="comment"> * ownership of the packet passed to it (though some muxers may make</span>
<a name="l02296"></a>02296 <span class="comment"> * an internal reference to the input packet).</span>
<a name="l02297"></a>02297 <span class="comment"> * <br></span>
<a name="l02298"></a>02298 <span class="comment"> * This parameter can be NULL (at any time, not just at the end), in</span>
<a name="l02299"></a>02299 <span class="comment"> * order to immediately flush data buffered within the muxer, for</span>
<a name="l02300"></a>02300 <span class="comment"> * muxers that buffer up data internally before writing it to the</span>
<a name="l02301"></a>02301 <span class="comment"> * output.</span>
<a name="l02302"></a>02302 <span class="comment"> * <br></span>
<a name="l02303"></a>02303 <span class="comment"> * Packet's @ref AVPacket.stream_index "stream_index" field must be</span>
<a name="l02304"></a>02304 <span class="comment"> * set to the index of the corresponding stream in @ref</span>
<a name="l02305"></a>02305 <span class="comment"> * AVFormatContext.streams "s->streams". It is very strongly</span>
<a name="l02306"></a>02306 <span class="comment"> * recommended that timing information (@ref AVPacket.pts "pts", @ref</span>
<a name="l02307"></a>02307 <span class="comment"> * AVPacket.dts "dts", @ref AVPacket.duration "duration") is set to</span>
<a name="l02308"></a>02308 <span class="comment"> * correct values.</span>
<a name="l02309"></a>02309 <span class="comment"> * @return < 0 on error, = 0 if OK, 1 if flushed and there is no more data to flush</span>
<a name="l02310"></a>02310 <span class="comment"> *</span>
<a name="l02311"></a>02311 <span class="comment"> * @see av_interleaved_write_frame()</span>
<a name="l02312"></a>02312 <span class="comment"> */</span>
<a name="l02313"></a>02313 <span class="keywordtype">int</span> <a class="code" href="group__lavf__encoding.html#gaa85cc1774f18f306cd20a40fc50d0b36" title="Write a packet to an output media file.">av_write_frame</a>(<a class="code" href="structAVFormatContext.html" title="Format I/O context.">AVFormatContext</a> *s, <a class="code" href="structAVPacket.html" title="This structure stores compressed data.">AVPacket</a> *<a class="code" href="demuxing__decoding_8c.html#a3d4c6562f0b27cf0cacbbea5c038c090">pkt</a>);
<a name="l02314"></a>02314 <span class="comment"></span>
<a name="l02315"></a>02315 <span class="comment">/**</span>
<a name="l02316"></a>02316 <span class="comment"> * Write a packet to an output media file ensuring correct interleaving.</span>
<a name="l02317"></a>02317 <span class="comment"> *</span>
<a name="l02318"></a>02318 <span class="comment"> * This function will buffer the packets internally as needed to make sure the</span>
<a name="l02319"></a>02319 <span class="comment"> * packets in the output file are properly interleaved in the order of</span>
<a name="l02320"></a>02320 <span class="comment"> * increasing dts. Callers doing their own interleaving should call</span>
<a name="l02321"></a>02321 <span class="comment"> * av_write_frame() instead of this function.</span>
<a name="l02322"></a>02322 <span class="comment"> *</span>
<a name="l02323"></a>02323 <span class="comment"> * @param s media file handle</span>
<a name="l02324"></a>02324 <span class="comment"> * @param pkt The packet containing the data to be written.</span>
<a name="l02325"></a>02325 <span class="comment"> * <br></span>
<a name="l02326"></a>02326 <span class="comment"> * If the packet is reference-counted, this function will take</span>
<a name="l02327"></a>02327 <span class="comment"> * ownership of this reference and unreference it later when it sees</span>
<a name="l02328"></a>02328 <span class="comment"> * fit.</span>
<a name="l02329"></a>02329 <span class="comment"> * The caller must not access the data through this reference after</span>
<a name="l02330"></a>02330 <span class="comment"> * this function returns. If the packet is not reference-counted,</span>
<a name="l02331"></a>02331 <span class="comment"> * libavformat will make a copy.</span>
<a name="l02332"></a>02332 <span class="comment"> * <br></span>
<a name="l02333"></a>02333 <span class="comment"> * This parameter can be NULL (at any time, not just at the end), to</span>
<a name="l02334"></a>02334 <span class="comment"> * flush the interleaving queues.</span>
<a name="l02335"></a>02335 <span class="comment"> * <br></span>
<a name="l02336"></a>02336 <span class="comment"> * Packet's @ref AVPacket.stream_index "stream_index" field must be</span>
<a name="l02337"></a>02337 <span class="comment"> * set to the index of the corresponding stream in @ref</span>
<a name="l02338"></a>02338 <span class="comment"> * AVFormatContext.streams "s->streams". It is very strongly</span>
<a name="l02339"></a>02339 <span class="comment"> * recommended that timing information (@ref AVPacket.pts "pts", @ref</span>
<a name="l02340"></a>02340 <span class="comment"> * AVPacket.dts "dts", @ref AVPacket.duration "duration") is set to</span>
<a name="l02341"></a>02341 <span class="comment"> * correct values.</span>
<a name="l02342"></a>02342 <span class="comment"> *</span>
<a name="l02343"></a>02343 <span class="comment"> * @return 0 on success, a negative AVERROR on error. Libavformat will always</span>
<a name="l02344"></a>02344 <span class="comment"> * take care of freeing the packet, even if this function fails.</span>
<a name="l02345"></a>02345 <span class="comment"> *</span>
<a name="l02346"></a>02346 <span class="comment"> * @see av_write_frame(), AVFormatContext.max_interleave_delta</span>
<a name="l02347"></a>02347 <span class="comment"> */</span>
<a name="l02348"></a>02348 <span class="keywordtype">int</span> <a class="code" href="group__lavf__encoding.html#ga37352ed2c63493c38219d935e71db6c1" title="Write a packet to an output media file ensuring correct interleaving.">av_interleaved_write_frame</a>(<a class="code" href="structAVFormatContext.html" title="Format I/O context.">AVFormatContext</a> *s, <a class="code" href="structAVPacket.html" title="This structure stores compressed data.">AVPacket</a> *<a class="code" href="demuxing__decoding_8c.html#a3d4c6562f0b27cf0cacbbea5c038c090">pkt</a>);
<a name="l02349"></a>02349 <span class="comment"></span>
<a name="l02350"></a>02350 <span class="comment">/**</span>
<a name="l02351"></a>02351 <span class="comment"> * Write a uncoded frame to an output media file.</span>
<a name="l02352"></a>02352 <span class="comment"> *</span>
<a name="l02353"></a>02353 <span class="comment"> * The frame must be correctly interleaved according to the container</span>
<a name="l02354"></a>02354 <span class="comment"> * specification; if not, then av_interleaved_write_frame() must be used.</span>
<a name="l02355"></a>02355 <span class="comment"> *</span>
<a name="l02356"></a>02356 <span class="comment"> * See av_interleaved_write_frame() for details.</span>
<a name="l02357"></a>02357 <span class="comment"> */</span>
<a name="l02358"></a>02358 <span class="keywordtype">int</span> <a class="code" href="group__lavf__encoding.html#gaab766dccdff1bf323a2fc604e723b441" title="Write a uncoded frame to an output media file.">av_write_uncoded_frame</a>(<a class="code" href="structAVFormatContext.html" title="Format I/O context.">AVFormatContext</a> *s, <span class="keywordtype">int</span> stream_index,
<a name="l02359"></a>02359 <a class="code" href="structAVFrame.html" title="This structure describes decoded (raw) audio or video data.">AVFrame</a> *<a class="code" href="demuxing__decoding_8c.html#ad7d33d579a8d4241a5e643e39287a209">frame</a>);
<a name="l02360"></a>02360 <span class="comment"></span>
<a name="l02361"></a>02361 <span class="comment">/**</span>
<a name="l02362"></a>02362 <span class="comment"> * Write a uncoded frame to an output media file.</span>
<a name="l02363"></a>02363 <span class="comment"> *</span>
<a name="l02364"></a>02364 <span class="comment"> * If the muxer supports it, this function makes it possible to write an AVFrame</span>
<a name="l02365"></a>02365 <span class="comment"> * structure directly, without encoding it into a packet.</span>
<a name="l02366"></a>02366 <span class="comment"> * It is mostly useful for devices and similar special muxers that use raw</span>
<a name="l02367"></a>02367 <span class="comment"> * video or PCM data and will not serialize it into a byte stream.</span>
<a name="l02368"></a>02368 <span class="comment"> *</span>
<a name="l02369"></a>02369 <span class="comment"> * To test whether it is possible to use it with a given muxer and stream,</span>
<a name="l02370"></a>02370 <span class="comment"> * use av_write_uncoded_frame_query().</span>
<a name="l02371"></a>02371 <span class="comment"> *</span>
<a name="l02372"></a>02372 <span class="comment"> * The caller gives up ownership of the frame and must not access it</span>
<a name="l02373"></a>02373 <span class="comment"> * afterwards.</span>
<a name="l02374"></a>02374 <span class="comment"> *</span>
<a name="l02375"></a>02375 <span class="comment"> * @return >=0 for success, a negative code on error</span>
<a name="l02376"></a>02376 <span class="comment"> */</span>
<a name="l02377"></a>02377 <span class="keywordtype">int</span> <a class="code" href="group__lavf__encoding.html#gafe9916c601bba6827d6f9271a61260e4" title="Write a uncoded frame to an output media file.">av_interleaved_write_uncoded_frame</a>(<a class="code" href="structAVFormatContext.html" title="Format I/O context.">AVFormatContext</a> *s, <span class="keywordtype">int</span> stream_index,
<a name="l02378"></a>02378 <a class="code" href="structAVFrame.html" title="This structure describes decoded (raw) audio or video data.">AVFrame</a> *<a class="code" href="demuxing__decoding_8c.html#ad7d33d579a8d4241a5e643e39287a209">frame</a>);
<a name="l02379"></a>02379 <span class="comment"></span>
<a name="l02380"></a>02380 <span class="comment">/**</span>
<a name="l02381"></a>02381 <span class="comment"> * Test whether a muxer supports uncoded frame.</span>
<a name="l02382"></a>02382 <span class="comment"> *</span>
<a name="l02383"></a>02383 <span class="comment"> * @return >=0 if an uncoded frame can be written to that muxer and stream,</span>
<a name="l02384"></a>02384 <span class="comment"> * <0 if not</span>
<a name="l02385"></a>02385 <span class="comment"> */</span>
<a name="l02386"></a>02386 <span class="keywordtype">int</span> <a class="code" href="group__lavf__encoding.html#ga5f6bebdc8c234a5ad9740de89acb15e6" title="Test whether a muxer supports uncoded frame.">av_write_uncoded_frame_query</a>(<a class="code" href="structAVFormatContext.html" title="Format I/O context.">AVFormatContext</a> *s, <span class="keywordtype">int</span> stream_index);
<a name="l02387"></a>02387 <span class="comment"></span>
<a name="l02388"></a>02388 <span class="comment">/**</span>
<a name="l02389"></a>02389 <span class="comment"> * Write the stream trailer to an output media file and free the</span>
<a name="l02390"></a>02390 <span class="comment"> * file private data.</span>
<a name="l02391"></a>02391 <span class="comment"> *</span>
<a name="l02392"></a>02392 <span class="comment"> * May only be called after a successful call to avformat_write_header.</span>
<a name="l02393"></a>02393 <span class="comment"> *</span>
<a name="l02394"></a>02394 <span class="comment"> * @param s media file handle</span>
<a name="l02395"></a>02395 <span class="comment"> * @return 0 if OK, AVERROR_xxx on error</span>
<a name="l02396"></a>02396 <span class="comment"> */</span>
<a name="l02397"></a>02397 <span class="keywordtype">int</span> <a class="code" href="group__lavf__encoding.html#ga7f14007e7dc8f481f054b21614dfec13" title="Write the stream trailer to an output media file and free the file private data.">av_write_trailer</a>(<a class="code" href="structAVFormatContext.html" title="Format I/O context.">AVFormatContext</a> *s);
<a name="l02398"></a>02398 <span class="comment"></span>
<a name="l02399"></a>02399 <span class="comment">/**</span>
<a name="l02400"></a>02400 <span class="comment"> * Return the output format in the list of registered output formats</span>
<a name="l02401"></a>02401 <span class="comment"> * which best matches the provided parameters, or return NULL if</span>
<a name="l02402"></a>02402 <span class="comment"> * there is no match.</span>
<a name="l02403"></a>02403 <span class="comment"> *</span>
<a name="l02404"></a>02404 <span class="comment"> * @param short_name if non-NULL checks if short_name matches with the</span>
<a name="l02405"></a>02405 <span class="comment"> * names of the registered formats</span>
<a name="l02406"></a>02406 <span class="comment"> * @param filename if non-NULL checks if filename terminates with the</span>
<a name="l02407"></a>02407 <span class="comment"> * extensions of the registered formats</span>
<a name="l02408"></a>02408 <span class="comment"> * @param mime_type if non-NULL checks if mime_type matches with the</span>
<a name="l02409"></a>02409 <span class="comment"> * MIME type of the registered formats</span>
<a name="l02410"></a>02410 <span class="comment"> */</span>
<a name="l02411"></a>02411 <a class="code" href="structAVOutputFormat.html">AVOutputFormat</a> *<a class="code" href="group__lavf__encoding.html#ga8795680bd7489e96eeb5aef5e615cacc" title="Return the output format in the list of registered output formats which best matches the provided par...">av_guess_format</a>(<span class="keyword">const</span> <span class="keywordtype">char</span> *short_name,
<a name="l02412"></a>02412 <span class="keyword">const</span> <span class="keywordtype">char</span> *filename,
<a name="l02413"></a>02413 <span class="keyword">const</span> <span class="keywordtype">char</span> *mime_type);
<a name="l02414"></a>02414 <span class="comment"></span>
<a name="l02415"></a>02415 <span class="comment">/**</span>
<a name="l02416"></a>02416 <span class="comment"> * Guess the codec ID based upon muxer and filename.</span>
<a name="l02417"></a>02417 <span class="comment"> */</span>
<a name="l02418"></a>02418 <span class="keyword">enum</span> <a class="code" href="group__lavc__core.html#gaadca229ad2c20e060a14fec08a5cc7ce" title="Identify the syntax and semantics of the bitstream.">AVCodecID</a> <a class="code" href="group__lavf__encoding.html#gae8a1efab53a348857f209ea51037da4c" title="Guess the codec ID based upon muxer and filename.">av_guess_codec</a>(<a class="code" href="structAVOutputFormat.html">AVOutputFormat</a> *fmt, <span class="keyword">const</span> <span class="keywordtype">char</span> *short_name,
<a name="l02419"></a>02419 <span class="keyword">const</span> <span class="keywordtype">char</span> *filename, <span class="keyword">const</span> <span class="keywordtype">char</span> *mime_type,
<a name="l02420"></a>02420 <span class="keyword">enum</span> <a class="code" href="group__lavu__misc.html#ga9a84bba4713dfced21a1a56163be1f48">AVMediaType</a> type);
<a name="l02421"></a>02421 <span class="comment"></span>
<a name="l02422"></a>02422 <span class="comment">/**</span>
<a name="l02423"></a>02423 <span class="comment"> * Get timing information for the data currently output.</span>
<a name="l02424"></a>02424 <span class="comment"> * The exact meaning of "currently output" depends on the format.</span>
<a name="l02425"></a>02425 <span class="comment"> * It is mostly relevant for devices that have an internal buffer and/or</span>
<a name="l02426"></a>02426 <span class="comment"> * work in real time.</span>
<a name="l02427"></a>02427 <span class="comment"> * @param s media file handle</span>
<a name="l02428"></a>02428 <span class="comment"> * @param stream stream in the media file</span>
<a name="l02429"></a>02429 <span class="comment"> * @param[out] dts DTS of the last packet output for the stream, in stream</span>
<a name="l02430"></a>02430 <span class="comment"> * time_base units</span>
<a name="l02431"></a>02431 <span class="comment"> * @param[out] wall absolute time when that packet whas output,</span>
<a name="l02432"></a>02432 <span class="comment"> * in microsecond</span>
<a name="l02433"></a>02433 <span class="comment"> * @return 0 if OK, AVERROR(ENOSYS) if the format does not support it</span>
<a name="l02434"></a>02434 <span class="comment"> * Note: some formats or devices may not allow to measure dts and wall</span>
<a name="l02435"></a>02435 <span class="comment"> * atomically.</span>
<a name="l02436"></a>02436 <span class="comment"> */</span>
<a name="l02437"></a>02437 <span class="keywordtype">int</span> <a class="code" href="group__lavf__encoding.html#ga661ee0b2f3dbcaaef5d68f2f5d75e2d4" title="Get timing information for the data currently output.">av_get_output_timestamp</a>(<span class="keyword">struct</span> <a class="code" href="structAVFormatContext.html" title="Format I/O context.">AVFormatContext</a> *s, <span class="keywordtype">int</span> stream,
<a name="l02438"></a>02438 int64_t *dts, int64_t *wall);
<a name="l02439"></a>02439
<a name="l02440"></a>02440 <span class="comment"></span>
<a name="l02441"></a>02441 <span class="comment">/**</span>
<a name="l02442"></a>02442 <span class="comment"> * @}</span>
<a name="l02443"></a>02443 <span class="comment"> */</span>
<a name="l02444"></a>02444
<a name="l02445"></a>02445 <span class="comment"></span>
<a name="l02446"></a>02446 <span class="comment">/**</span>
<a name="l02447"></a>02447 <span class="comment"> * @defgroup lavf_misc Utility functions</span>
<a name="l02448"></a>02448 <span class="comment"> * @ingroup libavf</span>
<a name="l02449"></a>02449 <span class="comment"> * @{</span>
<a name="l02450"></a>02450 <span class="comment"> *</span>
<a name="l02451"></a>02451 <span class="comment"> * Miscellaneous utility functions related to both muxing and demuxing</span>
<a name="l02452"></a>02452 <span class="comment"> * (or neither).</span>
<a name="l02453"></a>02453 <span class="comment"> */</span>
<a name="l02454"></a>02454 <span class="comment"></span>
<a name="l02455"></a>02455 <span class="comment">/**</span>
<a name="l02456"></a>02456 <span class="comment"> * Send a nice hexadecimal dump of a buffer to the specified file stream.</span>
<a name="l02457"></a>02457 <span class="comment"> *</span>
<a name="l02458"></a>02458 <span class="comment"> * @param f The file stream pointer where the dump should be sent to.</span>
<a name="l02459"></a>02459 <span class="comment"> * @param buf buffer</span>
<a name="l02460"></a>02460 <span class="comment"> * @param size buffer size</span>
<a name="l02461"></a>02461 <span class="comment"> *</span>
<a name="l02462"></a>02462 <span class="comment"> * @see av_hex_dump_log, av_pkt_dump2, av_pkt_dump_log2</span>
<a name="l02463"></a>02463 <span class="comment"> */</span>
<a name="l02464"></a>02464 <span class="keywordtype">void</span> <a class="code" href="group__lavf__misc.html#gab533a6d5d830ab90573dd035002c5bca" title="Send a nice hexadecimal dump of a buffer to the specified file stream.">av_hex_dump</a>(FILE *f, <span class="keyword">const</span> uint8_t *buf, <span class="keywordtype">int</span> size);
<a name="l02465"></a>02465 <span class="comment"></span>
<a name="l02466"></a>02466 <span class="comment">/**</span>
<a name="l02467"></a>02467 <span class="comment"> * Send a nice hexadecimal dump of a buffer to the log.</span>
<a name="l02468"></a>02468 <span class="comment"> *</span>
<a name="l02469"></a>02469 <span class="comment"> * @param avcl A pointer to an arbitrary struct of which the first field is a</span>
<a name="l02470"></a>02470 <span class="comment"> * pointer to an AVClass struct.</span>
<a name="l02471"></a>02471 <span class="comment"> * @param level The importance level of the message, lower values signifying</span>
<a name="l02472"></a>02472 <span class="comment"> * higher importance.</span>
<a name="l02473"></a>02473 <span class="comment"> * @param buf buffer</span>
<a name="l02474"></a>02474 <span class="comment"> * @param size buffer size</span>
<a name="l02475"></a>02475 <span class="comment"> *</span>
<a name="l02476"></a>02476 <span class="comment"> * @see av_hex_dump, av_pkt_dump2, av_pkt_dump_log2</span>
<a name="l02477"></a>02477 <span class="comment"> */</span>
<a name="l02478"></a>02478 <span class="keywordtype">void</span> <a class="code" href="group__lavf__misc.html#ga56f93dbd118ff5fe833a2e39b685974c" title="Send a nice hexadecimal dump of a buffer to the log.">av_hex_dump_log</a>(<span class="keywordtype">void</span> *avcl, <span class="keywordtype">int</span> level, <span class="keyword">const</span> uint8_t *buf, <span class="keywordtype">int</span> size);
<a name="l02479"></a>02479 <span class="comment"></span>
<a name="l02480"></a>02480 <span class="comment">/**</span>
<a name="l02481"></a>02481 <span class="comment"> * Send a nice dump of a packet to the specified file stream.</span>
<a name="l02482"></a>02482 <span class="comment"> *</span>
<a name="l02483"></a>02483 <span class="comment"> * @param f The file stream pointer where the dump should be sent to.</span>
<a name="l02484"></a>02484 <span class="comment"> * @param pkt packet to dump</span>
<a name="l02485"></a>02485 <span class="comment"> * @param dump_payload True if the payload must be displayed, too.</span>
<a name="l02486"></a>02486 <span class="comment"> * @param st AVStream that the packet belongs to</span>
<a name="l02487"></a>02487 <span class="comment"> */</span>
<a name="l02488"></a>02488 <span class="keywordtype">void</span> <a class="code" href="group__lavf__misc.html#ga46720b0bb28ca455246805be8969ff9e" title="Send a nice dump of a packet to the specified file stream.">av_pkt_dump2</a>(FILE *f, <span class="keyword">const</span> <a class="code" href="structAVPacket.html" title="This structure stores compressed data.">AVPacket</a> *<a class="code" href="demuxing__decoding_8c.html#a3d4c6562f0b27cf0cacbbea5c038c090">pkt</a>, <span class="keywordtype">int</span> dump_payload, <span class="keyword">const</span> <a class="code" href="structAVStream.html" title="Stream structure.">AVStream</a> *st);
<a name="l02489"></a>02489
<a name="l02490"></a>02490 <span class="comment"></span>
<a name="l02491"></a>02491 <span class="comment">/**</span>
<a name="l02492"></a>02492 <span class="comment"> * Send a nice dump of a packet to the log.</span>
<a name="l02493"></a>02493 <span class="comment"> *</span>
<a name="l02494"></a>02494 <span class="comment"> * @param avcl A pointer to an arbitrary struct of which the first field is a</span>
<a name="l02495"></a>02495 <span class="comment"> * pointer to an AVClass struct.</span>
<a name="l02496"></a>02496 <span class="comment"> * @param level The importance level of the message, lower values signifying</span>
<a name="l02497"></a>02497 <span class="comment"> * higher importance.</span>
<a name="l02498"></a>02498 <span class="comment"> * @param pkt packet to dump</span>
<a name="l02499"></a>02499 <span class="comment"> * @param dump_payload True if the payload must be displayed, too.</span>
<a name="l02500"></a>02500 <span class="comment"> * @param st AVStream that the packet belongs to</span>
<a name="l02501"></a>02501 <span class="comment"> */</span>
<a name="l02502"></a>02502 <span class="keywordtype">void</span> <a class="code" href="group__lavf__misc.html#gaab9fad988c28cc1c4dcbba24a36b6113" title="Send a nice dump of a packet to the log.">av_pkt_dump_log2</a>(<span class="keywordtype">void</span> *avcl, <span class="keywordtype">int</span> level, <span class="keyword">const</span> <a class="code" href="structAVPacket.html" title="This structure stores compressed data.">AVPacket</a> *<a class="code" href="demuxing__decoding_8c.html#a3d4c6562f0b27cf0cacbbea5c038c090">pkt</a>, <span class="keywordtype">int</span> dump_payload,
<a name="l02503"></a>02503 <span class="keyword">const</span> <a class="code" href="structAVStream.html" title="Stream structure.">AVStream</a> *st);
<a name="l02504"></a>02504 <span class="comment"></span>
<a name="l02505"></a>02505 <span class="comment">/**</span>
<a name="l02506"></a>02506 <span class="comment"> * Get the AVCodecID for the given codec tag tag.</span>
<a name="l02507"></a>02507 <span class="comment"> * If no codec id is found returns AV_CODEC_ID_NONE.</span>
<a name="l02508"></a>02508 <span class="comment"> *</span>
<a name="l02509"></a>02509 <span class="comment"> * @param tags list of supported codec_id-codec_tag pairs, as stored</span>
<a name="l02510"></a>02510 <span class="comment"> * in AVInputFormat.codec_tag and AVOutputFormat.codec_tag</span>
<a name="l02511"></a>02511 <span class="comment"> * @param tag codec tag to match to a codec ID</span>
<a name="l02512"></a>02512 <span class="comment"> */</span>
<a name="l02513"></a>02513 <span class="keyword">enum</span> <a class="code" href="group__lavc__core.html#gaadca229ad2c20e060a14fec08a5cc7ce" title="Identify the syntax and semantics of the bitstream.">AVCodecID</a> <a class="code" href="group__lavf__misc.html#ga27b89fa8286af6efb5a69e8db4033b09" title="Get the AVCodecID for the given codec tag tag.">av_codec_get_id</a>(<span class="keyword">const</span> <span class="keyword">struct</span> AVCodecTag * <span class="keyword">const</span> *tags, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> tag);
<a name="l02514"></a>02514 <span class="comment"></span>
<a name="l02515"></a>02515 <span class="comment">/**</span>
<a name="l02516"></a>02516 <span class="comment"> * Get the codec tag for the given codec id id.</span>
<a name="l02517"></a>02517 <span class="comment"> * If no codec tag is found returns 0.</span>
<a name="l02518"></a>02518 <span class="comment"> *</span>
<a name="l02519"></a>02519 <span class="comment"> * @param tags list of supported codec_id-codec_tag pairs, as stored</span>
<a name="l02520"></a>02520 <span class="comment"> * in AVInputFormat.codec_tag and AVOutputFormat.codec_tag</span>
<a name="l02521"></a>02521 <span class="comment"> * @param id codec ID to match to a codec tag</span>
<a name="l02522"></a>02522 <span class="comment"> */</span>
<a name="l02523"></a>02523 <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> <a class="code" href="group__lavf__misc.html#ga126917b7ce8b4f05505098b72f4997de" title="Get the codec tag for the given codec id id.">av_codec_get_tag</a>(<span class="keyword">const</span> <span class="keyword">struct</span> AVCodecTag * <span class="keyword">const</span> *tags, <span class="keyword">enum</span> <a class="code" href="group__lavc__core.html#gaadca229ad2c20e060a14fec08a5cc7ce" title="Identify the syntax and semantics of the bitstream.">AVCodecID</a> <span class="keywordtype">id</span>);
<a name="l02524"></a>02524 <span class="comment"></span>
<a name="l02525"></a>02525 <span class="comment">/**</span>
<a name="l02526"></a>02526 <span class="comment"> * Get the codec tag for the given codec id.</span>
<a name="l02527"></a>02527 <span class="comment"> *</span>
<a name="l02528"></a>02528 <span class="comment"> * @param tags list of supported codec_id - codec_tag pairs, as stored</span>
<a name="l02529"></a>02529 <span class="comment"> * in AVInputFormat.codec_tag and AVOutputFormat.codec_tag</span>
<a name="l02530"></a>02530 <span class="comment"> * @param id codec id that should be searched for in the list</span>
<a name="l02531"></a>02531 <span class="comment"> * @param tag A pointer to the found tag</span>
<a name="l02532"></a>02532 <span class="comment"> * @return 0 if id was not found in tags, > 0 if it was found</span>
<a name="l02533"></a>02533 <span class="comment"> */</span>
<a name="l02534"></a>02534 <span class="keywordtype">int</span> <a class="code" href="group__lavf__misc.html#gabe1a7b6824078229c69b75c71053c035" title="Get the codec tag for the given codec id.">av_codec_get_tag2</a>(<span class="keyword">const</span> <span class="keyword">struct</span> AVCodecTag * <span class="keyword">const</span> *tags, <span class="keyword">enum</span> <a class="code" href="group__lavc__core.html#gaadca229ad2c20e060a14fec08a5cc7ce" title="Identify the syntax and semantics of the bitstream.">AVCodecID</a> <span class="keywordtype">id</span>,
<a name="l02535"></a>02535 <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> *tag);
<a name="l02536"></a>02536
<a name="l02537"></a>02537 <span class="keywordtype">int</span> <a class="code" href="group__lavf__misc.html#gaad9737492bb66aeeec37b7c7d8d90f2a">av_find_default_stream_index</a>(<a class="code" href="structAVFormatContext.html" title="Format I/O context.">AVFormatContext</a> *s);
<a name="l02538"></a>02538 <span class="comment"></span>
<a name="l02539"></a>02539 <span class="comment">/**</span>
<a name="l02540"></a>02540 <span class="comment"> * Get the index for a specific timestamp.</span>
<a name="l02541"></a>02541 <span class="comment"> *</span>
<a name="l02542"></a>02542 <span class="comment"> * @param st stream that the timestamp belongs to</span>
<a name="l02543"></a>02543 <span class="comment"> * @param timestamp timestamp to retrieve the index for</span>
<a name="l02544"></a>02544 <span class="comment"> * @param flags if AVSEEK_FLAG_BACKWARD then the returned index will correspond</span>
<a name="l02545"></a>02545 <span class="comment"> * to the timestamp which is <= the requested one, if backward</span>
<a name="l02546"></a>02546 <span class="comment"> * is 0, then it will be >=</span>
<a name="l02547"></a>02547 <span class="comment"> * if AVSEEK_FLAG_ANY seek to any frame, only keyframes otherwise</span>
<a name="l02548"></a>02548 <span class="comment"> * @return < 0 if no such timestamp could be found</span>
<a name="l02549"></a>02549 <span class="comment"> */</span>
<a name="l02550"></a>02550 <span class="keywordtype">int</span> <a class="code" href="group__lavf__misc.html#gac4cabc0d681c34b2e2c6a87a55877f0d" title="Get the index for a specific timestamp.">av_index_search_timestamp</a>(<a class="code" href="structAVStream.html" title="Stream structure.">AVStream</a> *st, int64_t timestamp, <span class="keywordtype">int</span> flags);
<a name="l02551"></a>02551 <span class="comment"></span>
<a name="l02552"></a>02552 <span class="comment">/**</span>
<a name="l02553"></a>02553 <span class="comment"> * Add an index entry into a sorted list. Update the entry if the list</span>
<a name="l02554"></a>02554 <span class="comment"> * already contains it.</span>
<a name="l02555"></a>02555 <span class="comment"> *</span>
<a name="l02556"></a>02556 <span class="comment"> * @param timestamp timestamp in the time base of the given stream</span>
<a name="l02557"></a>02557 <span class="comment"> */</span>
<a name="l02558"></a>02558 <span class="keywordtype">int</span> <a class="code" href="group__lavf__misc.html#ga3ed7441cb4af0bdd65a4cf51bf35088e" title="Add an index entry into a sorted list.">av_add_index_entry</a>(<a class="code" href="structAVStream.html" title="Stream structure.">AVStream</a> *st, int64_t pos, int64_t timestamp,
<a name="l02559"></a>02559 <span class="keywordtype">int</span> size, <span class="keywordtype">int</span> distance, <span class="keywordtype">int</span> flags);
<a name="l02560"></a>02560
<a name="l02561"></a>02561 <span class="comment"></span>
<a name="l02562"></a>02562 <span class="comment">/**</span>
<a name="l02563"></a>02563 <span class="comment"> * Split a URL string into components.</span>
<a name="l02564"></a>02564 <span class="comment"> *</span>
<a name="l02565"></a>02565 <span class="comment"> * The pointers to buffers for storing individual components may be null,</span>
<a name="l02566"></a>02566 <span class="comment"> * in order to ignore that component. Buffers for components not found are</span>
<a name="l02567"></a>02567 <span class="comment"> * set to empty strings. If the port is not found, it is set to a negative</span>
<a name="l02568"></a>02568 <span class="comment"> * value.</span>
<a name="l02569"></a>02569 <span class="comment"> *</span>
<a name="l02570"></a>02570 <span class="comment"> * @param proto the buffer for the protocol</span>
<a name="l02571"></a>02571 <span class="comment"> * @param proto_size the size of the proto buffer</span>
<a name="l02572"></a>02572 <span class="comment"> * @param authorization the buffer for the authorization</span>
<a name="l02573"></a>02573 <span class="comment"> * @param authorization_size the size of the authorization buffer</span>
<a name="l02574"></a>02574 <span class="comment"> * @param hostname the buffer for the host name</span>
<a name="l02575"></a>02575 <span class="comment"> * @param hostname_size the size of the hostname buffer</span>
<a name="l02576"></a>02576 <span class="comment"> * @param port_ptr a pointer to store the port number in</span>
<a name="l02577"></a>02577 <span class="comment"> * @param path the buffer for the path</span>
<a name="l02578"></a>02578 <span class="comment"> * @param path_size the size of the path buffer</span>
<a name="l02579"></a>02579 <span class="comment"> * @param url the URL to split</span>
<a name="l02580"></a>02580 <span class="comment"> */</span>
<a name="l02581"></a>02581 <span class="keywordtype">void</span> <a class="code" href="group__lavf__misc.html#ga63a0579d6c2aa72470ac742bbbc1205d" title="Split a URL string into components.">av_url_split</a>(<span class="keywordtype">char</span> *proto, <span class="keywordtype">int</span> proto_size,
<a name="l02582"></a>02582 <span class="keywordtype">char</span> *authorization, <span class="keywordtype">int</span> authorization_size,
<a name="l02583"></a>02583 <span class="keywordtype">char</span> *hostname, <span class="keywordtype">int</span> hostname_size,
<a name="l02584"></a>02584 <span class="keywordtype">int</span> *port_ptr,
<a name="l02585"></a>02585 <span class="keywordtype">char</span> *path, <span class="keywordtype">int</span> path_size,
<a name="l02586"></a>02586 <span class="keyword">const</span> <span class="keywordtype">char</span> *url);
<a name="l02587"></a>02587
<a name="l02588"></a>02588 <span class="comment"></span>
<a name="l02589"></a>02589 <span class="comment">/**</span>
<a name="l02590"></a>02590 <span class="comment"> * Print detailed information about the input or output format, such as</span>
<a name="l02591"></a>02591 <span class="comment"> * duration, bitrate, streams, container, programs, metadata, side data,</span>
<a name="l02592"></a>02592 <span class="comment"> * codec and time base.</span>
<a name="l02593"></a>02593 <span class="comment"> *</span>
<a name="l02594"></a>02594 <span class="comment"> * @param ic the context to analyze</span>
<a name="l02595"></a>02595 <span class="comment"> * @param index index of the stream to dump information about</span>
<a name="l02596"></a>02596 <span class="comment"> * @param url the URL to print, such as source or destination file</span>
<a name="l02597"></a>02597 <span class="comment"> * @param is_output Select whether the specified context is an input(0) or output(1)</span>
<a name="l02598"></a>02598 <span class="comment"> */</span>
<a name="l02599"></a>02599 <span class="keywordtype">void</span> <a class="code" href="group__lavf__misc.html#gae2645941f2dc779c307eb6314fd39f10" title="Print detailed information about the input or output format, such as duration, bitrate, streams, container, programs, metadata, side data, codec and time base.">av_dump_format</a>(<a class="code" href="structAVFormatContext.html" title="Format I/O context.">AVFormatContext</a> *ic,
<a name="l02600"></a>02600 <span class="keywordtype">int</span> index,
<a name="l02601"></a>02601 <span class="keyword">const</span> <span class="keywordtype">char</span> *url,
<a name="l02602"></a>02602 <span class="keywordtype">int</span> is_output);
<a name="l02603"></a>02603 <span class="comment"></span>
<a name="l02604"></a>02604 <span class="comment">/**</span>
<a name="l02605"></a>02605 <span class="comment"> * Return in 'buf' the path with '%d' replaced by a number.</span>
<a name="l02606"></a>02606 <span class="comment"> *</span>
<a name="l02607"></a>02607 <span class="comment"> * Also handles the '%0nd' format where 'n' is the total number</span>
<a name="l02608"></a>02608 <span class="comment"> * of digits and '%%'.</span>
<a name="l02609"></a>02609 <span class="comment"> *</span>
<a name="l02610"></a>02610 <span class="comment"> * @param buf destination buffer</span>
<a name="l02611"></a>02611 <span class="comment"> * @param buf_size destination buffer size</span>
<a name="l02612"></a>02612 <span class="comment"> * @param path numbered sequence string</span>
<a name="l02613"></a>02613 <span class="comment"> * @param number frame number</span>
<a name="l02614"></a>02614 <span class="comment"> * @return 0 if OK, -1 on format error</span>
<a name="l02615"></a>02615 <span class="comment"> */</span>
<a name="l02616"></a>02616 <span class="keywordtype">int</span> <a class="code" href="group__lavf__misc.html#ga90e027a5d9006148413a1387c506cd40" title="Return in 'buf' the path with 'd' replaced by a number.">av_get_frame_filename</a>(<span class="keywordtype">char</span> *buf, <span class="keywordtype">int</span> buf_size,
<a name="l02617"></a>02617 <span class="keyword">const</span> <span class="keywordtype">char</span> *path, <span class="keywordtype">int</span> number);
<a name="l02618"></a>02618 <span class="comment"></span>
<a name="l02619"></a>02619 <span class="comment">/**</span>
<a name="l02620"></a>02620 <span class="comment"> * Check whether filename actually is a numbered sequence generator.</span>
<a name="l02621"></a>02621 <span class="comment"> *</span>
<a name="l02622"></a>02622 <span class="comment"> * @param filename possible numbered sequence string</span>
<a name="l02623"></a>02623 <span class="comment"> * @return 1 if a valid numbered sequence string, 0 otherwise</span>
<a name="l02624"></a>02624 <span class="comment"> */</span>
<a name="l02625"></a>02625 <span class="keywordtype">int</span> <a class="code" href="group__lavf__misc.html#gac20eb319c6c46f581b5d08f5c25e763e" title="Check whether filename actually is a numbered sequence generator.">av_filename_number_test</a>(<span class="keyword">const</span> <span class="keywordtype">char</span> *filename);
<a name="l02626"></a>02626 <span class="comment"></span>
<a name="l02627"></a>02627 <span class="comment">/**</span>
<a name="l02628"></a>02628 <span class="comment"> * Generate an SDP for an RTP session.</span>
<a name="l02629"></a>02629 <span class="comment"> *</span>
<a name="l02630"></a>02630 <span class="comment"> * Note, this overwrites the id values of AVStreams in the muxer contexts</span>
<a name="l02631"></a>02631 <span class="comment"> * for getting unique dynamic payload types.</span>
<a name="l02632"></a>02632 <span class="comment"> *</span>
<a name="l02633"></a>02633 <span class="comment"> * @param ac array of AVFormatContexts describing the RTP streams. If the</span>
<a name="l02634"></a>02634 <span class="comment"> * array is composed by only one context, such context can contain</span>
<a name="l02635"></a>02635 <span class="comment"> * multiple AVStreams (one AVStream per RTP stream). Otherwise,</span>
<a name="l02636"></a>02636 <span class="comment"> * all the contexts in the array (an AVCodecContext per RTP stream)</span>
<a name="l02637"></a>02637 <span class="comment"> * must contain only one AVStream.</span>
<a name="l02638"></a>02638 <span class="comment"> * @param n_files number of AVCodecContexts contained in ac</span>
<a name="l02639"></a>02639 <span class="comment"> * @param buf buffer where the SDP will be stored (must be allocated by</span>
<a name="l02640"></a>02640 <span class="comment"> * the caller)</span>
<a name="l02641"></a>02641 <span class="comment"> * @param size the size of the buffer</span>
<a name="l02642"></a>02642 <span class="comment"> * @return 0 if OK, AVERROR_xxx on error</span>
<a name="l02643"></a>02643 <span class="comment"> */</span>
<a name="l02644"></a>02644 <span class="keywordtype">int</span> <a class="code" href="group__lavf__misc.html#gaa2a7353a6bb0c8726797abd56b176af0" title="Generate an SDP for an RTP session.">av_sdp_create</a>(<a class="code" href="structAVFormatContext.html" title="Format I/O context.">AVFormatContext</a> *ac[], <span class="keywordtype">int</span> n_files, <span class="keywordtype">char</span> *buf, <span class="keywordtype">int</span> size);
<a name="l02645"></a>02645 <span class="comment"></span>
<a name="l02646"></a>02646 <span class="comment">/**</span>
<a name="l02647"></a>02647 <span class="comment"> * Return a positive value if the given filename has one of the given</span>
<a name="l02648"></a>02648 <span class="comment"> * extensions, 0 otherwise.</span>
<a name="l02649"></a>02649 <span class="comment"> *</span>
<a name="l02650"></a>02650 <span class="comment"> * @param filename file name to check against the given extensions</span>
<a name="l02651"></a>02651 <span class="comment"> * @param extensions a comma-separated list of filename extensions</span>
<a name="l02652"></a>02652 <span class="comment"> */</span>
<a name="l02653"></a>02653 <span class="keywordtype">int</span> <a class="code" href="group__lavf__misc.html#ga8247f49e5642dd3bd20ce6ba5a7f6466" title="Return a positive value if the given filename has one of the given extensions, 0 otherwise.">av_match_ext</a>(<span class="keyword">const</span> <span class="keywordtype">char</span> *filename, <span class="keyword">const</span> <span class="keywordtype">char</span> *extensions);
<a name="l02654"></a>02654 <span class="comment"></span>
<a name="l02655"></a>02655 <span class="comment">/**</span>
<a name="l02656"></a>02656 <span class="comment"> * Test if the given container can store a codec.</span>
<a name="l02657"></a>02657 <span class="comment"> *</span>
<a name="l02658"></a>02658 <span class="comment"> * @param ofmt container to check for compatibility</span>
<a name="l02659"></a>02659 <span class="comment"> * @param codec_id codec to potentially store in container</span>
<a name="l02660"></a>02660 <span class="comment"> * @param std_compliance standards compliance level, one of FF_COMPLIANCE_*</span>
<a name="l02661"></a>02661 <span class="comment"> *</span>
<a name="l02662"></a>02662 <span class="comment"> * @return 1 if codec with ID codec_id can be stored in ofmt, 0 if it cannot.</span>
<a name="l02663"></a>02663 <span class="comment"> * A negative number if this information is not available.</span>
<a name="l02664"></a>02664 <span class="comment"> */</span>
<a name="l02665"></a>02665 <span class="keywordtype">int</span> <a class="code" href="group__lavf__misc.html#gaa90b4c72d1bbb298e11096d3a09ec7db" title="Test if the given container can store a codec.">avformat_query_codec</a>(<span class="keyword">const</span> <a class="code" href="structAVOutputFormat.html">AVOutputFormat</a> *ofmt, <span class="keyword">enum</span> <a class="code" href="group__lavc__core.html#gaadca229ad2c20e060a14fec08a5cc7ce" title="Identify the syntax and semantics of the bitstream.">AVCodecID</a> codec_id,
<a name="l02666"></a>02666 <span class="keywordtype">int</span> std_compliance);
<a name="l02667"></a>02667 <span class="comment"></span>
<a name="l02668"></a>02668 <span class="comment">/**</span>
<a name="l02669"></a>02669 <span class="comment"> * @defgroup riff_fourcc RIFF FourCCs</span>
<a name="l02670"></a>02670 <span class="comment"> * @{</span>
<a name="l02671"></a>02671 <span class="comment"> * Get the tables mapping RIFF FourCCs to libavcodec AVCodecIDs. The tables are</span>
<a name="l02672"></a>02672 <span class="comment"> * meant to be passed to av_codec_get_id()/av_codec_get_tag() as in the</span>
<a name="l02673"></a>02673 <span class="comment"> * following code:</span>
<a name="l02674"></a>02674 <span class="comment"> * @code</span>
<a name="l02675"></a>02675 <span class="comment"> * uint32_t tag = MKTAG('H', '2', '6', '4');</span>
<a name="l02676"></a>02676 <span class="comment"> * const struct AVCodecTag *table[] = { avformat_get_riff_video_tags(), 0 };</span>
<a name="l02677"></a>02677 <span class="comment"> * enum AVCodecID id = av_codec_get_id(table, tag);</span>
<a name="l02678"></a>02678 <span class="comment"> * @endcode</span>
<a name="l02679"></a>02679 <span class="comment"> */</span><span class="comment"></span>
<a name="l02680"></a>02680 <span class="comment">/**</span>
<a name="l02681"></a>02681 <span class="comment"> * @return the table mapping RIFF FourCCs for video to libavcodec AVCodecID.</span>
<a name="l02682"></a>02682 <span class="comment"> */</span>
<a name="l02683"></a>02683 <span class="keyword">const</span> <span class="keyword">struct </span>AVCodecTag *<a class="code" href="group__riff__fourcc.html#ga4a9328791c005cffce1669b16ce0f63a">avformat_get_riff_video_tags</a>(<span class="keywordtype">void</span>);<span class="comment"></span>
<a name="l02684"></a>02684 <span class="comment">/**</span>
<a name="l02685"></a>02685 <span class="comment"> * @return the table mapping RIFF FourCCs for audio to AVCodecID.</span>
<a name="l02686"></a>02686 <span class="comment"> */</span>
<a name="l02687"></a>02687 <span class="keyword">const</span> <span class="keyword">struct </span>AVCodecTag *<a class="code" href="group__riff__fourcc.html#ga9727f55e77c2141d5e4a84347b36efda">avformat_get_riff_audio_tags</a>(<span class="keywordtype">void</span>);<span class="comment"></span>
<a name="l02688"></a>02688 <span class="comment">/**</span>
<a name="l02689"></a>02689 <span class="comment"> * @return the table mapping MOV FourCCs for video to libavcodec AVCodecID.</span>
<a name="l02690"></a>02690 <span class="comment"> */</span>
<a name="l02691"></a>02691 <span class="keyword">const</span> <span class="keyword">struct </span>AVCodecTag *<a class="code" href="group__riff__fourcc.html#ga47911ca1cdd2d844814c291f60b9b743">avformat_get_mov_video_tags</a>(<span class="keywordtype">void</span>);<span class="comment"></span>
<a name="l02692"></a>02692 <span class="comment">/**</span>
<a name="l02693"></a>02693 <span class="comment"> * @return the table mapping MOV FourCCs for audio to AVCodecID.</span>
<a name="l02694"></a>02694 <span class="comment"> */</span>
<a name="l02695"></a>02695 <span class="keyword">const</span> <span class="keyword">struct </span>AVCodecTag *<a class="code" href="group__riff__fourcc.html#gaacfe26f00911fb9c2cddaee3f9344868">avformat_get_mov_audio_tags</a>(<span class="keywordtype">void</span>);
<a name="l02696"></a>02696 <span class="comment"></span>
<a name="l02697"></a>02697 <span class="comment">/**</span>
<a name="l02698"></a>02698 <span class="comment"> * @}</span>
<a name="l02699"></a>02699 <span class="comment"> */</span>
<a name="l02700"></a>02700 <span class="comment"></span>
<a name="l02701"></a>02701 <span class="comment">/**</span>
<a name="l02702"></a>02702 <span class="comment"> * Guess the sample aspect ratio of a frame, based on both the stream and the</span>
<a name="l02703"></a>02703 <span class="comment"> * frame aspect ratio.</span>
<a name="l02704"></a>02704 <span class="comment"> *</span>
<a name="l02705"></a>02705 <span class="comment"> * Since the frame aspect ratio is set by the codec but the stream aspect ratio</span>
<a name="l02706"></a>02706 <span class="comment"> * is set by the demuxer, these two may not be equal. This function tries to</span>
<a name="l02707"></a>02707 <span class="comment"> * return the value that you should use if you would like to display the frame.</span>
<a name="l02708"></a>02708 <span class="comment"> *</span>
<a name="l02709"></a>02709 <span class="comment"> * Basic logic is to use the stream aspect ratio if it is set to something sane</span>
<a name="l02710"></a>02710 <span class="comment"> * otherwise use the frame aspect ratio. This way a container setting, which is</span>
<a name="l02711"></a>02711 <span class="comment"> * usually easy to modify can override the coded value in the frames.</span>
<a name="l02712"></a>02712 <span class="comment"> *</span>
<a name="l02713"></a>02713 <span class="comment"> * @param format the format context which the stream is part of</span>
<a name="l02714"></a>02714 <span class="comment"> * @param stream the stream which the frame is part of</span>
<a name="l02715"></a>02715 <span class="comment"> * @param frame the frame with the aspect ratio to be determined</span>
<a name="l02716"></a>02716 <span class="comment"> * @return the guessed (valid) sample_aspect_ratio, 0/1 if no idea</span>
<a name="l02717"></a>02717 <span class="comment"> */</span>
<a name="l02718"></a>02718 <a class="code" href="structAVRational.html" title="rational number numerator/denominator">AVRational</a> <a class="code" href="group__lavf__misc.html#ga0f62da0e809045bb21166013c404ce43" title="Guess the sample aspect ratio of a frame, based on both the stream and the frame aspect ratio...">av_guess_sample_aspect_ratio</a>(<a class="code" href="structAVFormatContext.html" title="Format I/O context.">AVFormatContext</a> *format, <a class="code" href="structAVStream.html" title="Stream structure.">AVStream</a> *stream, <a class="code" href="structAVFrame.html" title="This structure describes decoded (raw) audio or video data.">AVFrame</a> *<a class="code" href="demuxing__decoding_8c.html#ad7d33d579a8d4241a5e643e39287a209">frame</a>);
<a name="l02719"></a>02719 <span class="comment"></span>
<a name="l02720"></a>02720 <span class="comment">/**</span>
<a name="l02721"></a>02721 <span class="comment"> * Guess the frame rate, based on both the container and codec information.</span>
<a name="l02722"></a>02722 <span class="comment"> *</span>
<a name="l02723"></a>02723 <span class="comment"> * @param ctx the format context which the stream is part of</span>
<a name="l02724"></a>02724 <span class="comment"> * @param stream the stream which the frame is part of</span>
<a name="l02725"></a>02725 <span class="comment"> * @param frame the frame for which the frame rate should be determined, may be NULL</span>
<a name="l02726"></a>02726 <span class="comment"> * @return the guessed (valid) frame rate, 0/1 if no idea</span>
<a name="l02727"></a>02727 <span class="comment"> */</span>
<a name="l02728"></a>02728 <a class="code" href="structAVRational.html" title="rational number numerator/denominator">AVRational</a> <a class="code" href="group__lavf__misc.html#ga12c049178414cc221dfafd4e7f836dea" title="Guess the frame rate, based on both the container and codec information.">av_guess_frame_rate</a>(<a class="code" href="structAVFormatContext.html" title="Format I/O context.">AVFormatContext</a> *ctx, <a class="code" href="structAVStream.html" title="Stream structure.">AVStream</a> *stream, <a class="code" href="structAVFrame.html" title="This structure describes decoded (raw) audio or video data.">AVFrame</a> *<a class="code" href="demuxing__decoding_8c.html#ad7d33d579a8d4241a5e643e39287a209">frame</a>);
<a name="l02729"></a>02729 <span class="comment"></span>
<a name="l02730"></a>02730 <span class="comment">/**</span>
<a name="l02731"></a>02731 <span class="comment"> * Check if the stream st contained in s is matched by the stream specifier</span>
<a name="l02732"></a>02732 <span class="comment"> * spec.</span>
<a name="l02733"></a>02733 <span class="comment"> *</span>
<a name="l02734"></a>02734 <span class="comment"> * See the "stream specifiers" chapter in the documentation for the syntax</span>
<a name="l02735"></a>02735 <span class="comment"> * of spec.</span>
<a name="l02736"></a>02736 <span class="comment"> *</span>
<a name="l02737"></a>02737 <span class="comment"> * @return >0 if st is matched by spec;</span>
<a name="l02738"></a>02738 <span class="comment"> * 0 if st is not matched by spec;</span>
<a name="l02739"></a>02739 <span class="comment"> * AVERROR code if spec is invalid</span>
<a name="l02740"></a>02740 <span class="comment"> *</span>
<a name="l02741"></a>02741 <span class="comment"> * @note A stream specifier can match several streams in the format.</span>
<a name="l02742"></a>02742 <span class="comment"> */</span>
<a name="l02743"></a>02743 <span class="keywordtype">int</span> <a class="code" href="group__lavf__misc.html#ga7e45597834e9ef3098ddb74bc5e1550c" title="Check if the stream st contained in s is matched by the stream specifier spec.">avformat_match_stream_specifier</a>(<a class="code" href="structAVFormatContext.html" title="Format I/O context.">AVFormatContext</a> *s, <a class="code" href="structAVStream.html" title="Stream structure.">AVStream</a> *st,
<a name="l02744"></a>02744 <span class="keyword">const</span> <span class="keywordtype">char</span> *spec);
<a name="l02745"></a>02745
<a name="l02746"></a>02746 <span class="keywordtype">int</span> <a class="code" href="group__lavf__misc.html#ga501ff1b3aa357c09da90c0effb356e45">avformat_queue_attached_pictures</a>(<a class="code" href="structAVFormatContext.html" title="Format I/O context.">AVFormatContext</a> *s);
<a name="l02747"></a>02747
<a name="l02748"></a>02748 <span class="comment"></span>
<a name="l02749"></a>02749 <span class="comment">/**</span>
<a name="l02750"></a>02750 <span class="comment"> * @}</span>
<a name="l02751"></a>02751 <span class="comment"> */</span>
<a name="l02752"></a>02752
<a name="l02753"></a>02753 <span class="preprocessor">#endif </span><span class="comment">/* AVFORMAT_AVFORMAT_H */</span>
</pre></div></div><!-- contents -->
<!-- window showing the filter options -->
<div id="MSearchSelectWindow"
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
onkeydown="return searchBox.OnSearchSelectKey(event)">
<a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(0)"><span class="SelectionMark"> </span>All</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(1)"><span class="SelectionMark"> </span>Data Structures</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(2)"><span class="SelectionMark"> </span>Files</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(3)"><span class="SelectionMark"> </span>Functions</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(4)"><span class="SelectionMark"> </span>Variables</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(5)"><span class="SelectionMark"> </span>Typedefs</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(6)"><span class="SelectionMark"> </span>Enumerations</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(7)"><span class="SelectionMark"> </span>Enumerator</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(8)"><span class="SelectionMark"> </span>Defines</a></div>
<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
<iframe src="javascript:void(0)" frameborder="0"
name="MSearchResults" id="MSearchResults">
</iframe>
</div>
<hr class="footer"/><address class="footer"><small>
Generated by  <a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/>
</a> 1.7.6.1
</small></address>
</body>
</html>