misc/winutils/include/libavformat/avformat.h
author Wuzzy <Wuzzy2@mail.ru>
Fri, 09 Mar 2018 19:05:59 +0100
changeset 13145 5083fb0a2992
parent 7813 7ac83d79b897
permissions -rw-r--r--
A Classic Fairytale: Harden all missions against missing campaign variables in team file and assume default values This assumes the worst case in which the team file is missing all campaign variables except Progress. This has been successfully tested with all 10 missions and still generates a logical storyline. By default, the game assumes: - The cyborg's offer in mission 2 was refused - The traitor in mission 5 was killed As a consequence, missions 8 and 10 use the princessScene cut scene.
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
7813
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
     1
/*
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
     2
 * copyright (c) 2001 Fabrice Bellard
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
     3
 *
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
     4
 * This file is part of Libav.
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
     5
 *
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
     6
 * Libav is free software; you can redistribute it and/or
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
     7
 * modify it under the terms of the GNU Lesser General Public
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
     8
 * License as published by the Free Software Foundation; either
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
     9
 * version 2.1 of the License, or (at your option) any later version.
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
    10
 *
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
    11
 * Libav is distributed in the hope that it will be useful,
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
    12
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
    13
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
    14
 * Lesser General Public License for more details.
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
    15
 *
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
    16
 * You should have received a copy of the GNU Lesser General Public
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
    17
 * License along with Libav; if not, write to the Free Software
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
    18
 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
    19
 */
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
    20
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
    21
#ifndef AVFORMAT_AVFORMAT_H
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
    22
#define AVFORMAT_AVFORMAT_H
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
    23
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
    24
/**
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
    25
 * @file
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
    26
 * @ingroup libavf
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
    27
 * Main libavformat public API header
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
    28
 */
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
    29
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
    30
/**
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
    31
 * @defgroup libavf I/O and Muxing/Demuxing Library
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
    32
 * @{
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
    33
 *
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
    34
 * Libavformat (lavf) is a library for dealing with various media container
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
    35
 * formats. Its main two purposes are demuxing - i.e. splitting a media file
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
    36
 * into component streams, and the reverse process of muxing - writing supplied
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
    37
 * data in a specified container format. It also has an @ref lavf_io
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
    38
 * "I/O module" which supports a number of protocols for accessing the data (e.g.
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
    39
 * file, tcp, http and others). Before using lavf, you need to call
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
    40
 * av_register_all() to register all compiled muxers, demuxers and protocols.
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
    41
 * Unless you are absolutely sure you won't use libavformat's network
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
    42
 * capabilities, you should also call avformat_network_init().
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
    43
 *
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
    44
 * A supported input format is described by an AVInputFormat struct, conversely
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
    45
 * an output format is described by AVOutputFormat. You can iterate over all
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
    46
 * registered input/output formats using the av_iformat_next() /
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
    47
 * av_oformat_next() functions. The protocols layer is not part of the public
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
    48
 * API, so you can only get the names of supported protocols with the
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
    49
 * avio_enum_protocols() function.
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
    50
 *
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
    51
 * Main lavf structure used for both muxing and demuxing is AVFormatContext,
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
    52
 * which exports all information about the file being read or written. As with
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
    53
 * most Libav structures, its size is not part of public ABI, so it cannot be
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
    54
 * allocated on stack or directly with av_malloc(). To create an
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
    55
 * AVFormatContext, use avformat_alloc_context() (some functions, like
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
    56
 * avformat_open_input() might do that for you).
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
    57
 *
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
    58
 * Most importantly an AVFormatContext contains:
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
    59
 * @li the @ref AVFormatContext.iformat "input" or @ref AVFormatContext.oformat
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
    60
 * "output" format. It is either autodetected or set by user for input;
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
    61
 * always set by user for output.
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
    62
 * @li an @ref AVFormatContext.streams "array" of AVStreams, which describe all
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
    63
 * elementary streams stored in the file. AVStreams are typically referred to
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
    64
 * using their index in this array.
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
    65
 * @li an @ref AVFormatContext.pb "I/O context". It is either opened by lavf or
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
    66
 * set by user for input, always set by user for output (unless you are dealing
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
    67
 * with an AVFMT_NOFILE format).
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
    68
 *
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
    69
 * @section lavf_options Passing options to (de)muxers
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
    70
 * Lavf allows to configure muxers and demuxers using the @ref avoptions
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
    71
 * mechanism. Generic (format-independent) libavformat options are provided by
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
    72
 * AVFormatContext, they can be examined from a user program by calling
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
    73
 * av_opt_next() / av_opt_find() on an allocated AVFormatContext (or its AVClass
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
    74
 * from avformat_get_class()). Private (format-specific) options are provided by
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
    75
 * AVFormatContext.priv_data if and only if AVInputFormat.priv_class /
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
    76
 * AVOutputFormat.priv_class of the corresponding format struct is non-NULL.
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
    77
 * Further options may be provided by the @ref AVFormatContext.pb "I/O context",
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
    78
 * if its AVClass is non-NULL, and the protocols layer. See the discussion on
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
    79
 * nesting in @ref avoptions documentation to learn how to access those.
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
    80
 *
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
    81
 * @defgroup lavf_decoding Demuxing
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
    82
 * @{
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
    83
 * Demuxers read a media file and split it into chunks of data (@em packets). A
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
    84
 * @ref AVPacket "packet" contains one or more encoded frames which belongs to a
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
    85
 * single elementary stream. In the lavf API this process is represented by the
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
    86
 * avformat_open_input() function for opening a file, av_read_frame() for
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
    87
 * reading a single packet and finally avformat_close_input(), which does the
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
    88
 * cleanup.
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
    89
 *
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
    90
 * @section lavf_decoding_open Opening a media file
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
    91
 * The minimum information required to open a file is its URL or filename, which
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
    92
 * is passed to avformat_open_input(), as in the following code:
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
    93
 * @code
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
    94
 * const char    *url = "in.mp3";
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
    95
 * AVFormatContext *s = NULL;
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
    96
 * int ret = avformat_open_input(&s, url, NULL, NULL);
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
    97
 * if (ret < 0)
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
    98
 *     abort();
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
    99
 * @endcode
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   100
 * The above code attempts to allocate an AVFormatContext, open the
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   101
 * specified file (autodetecting the format) and read the header, exporting the
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   102
 * information stored there into s. Some formats do not have a header or do not
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   103
 * store enough information there, so it is recommended that you call the
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   104
 * avformat_find_stream_info() function which tries to read and decode a few
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   105
 * frames to find missing information.
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   106
 *
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   107
 * In some cases you might want to preallocate an AVFormatContext yourself with
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   108
 * avformat_alloc_context() and do some tweaking on it before passing it to
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   109
 * avformat_open_input(). One such case is when you want to use custom functions
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   110
 * for reading input data instead of lavf internal I/O layer.
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   111
 * To do that, create your own AVIOContext with avio_alloc_context(), passing
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   112
 * your reading callbacks to it. Then set the @em pb field of your
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   113
 * AVFormatContext to newly created AVIOContext.
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   114
 *
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   115
 * Since the format of the opened file is in general not known until after
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   116
 * avformat_open_input() has returned, it is not possible to set demuxer private
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   117
 * options on a preallocated context. Instead, the options should be passed to
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   118
 * avformat_open_input() wrapped in an AVDictionary:
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   119
 * @code
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   120
 * AVDictionary *options = NULL;
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   121
 * av_dict_set(&options, "video_size", "640x480", 0);
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   122
 * av_dict_set(&options, "pixel_format", "rgb24", 0);
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   123
 *
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   124
 * if (avformat_open_input(&s, url, NULL, &options) < 0)
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   125
 *     abort();
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   126
 * av_dict_free(&options);
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   127
 * @endcode
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   128
 * This code passes the private options 'video_size' and 'pixel_format' to the
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   129
 * demuxer. They would be necessary for e.g. the rawvideo demuxer, since it
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   130
 * cannot know how to interpret raw video data otherwise. If the format turns
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   131
 * out to be something different than raw video, those options will not be
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   132
 * recognized by the demuxer and therefore will not be applied. Such unrecognized
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   133
 * options are then returned in the options dictionary (recognized options are
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   134
 * consumed). The calling program can handle such unrecognized options as it
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   135
 * wishes, e.g.
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   136
 * @code
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   137
 * AVDictionaryEntry *e;
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   138
 * if (e = av_dict_get(options, "", NULL, AV_DICT_IGNORE_SUFFIX)) {
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   139
 *     fprintf(stderr, "Option %s not recognized by the demuxer.\n", e->key);
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   140
 *     abort();
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   141
 * }
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   142
 * @endcode
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   143
 *
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   144
 * After you have finished reading the file, you must close it with
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   145
 * avformat_close_input(). It will free everything associated with the file.
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   146
 *
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   147
 * @section lavf_decoding_read Reading from an opened file
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   148
 * Reading data from an opened AVFormatContext is done by repeatedly calling
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   149
 * av_read_frame() on it. Each call, if successful, will return an AVPacket
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   150
 * containing encoded data for one AVStream, identified by
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   151
 * AVPacket.stream_index. This packet may be passed straight into the libavcodec
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   152
 * decoding functions avcodec_decode_video2(), avcodec_decode_audio4() or
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   153
 * avcodec_decode_subtitle2() if the caller wishes to decode the data.
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   154
 *
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   155
 * AVPacket.pts, AVPacket.dts and AVPacket.duration timing information will be
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   156
 * set if known. They may also be unset (i.e. AV_NOPTS_VALUE for
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   157
 * pts/dts, 0 for duration) if the stream does not provide them. The timing
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   158
 * information will be in AVStream.time_base units, i.e. it has to be
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   159
 * multiplied by the timebase to convert them to seconds.
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   160
 *
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   161
 * The packet data belongs to the demuxer and is invalid after the next call to
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   162
 * av_read_frame(). The user must free the packet with av_free_packet() before
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   163
 * calling av_read_frame() again or closing the file.
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   164
 *
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   165
 * @section lavf_decoding_seek Seeking
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   166
 * @}
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   167
 *
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   168
 * @defgroup lavf_encoding Muxing
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   169
 * @{
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   170
 * @}
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   171
 *
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   172
 * @defgroup lavf_io I/O Read/Write
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   173
 * @{
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   174
 * @}
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   175
 *
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   176
 * @defgroup lavf_codec Demuxers
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   177
 * @{
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   178
 * @defgroup lavf_codec_native Native Demuxers
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   179
 * @{
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   180
 * @}
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   181
 * @defgroup lavf_codec_wrappers External library wrappers
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   182
 * @{
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   183
 * @}
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   184
 * @}
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   185
 * @defgroup lavf_protos I/O Protocols
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   186
 * @{
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   187
 * @}
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   188
 * @defgroup lavf_internal Internal
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   189
 * @{
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   190
 * @}
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   191
 * @}
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   192
 *
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   193
 */
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   194
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   195
#include <time.h>
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   196
#include <stdio.h>  /* FILE */
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   197
#include "libavcodec/avcodec.h"
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   198
#include "libavutil/dict.h"
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   199
#include "libavutil/log.h"
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   200
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   201
#include "avio.h"
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   202
#include "libavformat/version.h"
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   203
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   204
#if FF_API_AV_GETTIME
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   205
#include "libavutil/time.h"
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   206
#endif
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   207
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   208
struct AVFormatContext;
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   209
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   210
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   211
/**
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   212
 * @defgroup metadata_api Public Metadata API
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   213
 * @{
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   214
 * @ingroup libavf
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   215
 * The metadata API allows libavformat to export metadata tags to a client
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   216
 * application when demuxing. Conversely it allows a client application to
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   217
 * set metadata when muxing.
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   218
 *
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   219
 * Metadata is exported or set as pairs of key/value strings in the 'metadata'
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   220
 * fields of the AVFormatContext, AVStream, AVChapter and AVProgram structs
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   221
 * using the @ref lavu_dict "AVDictionary" API. Like all strings in Libav,
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   222
 * metadata is assumed to be UTF-8 encoded Unicode. Note that metadata
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   223
 * exported by demuxers isn't checked to be valid UTF-8 in most cases.
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   224
 *
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   225
 * Important concepts to keep in mind:
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   226
 * -  Keys are unique; there can never be 2 tags with the same key. This is
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   227
 *    also meant semantically, i.e., a demuxer should not knowingly produce
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   228
 *    several keys that are literally different but semantically identical.
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   229
 *    E.g., key=Author5, key=Author6. In this example, all authors must be
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   230
 *    placed in the same tag.
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   231
 * -  Metadata is flat, not hierarchical; there are no subtags. If you
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   232
 *    want to store, e.g., the email address of the child of producer Alice
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   233
 *    and actor Bob, that could have key=alice_and_bobs_childs_email_address.
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   234
 * -  Several modifiers can be applied to the tag name. This is done by
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   235
 *    appending a dash character ('-') and the modifier name in the order
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   236
 *    they appear in the list below -- e.g. foo-eng-sort, not foo-sort-eng.
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   237
 *    -  language -- a tag whose value is localized for a particular language
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   238
 *       is appended with the ISO 639-2/B 3-letter language code.
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   239
 *       For example: Author-ger=Michael, Author-eng=Mike
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   240
 *       The original/default language is in the unqualified "Author" tag.
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   241
 *       A demuxer should set a default if it sets any translated tag.
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   242
 *    -  sorting  -- a modified version of a tag that should be used for
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   243
 *       sorting will have '-sort' appended. E.g. artist="The Beatles",
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   244
 *       artist-sort="Beatles, The".
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   245
 *
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   246
 * -  Demuxers attempt to export metadata in a generic format, however tags
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   247
 *    with no generic equivalents are left as they are stored in the container.
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   248
 *    Follows a list of generic tag names:
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   249
 *
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   250
 @verbatim
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   251
 album        -- name of the set this work belongs to
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   252
 album_artist -- main creator of the set/album, if different from artist.
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   253
                 e.g. "Various Artists" for compilation albums.
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   254
 artist       -- main creator of the work
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   255
 comment      -- any additional description of the file.
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   256
 composer     -- who composed the work, if different from artist.
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   257
 copyright    -- name of copyright holder.
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   258
 creation_time-- date when the file was created, preferably in ISO 8601.
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   259
 date         -- date when the work was created, preferably in ISO 8601.
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   260
 disc         -- number of a subset, e.g. disc in a multi-disc collection.
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   261
 encoder      -- name/settings of the software/hardware that produced the file.
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   262
 encoded_by   -- person/group who created the file.
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   263
 filename     -- original name of the file.
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   264
 genre        -- <self-evident>.
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   265
 language     -- main language in which the work is performed, preferably
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   266
                 in ISO 639-2 format. Multiple languages can be specified by
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   267
                 separating them with commas.
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   268
 performer    -- artist who performed the work, if different from artist.
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   269
                 E.g for "Also sprach Zarathustra", artist would be "Richard
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   270
                 Strauss" and performer "London Philharmonic Orchestra".
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   271
 publisher    -- name of the label/publisher.
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   272
 service_name     -- name of the service in broadcasting (channel name).
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   273
 service_provider -- name of the service provider in broadcasting.
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   274
 title        -- name of the work.
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   275
 track        -- number of this work in the set, can be in form current/total.
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   276
 variant_bitrate -- the total bitrate of the bitrate variant that the current stream is part of
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   277
 @endverbatim
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   278
 *
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   279
 * Look in the examples section for an application example how to use the Metadata API.
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   280
 *
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   281
 * @}
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   282
 */
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   283
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   284
/* packet functions */
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   285
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   286
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   287
/**
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   288
 * Allocate and read the payload of a packet and initialize its
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   289
 * fields with default values.
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   290
 *
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   291
 * @param pkt packet
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   292
 * @param size desired payload size
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   293
 * @return >0 (read size) if OK, AVERROR_xxx otherwise
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   294
 */
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   295
int av_get_packet(AVIOContext *s, AVPacket *pkt, int size);
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   296
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   297
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   298
/**
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   299
 * Read data and append it to the current content of the AVPacket.
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   300
 * If pkt->size is 0 this is identical to av_get_packet.
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   301
 * Note that this uses av_grow_packet and thus involves a realloc
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   302
 * which is inefficient. Thus this function should only be used
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   303
 * when there is no reasonable way to know (an upper bound of)
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   304
 * the final size.
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   305
 *
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   306
 * @param pkt packet
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   307
 * @param size amount of data to read
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   308
 * @return >0 (read size) if OK, AVERROR_xxx otherwise, previous data
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   309
 *         will not be lost even if an error occurs.
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   310
 */
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   311
int av_append_packet(AVIOContext *s, AVPacket *pkt, int size);
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   312
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   313
/*************************************************/
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   314
/* fractional numbers for exact pts handling */
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   315
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   316
/**
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   317
 * The exact value of the fractional number is: 'val + num / den'.
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   318
 * num is assumed to be 0 <= num < den.
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   319
 */
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   320
typedef struct AVFrac {
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   321
    int64_t val, num, den;
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   322
} AVFrac;
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   323
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   324
/*************************************************/
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   325
/* input/output formats */
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   326
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   327
struct AVCodecTag;
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   328
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   329
/**
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   330
 * This structure contains the data a format has to probe a file.
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   331
 */
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   332
typedef struct AVProbeData {
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   333
    const char *filename;
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   334
    unsigned char *buf; /**< Buffer must have AVPROBE_PADDING_SIZE of extra allocated bytes filled with zero. */
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   335
    int buf_size;       /**< Size of buf except extra allocated bytes */
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   336
} AVProbeData;
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   337
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   338
#define AVPROBE_SCORE_MAX 100               ///< maximum score, half of that is used for file-extension-based detection
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   339
#define AVPROBE_PADDING_SIZE 32             ///< extra allocated bytes at the end of the probe buffer
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   340
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   341
/// Demuxer will use avio_open, no opened file should be provided by the caller.
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   342
#define AVFMT_NOFILE        0x0001
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   343
#define AVFMT_NEEDNUMBER    0x0002 /**< Needs '%d' in filename. */
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   344
#define AVFMT_SHOW_IDS      0x0008 /**< Show format stream IDs numbers. */
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   345
#define AVFMT_RAWPICTURE    0x0020 /**< Format wants AVPicture structure for
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   346
                                      raw picture data. */
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   347
#define AVFMT_GLOBALHEADER  0x0040 /**< Format wants global header. */
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   348
#define AVFMT_NOTIMESTAMPS  0x0080 /**< Format does not need / have any timestamps. */
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   349
#define AVFMT_GENERIC_INDEX 0x0100 /**< Use generic index building code. */
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   350
#define AVFMT_TS_DISCONT    0x0200 /**< Format allows timestamp discontinuities. Note, muxers always require valid (monotone) timestamps */
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   351
#define AVFMT_VARIABLE_FPS  0x0400 /**< Format allows variable fps. */
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   352
#define AVFMT_NODIMENSIONS  0x0800 /**< Format does not need width/height */
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   353
#define AVFMT_NOSTREAMS     0x1000 /**< Format does not require any streams */
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   354
#define AVFMT_NOBINSEARCH   0x2000 /**< Format does not allow to fallback to binary search via read_timestamp */
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   355
#define AVFMT_NOGENSEARCH   0x4000 /**< Format does not allow to fallback to generic search */
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   356
#define AVFMT_NO_BYTE_SEEK  0x8000 /**< Format does not allow seeking by bytes */
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   357
#define AVFMT_ALLOW_FLUSH  0x10000 /**< Format allows flushing. If not set, the muxer will not receive a NULL packet in the write_packet function. */
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   358
#define AVFMT_TS_NONSTRICT 0x20000 /**< Format does not require strictly
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   359
                                        increasing timestamps, but they must
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   360
                                        still be monotonic */
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   361
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   362
/**
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   363
 * @addtogroup lavf_encoding
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   364
 * @{
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   365
 */
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   366
typedef struct AVOutputFormat {
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   367
    const char *name;
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   368
    /**
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   369
     * Descriptive name for the format, meant to be more human-readable
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   370
     * than name. You should use the NULL_IF_CONFIG_SMALL() macro
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   371
     * to define it.
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   372
     */
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   373
    const char *long_name;
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   374
    const char *mime_type;
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   375
    const char *extensions; /**< comma-separated filename extensions */
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   376
    /* output support */
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   377
    enum AVCodecID audio_codec;    /**< default audio codec */
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   378
    enum AVCodecID video_codec;    /**< default video codec */
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   379
    enum AVCodecID subtitle_codec; /**< default subtitle codec */
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   380
    /**
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   381
     * can use flags: AVFMT_NOFILE, AVFMT_NEEDNUMBER, AVFMT_RAWPICTURE,
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   382
     * AVFMT_GLOBALHEADER, AVFMT_NOTIMESTAMPS, AVFMT_VARIABLE_FPS,
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   383
     * AVFMT_NODIMENSIONS, AVFMT_NOSTREAMS, AVFMT_ALLOW_FLUSH,
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   384
     * AVFMT_TS_NONSTRICT
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   385
     */
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   386
    int flags;
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   387
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   388
    /**
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   389
     * List of supported codec_id-codec_tag pairs, ordered by "better
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   390
     * choice first". The arrays are all terminated by AV_CODEC_ID_NONE.
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   391
     */
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   392
    const struct AVCodecTag * const *codec_tag;
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   393
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   394
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   395
    const AVClass *priv_class; ///< AVClass for the private context
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   396
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   397
    /*****************************************************************
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   398
     * No fields below this line are part of the public API. They
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   399
     * may not be used outside of libavformat and can be changed and
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   400
     * removed at will.
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   401
     * New public fields should be added right above.
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   402
     *****************************************************************
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   403
     */
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   404
    struct AVOutputFormat *next;
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   405
    /**
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   406
     * size of private data so that it can be allocated in the wrapper
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   407
     */
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   408
    int priv_data_size;
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   409
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   410
    int (*write_header)(struct AVFormatContext *);
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   411
    /**
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   412
     * Write a packet. If AVFMT_ALLOW_FLUSH is set in flags,
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   413
     * pkt can be NULL in order to flush data buffered in the muxer.
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   414
     * When flushing, return 0 if there still is more data to flush,
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   415
     * or 1 if everything was flushed and there is no more buffered
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   416
     * data.
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   417
     */
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   418
    int (*write_packet)(struct AVFormatContext *, AVPacket *pkt);
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   419
    int (*write_trailer)(struct AVFormatContext *);
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   420
    /**
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   421
     * Currently only used to set pixel format if not YUV420P.
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   422
     */
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   423
    int (*interleave_packet)(struct AVFormatContext *, AVPacket *out,
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   424
                             AVPacket *in, int flush);
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   425
    /**
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   426
     * Test if the given codec can be stored in this container.
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   427
     *
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   428
     * @return 1 if the codec is supported, 0 if it is not.
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   429
     *         A negative number if unknown.
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   430
     */
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   431
    int (*query_codec)(enum AVCodecID id, int std_compliance);
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   432
} AVOutputFormat;
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   433
/**
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   434
 * @}
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   435
 */
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   436
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   437
/**
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   438
 * @addtogroup lavf_decoding
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   439
 * @{
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   440
 */
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   441
typedef struct AVInputFormat {
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   442
    /**
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   443
     * A comma separated list of short names for the format. New names
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   444
     * may be appended with a minor bump.
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   445
     */
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   446
    const char *name;
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   447
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   448
    /**
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   449
     * Descriptive name for the format, meant to be more human-readable
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   450
     * than name. You should use the NULL_IF_CONFIG_SMALL() macro
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   451
     * to define it.
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   452
     */
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   453
    const char *long_name;
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   454
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   455
    /**
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   456
     * Can use flags: AVFMT_NOFILE, AVFMT_NEEDNUMBER, AVFMT_SHOW_IDS,
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   457
     * AVFMT_GENERIC_INDEX, AVFMT_TS_DISCONT, AVFMT_NOBINSEARCH,
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   458
     * AVFMT_NOGENSEARCH, AVFMT_NO_BYTE_SEEK.
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   459
     */
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   460
    int flags;
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   461
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   462
    /**
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   463
     * If extensions are defined, then no probe is done. You should
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   464
     * usually not use extension format guessing because it is not
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   465
     * reliable enough
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   466
     */
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   467
    const char *extensions;
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   468
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   469
    const struct AVCodecTag * const *codec_tag;
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   470
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   471
    const AVClass *priv_class; ///< AVClass for the private context
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   472
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   473
    /*****************************************************************
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   474
     * No fields below this line are part of the public API. They
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   475
     * may not be used outside of libavformat and can be changed and
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   476
     * removed at will.
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   477
     * New public fields should be added right above.
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   478
     *****************************************************************
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   479
     */
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   480
    struct AVInputFormat *next;
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   481
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   482
    /**
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   483
     * Raw demuxers store their codec ID here.
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   484
     */
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   485
    int raw_codec_id;
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   486
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   487
    /**
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   488
     * Size of private data so that it can be allocated in the wrapper.
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   489
     */
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   490
    int priv_data_size;
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   491
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   492
    /**
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   493
     * Tell if a given file has a chance of being parsed as this format.
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   494
     * The buffer provided is guaranteed to be AVPROBE_PADDING_SIZE bytes
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   495
     * big so you do not have to check for that unless you need more.
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   496
     */
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   497
    int (*read_probe)(AVProbeData *);
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   498
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   499
    /**
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   500
     * Read the format header and initialize the AVFormatContext
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   501
     * structure. Return 0 if OK. Only used in raw format right
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   502
     * now. 'avformat_new_stream' should be called to create new streams.
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   503
     */
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   504
    int (*read_header)(struct AVFormatContext *);
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   505
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   506
    /**
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   507
     * Read one packet and put it in 'pkt'. pts and flags are also
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   508
     * set. 'avformat_new_stream' can be called only if the flag
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   509
     * AVFMTCTX_NOHEADER is used and only in the calling thread (not in a
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   510
     * background thread).
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   511
     * @return 0 on success, < 0 on error.
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   512
     *         When returning an error, pkt must not have been allocated
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   513
     *         or must be freed before returning
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   514
     */
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   515
    int (*read_packet)(struct AVFormatContext *, AVPacket *pkt);
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   516
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   517
    /**
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   518
     * Close the stream. The AVFormatContext and AVStreams are not
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   519
     * freed by this function
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   520
     */
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   521
    int (*read_close)(struct AVFormatContext *);
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   522
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   523
    /**
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   524
     * Seek to a given timestamp relative to the frames in
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   525
     * stream component stream_index.
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   526
     * @param stream_index Must not be -1.
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   527
     * @param flags Selects which direction should be preferred if no exact
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   528
     *              match is available.
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   529
     * @return >= 0 on success (but not necessarily the new offset)
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   530
     */
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   531
    int (*read_seek)(struct AVFormatContext *,
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   532
                     int stream_index, int64_t timestamp, int flags);
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   533
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   534
    /**
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   535
     * Get the next timestamp in stream[stream_index].time_base units.
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   536
     * @return the timestamp or AV_NOPTS_VALUE if an error occurred
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   537
     */
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   538
    int64_t (*read_timestamp)(struct AVFormatContext *s, int stream_index,
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   539
                              int64_t *pos, int64_t pos_limit);
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   540
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   541
    /**
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   542
     * Start/resume playing - only meaningful if using a network-based format
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   543
     * (RTSP).
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   544
     */
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   545
    int (*read_play)(struct AVFormatContext *);
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   546
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   547
    /**
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   548
     * Pause playing - only meaningful if using a network-based format
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   549
     * (RTSP).
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   550
     */
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   551
    int (*read_pause)(struct AVFormatContext *);
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   552
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   553
    /**
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   554
     * Seek to timestamp ts.
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   555
     * Seeking will be done so that the point from which all active streams
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   556
     * can be presented successfully will be closest to ts and within min/max_ts.
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   557
     * Active streams are all streams that have AVStream.discard < AVDISCARD_ALL.
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   558
     */
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   559
    int (*read_seek2)(struct AVFormatContext *s, int stream_index, int64_t min_ts, int64_t ts, int64_t max_ts, int flags);
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   560
} AVInputFormat;
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   561
/**
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   562
 * @}
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   563
 */
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   564
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   565
enum AVStreamParseType {
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   566
    AVSTREAM_PARSE_NONE,
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   567
    AVSTREAM_PARSE_FULL,       /**< full parsing and repack */
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   568
    AVSTREAM_PARSE_HEADERS,    /**< Only parse headers, do not repack. */
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   569
    AVSTREAM_PARSE_TIMESTAMPS, /**< full parsing and interpolation of timestamps for frames not starting on a packet boundary */
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   570
    AVSTREAM_PARSE_FULL_ONCE,  /**< full parsing and repack of the first frame only, only implemented for H.264 currently */
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   571
};
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   572
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   573
typedef struct AVIndexEntry {
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   574
    int64_t pos;
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   575
    int64_t timestamp;
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   576
#define AVINDEX_KEYFRAME 0x0001
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   577
    int flags:2;
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   578
    int size:30; //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).
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   579
    int min_distance;         /**< Minimum distance between this and the previous keyframe, used to avoid unneeded searching. */
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   580
} AVIndexEntry;
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   581
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   582
#define AV_DISPOSITION_DEFAULT   0x0001
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   583
#define AV_DISPOSITION_DUB       0x0002
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   584
#define AV_DISPOSITION_ORIGINAL  0x0004
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   585
#define AV_DISPOSITION_COMMENT   0x0008
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   586
#define AV_DISPOSITION_LYRICS    0x0010
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   587
#define AV_DISPOSITION_KARAOKE   0x0020
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   588
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   589
/**
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   590
 * Track should be used during playback by default.
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   591
 * Useful for subtitle track that should be displayed
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   592
 * even when user did not explicitly ask for subtitles.
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   593
 */
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   594
#define AV_DISPOSITION_FORCED    0x0040
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   595
#define AV_DISPOSITION_HEARING_IMPAIRED  0x0080  /**< stream for hearing impaired audiences */
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   596
#define AV_DISPOSITION_VISUAL_IMPAIRED   0x0100  /**< stream for visual impaired audiences */
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   597
#define AV_DISPOSITION_CLEAN_EFFECTS     0x0200  /**< stream without voice */
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   598
/**
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   599
 * The stream is stored in the file as an attached picture/"cover art" (e.g.
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   600
 * APIC frame in ID3v2). The single packet associated with it will be returned
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   601
 * among the first few packets read from the file unless seeking takes place.
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   602
 * It can also be accessed at any time in AVStream.attached_pic.
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   603
 */
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   604
#define AV_DISPOSITION_ATTACHED_PIC      0x0400
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   605
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   606
/**
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   607
 * Stream structure.
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   608
 * New fields can be added to the end with minor version bumps.
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   609
 * Removal, reordering and changes to existing fields require a major
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   610
 * version bump.
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   611
 * sizeof(AVStream) must not be used outside libav*.
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   612
 */
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   613
typedef struct AVStream {
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   614
    int index;    /**< stream index in AVFormatContext */
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   615
    /**
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   616
     * Format-specific stream ID.
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   617
     * decoding: set by libavformat
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   618
     * encoding: set by the user
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   619
     */
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   620
    int id;
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   621
    /**
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   622
     * Codec context associated with this stream. Allocated and freed by
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   623
     * libavformat.
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   624
     *
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   625
     * - decoding: The demuxer exports codec information stored in the headers
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   626
     *             here.
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   627
     * - encoding: The user sets codec information, the muxer writes it to the
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   628
     *             output. Mandatory fields as specified in AVCodecContext
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   629
     *             documentation must be set even if this AVCodecContext is
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   630
     *             not actually used for encoding.
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   631
     */
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   632
    AVCodecContext *codec;
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   633
#if FF_API_R_FRAME_RATE
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   634
    /**
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   635
     * Real base framerate of the stream.
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   636
     * This is the lowest framerate with which all timestamps can be
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   637
     * represented accurately (it is the least common multiple of all
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   638
     * framerates in the stream). Note, this value is just a guess!
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   639
     * For example, if the time base is 1/90000 and all frames have either
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   640
     * approximately 3600 or 1800 timer ticks, then r_frame_rate will be 50/1.
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   641
     */
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   642
    AVRational r_frame_rate;
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   643
#endif
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   644
    void *priv_data;
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   645
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   646
    /**
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   647
     * encoding: pts generation when outputting stream
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   648
     */
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   649
    struct AVFrac pts;
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   650
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   651
    /**
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   652
     * This is the fundamental unit of time (in seconds) in terms
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   653
     * of which frame timestamps are represented.
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   654
     *
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   655
     * decoding: set by libavformat
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   656
     * encoding: set by libavformat in avformat_write_header. The muxer may use the
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   657
     * user-provided value of @ref AVCodecContext.time_base "codec->time_base"
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   658
     * as a hint.
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   659
     */
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   660
    AVRational time_base;
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   661
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   662
    /**
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   663
     * Decoding: pts of the first frame of the stream, in stream time base.
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   664
     * Only set this if you are absolutely 100% sure that the value you set
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   665
     * it to really is the pts of the first frame.
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   666
     * This may be undefined (AV_NOPTS_VALUE).
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   667
     */
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   668
    int64_t start_time;
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   669
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   670
    /**
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   671
     * Decoding: duration of the stream, in stream time base.
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   672
     * If a source file does not specify a duration, but does specify
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   673
     * a bitrate, this value will be estimated from bitrate and file size.
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   674
     */
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   675
    int64_t duration;
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   676
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   677
    int64_t nb_frames;                 ///< number of frames in this stream if known or 0
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   678
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   679
    int disposition; /**< AV_DISPOSITION_* bit field */
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   680
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   681
    enum AVDiscard discard; ///< Selects which packets can be discarded at will and do not need to be demuxed.
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   682
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   683
    /**
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   684
     * sample aspect ratio (0 if unknown)
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   685
     * - encoding: Set by user.
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   686
     * - decoding: Set by libavformat.
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   687
     */
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   688
    AVRational sample_aspect_ratio;
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   689
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   690
    AVDictionary *metadata;
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   691
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   692
    /**
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   693
     * Average framerate
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   694
     */
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   695
    AVRational avg_frame_rate;
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   696
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   697
    /**
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   698
     * For streams with AV_DISPOSITION_ATTACHED_PIC disposition, this packet
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   699
     * will contain the attached picture.
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   700
     *
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   701
     * decoding: set by libavformat, must not be modified by the caller.
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   702
     * encoding: unused
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   703
     */
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   704
    AVPacket attached_pic;
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   705
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   706
    /*****************************************************************
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   707
     * All fields below this line are not part of the public API. They
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   708
     * may not be used outside of libavformat and can be changed and
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   709
     * removed at will.
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   710
     * New public fields should be added right above.
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   711
     *****************************************************************
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   712
     */
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   713
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   714
    /**
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   715
     * Stream information used internally by av_find_stream_info()
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   716
     */
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   717
#define MAX_STD_TIMEBASES (60*12+5)
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   718
    struct {
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   719
#if FF_API_R_FRAME_RATE
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   720
        int64_t last_dts;
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   721
        int64_t duration_gcd;
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   722
        int duration_count;
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   723
        double duration_error[MAX_STD_TIMEBASES];
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   724
#endif
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   725
        int nb_decoded_frames;
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   726
        int found_decoder;
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   727
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   728
        /**
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   729
         * Those are used for average framerate estimation.
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   730
         */
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   731
        int64_t fps_first_dts;
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   732
        int     fps_first_dts_idx;
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   733
        int64_t fps_last_dts;
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   734
        int     fps_last_dts_idx;
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   735
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   736
    } *info;
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   737
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   738
    int pts_wrap_bits; /**< number of bits in pts (used for wrapping control) */
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   739
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   740
    // Timestamp generation support:
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   741
    /**
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   742
     * Timestamp corresponding to the last dts sync point.
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   743
     *
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   744
     * Initialized when AVCodecParserContext.dts_sync_point >= 0 and
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   745
     * a DTS is received from the underlying container. Otherwise set to
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   746
     * AV_NOPTS_VALUE by default.
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   747
     */
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   748
    int64_t reference_dts;
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   749
    int64_t first_dts;
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   750
    int64_t cur_dts;
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   751
    int64_t last_IP_pts;
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   752
    int last_IP_duration;
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   753
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   754
    /**
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   755
     * Number of packets to buffer for codec probing
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   756
     */
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   757
#define MAX_PROBE_PACKETS 2500
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   758
    int probe_packets;
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   759
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   760
    /**
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   761
     * Number of frames that have been demuxed during av_find_stream_info()
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   762
     */
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   763
    int codec_info_nb_frames;
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   764
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   765
    /* av_read_frame() support */
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   766
    enum AVStreamParseType need_parsing;
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   767
    struct AVCodecParserContext *parser;
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   768
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   769
    /**
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   770
     * last packet in packet_buffer for this stream when muxing.
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   771
     */
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   772
    struct AVPacketList *last_in_packet_buffer;
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   773
    AVProbeData probe_data;
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   774
#define MAX_REORDER_DELAY 16
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   775
    int64_t pts_buffer[MAX_REORDER_DELAY+1];
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   776
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   777
    AVIndexEntry *index_entries; /**< Only used if the format does not
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   778
                                    support seeking natively. */
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   779
    int nb_index_entries;
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   780
    unsigned int index_entries_allocated_size;
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   781
} AVStream;
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   782
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   783
#define AV_PROGRAM_RUNNING 1
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   784
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   785
/**
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   786
 * New fields can be added to the end with minor version bumps.
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   787
 * Removal, reordering and changes to existing fields require a major
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   788
 * version bump.
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   789
 * sizeof(AVProgram) must not be used outside libav*.
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   790
 */
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   791
typedef struct AVProgram {
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   792
    int            id;
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   793
    int            flags;
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   794
    enum AVDiscard discard;        ///< selects which program to discard and which to feed to the caller
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   795
    unsigned int   *stream_index;
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   796
    unsigned int   nb_stream_indexes;
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   797
    AVDictionary *metadata;
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   798
} AVProgram;
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   799
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   800
#define AVFMTCTX_NOHEADER      0x0001 /**< signal that no header is present
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   801
                                         (streams are added dynamically) */
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   802
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   803
typedef struct AVChapter {
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   804
    int id;                 ///< unique ID to identify the chapter
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   805
    AVRational time_base;   ///< time base in which the start/end timestamps are specified
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   806
    int64_t start, end;     ///< chapter start/end time in time_base units
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   807
    AVDictionary *metadata;
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   808
} AVChapter;
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   809
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   810
/**
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   811
 * Format I/O context.
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   812
 * New fields can be added to the end with minor version bumps.
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   813
 * Removal, reordering and changes to existing fields require a major
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   814
 * version bump.
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   815
 * sizeof(AVFormatContext) must not be used outside libav*, use
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   816
 * avformat_alloc_context() to create an AVFormatContext.
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   817
 */
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   818
typedef struct AVFormatContext {
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   819
    /**
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   820
     * A class for logging and AVOptions. Set by avformat_alloc_context().
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   821
     * Exports (de)muxer private options if they exist.
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   822
     */
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   823
    const AVClass *av_class;
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   824
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   825
    /**
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   826
     * Can only be iformat or oformat, not both at the same time.
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   827
     *
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   828
     * decoding: set by avformat_open_input().
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   829
     * encoding: set by the user.
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   830
     */
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   831
    struct AVInputFormat *iformat;
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   832
    struct AVOutputFormat *oformat;
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   833
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   834
    /**
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   835
     * Format private data. This is an AVOptions-enabled struct
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   836
     * if and only if iformat/oformat.priv_class is not NULL.
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   837
     */
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   838
    void *priv_data;
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   839
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   840
    /**
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   841
     * I/O context.
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   842
     *
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   843
     * decoding: either set by the user before avformat_open_input() (then
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   844
     * the user must close it manually) or set by avformat_open_input().
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   845
     * encoding: set by the user.
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   846
     *
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   847
     * Do NOT set this field if AVFMT_NOFILE flag is set in
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   848
     * iformat/oformat.flags. In such a case, the (de)muxer will handle
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   849
     * I/O in some other way and this field will be NULL.
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   850
     */
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   851
    AVIOContext *pb;
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   852
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   853
    /* stream info */
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   854
    int ctx_flags; /**< Format-specific flags, see AVFMTCTX_xx */
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   855
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   856
    /**
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   857
     * A list of all streams in the file. New streams are created with
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   858
     * avformat_new_stream().
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   859
     *
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   860
     * decoding: streams are created by libavformat in avformat_open_input().
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   861
     * If AVFMTCTX_NOHEADER is set in ctx_flags, then new streams may also
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   862
     * appear in av_read_frame().
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   863
     * encoding: streams are created by the user before avformat_write_header().
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   864
     */
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   865
    unsigned int nb_streams;
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   866
    AVStream **streams;
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   867
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   868
    char filename[1024]; /**< input or output filename */
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   869
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   870
    /**
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   871
     * Decoding: position of the first frame of the component, in
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   872
     * AV_TIME_BASE fractional seconds. NEVER set this value directly:
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   873
     * It is deduced from the AVStream values.
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   874
     */
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   875
    int64_t start_time;
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   876
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   877
    /**
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   878
     * Decoding: duration of the stream, in AV_TIME_BASE fractional
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   879
     * seconds. Only set this value if you know none of the individual stream
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   880
     * durations and also do not set any of them. This is deduced from the
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   881
     * AVStream values if not set.
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   882
     */
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   883
    int64_t duration;
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   884
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   885
    /**
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   886
     * Decoding: total stream bitrate in bit/s, 0 if not
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   887
     * available. Never set it directly if the file_size and the
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   888
     * duration are known as Libav can compute it automatically.
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   889
     */
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   890
    int bit_rate;
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   891
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   892
    unsigned int packet_size;
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   893
    int max_delay;
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   894
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   895
    int flags;
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   896
#define AVFMT_FLAG_GENPTS       0x0001 ///< Generate missing pts even if it requires parsing future frames.
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   897
#define AVFMT_FLAG_IGNIDX       0x0002 ///< Ignore index.
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   898
#define AVFMT_FLAG_NONBLOCK     0x0004 ///< Do not block when reading packets from input.
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   899
#define AVFMT_FLAG_IGNDTS       0x0008 ///< Ignore DTS on frames that contain both DTS & PTS
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   900
#define AVFMT_FLAG_NOFILLIN     0x0010 ///< Do not infer any values from other values, just return what is stored in the container
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   901
#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
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   902
#define AVFMT_FLAG_NOBUFFER     0x0040 ///< Do not buffer frames when possible
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   903
#define AVFMT_FLAG_CUSTOM_IO    0x0080 ///< The caller has supplied a custom AVIOContext, don't avio_close() it.
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   904
#define AVFMT_FLAG_DISCARD_CORRUPT  0x0100 ///< Discard frames marked corrupted
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   905
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   906
    /**
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   907
     * decoding: size of data to probe; encoding: unused.
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   908
     */
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   909
    unsigned int probesize;
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   910
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   911
    /**
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   912
     * decoding: maximum time (in AV_TIME_BASE units) during which the input should
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   913
     * be analyzed in avformat_find_stream_info().
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   914
     */
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   915
    int max_analyze_duration;
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   916
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   917
    const uint8_t *key;
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   918
    int keylen;
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   919
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   920
    unsigned int nb_programs;
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   921
    AVProgram **programs;
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   922
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   923
    /**
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   924
     * Forced video codec_id.
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   925
     * Demuxing: Set by user.
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   926
     */
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   927
    enum AVCodecID video_codec_id;
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   928
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   929
    /**
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   930
     * Forced audio codec_id.
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   931
     * Demuxing: Set by user.
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   932
     */
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   933
    enum AVCodecID audio_codec_id;
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   934
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   935
    /**
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   936
     * Forced subtitle codec_id.
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   937
     * Demuxing: Set by user.
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   938
     */
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   939
    enum AVCodecID subtitle_codec_id;
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   940
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   941
    /**
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   942
     * Maximum amount of memory in bytes to use for the index of each stream.
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   943
     * If the index exceeds this size, entries will be discarded as
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   944
     * needed to maintain a smaller size. This can lead to slower or less
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   945
     * accurate seeking (depends on demuxer).
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   946
     * Demuxers for which a full in-memory index is mandatory will ignore
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   947
     * this.
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   948
     * muxing  : unused
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   949
     * demuxing: set by user
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   950
     */
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   951
    unsigned int max_index_size;
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   952
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   953
    /**
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   954
     * Maximum amount of memory in bytes to use for buffering frames
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   955
     * obtained from realtime capture devices.
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   956
     */
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   957
    unsigned int max_picture_buffer;
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   958
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   959
    unsigned int nb_chapters;
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   960
    AVChapter **chapters;
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   961
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   962
    AVDictionary *metadata;
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   963
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   964
    /**
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   965
     * Start time of the stream in real world time, in microseconds
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   966
     * since the unix epoch (00:00 1st January 1970). That is, pts=0
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   967
     * in the stream was captured at this real world time.
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   968
     * - encoding: Set by user.
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   969
     * - decoding: Unused.
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   970
     */
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   971
    int64_t start_time_realtime;
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   972
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   973
    /**
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   974
     * decoding: number of frames used to probe fps
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   975
     */
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   976
    int fps_probe_size;
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   977
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   978
    /**
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   979
     * Error recognition; higher values will detect more errors but may
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   980
     * misdetect some more or less valid parts as errors.
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   981
     * - encoding: unused
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   982
     * - decoding: Set by user.
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   983
     */
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   984
    int error_recognition;
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   985
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   986
    /**
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   987
     * Custom interrupt callbacks for the I/O layer.
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   988
     *
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   989
     * decoding: set by the user before avformat_open_input().
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   990
     * encoding: set by the user before avformat_write_header()
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   991
     * (mainly useful for AVFMT_NOFILE formats). The callback
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   992
     * should also be passed to avio_open2() if it's used to
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   993
     * open the file.
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   994
     */
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   995
    AVIOInterruptCB interrupt_callback;
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   996
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   997
    /**
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   998
     * Flags to enable debugging.
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   999
     */
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1000
    int debug;
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1001
#define FF_FDEBUG_TS        0x0001
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1002
    /*****************************************************************
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1003
     * All fields below this line are not part of the public API. They
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1004
     * may not be used outside of libavformat and can be changed and
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1005
     * removed at will.
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1006
     * New public fields should be added right above.
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1007
     *****************************************************************
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1008
     */
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1009
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1010
    /**
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1011
     * This buffer is only needed when packets were already buffered but
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1012
     * not decoded, for example to get the codec parameters in MPEG
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1013
     * streams.
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1014
     */
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1015
    struct AVPacketList *packet_buffer;
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1016
    struct AVPacketList *packet_buffer_end;
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1017
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1018
    /* av_seek_frame() support */
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1019
    int64_t data_offset; /**< offset of the first packet */
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1020
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1021
    /**
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1022
     * Raw packets from the demuxer, prior to parsing and decoding.
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1023
     * This buffer is used for buffering packets until the codec can
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1024
     * be identified, as parsing cannot be done without knowing the
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1025
     * codec.
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1026
     */
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1027
    struct AVPacketList *raw_packet_buffer;
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1028
    struct AVPacketList *raw_packet_buffer_end;
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1029
    /**
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1030
     * Packets split by the parser get queued here.
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1031
     */
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1032
    struct AVPacketList *parse_queue;
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1033
    struct AVPacketList *parse_queue_end;
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1034
    /**
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1035
     * Remaining size available for raw_packet_buffer, in bytes.
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1036
     */
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1037
#define RAW_PACKET_BUFFER_SIZE 2500000
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1038
    int raw_packet_buffer_remaining_size;
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1039
} AVFormatContext;
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1040
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1041
typedef struct AVPacketList {
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1042
    AVPacket pkt;
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1043
    struct AVPacketList *next;
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1044
} AVPacketList;
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1045
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1046
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1047
/**
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1048
 * @defgroup lavf_core Core functions
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1049
 * @ingroup libavf
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1050
 *
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1051
 * Functions for querying libavformat capabilities, allocating core structures,
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1052
 * etc.
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1053
 * @{
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1054
 */
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1055
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1056
/**
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1057
 * Return the LIBAVFORMAT_VERSION_INT constant.
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1058
 */
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1059
unsigned avformat_version(void);
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1060
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1061
/**
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1062
 * Return the libavformat build-time configuration.
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1063
 */
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1064
const char *avformat_configuration(void);
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1065
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1066
/**
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1067
 * Return the libavformat license.
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1068
 */
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1069
const char *avformat_license(void);
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1070
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1071
/**
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1072
 * Initialize libavformat and register all the muxers, demuxers and
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1073
 * protocols. If you do not call this function, then you can select
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1074
 * exactly which formats you want to support.
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1075
 *
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1076
 * @see av_register_input_format()
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1077
 * @see av_register_output_format()
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1078
 * @see av_register_protocol()
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1079
 */
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1080
void av_register_all(void);
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1081
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1082
void av_register_input_format(AVInputFormat *format);
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1083
void av_register_output_format(AVOutputFormat *format);
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1084
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1085
/**
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1086
 * Do global initialization of network components. This is optional,
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1087
 * but recommended, since it avoids the overhead of implicitly
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1088
 * doing the setup for each session.
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1089
 *
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1090
 * Calling this function will become mandatory if using network
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1091
 * protocols at some major version bump.
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1092
 */
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1093
int avformat_network_init(void);
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1094
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1095
/**
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1096
 * Undo the initialization done by avformat_network_init.
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1097
 */
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1098
int avformat_network_deinit(void);
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1099
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1100
/**
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1101
 * If f is NULL, returns the first registered input format,
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1102
 * if f is non-NULL, returns the next registered input format after f
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1103
 * or NULL if f is the last one.
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1104
 */
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1105
AVInputFormat  *av_iformat_next(AVInputFormat  *f);
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1106
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1107
/**
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1108
 * If f is NULL, returns the first registered output format,
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1109
 * if f is non-NULL, returns the next registered output format after f
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1110
 * or NULL if f is the last one.
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1111
 */
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1112
AVOutputFormat *av_oformat_next(AVOutputFormat *f);
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1113
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1114
/**
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1115
 * Allocate an AVFormatContext.
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1116
 * avformat_free_context() can be used to free the context and everything
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1117
 * allocated by the framework within it.
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1118
 */
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1119
AVFormatContext *avformat_alloc_context(void);
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1120
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1121
/**
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1122
 * Free an AVFormatContext and all its streams.
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1123
 * @param s context to free
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1124
 */
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1125
void avformat_free_context(AVFormatContext *s);
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1126
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1127
/**
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1128
 * Get the AVClass for AVFormatContext. It can be used in combination with
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1129
 * AV_OPT_SEARCH_FAKE_OBJ for examining options.
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1130
 *
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1131
 * @see av_opt_find().
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1132
 */
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1133
const AVClass *avformat_get_class(void);
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1134
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1135
/**
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1136
 * Add a new stream to a media file.
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1137
 *
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1138
 * When demuxing, it is called by the demuxer in read_header(). If the
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1139
 * flag AVFMTCTX_NOHEADER is set in s.ctx_flags, then it may also
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1140
 * be called in read_packet().
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1141
 *
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1142
 * When muxing, should be called by the user before avformat_write_header().
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1143
 *
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1144
 * @param c If non-NULL, the AVCodecContext corresponding to the new stream
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1145
 * will be initialized to use this codec. This is needed for e.g. codec-specific
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1146
 * defaults to be set, so codec should be provided if it is known.
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1147
 *
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1148
 * @return newly created stream or NULL on error.
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1149
 */
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1150
AVStream *avformat_new_stream(AVFormatContext *s, AVCodec *c);
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1151
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1152
AVProgram *av_new_program(AVFormatContext *s, int id);
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1153
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1154
/**
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1155
 * @}
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1156
 */
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1157
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1158
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1159
/**
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1160
 * @addtogroup lavf_decoding
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1161
 * @{
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1162
 */
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1163
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1164
/**
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1165
 * Find AVInputFormat based on the short name of the input format.
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1166
 */
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1167
AVInputFormat *av_find_input_format(const char *short_name);
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1168
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1169
/**
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1170
 * Guess the file format.
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1171
 *
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1172
 * @param is_opened Whether the file is already opened; determines whether
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1173
 *                  demuxers with or without AVFMT_NOFILE are probed.
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1174
 */
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1175
AVInputFormat *av_probe_input_format(AVProbeData *pd, int is_opened);
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1176
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1177
/**
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1178
 * Guess the file format.
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1179
 *
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1180
 * @param is_opened Whether the file is already opened; determines whether
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1181
 *                  demuxers with or without AVFMT_NOFILE are probed.
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1182
 * @param score_max A probe score larger that this is required to accept a
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1183
 *                  detection, the variable is set to the actual detection
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1184
 *                  score afterwards.
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1185
 *                  If the score is <= AVPROBE_SCORE_MAX / 4 it is recommended
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1186
 *                  to retry with a larger probe buffer.
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1187
 */
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1188
AVInputFormat *av_probe_input_format2(AVProbeData *pd, int is_opened, int *score_max);
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1189
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1190
/**
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1191
 * Probe a bytestream to determine the input format. Each time a probe returns
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1192
 * with a score that is too low, the probe buffer size is increased and another
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1193
 * attempt is made. When the maximum probe size is reached, the input format
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1194
 * with the highest score is returned.
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1195
 *
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1196
 * @param pb the bytestream to probe
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1197
 * @param fmt the input format is put here
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1198
 * @param filename the filename of the stream
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1199
 * @param logctx the log context
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1200
 * @param offset the offset within the bytestream to probe from
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1201
 * @param max_probe_size the maximum probe buffer size (zero for default)
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1202
 * @return 0 in case of success, a negative value corresponding to an
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1203
 * AVERROR code otherwise
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1204
 */
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1205
int av_probe_input_buffer(AVIOContext *pb, AVInputFormat **fmt,
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1206
                          const char *filename, void *logctx,
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1207
                          unsigned int offset, unsigned int max_probe_size);
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1208
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1209
/**
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1210
 * Open an input stream and read the header. The codecs are not opened.
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1211
 * The stream must be closed with av_close_input_file().
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1212
 *
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1213
 * @param ps Pointer to user-supplied AVFormatContext (allocated by avformat_alloc_context).
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1214
 *           May be a pointer to NULL, in which case an AVFormatContext is allocated by this
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1215
 *           function and written into ps.
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1216
 *           Note that a user-supplied AVFormatContext will be freed on failure.
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1217
 * @param filename Name of the stream to open.
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1218
 * @param fmt If non-NULL, this parameter forces a specific input format.
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1219
 *            Otherwise the format is autodetected.
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1220
 * @param options  A dictionary filled with AVFormatContext and demuxer-private options.
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1221
 *                 On return this parameter will be destroyed and replaced with a dict containing
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1222
 *                 options that were not found. May be NULL.
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1223
 *
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1224
 * @return 0 on success, a negative AVERROR on failure.
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1225
 *
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1226
 * @note If you want to use custom IO, preallocate the format context and set its pb field.
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1227
 */
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1228
int avformat_open_input(AVFormatContext **ps, const char *filename, AVInputFormat *fmt, AVDictionary **options);
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1229
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1230
/**
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1231
 * Read packets of a media file to get stream information. This
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1232
 * is useful for file formats with no headers such as MPEG. This
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1233
 * function also computes the real framerate in case of MPEG-2 repeat
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1234
 * frame mode.
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1235
 * The logical file position is not changed by this function;
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1236
 * examined packets may be buffered for later processing.
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1237
 *
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1238
 * @param ic media file handle
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1239
 * @param options  If non-NULL, an ic.nb_streams long array of pointers to
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1240
 *                 dictionaries, where i-th member contains options for
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1241
 *                 codec corresponding to i-th stream.
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1242
 *                 On return each dictionary will be filled with options that were not found.
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1243
 * @return >=0 if OK, AVERROR_xxx on error
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1244
 *
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1245
 * @note this function isn't guaranteed to open all the codecs, so
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1246
 *       options being non-empty at return is a perfectly normal behavior.
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1247
 *
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1248
 * @todo Let the user decide somehow what information is needed so that
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1249
 *       we do not waste time getting stuff the user does not need.
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1250
 */
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1251
int avformat_find_stream_info(AVFormatContext *ic, AVDictionary **options);
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1252
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1253
/**
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1254
 * Find the "best" stream in the file.
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1255
 * The best stream is determined according to various heuristics as the most
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1256
 * likely to be what the user expects.
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1257
 * If the decoder parameter is non-NULL, av_find_best_stream will find the
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1258
 * default decoder for the stream's codec; streams for which no decoder can
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1259
 * be found are ignored.
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1260
 *
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1261
 * @param ic                media file handle
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1262
 * @param type              stream type: video, audio, subtitles, etc.
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1263
 * @param wanted_stream_nb  user-requested stream number,
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1264
 *                          or -1 for automatic selection
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1265
 * @param related_stream    try to find a stream related (eg. in the same
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1266
 *                          program) to this one, or -1 if none
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1267
 * @param decoder_ret       if non-NULL, returns the decoder for the
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1268
 *                          selected stream
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1269
 * @param flags             flags; none are currently defined
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1270
 * @return  the non-negative stream number in case of success,
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1271
 *          AVERROR_STREAM_NOT_FOUND if no stream with the requested type
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1272
 *          could be found,
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1273
 *          AVERROR_DECODER_NOT_FOUND if streams were found but no decoder
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1274
 * @note  If av_find_best_stream returns successfully and decoder_ret is not
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1275
 *        NULL, then *decoder_ret is guaranteed to be set to a valid AVCodec.
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1276
 */
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1277
int av_find_best_stream(AVFormatContext *ic,
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1278
                        enum AVMediaType type,
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1279
                        int wanted_stream_nb,
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1280
                        int related_stream,
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1281
                        AVCodec **decoder_ret,
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1282
                        int flags);
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1283
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1284
#if FF_API_READ_PACKET
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1285
/**
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1286
 * @deprecated use AVFMT_FLAG_NOFILLIN | AVFMT_FLAG_NOPARSE to read raw
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1287
 * unprocessed packets
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1288
 *
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1289
 * Read a transport packet from a media file.
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1290
 *
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1291
 * This function is obsolete and should never be used.
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1292
 * Use av_read_frame() instead.
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1293
 *
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1294
 * @param s media file handle
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1295
 * @param pkt is filled
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1296
 * @return 0 if OK, AVERROR_xxx on error
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1297
 */
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1298
attribute_deprecated
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1299
int av_read_packet(AVFormatContext *s, AVPacket *pkt);
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1300
#endif
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1301
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1302
/**
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1303
 * Return the next frame of a stream.
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1304
 * This function returns what is stored in the file, and does not validate
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1305
 * that what is there are valid frames for the decoder. It will split what is
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1306
 * stored in the file into frames and return one for each call. It will not
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1307
 * omit invalid data between valid frames so as to give the decoder the maximum
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1308
 * information possible for decoding.
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1309
 *
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1310
 * The returned packet is valid
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1311
 * until the next av_read_frame() or until av_close_input_file() and
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1312
 * must be freed with av_free_packet. For video, the packet contains
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1313
 * exactly one frame. For audio, it contains an integer number of
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1314
 * frames if each frame has a known fixed size (e.g. PCM or ADPCM
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1315
 * data). If the audio frames have a variable size (e.g. MPEG audio),
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1316
 * then it contains one frame.
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1317
 *
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1318
 * pkt->pts, pkt->dts and pkt->duration are always set to correct
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1319
 * values in AVStream.time_base units (and guessed if the format cannot
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1320
 * provide them). pkt->pts can be AV_NOPTS_VALUE if the video format
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1321
 * has B-frames, so it is better to rely on pkt->dts if you do not
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1322
 * decompress the payload.
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1323
 *
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1324
 * @return 0 if OK, < 0 on error or end of file
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1325
 */
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1326
int av_read_frame(AVFormatContext *s, AVPacket *pkt);
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1327
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1328
/**
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1329
 * Seek to the keyframe at timestamp.
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1330
 * 'timestamp' in 'stream_index'.
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1331
 * @param stream_index If stream_index is (-1), a default
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1332
 * stream is selected, and timestamp is automatically converted
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1333
 * from AV_TIME_BASE units to the stream specific time_base.
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1334
 * @param timestamp Timestamp in AVStream.time_base units
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1335
 *        or, if no stream is specified, in AV_TIME_BASE units.
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1336
 * @param flags flags which select direction and seeking mode
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1337
 * @return >= 0 on success
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1338
 */
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1339
int av_seek_frame(AVFormatContext *s, int stream_index, int64_t timestamp,
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1340
                  int flags);
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1341
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1342
/**
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1343
 * Seek to timestamp ts.
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1344
 * Seeking will be done so that the point from which all active streams
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1345
 * can be presented successfully will be closest to ts and within min/max_ts.
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1346
 * Active streams are all streams that have AVStream.discard < AVDISCARD_ALL.
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1347
 *
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1348
 * If flags contain AVSEEK_FLAG_BYTE, then all timestamps are in bytes and
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1349
 * are the file position (this may not be supported by all demuxers).
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1350
 * If flags contain AVSEEK_FLAG_FRAME, then all timestamps are in frames
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1351
 * in the stream with stream_index (this may not be supported by all demuxers).
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1352
 * Otherwise all timestamps are in units of the stream selected by stream_index
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1353
 * or if stream_index is -1, in AV_TIME_BASE units.
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1354
 * If flags contain AVSEEK_FLAG_ANY, then non-keyframes are treated as
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1355
 * keyframes (this may not be supported by all demuxers).
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1356
 *
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1357
 * @param stream_index index of the stream which is used as time base reference
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1358
 * @param min_ts smallest acceptable timestamp
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1359
 * @param ts target timestamp
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1360
 * @param max_ts largest acceptable timestamp
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1361
 * @param flags flags
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1362
 * @return >=0 on success, error code otherwise
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1363
 *
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1364
 * @note This is part of the new seek API which is still under construction.
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1365
 *       Thus do not use this yet. It may change at any time, do not expect
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1366
 *       ABI compatibility yet!
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1367
 */
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1368
int avformat_seek_file(AVFormatContext *s, int stream_index, int64_t min_ts, int64_t ts, int64_t max_ts, int flags);
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1369
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1370
/**
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1371
 * Start playing a network-based stream (e.g. RTSP stream) at the
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1372
 * current position.
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1373
 */
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1374
int av_read_play(AVFormatContext *s);
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1375
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1376
/**
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1377
 * Pause a network-based stream (e.g. RTSP stream).
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1378
 *
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1379
 * Use av_read_play() to resume it.
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1380
 */
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1381
int av_read_pause(AVFormatContext *s);
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1382
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1383
#if FF_API_CLOSE_INPUT_FILE
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1384
/**
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1385
 * @deprecated use avformat_close_input()
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1386
 * Close a media file (but not its codecs).
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1387
 *
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1388
 * @param s media file handle
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1389
 */
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1390
attribute_deprecated
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1391
void av_close_input_file(AVFormatContext *s);
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1392
#endif
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1393
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1394
/**
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1395
 * Close an opened input AVFormatContext. Free it and all its contents
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1396
 * and set *s to NULL.
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1397
 */
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1398
void avformat_close_input(AVFormatContext **s);
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1399
/**
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1400
 * @}
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1401
 */
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1402
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1403
#define AVSEEK_FLAG_BACKWARD 1 ///< seek backward
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1404
#define AVSEEK_FLAG_BYTE     2 ///< seeking based on position in bytes
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1405
#define AVSEEK_FLAG_ANY      4 ///< seek to any frame, even non-keyframes
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1406
#define AVSEEK_FLAG_FRAME    8 ///< seeking based on frame number
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1407
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1408
/**
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1409
 * @addtogroup lavf_encoding
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1410
 * @{
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1411
 */
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1412
/**
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1413
 * Allocate the stream private data and write the stream header to
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1414
 * an output media file.
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1415
 *
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1416
 * @param s Media file handle, must be allocated with avformat_alloc_context().
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1417
 *          Its oformat field must be set to the desired output format;
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1418
 *          Its pb field must be set to an already openened AVIOContext.
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1419
 * @param options  An AVDictionary filled with AVFormatContext and muxer-private options.
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1420
 *                 On return this parameter will be destroyed and replaced with a dict containing
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1421
 *                 options that were not found. May be NULL.
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1422
 *
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1423
 * @return 0 on success, negative AVERROR on failure.
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1424
 *
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1425
 * @see av_opt_find, av_dict_set, avio_open, av_oformat_next.
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1426
 */
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1427
int avformat_write_header(AVFormatContext *s, AVDictionary **options);
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1428
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1429
/**
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1430
 * Write a packet to an output media file.
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1431
 *
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1432
 * The packet shall contain one audio or video frame.
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1433
 * The packet must be correctly interleaved according to the container
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1434
 * specification, if not then av_interleaved_write_frame must be used.
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1435
 *
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1436
 * @param s media file handle
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1437
 * @param pkt The packet, which contains the stream_index, buf/buf_size,
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1438
 *            dts/pts, ...
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1439
 *            This can be NULL (at any time, not just at the end), in
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1440
 *            order to immediately flush data buffered within the muxer,
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1441
 *            for muxers that buffer up data internally before writing it
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1442
 *            to the output.
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1443
 * @return < 0 on error, = 0 if OK, 1 if flushed and there is no more data to flush
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1444
 */
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1445
int av_write_frame(AVFormatContext *s, AVPacket *pkt);
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1446
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1447
/**
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1448
 * Write a packet to an output media file ensuring correct interleaving.
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1449
 *
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1450
 * The packet must contain one audio or video frame.
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1451
 * If the packets are already correctly interleaved, the application should
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1452
 * call av_write_frame() instead as it is slightly faster. It is also important
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1453
 * to keep in mind that completely non-interleaved input will need huge amounts
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1454
 * of memory to interleave with this, so it is preferable to interleave at the
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1455
 * demuxer level.
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1456
 *
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1457
 * @param s media file handle
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1458
 * @param pkt The packet containing the data to be written. Libavformat takes
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1459
 * ownership of the data and will free it when it sees fit using the packet's
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1460
 * This can be NULL (at any time, not just at the end), to flush the
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1461
 * interleaving queues.
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1462
 * @ref AVPacket.destruct "destruct" field. The caller must not access the data
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1463
 * after this function returns, as it may already be freed.
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1464
 * Packet's @ref AVPacket.stream_index "stream_index" field must be set to the
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1465
 * index of the corresponding stream in @ref AVFormatContext.streams
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1466
 * "s.streams".
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1467
 * It is very strongly recommended that timing information (@ref AVPacket.pts
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1468
 * "pts", @ref AVPacket.dts "dts" @ref AVPacket.duration "duration") is set to
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1469
 * correct values.
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1470
 *
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1471
 * @return 0 on success, a negative AVERROR on error.
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1472
 */
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1473
int av_interleaved_write_frame(AVFormatContext *s, AVPacket *pkt);
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1474
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1475
#if FF_API_INTERLEAVE_PACKET
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1476
/**
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1477
 * @deprecated this function was never meant to be called by the user
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1478
 * programs.
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1479
 */
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1480
attribute_deprecated
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1481
int av_interleave_packet_per_dts(AVFormatContext *s, AVPacket *out,
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1482
                                 AVPacket *pkt, int flush);
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1483
#endif
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1484
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1485
/**
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1486
 * Write the stream trailer to an output media file and free the
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1487
 * file private data.
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1488
 *
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1489
 * May only be called after a successful call to avformat_write_header.
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1490
 *
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1491
 * @param s media file handle
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1492
 * @return 0 if OK, AVERROR_xxx on error
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1493
 */
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1494
int av_write_trailer(AVFormatContext *s);
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1495
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1496
/**
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1497
 * Return the output format in the list of registered output formats
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1498
 * which best matches the provided parameters, or return NULL if
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1499
 * there is no match.
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1500
 *
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1501
 * @param short_name if non-NULL checks if short_name matches with the
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1502
 * names of the registered formats
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1503
 * @param filename if non-NULL checks if filename terminates with the
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1504
 * extensions of the registered formats
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1505
 * @param mime_type if non-NULL checks if mime_type matches with the
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1506
 * MIME type of the registered formats
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1507
 */
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1508
AVOutputFormat *av_guess_format(const char *short_name,
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1509
                                const char *filename,
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1510
                                const char *mime_type);
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1511
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1512
/**
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1513
 * Guess the codec ID based upon muxer and filename.
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1514
 */
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1515
enum AVCodecID av_guess_codec(AVOutputFormat *fmt, const char *short_name,
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1516
                            const char *filename, const char *mime_type,
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1517
                            enum AVMediaType type);
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1518
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1519
/**
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1520
 * @}
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1521
 */
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1522
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1523
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1524
/**
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1525
 * @defgroup lavf_misc Utility functions
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1526
 * @ingroup libavf
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1527
 * @{
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1528
 *
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1529
 * Miscelaneous utility functions related to both muxing and demuxing
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1530
 * (or neither).
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1531
 */
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1532
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1533
/**
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1534
 * Send a nice hexadecimal dump of a buffer to the specified file stream.
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1535
 *
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1536
 * @param f The file stream pointer where the dump should be sent to.
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1537
 * @param buf buffer
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1538
 * @param size buffer size
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1539
 *
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1540
 * @see av_hex_dump_log, av_pkt_dump2, av_pkt_dump_log2
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1541
 */
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1542
void av_hex_dump(FILE *f, const uint8_t *buf, int size);
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1543
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1544
/**
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1545
 * Send a nice hexadecimal dump of a buffer to the log.
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1546
 *
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1547
 * @param avcl A pointer to an arbitrary struct of which the first field is a
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1548
 * pointer to an AVClass struct.
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1549
 * @param level The importance level of the message, lower values signifying
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1550
 * higher importance.
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1551
 * @param buf buffer
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1552
 * @param size buffer size
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1553
 *
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1554
 * @see av_hex_dump, av_pkt_dump2, av_pkt_dump_log2
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1555
 */
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1556
void av_hex_dump_log(void *avcl, int level, const uint8_t *buf, int size);
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1557
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1558
/**
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1559
 * Send a nice dump of a packet to the specified file stream.
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1560
 *
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1561
 * @param f The file stream pointer where the dump should be sent to.
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1562
 * @param pkt packet to dump
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1563
 * @param dump_payload True if the payload must be displayed, too.
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1564
 * @param st AVStream that the packet belongs to
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1565
 */
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1566
void av_pkt_dump2(FILE *f, AVPacket *pkt, int dump_payload, AVStream *st);
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1567
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1568
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1569
/**
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1570
 * Send a nice dump of a packet to the log.
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1571
 *
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1572
 * @param avcl A pointer to an arbitrary struct of which the first field is a
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1573
 * pointer to an AVClass struct.
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1574
 * @param level The importance level of the message, lower values signifying
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1575
 * higher importance.
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1576
 * @param pkt packet to dump
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1577
 * @param dump_payload True if the payload must be displayed, too.
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1578
 * @param st AVStream that the packet belongs to
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1579
 */
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1580
void av_pkt_dump_log2(void *avcl, int level, AVPacket *pkt, int dump_payload,
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1581
                      AVStream *st);
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1582
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1583
/**
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1584
 * Get the AVCodecID for the given codec tag tag.
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1585
 * If no codec id is found returns AV_CODEC_ID_NONE.
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1586
 *
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1587
 * @param tags list of supported codec_id-codec_tag pairs, as stored
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1588
 * in AVInputFormat.codec_tag and AVOutputFormat.codec_tag
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1589
 */
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1590
enum AVCodecID av_codec_get_id(const struct AVCodecTag * const *tags, unsigned int tag);
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1591
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1592
/**
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1593
 * Get the codec tag for the given codec id id.
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1594
 * If no codec tag is found returns 0.
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1595
 *
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1596
 * @param tags list of supported codec_id-codec_tag pairs, as stored
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1597
 * in AVInputFormat.codec_tag and AVOutputFormat.codec_tag
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1598
 */
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1599
unsigned int av_codec_get_tag(const struct AVCodecTag * const *tags, enum AVCodecID id);
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1600
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1601
int av_find_default_stream_index(AVFormatContext *s);
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1602
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1603
/**
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1604
 * Get the index for a specific timestamp.
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1605
 * @param flags if AVSEEK_FLAG_BACKWARD then the returned index will correspond
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1606
 *                 to the timestamp which is <= the requested one, if backward
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1607
 *                 is 0, then it will be >=
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1608
 *              if AVSEEK_FLAG_ANY seek to any frame, only keyframes otherwise
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1609
 * @return < 0 if no such timestamp could be found
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1610
 */
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1611
int av_index_search_timestamp(AVStream *st, int64_t timestamp, int flags);
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1612
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1613
/**
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1614
 * Add an index entry into a sorted list. Update the entry if the list
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1615
 * already contains it.
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1616
 *
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1617
 * @param timestamp timestamp in the time base of the given stream
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1618
 */
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1619
int av_add_index_entry(AVStream *st, int64_t pos, int64_t timestamp,
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1620
                       int size, int distance, int flags);
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1621
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1622
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1623
/**
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1624
 * Split a URL string into components.
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1625
 *
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1626
 * The pointers to buffers for storing individual components may be null,
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1627
 * in order to ignore that component. Buffers for components not found are
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1628
 * set to empty strings. If the port is not found, it is set to a negative
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1629
 * value.
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1630
 *
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1631
 * @param proto the buffer for the protocol
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1632
 * @param proto_size the size of the proto buffer
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1633
 * @param authorization the buffer for the authorization
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1634
 * @param authorization_size the size of the authorization buffer
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1635
 * @param hostname the buffer for the host name
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1636
 * @param hostname_size the size of the hostname buffer
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1637
 * @param port_ptr a pointer to store the port number in
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1638
 * @param path the buffer for the path
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1639
 * @param path_size the size of the path buffer
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1640
 * @param url the URL to split
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1641
 */
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1642
void av_url_split(char *proto,         int proto_size,
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1643
                  char *authorization, int authorization_size,
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1644
                  char *hostname,      int hostname_size,
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1645
                  int *port_ptr,
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1646
                  char *path,          int path_size,
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1647
                  const char *url);
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1648
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1649
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1650
void av_dump_format(AVFormatContext *ic,
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1651
                    int index,
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1652
                    const char *url,
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1653
                    int is_output);
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1654
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1655
/**
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1656
 * Return in 'buf' the path with '%d' replaced by a number.
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1657
 *
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1658
 * Also handles the '%0nd' format where 'n' is the total number
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1659
 * of digits and '%%'.
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1660
 *
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1661
 * @param buf destination buffer
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1662
 * @param buf_size destination buffer size
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1663
 * @param path numbered sequence string
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1664
 * @param number frame number
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1665
 * @return 0 if OK, -1 on format error
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1666
 */
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1667
int av_get_frame_filename(char *buf, int buf_size,
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1668
                          const char *path, int number);
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1669
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1670
/**
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1671
 * Check whether filename actually is a numbered sequence generator.
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1672
 *
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1673
 * @param filename possible numbered sequence string
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1674
 * @return 1 if a valid numbered sequence string, 0 otherwise
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1675
 */
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1676
int av_filename_number_test(const char *filename);
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1677
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1678
/**
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1679
 * Generate an SDP for an RTP session.
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1680
 *
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1681
 * @param ac array of AVFormatContexts describing the RTP streams. If the
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1682
 *           array is composed by only one context, such context can contain
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1683
 *           multiple AVStreams (one AVStream per RTP stream). Otherwise,
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1684
 *           all the contexts in the array (an AVCodecContext per RTP stream)
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1685
 *           must contain only one AVStream.
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1686
 * @param n_files number of AVCodecContexts contained in ac
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1687
 * @param buf buffer where the SDP will be stored (must be allocated by
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1688
 *            the caller)
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1689
 * @param size the size of the buffer
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1690
 * @return 0 if OK, AVERROR_xxx on error
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1691
 */
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1692
int av_sdp_create(AVFormatContext *ac[], int n_files, char *buf, int size);
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1693
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1694
/**
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1695
 * Return a positive value if the given filename has one of the given
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1696
 * extensions, 0 otherwise.
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1697
 *
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1698
 * @param extensions a comma-separated list of filename extensions
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1699
 */
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1700
int av_match_ext(const char *filename, const char *extensions);
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1701
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1702
/**
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1703
 * Test if the given container can store a codec.
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1704
 *
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1705
 * @param std_compliance standards compliance level, one of FF_COMPLIANCE_*
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1706
 *
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1707
 * @return 1 if codec with ID codec_id can be stored in ofmt, 0 if it cannot.
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1708
 *         A negative number if this information is not available.
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1709
 */
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1710
int avformat_query_codec(AVOutputFormat *ofmt, enum AVCodecID codec_id, int std_compliance);
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1711
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1712
/**
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1713
 * @defgroup riff_fourcc RIFF FourCCs
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1714
 * @{
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1715
 * Get the tables mapping RIFF FourCCs to libavcodec AVCodecIDs. The tables are
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1716
 * meant to be passed to av_codec_get_id()/av_codec_get_tag() as in the
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1717
 * following code:
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1718
 * @code
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1719
 * uint32_t tag = MKTAG('H', '2', '6', '4');
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1720
 * const struct AVCodecTag *table[] = { avformat_get_riff_video_tags(), 0 };
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1721
 * enum AVCodecID id = av_codec_get_id(table, tag);
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1722
 * @endcode
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1723
 */
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1724
/**
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1725
 * @return the table mapping RIFF FourCCs for video to libavcodec AVCodecID.
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1726
 */
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1727
const struct AVCodecTag *avformat_get_riff_video_tags(void);
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1728
/**
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1729
 * @return the table mapping RIFF FourCCs for audio to AVCodecID.
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1730
 */
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1731
const struct AVCodecTag *avformat_get_riff_audio_tags(void);
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1732
/**
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1733
 * @}
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1734
 */
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1735
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1736
/**
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1737
 * @}
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1738
 */
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1739
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1740
#endif /* AVFORMAT_AVFORMAT_H */