misc/winutils/include/libavcodec/avcodec.h
author Wuzzy <Wuzzy2@mail.ru>
Sat, 28 Jul 2018 13:15:59 +0200
changeset 13567 8f9b84d6991d
parent 7813 7ac83d79b897
permissions -rw-r--r--
Fix DrawHLinesExplosions setting invalid map pixels if called at wrap world edge This caused an errror message after the game when using hammer or pickhammer at wrap world edge.
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 AVCODEC_AVCODEC_H
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
    22
#define AVCODEC_AVCODEC_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
 * external API header
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
    27
 */
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
#include <errno.h>
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
    30
#include "libavutil/samplefmt.h"
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
    31
#include "libavutil/avutil.h"
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
    32
#include "libavutil/cpu.h"
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
    33
#include "libavutil/dict.h"
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
    34
#include "libavutil/log.h"
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
    35
#include "libavutil/pixfmt.h"
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
    36
#include "libavutil/rational.h"
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
    37
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
    38
#include "libavcodec/version.h"
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
    39
/**
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
    40
 * @defgroup libavc Encoding/Decoding Library
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
    41
 * @{
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
    42
 *
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
    43
 * @defgroup lavc_decoding Decoding
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
    44
 * @{
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
    45
 * @}
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
    46
 *
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
    47
 * @defgroup lavc_encoding Encoding
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
    48
 * @{
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
    49
 * @}
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
 * @defgroup lavc_codec Codecs
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
    52
 * @{
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
    53
 * @defgroup lavc_codec_native Native Codecs
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
    54
 * @{
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
    55
 * @}
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
    56
 * @defgroup lavc_codec_wrappers External library wrappers
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
 * @}
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
    59
 * @defgroup lavc_codec_hwaccel Hardware Accelerators bridge
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
    60
 * @{
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
    61
 * @}
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
    62
 * @}
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
    63
 * @defgroup lavc_internal Internal
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
    64
 * @{
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
    65
 * @}
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
    66
 * @}
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
    67
 *
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
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
    70
/**
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
    71
 * @defgroup lavc_core Core functions/structures.
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
    72
 * @ingroup libavc
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
    73
 *
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
    74
 * Basic definitions, functions for querying libavcodec capabilities,
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
    75
 * allocating core structures, etc.
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
    76
 * @{
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
    77
 */
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
    78
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
    79
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
 * Identify the syntax and semantics of the bitstream.
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
    82
 * The principle is roughly:
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
    83
 * Two decoders with the same ID can decode the same streams.
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
    84
 * Two encoders with the same ID can encode compatible streams.
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
    85
 * There may be slight deviations from the principle due to implementation
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
    86
 * details.
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
    87
 *
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
    88
 * If you add a codec ID to this list, add it so that
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
    89
 * 1. no value of a existing codec ID changes (that would break ABI),
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
    90
 * 2. it is as close as possible to similar codecs.
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
    91
 *
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
    92
 * After adding new codec IDs, do not forget to add an entry to the codec
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
    93
 * descriptor list and bump libavcodec minor version.
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
    94
 */
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
    95
enum AVCodecID {
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
    96
    AV_CODEC_ID_NONE,
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
    97
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
    98
    /* video codecs */
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
    99
    AV_CODEC_ID_MPEG1VIDEO,
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   100
    AV_CODEC_ID_MPEG2VIDEO, ///< preferred ID for MPEG-1/2 video decoding
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   101
    AV_CODEC_ID_MPEG2VIDEO_XVMC,
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   102
    AV_CODEC_ID_H261,
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   103
    AV_CODEC_ID_H263,
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   104
    AV_CODEC_ID_RV10,
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   105
    AV_CODEC_ID_RV20,
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   106
    AV_CODEC_ID_MJPEG,
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   107
    AV_CODEC_ID_MJPEGB,
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   108
    AV_CODEC_ID_LJPEG,
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   109
    AV_CODEC_ID_SP5X,
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   110
    AV_CODEC_ID_JPEGLS,
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   111
    AV_CODEC_ID_MPEG4,
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   112
    AV_CODEC_ID_RAWVIDEO,
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   113
    AV_CODEC_ID_MSMPEG4V1,
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   114
    AV_CODEC_ID_MSMPEG4V2,
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   115
    AV_CODEC_ID_MSMPEG4V3,
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   116
    AV_CODEC_ID_WMV1,
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   117
    AV_CODEC_ID_WMV2,
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   118
    AV_CODEC_ID_H263P,
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   119
    AV_CODEC_ID_H263I,
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   120
    AV_CODEC_ID_FLV1,
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   121
    AV_CODEC_ID_SVQ1,
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   122
    AV_CODEC_ID_SVQ3,
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   123
    AV_CODEC_ID_DVVIDEO,
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   124
    AV_CODEC_ID_HUFFYUV,
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   125
    AV_CODEC_ID_CYUV,
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   126
    AV_CODEC_ID_H264,
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   127
    AV_CODEC_ID_INDEO3,
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   128
    AV_CODEC_ID_VP3,
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   129
    AV_CODEC_ID_THEORA,
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   130
    AV_CODEC_ID_ASV1,
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   131
    AV_CODEC_ID_ASV2,
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   132
    AV_CODEC_ID_FFV1,
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   133
    AV_CODEC_ID_4XM,
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   134
    AV_CODEC_ID_VCR1,
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   135
    AV_CODEC_ID_CLJR,
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   136
    AV_CODEC_ID_MDEC,
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   137
    AV_CODEC_ID_ROQ,
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   138
    AV_CODEC_ID_INTERPLAY_VIDEO,
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   139
    AV_CODEC_ID_XAN_WC3,
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   140
    AV_CODEC_ID_XAN_WC4,
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   141
    AV_CODEC_ID_RPZA,
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   142
    AV_CODEC_ID_CINEPAK,
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   143
    AV_CODEC_ID_WS_VQA,
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   144
    AV_CODEC_ID_MSRLE,
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   145
    AV_CODEC_ID_MSVIDEO1,
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   146
    AV_CODEC_ID_IDCIN,
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   147
    AV_CODEC_ID_8BPS,
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   148
    AV_CODEC_ID_SMC,
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   149
    AV_CODEC_ID_FLIC,
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   150
    AV_CODEC_ID_TRUEMOTION1,
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   151
    AV_CODEC_ID_VMDVIDEO,
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   152
    AV_CODEC_ID_MSZH,
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   153
    AV_CODEC_ID_ZLIB,
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   154
    AV_CODEC_ID_QTRLE,
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   155
    AV_CODEC_ID_SNOW,
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   156
    AV_CODEC_ID_TSCC,
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   157
    AV_CODEC_ID_ULTI,
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   158
    AV_CODEC_ID_QDRAW,
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   159
    AV_CODEC_ID_VIXL,
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   160
    AV_CODEC_ID_QPEG,
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   161
    AV_CODEC_ID_PNG,
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   162
    AV_CODEC_ID_PPM,
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   163
    AV_CODEC_ID_PBM,
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   164
    AV_CODEC_ID_PGM,
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   165
    AV_CODEC_ID_PGMYUV,
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   166
    AV_CODEC_ID_PAM,
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   167
    AV_CODEC_ID_FFVHUFF,
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   168
    AV_CODEC_ID_RV30,
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   169
    AV_CODEC_ID_RV40,
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   170
    AV_CODEC_ID_VC1,
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   171
    AV_CODEC_ID_WMV3,
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   172
    AV_CODEC_ID_LOCO,
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   173
    AV_CODEC_ID_WNV1,
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   174
    AV_CODEC_ID_AASC,
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   175
    AV_CODEC_ID_INDEO2,
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   176
    AV_CODEC_ID_FRAPS,
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   177
    AV_CODEC_ID_TRUEMOTION2,
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   178
    AV_CODEC_ID_BMP,
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   179
    AV_CODEC_ID_CSCD,
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   180
    AV_CODEC_ID_MMVIDEO,
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   181
    AV_CODEC_ID_ZMBV,
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   182
    AV_CODEC_ID_AVS,
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   183
    AV_CODEC_ID_SMACKVIDEO,
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   184
    AV_CODEC_ID_NUV,
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   185
    AV_CODEC_ID_KMVC,
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   186
    AV_CODEC_ID_FLASHSV,
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   187
    AV_CODEC_ID_CAVS,
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   188
    AV_CODEC_ID_JPEG2000,
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   189
    AV_CODEC_ID_VMNC,
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   190
    AV_CODEC_ID_VP5,
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   191
    AV_CODEC_ID_VP6,
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   192
    AV_CODEC_ID_VP6F,
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   193
    AV_CODEC_ID_TARGA,
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   194
    AV_CODEC_ID_DSICINVIDEO,
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   195
    AV_CODEC_ID_TIERTEXSEQVIDEO,
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   196
    AV_CODEC_ID_TIFF,
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   197
    AV_CODEC_ID_GIF,
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   198
    AV_CODEC_ID_DXA,
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   199
    AV_CODEC_ID_DNXHD,
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   200
    AV_CODEC_ID_THP,
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   201
    AV_CODEC_ID_SGI,
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   202
    AV_CODEC_ID_C93,
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   203
    AV_CODEC_ID_BETHSOFTVID,
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   204
    AV_CODEC_ID_PTX,
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   205
    AV_CODEC_ID_TXD,
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   206
    AV_CODEC_ID_VP6A,
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   207
    AV_CODEC_ID_AMV,
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   208
    AV_CODEC_ID_VB,
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   209
    AV_CODEC_ID_PCX,
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   210
    AV_CODEC_ID_SUNRAST,
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   211
    AV_CODEC_ID_INDEO4,
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   212
    AV_CODEC_ID_INDEO5,
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   213
    AV_CODEC_ID_MIMIC,
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   214
    AV_CODEC_ID_RL2,
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   215
    AV_CODEC_ID_ESCAPE124,
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   216
    AV_CODEC_ID_DIRAC,
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   217
    AV_CODEC_ID_BFI,
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   218
    AV_CODEC_ID_CMV,
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   219
    AV_CODEC_ID_MOTIONPIXELS,
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   220
    AV_CODEC_ID_TGV,
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   221
    AV_CODEC_ID_TGQ,
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   222
    AV_CODEC_ID_TQI,
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   223
    AV_CODEC_ID_AURA,
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   224
    AV_CODEC_ID_AURA2,
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   225
    AV_CODEC_ID_V210X,
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   226
    AV_CODEC_ID_TMV,
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   227
    AV_CODEC_ID_V210,
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   228
    AV_CODEC_ID_DPX,
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   229
    AV_CODEC_ID_MAD,
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   230
    AV_CODEC_ID_FRWU,
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   231
    AV_CODEC_ID_FLASHSV2,
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   232
    AV_CODEC_ID_CDGRAPHICS,
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   233
    AV_CODEC_ID_R210,
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   234
    AV_CODEC_ID_ANM,
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   235
    AV_CODEC_ID_BINKVIDEO,
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   236
    AV_CODEC_ID_IFF_ILBM,
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   237
    AV_CODEC_ID_IFF_BYTERUN1,
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   238
    AV_CODEC_ID_KGV1,
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   239
    AV_CODEC_ID_YOP,
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   240
    AV_CODEC_ID_VP8,
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   241
    AV_CODEC_ID_PICTOR,
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   242
    AV_CODEC_ID_ANSI,
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   243
    AV_CODEC_ID_A64_MULTI,
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   244
    AV_CODEC_ID_A64_MULTI5,
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   245
    AV_CODEC_ID_R10K,
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   246
    AV_CODEC_ID_MXPEG,
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   247
    AV_CODEC_ID_LAGARITH,
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   248
    AV_CODEC_ID_PRORES,
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   249
    AV_CODEC_ID_JV,
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   250
    AV_CODEC_ID_DFA,
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   251
    AV_CODEC_ID_WMV3IMAGE,
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   252
    AV_CODEC_ID_VC1IMAGE,
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   253
    AV_CODEC_ID_UTVIDEO,
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   254
    AV_CODEC_ID_BMV_VIDEO,
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   255
    AV_CODEC_ID_VBLE,
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   256
    AV_CODEC_ID_DXTORY,
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   257
    AV_CODEC_ID_V410,
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   258
    AV_CODEC_ID_XWD,
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   259
    AV_CODEC_ID_CDXL,
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   260
    AV_CODEC_ID_XBM,
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   261
    AV_CODEC_ID_ZEROCODEC,
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   262
    AV_CODEC_ID_MSS1,
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   263
    AV_CODEC_ID_MSA1,
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   264
    AV_CODEC_ID_TSCC2,
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   265
    AV_CODEC_ID_MTS2,
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   266
    AV_CODEC_ID_CLLC,
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   267
    AV_CODEC_ID_MSS2,
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   268
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   269
    /* various PCM "codecs" */
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   270
    AV_CODEC_ID_FIRST_AUDIO = 0x10000,     ///< A dummy id pointing at the start of audio codecs
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   271
    AV_CODEC_ID_PCM_S16LE = 0x10000,
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   272
    AV_CODEC_ID_PCM_S16BE,
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   273
    AV_CODEC_ID_PCM_U16LE,
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   274
    AV_CODEC_ID_PCM_U16BE,
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   275
    AV_CODEC_ID_PCM_S8,
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   276
    AV_CODEC_ID_PCM_U8,
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   277
    AV_CODEC_ID_PCM_MULAW,
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   278
    AV_CODEC_ID_PCM_ALAW,
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   279
    AV_CODEC_ID_PCM_S32LE,
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   280
    AV_CODEC_ID_PCM_S32BE,
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   281
    AV_CODEC_ID_PCM_U32LE,
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   282
    AV_CODEC_ID_PCM_U32BE,
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   283
    AV_CODEC_ID_PCM_S24LE,
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   284
    AV_CODEC_ID_PCM_S24BE,
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   285
    AV_CODEC_ID_PCM_U24LE,
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   286
    AV_CODEC_ID_PCM_U24BE,
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   287
    AV_CODEC_ID_PCM_S24DAUD,
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   288
    AV_CODEC_ID_PCM_ZORK,
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   289
    AV_CODEC_ID_PCM_S16LE_PLANAR,
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   290
    AV_CODEC_ID_PCM_DVD,
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   291
    AV_CODEC_ID_PCM_F32BE,
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   292
    AV_CODEC_ID_PCM_F32LE,
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   293
    AV_CODEC_ID_PCM_F64BE,
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   294
    AV_CODEC_ID_PCM_F64LE,
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   295
    AV_CODEC_ID_PCM_BLURAY,
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   296
    AV_CODEC_ID_PCM_LXF,
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   297
    AV_CODEC_ID_S302M,
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   298
    AV_CODEC_ID_PCM_S8_PLANAR,
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   299
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   300
    /* various ADPCM codecs */
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   301
    AV_CODEC_ID_ADPCM_IMA_QT = 0x11000,
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   302
    AV_CODEC_ID_ADPCM_IMA_WAV,
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   303
    AV_CODEC_ID_ADPCM_IMA_DK3,
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   304
    AV_CODEC_ID_ADPCM_IMA_DK4,
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   305
    AV_CODEC_ID_ADPCM_IMA_WS,
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   306
    AV_CODEC_ID_ADPCM_IMA_SMJPEG,
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   307
    AV_CODEC_ID_ADPCM_MS,
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   308
    AV_CODEC_ID_ADPCM_4XM,
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   309
    AV_CODEC_ID_ADPCM_XA,
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   310
    AV_CODEC_ID_ADPCM_ADX,
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   311
    AV_CODEC_ID_ADPCM_EA,
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   312
    AV_CODEC_ID_ADPCM_G726,
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   313
    AV_CODEC_ID_ADPCM_CT,
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   314
    AV_CODEC_ID_ADPCM_SWF,
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   315
    AV_CODEC_ID_ADPCM_YAMAHA,
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   316
    AV_CODEC_ID_ADPCM_SBPRO_4,
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   317
    AV_CODEC_ID_ADPCM_SBPRO_3,
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   318
    AV_CODEC_ID_ADPCM_SBPRO_2,
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   319
    AV_CODEC_ID_ADPCM_THP,
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   320
    AV_CODEC_ID_ADPCM_IMA_AMV,
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   321
    AV_CODEC_ID_ADPCM_EA_R1,
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   322
    AV_CODEC_ID_ADPCM_EA_R3,
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   323
    AV_CODEC_ID_ADPCM_EA_R2,
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   324
    AV_CODEC_ID_ADPCM_IMA_EA_SEAD,
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   325
    AV_CODEC_ID_ADPCM_IMA_EA_EACS,
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   326
    AV_CODEC_ID_ADPCM_EA_XAS,
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   327
    AV_CODEC_ID_ADPCM_EA_MAXIS_XA,
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   328
    AV_CODEC_ID_ADPCM_IMA_ISS,
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   329
    AV_CODEC_ID_ADPCM_G722,
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   330
    AV_CODEC_ID_ADPCM_IMA_APC,
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
    /* AMR */
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   333
    AV_CODEC_ID_AMR_NB = 0x12000,
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   334
    AV_CODEC_ID_AMR_WB,
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   335
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   336
    /* RealAudio codecs*/
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   337
    AV_CODEC_ID_RA_144 = 0x13000,
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   338
    AV_CODEC_ID_RA_288,
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   339
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   340
    /* various DPCM codecs */
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   341
    AV_CODEC_ID_ROQ_DPCM = 0x14000,
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   342
    AV_CODEC_ID_INTERPLAY_DPCM,
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   343
    AV_CODEC_ID_XAN_DPCM,
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   344
    AV_CODEC_ID_SOL_DPCM,
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   345
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   346
    /* audio codecs */
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   347
    AV_CODEC_ID_MP2 = 0x15000,
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   348
    AV_CODEC_ID_MP3, ///< preferred ID for decoding MPEG audio layer 1, 2 or 3
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   349
    AV_CODEC_ID_AAC,
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   350
    AV_CODEC_ID_AC3,
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   351
    AV_CODEC_ID_DTS,
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   352
    AV_CODEC_ID_VORBIS,
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   353
    AV_CODEC_ID_DVAUDIO,
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   354
    AV_CODEC_ID_WMAV1,
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   355
    AV_CODEC_ID_WMAV2,
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   356
    AV_CODEC_ID_MACE3,
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   357
    AV_CODEC_ID_MACE6,
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   358
    AV_CODEC_ID_VMDAUDIO,
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   359
    AV_CODEC_ID_FLAC,
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   360
    AV_CODEC_ID_MP3ADU,
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   361
    AV_CODEC_ID_MP3ON4,
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   362
    AV_CODEC_ID_SHORTEN,
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   363
    AV_CODEC_ID_ALAC,
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   364
    AV_CODEC_ID_WESTWOOD_SND1,
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   365
    AV_CODEC_ID_GSM, ///< as in Berlin toast format
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   366
    AV_CODEC_ID_QDM2,
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   367
    AV_CODEC_ID_COOK,
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   368
    AV_CODEC_ID_TRUESPEECH,
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   369
    AV_CODEC_ID_TTA,
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   370
    AV_CODEC_ID_SMACKAUDIO,
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   371
    AV_CODEC_ID_QCELP,
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   372
    AV_CODEC_ID_WAVPACK,
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   373
    AV_CODEC_ID_DSICINAUDIO,
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   374
    AV_CODEC_ID_IMC,
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   375
    AV_CODEC_ID_MUSEPACK7,
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   376
    AV_CODEC_ID_MLP,
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   377
    AV_CODEC_ID_GSM_MS, /* as found in WAV */
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   378
    AV_CODEC_ID_ATRAC3,
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   379
    AV_CODEC_ID_VOXWARE,
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   380
    AV_CODEC_ID_APE,
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   381
    AV_CODEC_ID_NELLYMOSER,
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   382
    AV_CODEC_ID_MUSEPACK8,
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   383
    AV_CODEC_ID_SPEEX,
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   384
    AV_CODEC_ID_WMAVOICE,
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   385
    AV_CODEC_ID_WMAPRO,
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   386
    AV_CODEC_ID_WMALOSSLESS,
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   387
    AV_CODEC_ID_ATRAC3P,
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   388
    AV_CODEC_ID_EAC3,
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   389
    AV_CODEC_ID_SIPR,
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   390
    AV_CODEC_ID_MP1,
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   391
    AV_CODEC_ID_TWINVQ,
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   392
    AV_CODEC_ID_TRUEHD,
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   393
    AV_CODEC_ID_MP4ALS,
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   394
    AV_CODEC_ID_ATRAC1,
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   395
    AV_CODEC_ID_BINKAUDIO_RDFT,
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   396
    AV_CODEC_ID_BINKAUDIO_DCT,
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   397
    AV_CODEC_ID_AAC_LATM,
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   398
    AV_CODEC_ID_QDMC,
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   399
    AV_CODEC_ID_CELT,
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   400
    AV_CODEC_ID_G723_1,
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   401
    AV_CODEC_ID_G729,
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   402
    AV_CODEC_ID_8SVX_EXP,
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   403
    AV_CODEC_ID_8SVX_FIB,
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   404
    AV_CODEC_ID_BMV_AUDIO,
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   405
    AV_CODEC_ID_RALF,
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   406
    AV_CODEC_ID_IAC,
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   407
    AV_CODEC_ID_ILBC,
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   408
    AV_CODEC_ID_OPUS,
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
    /* subtitle codecs */
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   411
    AV_CODEC_ID_FIRST_SUBTITLE = 0x17000,          ///< A dummy ID pointing at the start of subtitle codecs.
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   412
    AV_CODEC_ID_DVD_SUBTITLE = 0x17000,
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   413
    AV_CODEC_ID_DVB_SUBTITLE,
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   414
    AV_CODEC_ID_TEXT,  ///< raw UTF-8 text
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   415
    AV_CODEC_ID_XSUB,
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   416
    AV_CODEC_ID_SSA,
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   417
    AV_CODEC_ID_MOV_TEXT,
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   418
    AV_CODEC_ID_HDMV_PGS_SUBTITLE,
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   419
    AV_CODEC_ID_DVB_TELETEXT,
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   420
    AV_CODEC_ID_SRT,
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   421
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   422
    /* other specific kind of codecs (generally used for attachments) */
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   423
    AV_CODEC_ID_FIRST_UNKNOWN = 0x18000,           ///< A dummy ID pointing at the start of various fake codecs.
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   424
    AV_CODEC_ID_TTF = 0x18000,
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
    AV_CODEC_ID_PROBE = 0x19000, ///< codec_id is not known (like AV_CODEC_ID_NONE) but lavf should attempt to identify it
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
    AV_CODEC_ID_MPEG2TS = 0x20000, /**< _FAKE_ codec to indicate a raw MPEG-2 TS
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   429
                                * stream (only used by libavformat) */
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   430
    AV_CODEC_ID_MPEG4SYSTEMS = 0x20001, /**< _FAKE_ codec to indicate a MPEG-4 Systems
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   431
                                * stream (only used by libavformat) */
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   432
    AV_CODEC_ID_FFMETADATA = 0x21000,   ///< Dummy codec for streams containing only metadata information.
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
#if FF_API_CODEC_ID
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   435
#include "old_codec_ids.h"
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   436
#endif
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
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   439
#if FF_API_CODEC_ID
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   440
#define CodecID AVCodecID
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   441
#endif
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
/**
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   444
 * This struct describes the properties of a single codec described by an
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   445
 * AVCodecID.
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   446
 * @see avcodec_get_descriptor()
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
typedef struct AVCodecDescriptor {
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   449
    enum AVCodecID     id;
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   450
    enum AVMediaType type;
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   451
    /**
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   452
     * Name of the codec described by this descriptor. It is non-empty and
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   453
     * unique for each codec descriptor. It should contain alphanumeric
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   454
     * characters and '_' only.
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
    const char      *name;
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   457
    /**
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   458
     * A more descriptive name for this codec. May be NULL.
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
    const char *long_name;
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
     * Codec properties, a combination of AV_CODEC_PROP_* flags.
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   463
     */
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   464
    int             props;
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   465
} AVCodecDescriptor;
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
/**
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   468
 * Codec uses only intra compression.
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   469
 * Video codecs only.
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
#define AV_CODEC_PROP_INTRA_ONLY    (1 << 0)
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
 * Codec supports lossy compression. Audio and video codecs only.
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   474
 * @note a codec may support both lossy and lossless
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   475
 * compression modes
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   476
 */
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   477
#define AV_CODEC_PROP_LOSSY         (1 << 1)
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
 * Codec supports lossless compression. Audio and video codecs only.
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   480
 */
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   481
#define AV_CODEC_PROP_LOSSLESS      (1 << 2)
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
#if FF_API_OLD_DECODE_AUDIO
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   484
/* in bytes */
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   485
#define AVCODEC_MAX_AUDIO_FRAME_SIZE 192000 // 1 second of 48khz 32bit audio
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   486
#endif
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
/**
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   489
 * @ingroup lavc_decoding
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   490
 * Required number of additionally allocated bytes at the end of the input bitstream for decoding.
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   491
 * This is mainly needed because some optimized bitstream readers read
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   492
 * 32 or 64 bit at once and could read over the end.<br>
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   493
 * Note: If the first 23 bits of the additional bytes are not 0, then damaged
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   494
 * MPEG bitstreams could cause overread and segfault.
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   495
 */
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   496
#define FF_INPUT_BUFFER_PADDING_SIZE 8
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   497
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
 * @ingroup lavc_encoding
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   500
 * minimum encoding buffer size
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   501
 * Used to avoid some checks during header writing.
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   502
 */
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   503
#define FF_MIN_BUFFER_SIZE 16384
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   504
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
 * @ingroup lavc_encoding
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   508
 * motion estimation type.
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   509
 */
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   510
enum Motion_Est_ID {
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   511
    ME_ZERO = 1,    ///< no search, that is use 0,0 vector whenever one is needed
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   512
    ME_FULL,
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   513
    ME_LOG,
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   514
    ME_PHODS,
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   515
    ME_EPZS,        ///< enhanced predictive zonal search
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   516
    ME_X1,          ///< reserved for experiments
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   517
    ME_HEX,         ///< hexagon based search
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   518
    ME_UMH,         ///< uneven multi-hexagon search
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   519
    ME_ITER,        ///< iterative search
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   520
    ME_TESA,        ///< transformed exhaustive search algorithm
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   521
};
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
 * @ingroup lavc_decoding
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   525
 */
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   526
enum AVDiscard{
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   527
    /* We leave some space between them for extensions (drop some
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   528
     * keyframes for intra-only or drop just some bidir frames). */
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   529
    AVDISCARD_NONE    =-16, ///< discard nothing
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   530
    AVDISCARD_DEFAULT =  0, ///< discard useless packets like 0 size packets in avi
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   531
    AVDISCARD_NONREF  =  8, ///< discard all non reference
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   532
    AVDISCARD_BIDIR   = 16, ///< discard all bidirectional frames
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   533
    AVDISCARD_NONKEY  = 32, ///< discard all frames except keyframes
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   534
    AVDISCARD_ALL     = 48, ///< discard all
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   535
};
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   536
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   537
enum AVColorPrimaries{
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   538
    AVCOL_PRI_BT709       = 1, ///< also ITU-R BT1361 / IEC 61966-2-4 / SMPTE RP177 Annex B
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   539
    AVCOL_PRI_UNSPECIFIED = 2,
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   540
    AVCOL_PRI_BT470M      = 4,
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   541
    AVCOL_PRI_BT470BG     = 5, ///< also ITU-R BT601-6 625 / ITU-R BT1358 625 / ITU-R BT1700 625 PAL & SECAM
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   542
    AVCOL_PRI_SMPTE170M   = 6, ///< also ITU-R BT601-6 525 / ITU-R BT1358 525 / ITU-R BT1700 NTSC
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   543
    AVCOL_PRI_SMPTE240M   = 7, ///< functionally identical to above
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   544
    AVCOL_PRI_FILM        = 8,
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   545
    AVCOL_PRI_NB             , ///< Not part of ABI
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
enum AVColorTransferCharacteristic{
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   549
    AVCOL_TRC_BT709       = 1, ///< also ITU-R BT1361
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   550
    AVCOL_TRC_UNSPECIFIED = 2,
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   551
    AVCOL_TRC_GAMMA22     = 4, ///< also ITU-R BT470M / ITU-R BT1700 625 PAL & SECAM
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   552
    AVCOL_TRC_GAMMA28     = 5, ///< also ITU-R BT470BG
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   553
    AVCOL_TRC_SMPTE240M   = 7,
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   554
    AVCOL_TRC_NB             , ///< Not part of ABI
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   555
};
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   556
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   557
enum AVColorSpace{
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   558
    AVCOL_SPC_RGB         = 0,
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   559
    AVCOL_SPC_BT709       = 1, ///< also ITU-R BT1361 / IEC 61966-2-4 xvYCC709 / SMPTE RP177 Annex B
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   560
    AVCOL_SPC_UNSPECIFIED = 2,
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   561
    AVCOL_SPC_FCC         = 4,
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   562
    AVCOL_SPC_BT470BG     = 5, ///< also ITU-R BT601-6 625 / ITU-R BT1358 625 / ITU-R BT1700 625 PAL & SECAM / IEC 61966-2-4 xvYCC601
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   563
    AVCOL_SPC_SMPTE170M   = 6, ///< also ITU-R BT601-6 525 / ITU-R BT1358 525 / ITU-R BT1700 NTSC / functionally identical to above
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   564
    AVCOL_SPC_SMPTE240M   = 7,
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   565
    AVCOL_SPC_YCOCG       = 8, ///< Used by Dirac / VC-2 and H.264 FRext, see ITU-T SG16
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   566
    AVCOL_SPC_NB             , ///< Not part of ABI
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   567
};
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   568
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   569
enum AVColorRange{
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   570
    AVCOL_RANGE_UNSPECIFIED = 0,
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   571
    AVCOL_RANGE_MPEG        = 1, ///< the normal 219*2^(n-8) "MPEG" YUV ranges
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   572
    AVCOL_RANGE_JPEG        = 2, ///< the normal     2^n-1   "JPEG" YUV ranges
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   573
    AVCOL_RANGE_NB             , ///< Not part of ABI
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   574
};
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   575
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   576
/**
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   577
 *  X   X      3 4 X      X are luma samples,
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   578
 *             1 2        1-6 are possible chroma positions
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   579
 *  X   X      5 6 X      0 is undefined/unknown position
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   580
 */
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   581
enum AVChromaLocation{
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   582
    AVCHROMA_LOC_UNSPECIFIED = 0,
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   583
    AVCHROMA_LOC_LEFT        = 1, ///< mpeg2/4, h264 default
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   584
    AVCHROMA_LOC_CENTER      = 2, ///< mpeg1, jpeg, h263
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   585
    AVCHROMA_LOC_TOPLEFT     = 3, ///< DV
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   586
    AVCHROMA_LOC_TOP         = 4,
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   587
    AVCHROMA_LOC_BOTTOMLEFT  = 5,
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   588
    AVCHROMA_LOC_BOTTOM      = 6,
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   589
    AVCHROMA_LOC_NB             , ///< Not part of ABI
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   590
};
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   591
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   592
enum AVAudioServiceType {
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   593
    AV_AUDIO_SERVICE_TYPE_MAIN              = 0,
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   594
    AV_AUDIO_SERVICE_TYPE_EFFECTS           = 1,
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   595
    AV_AUDIO_SERVICE_TYPE_VISUALLY_IMPAIRED = 2,
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   596
    AV_AUDIO_SERVICE_TYPE_HEARING_IMPAIRED  = 3,
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   597
    AV_AUDIO_SERVICE_TYPE_DIALOGUE          = 4,
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   598
    AV_AUDIO_SERVICE_TYPE_COMMENTARY        = 5,
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   599
    AV_AUDIO_SERVICE_TYPE_EMERGENCY         = 6,
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   600
    AV_AUDIO_SERVICE_TYPE_VOICE_OVER        = 7,
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   601
    AV_AUDIO_SERVICE_TYPE_KARAOKE           = 8,
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   602
    AV_AUDIO_SERVICE_TYPE_NB                   , ///< Not part of ABI
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
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
 * @ingroup lavc_encoding
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   607
 */
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   608
typedef struct RcOverride{
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   609
    int start_frame;
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   610
    int end_frame;
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   611
    int qscale; // If this is 0 then quality_factor will be used instead.
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   612
    float quality_factor;
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   613
} RcOverride;
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   614
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   615
#define FF_MAX_B_FRAMES 16
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   616
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   617
/* encoding support
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   618
   These flags can be passed in AVCodecContext.flags before initialization.
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   619
   Note: Not everything is supported yet.
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   620
*/
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
#define CODEC_FLAG_QSCALE 0x0002  ///< Use fixed qscale.
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   623
#define CODEC_FLAG_4MV    0x0004  ///< 4 MV per MB allowed / advanced prediction for H.263.
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   624
#define CODEC_FLAG_QPEL   0x0010  ///< Use qpel MC.
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   625
#define CODEC_FLAG_GMC    0x0020  ///< Use GMC.
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   626
#define CODEC_FLAG_MV0    0x0040  ///< Always try a MB with MV=<0,0>.
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   627
/**
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   628
 * The parent program guarantees that the input for B-frames containing
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   629
 * streams is not written to for at least s->max_b_frames+1 frames, if
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   630
 * this is not set the input will be copied.
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
#define CODEC_FLAG_INPUT_PRESERVED 0x0100
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   633
#define CODEC_FLAG_PASS1           0x0200   ///< Use internal 2pass ratecontrol in first pass mode.
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   634
#define CODEC_FLAG_PASS2           0x0400   ///< Use internal 2pass ratecontrol in second pass mode.
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   635
#define CODEC_FLAG_GRAY            0x2000   ///< Only decode/encode grayscale.
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   636
#define CODEC_FLAG_EMU_EDGE        0x4000   ///< Don't draw edges.
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   637
#define CODEC_FLAG_PSNR            0x8000   ///< error[?] variables will be set during encoding.
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   638
#define CODEC_FLAG_TRUNCATED       0x00010000 /** Input bitstream might be truncated at a random
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   639
                                                  location instead of only at frame boundaries. */
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   640
#define CODEC_FLAG_NORMALIZE_AQP  0x00020000 ///< Normalize adaptive quantization.
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   641
#define CODEC_FLAG_INTERLACED_DCT 0x00040000 ///< Use interlaced DCT.
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   642
#define CODEC_FLAG_LOW_DELAY      0x00080000 ///< Force low delay.
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   643
#define CODEC_FLAG_GLOBAL_HEADER  0x00400000 ///< Place global headers in extradata instead of every keyframe.
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   644
#define CODEC_FLAG_BITEXACT       0x00800000 ///< Use only bitexact stuff (except (I)DCT).
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   645
/* Fx : Flag for h263+ extra options */
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   646
#define CODEC_FLAG_AC_PRED        0x01000000 ///< H.263 advanced intra coding / MPEG-4 AC prediction
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   647
#define CODEC_FLAG_LOOP_FILTER    0x00000800 ///< loop filter
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   648
#define CODEC_FLAG_INTERLACED_ME  0x20000000 ///< interlaced motion estimation
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   649
#define CODEC_FLAG_CLOSED_GOP     0x80000000
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   650
#define CODEC_FLAG2_FAST          0x00000001 ///< Allow non spec compliant speedup tricks.
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   651
#define CODEC_FLAG2_NO_OUTPUT     0x00000004 ///< Skip bitstream encoding.
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   652
#define CODEC_FLAG2_LOCAL_HEADER  0x00000008 ///< Place global headers at every keyframe instead of in extradata.
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   653
#if FF_API_MPV_GLOBAL_OPTS
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   654
#define CODEC_FLAG_CBP_RD         0x04000000 ///< Use rate distortion optimization for cbp.
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   655
#define CODEC_FLAG_QP_RD          0x08000000 ///< Use rate distortion optimization for qp selectioon.
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   656
#define CODEC_FLAG2_STRICT_GOP    0x00000002 ///< Strictly enforce GOP size.
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   657
#define CODEC_FLAG2_SKIP_RD       0x00004000 ///< RD optimal MB level residual skipping
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   658
#endif
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   659
#define CODEC_FLAG2_CHUNKS        0x00008000 ///< Input bitstream might be truncated at a packet boundaries instead of only at frame boundaries.
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   660
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   661
/* Unsupported options :
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   662
 *              Syntax Arithmetic coding (SAC)
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   663
 *              Reference Picture Selection
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   664
 *              Independent Segment Decoding */
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   665
/* /Fx */
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   666
/* codec capabilities */
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
#define CODEC_CAP_DRAW_HORIZ_BAND 0x0001 ///< Decoder can use draw_horiz_band callback.
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
 * Codec uses get_buffer() for allocating buffers and supports custom allocators.
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   671
 * If not set, it might not use get_buffer() at all or use operations that
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   672
 * assume the buffer was allocated by avcodec_default_get_buffer.
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   673
 */
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   674
#define CODEC_CAP_DR1             0x0002
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   675
#define CODEC_CAP_TRUNCATED       0x0008
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   676
/* Codec can export data for HW decoding (XvMC). */
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   677
#define CODEC_CAP_HWACCEL         0x0010
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
 * Encoder or decoder requires flushing with NULL input at the end in order to
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   680
 * give the complete and correct output.
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   681
 *
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   682
 * NOTE: If this flag is not set, the codec is guaranteed to never be fed with
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   683
 *       with NULL data. The user can still send NULL data to the public encode
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   684
 *       or decode function, but libavcodec will not pass it along to the codec
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   685
 *       unless this flag is set.
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   686
 *
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   687
 * Decoders:
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   688
 * The decoder has a non-zero delay and needs to be fed with avpkt->data=NULL,
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   689
 * avpkt->size=0 at the end to get the delayed data until the decoder no longer
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   690
 * returns frames.
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
 * Encoders:
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   693
 * The encoder needs to be fed with NULL data at the end of encoding until the
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   694
 * encoder no longer returns data.
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   695
 *
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   696
 * NOTE: For encoders implementing the AVCodec.encode2() function, setting this
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   697
 *       flag also means that the encoder must set the pts and duration for
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   698
 *       each output packet. If this flag is not set, the pts and duration will
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   699
 *       be determined by libavcodec from the input frame.
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
#define CODEC_CAP_DELAY           0x0020
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   702
/**
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   703
 * Codec can be fed a final frame with a smaller size.
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   704
 * This can be used to prevent truncation of the last audio samples.
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
#define CODEC_CAP_SMALL_LAST_FRAME 0x0040
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   707
/**
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   708
 * Codec can export data for HW decoding (VDPAU).
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   709
 */
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   710
#define CODEC_CAP_HWACCEL_VDPAU    0x0080
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
 * Codec can output multiple frames per AVPacket
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   713
 * Normally demuxers return one frame at a time, demuxers which do not do
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   714
 * are connected to a parser to split what they return into proper frames.
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   715
 * This flag is reserved to the very rare category of codecs which have a
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   716
 * bitstream that cannot be split into frames without timeconsuming
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   717
 * operations like full decoding. Demuxers carring such bitstreams thus
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   718
 * may return multiple frames in a packet. This has many disadvantages like
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   719
 * prohibiting stream copy in many cases thus it should only be considered
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   720
 * as a last resort.
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   721
 */
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   722
#define CODEC_CAP_SUBFRAMES        0x0100
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   723
/**
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   724
 * Codec is experimental and is thus avoided in favor of non experimental
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   725
 * encoders
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   726
 */
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   727
#define CODEC_CAP_EXPERIMENTAL     0x0200
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
 * Codec should fill in channel configuration and samplerate instead of container
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
#define CODEC_CAP_CHANNEL_CONF     0x0400
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   732
/**
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   733
 * Codec is able to deal with negative linesizes
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   734
 */
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   735
#define CODEC_CAP_NEG_LINESIZES    0x0800
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   736
/**
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   737
 * Codec supports frame-level multithreading.
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   738
 */
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   739
#define CODEC_CAP_FRAME_THREADS    0x1000
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   740
/**
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   741
 * Codec supports slice-based (or partition-based) multithreading.
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   742
 */
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   743
#define CODEC_CAP_SLICE_THREADS    0x2000
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   744
/**
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   745
 * Codec supports changed parameters at any point.
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   746
 */
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   747
#define CODEC_CAP_PARAM_CHANGE     0x4000
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   748
/**
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   749
 * Codec supports avctx->thread_count == 0 (auto).
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   750
 */
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   751
#define CODEC_CAP_AUTO_THREADS     0x8000
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   752
/**
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   753
 * Audio encoder supports receiving a different number of samples in each call.
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
#define CODEC_CAP_VARIABLE_FRAME_SIZE 0x10000
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
//The following defines may change, don't expect compatibility if you use them.
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   758
#define MB_TYPE_INTRA4x4   0x0001
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   759
#define MB_TYPE_INTRA16x16 0x0002 //FIXME H.264-specific
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   760
#define MB_TYPE_INTRA_PCM  0x0004 //FIXME H.264-specific
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   761
#define MB_TYPE_16x16      0x0008
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   762
#define MB_TYPE_16x8       0x0010
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   763
#define MB_TYPE_8x16       0x0020
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   764
#define MB_TYPE_8x8        0x0040
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   765
#define MB_TYPE_INTERLACED 0x0080
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   766
#define MB_TYPE_DIRECT2    0x0100 //FIXME
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   767
#define MB_TYPE_ACPRED     0x0200
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   768
#define MB_TYPE_GMC        0x0400
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   769
#define MB_TYPE_SKIP       0x0800
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   770
#define MB_TYPE_P0L0       0x1000
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   771
#define MB_TYPE_P1L0       0x2000
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   772
#define MB_TYPE_P0L1       0x4000
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   773
#define MB_TYPE_P1L1       0x8000
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   774
#define MB_TYPE_L0         (MB_TYPE_P0L0 | MB_TYPE_P1L0)
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   775
#define MB_TYPE_L1         (MB_TYPE_P0L1 | MB_TYPE_P1L1)
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   776
#define MB_TYPE_L0L1       (MB_TYPE_L0   | MB_TYPE_L1)
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   777
#define MB_TYPE_QUANT      0x00010000
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   778
#define MB_TYPE_CBP        0x00020000
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   779
//Note bits 24-31 are reserved for codec specific use (h264 ref0, mpeg1 0mv, ...)
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   780
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   781
/**
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   782
 * Pan Scan area.
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   783
 * This specifies the area which should be displayed.
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   784
 * Note there may be multiple such areas for one frame.
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
typedef struct AVPanScan{
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   787
    /**
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   788
     * id
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   789
     * - encoding: Set by user.
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   790
     * - decoding: Set by libavcodec.
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   791
     */
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
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   794
    /**
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   795
     * width and height in 1/16 pel
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   796
     * - encoding: Set by user.
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   797
     * - decoding: Set by libavcodec.
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   798
     */
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   799
    int width;
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   800
    int height;
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   801
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
     * position of the top left corner in 1/16 pel for up to 3 fields/frames
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   804
     * - encoding: Set by user.
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   805
     * - decoding: Set by libavcodec.
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   806
     */
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   807
    int16_t position[3][2];
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   808
}AVPanScan;
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
#define FF_QSCALE_TYPE_MPEG1 0
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   811
#define FF_QSCALE_TYPE_MPEG2 1
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   812
#define FF_QSCALE_TYPE_H264  2
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   813
#define FF_QSCALE_TYPE_VP56  3
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   814
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   815
#define FF_BUFFER_TYPE_INTERNAL 1
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   816
#define FF_BUFFER_TYPE_USER     2 ///< direct rendering buffers (image is (de)allocated by user)
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   817
#define FF_BUFFER_TYPE_SHARED   4 ///< Buffer from somewhere else; don't deallocate image (data/base), all other tables are not shared.
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   818
#define FF_BUFFER_TYPE_COPY     8 ///< Just a (modified) copy of some other buffer, don't deallocate anything.
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
#define FF_BUFFER_HINTS_VALID    0x01 // Buffer hints value is meaningful (if 0 ignore).
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   821
#define FF_BUFFER_HINTS_READABLE 0x02 // Codec will read from buffer.
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   822
#define FF_BUFFER_HINTS_PRESERVE 0x04 // User must not alter buffer content.
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   823
#define FF_BUFFER_HINTS_REUSABLE 0x08 // Codec will reuse the buffer (update).
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
 * @defgroup lavc_packet AVPacket
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
 * Types and functions for working with AVPacket.
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   829
 * @{
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
enum AVPacketSideDataType {
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   832
    AV_PKT_DATA_PALETTE,
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   833
    AV_PKT_DATA_NEW_EXTRADATA,
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
    /**
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   836
     * An AV_PKT_DATA_PARAM_CHANGE side data packet is laid out as follows:
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   837
     * @code
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   838
     * u32le param_flags
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   839
     * if (param_flags & AV_SIDE_DATA_PARAM_CHANGE_CHANNEL_COUNT)
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   840
     *     s32le channel_count
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   841
     * if (param_flags & AV_SIDE_DATA_PARAM_CHANGE_CHANNEL_LAYOUT)
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   842
     *     u64le channel_layout
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   843
     * if (param_flags & AV_SIDE_DATA_PARAM_CHANGE_SAMPLE_RATE)
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   844
     *     s32le sample_rate
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   845
     * if (param_flags & AV_SIDE_DATA_PARAM_CHANGE_DIMENSIONS)
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   846
     *     s32le width
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   847
     *     s32le height
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   848
     * @endcode
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   849
     */
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   850
    AV_PKT_DATA_PARAM_CHANGE,
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   851
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
     * An AV_PKT_DATA_H263_MB_INFO side data packet contains a number of
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   854
     * structures with info about macroblocks relevant to splitting the
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   855
     * packet into smaller packets on macroblock edges (e.g. as for RFC 2190).
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   856
     * That is, it does not necessarily contain info about all macroblocks,
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   857
     * as long as the distance between macroblocks in the info is smaller
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   858
     * than the target payload size.
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   859
     * Each MB info structure is 12 bytes, and is laid out as follows:
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   860
     * @code
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   861
     * u32le bit offset from the start of the packet
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   862
     * u8    current quantizer at the start of the macroblock
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   863
     * u8    GOB number
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   864
     * u16le macroblock address within the GOB
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   865
     * u8    horizontal MV predictor
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   866
     * u8    vertical MV predictor
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   867
     * u8    horizontal MV predictor for block number 3
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   868
     * u8    vertical MV predictor for block number 3
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   869
     * @endcode
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
    AV_PKT_DATA_H263_MB_INFO,
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   872
};
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   873
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   874
typedef struct AVPacket {
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   875
    /**
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   876
     * Presentation timestamp in AVStream->time_base units; the time at which
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   877
     * the decompressed packet will be presented to the user.
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   878
     * Can be AV_NOPTS_VALUE if it is not stored in the file.
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   879
     * pts MUST be larger or equal to dts as presentation cannot happen before
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   880
     * decompression, unless one wants to view hex dumps. Some formats misuse
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   881
     * the terms dts and pts/cts to mean something different. Such timestamps
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   882
     * must be converted to true pts/dts before they are stored in AVPacket.
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   883
     */
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   884
    int64_t pts;
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
     * Decompression timestamp in AVStream->time_base units; the time at which
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   887
     * the packet is decompressed.
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   888
     * Can be AV_NOPTS_VALUE if it is not stored in the file.
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
    int64_t dts;
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   891
    uint8_t *data;
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   892
    int   size;
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   893
    int   stream_index;
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
     * A combination of AV_PKT_FLAG values
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   896
     */
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   897
    int   flags;
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   898
    /**
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   899
     * Additional packet data that can be provided by the container.
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   900
     * Packet can contain several types of side information.
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   901
     */
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   902
    struct {
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   903
        uint8_t *data;
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   904
        int      size;
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   905
        enum AVPacketSideDataType type;
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   906
    } *side_data;
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   907
    int side_data_elems;
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
    /**
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   910
     * Duration of this packet in AVStream->time_base units, 0 if unknown.
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   911
     * Equals next_pts - this_pts in presentation order.
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   912
     */
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   913
    int   duration;
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   914
    void  (*destruct)(struct AVPacket *);
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   915
    void  *priv;
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   916
    int64_t pos;                            ///< byte position in stream, -1 if unknown
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   917
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   918
    /**
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   919
     * Time difference in AVStream->time_base units from the pts of this
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   920
     * packet to the point at which the output from the decoder has converged
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   921
     * independent from the availability of previous frames. That is, the
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   922
     * frames are virtually identical no matter if decoding started from
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   923
     * the very first frame or from this keyframe.
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   924
     * Is AV_NOPTS_VALUE if unknown.
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   925
     * This field is not the display duration of the current packet.
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   926
     * This field has no meaning if the packet does not have AV_PKT_FLAG_KEY
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   927
     * set.
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
     * The purpose of this field is to allow seeking in streams that have no
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   930
     * keyframes in the conventional sense. It corresponds to the
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   931
     * recovery point SEI in H.264 and match_time_delta in NUT. It is also
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   932
     * essential for some types of subtitle streams to ensure that all
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   933
     * subtitles are correctly displayed after seeking.
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
    int64_t convergence_duration;
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   936
} AVPacket;
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   937
#define AV_PKT_FLAG_KEY     0x0001 ///< The packet contains a keyframe
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   938
#define AV_PKT_FLAG_CORRUPT 0x0002 ///< The packet content is corrupted
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   939
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   940
enum AVSideDataParamChangeFlags {
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   941
    AV_SIDE_DATA_PARAM_CHANGE_CHANNEL_COUNT  = 0x0001,
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   942
    AV_SIDE_DATA_PARAM_CHANGE_CHANNEL_LAYOUT = 0x0002,
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   943
    AV_SIDE_DATA_PARAM_CHANGE_SAMPLE_RATE    = 0x0004,
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   944
    AV_SIDE_DATA_PARAM_CHANGE_DIMENSIONS     = 0x0008,
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   945
};
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   946
/**
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   947
 * @}
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   948
 */
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   949
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
 * Audio Video Frame.
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   952
 * New fields can be added to the end of AVFRAME with minor version
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   953
 * bumps. Removal, reordering and changes to existing fields require
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   954
 * a major version bump.
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   955
 * sizeof(AVFrame) must not be used outside libav*.
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
typedef struct AVFrame {
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   958
#define AV_NUM_DATA_POINTERS 8
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   959
    /**
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   960
     * pointer to the picture/channel planes.
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   961
     * This might be different from the first allocated byte
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   962
     * - encoding: Set by user
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   963
     * - decoding: set by AVCodecContext.get_buffer()
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
    uint8_t *data[AV_NUM_DATA_POINTERS];
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   966
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   967
    /**
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   968
     * Size, in bytes, of the data for each picture/channel plane.
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   969
     *
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   970
     * For audio, only linesize[0] may be set. For planar audio, each channel
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   971
     * plane must be the same size.
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
     * - encoding: Set by user
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   974
     * - decoding: set by AVCodecContext.get_buffer()
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 linesize[AV_NUM_DATA_POINTERS];
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
     * pointers to the data planes/channels.
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   980
     *
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   981
     * For video, this should simply point to data[].
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   982
     *
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   983
     * For planar audio, each channel has a separate data pointer, and
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   984
     * linesize[0] contains the size of each channel buffer.
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   985
     * For packed audio, there is just one data pointer, and linesize[0]
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   986
     * contains the total size of the buffer for all channels.
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   987
     *
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   988
     * Note: Both data and extended_data will always be set by get_buffer(),
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   989
     * but for planar audio with more channels that can fit in data,
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   990
     * extended_data must be used by the decoder in order to access all
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   991
     * channels.
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   992
     *
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   993
     * encoding: set by user
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   994
     * decoding: set by AVCodecContext.get_buffer()
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   995
     */
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   996
    uint8_t **extended_data;
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
    /**
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   999
     * width and height of the video frame
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1000
     * - encoding: unused
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1001
     * - decoding: Read by user.
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
    int width, height;
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1004
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1005
    /**
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1006
     * number of audio samples (per channel) described by this frame
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1007
     * - encoding: Set by user
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1008
     * - decoding: Set by libavcodec
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
    int nb_samples;
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1011
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1012
    /**
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1013
     * format of the frame, -1 if unknown or unset
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1014
     * Values correspond to enum AVPixelFormat for video frames,
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1015
     * enum AVSampleFormat for audio)
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1016
     * - encoding: unused
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1017
     * - decoding: Read by user.
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1018
     */
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1019
    int format;
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
     * 1 -> keyframe, 0-> not
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1023
     * - encoding: Set by libavcodec.
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1024
     * - decoding: Set by libavcodec.
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1025
     */
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1026
    int key_frame;
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1027
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1028
    /**
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1029
     * Picture type of the frame, see ?_TYPE below.
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1030
     * - encoding: Set by libavcodec. for coded_picture (and set by user for input).
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1031
     * - decoding: Set by libavcodec.
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1032
     */
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1033
    enum AVPictureType pict_type;
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
    /**
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1036
     * pointer to the first allocated byte of the picture. Can be used in get_buffer/release_buffer.
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1037
     * This isn't used by libavcodec unless the default get/release_buffer() is used.
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1038
     * - encoding:
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1039
     * - decoding:
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
    uint8_t *base[AV_NUM_DATA_POINTERS];
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1042
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1043
    /**
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1044
     * sample aspect ratio for the video frame, 0/1 if unknown/unspecified
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1045
     * - encoding: unused
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1046
     * - decoding: Read by user.
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
    AVRational sample_aspect_ratio;
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1049
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
     * presentation timestamp in time_base units (time when frame should be shown to user)
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1052
     * If AV_NOPTS_VALUE then frame_rate = 1/time_base will be assumed.
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1053
     * - encoding: MUST be set by user.
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1054
     * - decoding: Set by libavcodec.
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
    int64_t pts;
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1057
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
     * reordered pts from the last AVPacket that has been input into the decoder
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1060
     * - encoding: unused
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1061
     * - decoding: Read by user.
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1062
     */
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1063
    int64_t pkt_pts;
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1064
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
     * dts from the last AVPacket that has been input into the decoder
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1067
     * - encoding: unused
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1068
     * - decoding: Read by user.
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1069
     */
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1070
    int64_t pkt_dts;
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
    /**
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1073
     * picture number in bitstream order
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1074
     * - encoding: set by
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1075
     * - decoding: Set by libavcodec.
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1076
     */
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1077
    int coded_picture_number;
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1078
    /**
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1079
     * picture number in display order
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1080
     * - encoding: set by
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1081
     * - decoding: Set by libavcodec.
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1082
     */
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1083
    int display_picture_number;
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
     * quality (between 1 (good) and FF_LAMBDA_MAX (bad))
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1087
     * - encoding: Set by libavcodec. for coded_picture (and set by user for input).
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1088
     * - decoding: Set by libavcodec.
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
    int quality;
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1091
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
     * is this picture used as reference
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1094
     * The values for this are the same as the MpegEncContext.picture_structure
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1095
     * variable, that is 1->top field, 2->bottom field, 3->frame/both fields.
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1096
     * Set to 4 for delayed, non-reference frames.
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1097
     * - encoding: unused
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1098
     * - decoding: Set by libavcodec. (before get_buffer() call)).
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
    int reference;
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1101
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1102
    /**
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1103
     * QP table
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1104
     * - encoding: unused
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1105
     * - decoding: Set by libavcodec.
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
    int8_t *qscale_table;
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1108
    /**
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1109
     * QP store stride
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1110
     * - encoding: unused
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1111
     * - decoding: Set by libavcodec.
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1112
     */
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1113
    int qstride;
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
    /**
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1116
     *
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1117
     */
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1118
    int qscale_type;
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1119
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
     * mbskip_table[mb]>=1 if MB didn't change
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1122
     * stride= mb_width = (width+15)>>4
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1123
     * - encoding: unused
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1124
     * - decoding: Set by libavcodec.
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1125
     */
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1126
    uint8_t *mbskip_table;
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
    /**
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1129
     * motion vector table
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1130
     * @code
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1131
     * example:
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1132
     * int mv_sample_log2= 4 - motion_subsample_log2;
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1133
     * int mb_width= (width+15)>>4;
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1134
     * int mv_stride= (mb_width << mv_sample_log2) + 1;
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1135
     * motion_val[direction][x + y*mv_stride][0->mv_x, 1->mv_y];
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1136
     * @endcode
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1137
     * - encoding: Set by user.
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1138
     * - decoding: Set by libavcodec.
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1139
     */
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1140
    int16_t (*motion_val[2])[2];
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
    /**
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1143
     * macroblock type table
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1144
     * mb_type_base + mb_width + 2
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1145
     * - encoding: Set by user.
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1146
     * - decoding: Set by libavcodec.
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
    uint32_t *mb_type;
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
    /**
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1151
     * DCT coefficients
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1152
     * - encoding: unused
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1153
     * - decoding: Set by libavcodec.
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
    short *dct_coeff;
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
     * motion reference frame index
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1159
     * the order in which these are stored can depend on the codec.
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1160
     * - encoding: Set by user.
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1161
     * - decoding: Set by libavcodec.
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
    int8_t *ref_index[2];
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
    /**
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1166
     * for some private data of the user
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1167
     * - encoding: unused
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1168
     * - decoding: Set by user.
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
    void *opaque;
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
    /**
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1173
     * error
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1174
     * - encoding: Set by libavcodec. if flags&CODEC_FLAG_PSNR.
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1175
     * - decoding: unused
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
    uint64_t error[AV_NUM_DATA_POINTERS];
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1178
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
     * type of the buffer (to keep track of who has to deallocate data[*])
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1181
     * - encoding: Set by the one who allocates it.
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1182
     * - decoding: Set by the one who allocates it.
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1183
     * Note: User allocated (direct rendering) & internal buffers cannot coexist currently.
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1184
     */
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1185
    int type;
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1186
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
     * When decoding, this signals how much the picture must be delayed.
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1189
     * extra_delay = repeat_pict / (2*fps)
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1190
     * - encoding: unused
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1191
     * - decoding: Set by libavcodec.
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1192
     */
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1193
    int repeat_pict;
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1194
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
     * The content of the picture is interlaced.
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1197
     * - encoding: Set by user.
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1198
     * - decoding: Set by libavcodec. (default 0)
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1199
     */
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1200
    int interlaced_frame;
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1201
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1202
    /**
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1203
     * If the content is interlaced, is top field displayed first.
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1204
     * - encoding: Set by user.
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1205
     * - decoding: Set by libavcodec.
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1206
     */
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1207
    int top_field_first;
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
     * Tell user application that palette has changed from previous frame.
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1211
     * - encoding: ??? (no palette-enabled encoder yet)
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1212
     * - decoding: Set by libavcodec. (default 0).
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1213
     */
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1214
    int palette_has_changed;
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1215
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1216
    /**
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1217
     * codec suggestion on buffer type if != 0
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1218
     * - encoding: unused
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1219
     * - decoding: Set by libavcodec. (before get_buffer() call)).
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1220
     */
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1221
    int buffer_hints;
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1222
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
     * Pan scan.
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1225
     * - encoding: Set by user.
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1226
     * - decoding: Set by libavcodec.
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
    AVPanScan *pan_scan;
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
     * reordered opaque 64bit (generally an integer or a double precision float
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1232
     * PTS but can be anything).
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1233
     * The user sets AVCodecContext.reordered_opaque to represent the input at
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1234
     * that time,
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1235
     * the decoder reorders values as needed and sets AVFrame.reordered_opaque
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1236
     * to exactly one of the values provided by the user through AVCodecContext.reordered_opaque
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1237
     * @deprecated in favor of pkt_pts
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1238
     * - encoding: unused
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1239
     * - decoding: Read by user.
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1240
     */
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1241
    int64_t reordered_opaque;
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1242
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1243
    /**
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1244
     * hardware accelerator private data (Libav-allocated)
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1245
     * - encoding: unused
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1246
     * - decoding: Set by libavcodec
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
    void *hwaccel_picture_private;
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1249
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
     * the AVCodecContext which ff_thread_get_buffer() was last called on
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1252
     * - encoding: Set by libavcodec.
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1253
     * - decoding: Set by libavcodec.
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1254
     */
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1255
    struct AVCodecContext *owner;
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1256
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1257
    /**
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1258
     * used by multithreading to store frame-specific info
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1259
     * - encoding: Set by libavcodec.
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1260
     * - decoding: Set by libavcodec.
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1261
     */
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1262
    void *thread_opaque;
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1263
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1264
    /**
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1265
     * log2 of the size of the block which a single vector in motion_val represents:
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1266
     * (4->16x16, 3->8x8, 2-> 4x4, 1-> 2x2)
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1267
     * - encoding: unused
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1268
     * - decoding: Set by libavcodec.
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1269
     */
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1270
    uint8_t motion_subsample_log2;
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1271
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1272
    /**
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1273
     * Sample rate of the audio data.
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1274
     *
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1275
     * - encoding: unused
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1276
     * - decoding: set by get_buffer()
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1277
     */
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1278
    int sample_rate;
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1279
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1280
    /**
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1281
     * Channel layout of the audio data.
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1282
     *
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1283
     * - encoding: unused
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1284
     * - decoding: set by get_buffer()
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
    uint64_t channel_layout;
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1287
} AVFrame;
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
struct AVCodecInternal;
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
enum AVFieldOrder {
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1292
    AV_FIELD_UNKNOWN,
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1293
    AV_FIELD_PROGRESSIVE,
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1294
    AV_FIELD_TT,          //< Top coded_first, top displayed first
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1295
    AV_FIELD_BB,          //< Bottom coded first, bottom displayed first
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1296
    AV_FIELD_TB,          //< Top coded first, bottom displayed first
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1297
    AV_FIELD_BT,          //< Bottom coded first, top displayed first
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1298
};
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1299
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1300
/**
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1301
 * main external API structure.
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1302
 * 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
  1303
 * Removal, reordering and changes to existing fields require a major
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1304
 * version bump.
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1305
 * sizeof(AVCodecContext) must not be used outside libav*.
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1306
 */
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1307
typedef struct AVCodecContext {
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1308
    /**
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1309
     * information on struct for av_log
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1310
     * - set by avcodec_alloc_context3
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1311
     */
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1312
    const AVClass *av_class;
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1313
    int log_level_offset;
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1314
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1315
    enum AVMediaType codec_type; /* see AVMEDIA_TYPE_xxx */
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1316
    const struct AVCodec  *codec;
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1317
    char             codec_name[32];
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1318
    enum AVCodecID     codec_id; /* see AV_CODEC_ID_xxx */
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1319
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1320
    /**
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1321
     * fourcc (LSB first, so "ABCD" -> ('D'<<24) + ('C'<<16) + ('B'<<8) + 'A').
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1322
     * This is used to work around some encoder bugs.
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1323
     * A demuxer should set this to what is stored in the field used to identify the codec.
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1324
     * If there are multiple such fields in a container then the demuxer should choose the one
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1325
     * which maximizes the information about the used codec.
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1326
     * If the codec tag field in a container is larger than 32 bits then the demuxer should
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1327
     * remap the longer ID to 32 bits with a table or other structure. Alternatively a new
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1328
     * extra_codec_tag + size could be added but for this a clear advantage must be demonstrated
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1329
     * first.
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1330
     * - encoding: Set by user, if not then the default based on codec_id will be used.
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1331
     * - decoding: Set by user, will be converted to uppercase by libavcodec during init.
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1332
     */
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1333
    unsigned int codec_tag;
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1334
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1335
    /**
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1336
     * fourcc from the AVI stream header (LSB first, so "ABCD" -> ('D'<<24) + ('C'<<16) + ('B'<<8) + 'A').
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1337
     * This is used to work around some encoder bugs.
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1338
     * - encoding: unused
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1339
     * - decoding: Set by user, will be converted to uppercase by libavcodec during init.
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1340
     */
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1341
    unsigned int stream_codec_tag;
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
#if FF_API_SUB_ID
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1344
    /**
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1345
     * @deprecated this field is unused
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1346
     */
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1347
    attribute_deprecated int sub_id;
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1348
#endif
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1349
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1350
    void *priv_data;
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1351
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1352
    /**
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1353
     * Private context used for internal data.
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1354
     *
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1355
     * Unlike priv_data, this is not codec-specific. It is used in general
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1356
     * libavcodec functions.
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1357
     */
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1358
    struct AVCodecInternal *internal;
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1359
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1360
    /**
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1361
     * Private data of the user, can be used to carry app specific stuff.
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1362
     * - encoding: Set by user.
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1363
     * - decoding: Set by user.
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1364
     */
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1365
    void *opaque;
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1366
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
     * the average bitrate
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1369
     * - encoding: Set by user; unused for constant quantizer encoding.
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1370
     * - decoding: Set by libavcodec. 0 or some bitrate if this info is available in the stream.
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1371
     */
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1372
    int bit_rate;
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
    /**
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1375
     * number of bits the bitstream is allowed to diverge from the reference.
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1376
     *           the reference can be CBR (for CBR pass1) or VBR (for pass2)
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1377
     * - encoding: Set by user; unused for constant quantizer encoding.
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1378
     * - decoding: unused
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1379
     */
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1380
    int bit_rate_tolerance;
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1381
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
     * Global quality for codecs which cannot change it per frame.
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1384
     * This should be proportional to MPEG-1/2/4 qscale.
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1385
     * - encoding: Set by user.
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1386
     * - decoding: unused
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
    int global_quality;
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
    /**
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1391
     * - encoding: Set by user.
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1392
     * - decoding: unused
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
    int compression_level;
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1395
#define FF_COMPRESSION_DEFAULT -1
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1396
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
     * CODEC_FLAG_*.
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1399
     * - encoding: Set by user.
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1400
     * - decoding: Set by user.
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
    int flags;
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1403
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1404
    /**
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1405
     * CODEC_FLAG2_*
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1406
     * - encoding: Set by user.
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1407
     * - decoding: Set by user.
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
    int flags2;
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
     * some codecs need / can use extradata like Huffman tables.
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1413
     * mjpeg: Huffman tables
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1414
     * rv10: additional flags
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1415
     * mpeg4: global headers (they can be in the bitstream or here)
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1416
     * The allocated memory should be FF_INPUT_BUFFER_PADDING_SIZE bytes larger
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1417
     * than extradata_size to avoid prolems if it is read with the bitstream reader.
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1418
     * The bytewise contents of extradata must not depend on the architecture or CPU endianness.
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1419
     * - encoding: Set/allocated/freed by libavcodec.
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1420
     * - decoding: Set/allocated/freed by user.
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1421
     */
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1422
    uint8_t *extradata;
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1423
    int extradata_size;
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
    /**
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1426
     * 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
  1427
     * of which frame timestamps are represented. For fixed-fps content,
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1428
     * timebase should be 1/framerate and timestamp increments should be
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1429
     * identically 1.
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1430
     * - encoding: MUST be set by user.
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1431
     * - decoding: Set by libavcodec.
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1432
     */
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1433
    AVRational time_base;
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1434
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
     * For some codecs, the time base is closer to the field rate than the frame rate.
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1437
     * Most notably, H.264 and MPEG-2 specify time_base as half of frame duration
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1438
     * if no telecine is used ...
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1439
     *
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1440
     * Set to time_base ticks per frame. Default 1, e.g., H.264/MPEG-2 set it to 2.
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1441
     */
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1442
    int ticks_per_frame;
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1443
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
     * Encoder delay.
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
     * Video:
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1448
     *   Number of frames the decoded output will be delayed relative to the
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1449
     *   encoded input.
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1450
     *
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1451
     * Audio:
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1452
     *   For encoding, this is the number of "priming" samples added to the
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1453
     *   beginning of the stream. The decoded output will be delayed by this
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1454
     *   many samples relative to the input to the encoder. Note that this
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1455
     *   field is purely informational and does not directly affect the pts
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1456
     *   output by the encoder, which should always be based on the actual
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1457
     *   presentation time, including any delay.
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1458
     *   For decoding, this is the number of samples the decoder needs to
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1459
     *   output before the decoder's output is valid. When seeking, you should
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1460
     *   start decoding this many samples prior to your desired seek point.
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1461
     *
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1462
     * - encoding: Set by libavcodec.
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1463
     * - decoding: Set by libavcodec.
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1464
     */
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1465
    int delay;
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1466
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1467
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1468
    /* video only */
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1469
    /**
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1470
     * picture width / height.
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1471
     * - encoding: MUST be set by user.
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1472
     * - decoding: Set by libavcodec.
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1473
     * Note: For compatibility it is possible to set this instead of
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1474
     * coded_width/height before decoding.
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1475
     */
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1476
    int width, height;
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1477
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1478
    /**
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1479
     * Bitstream width / height, may be different from width/height.
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1480
     * - encoding: unused
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1481
     * - decoding: Set by user before init if known. Codec should override / dynamically change if needed.
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1482
     */
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1483
    int coded_width, coded_height;
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
#define FF_ASPECT_EXTENDED 15
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1486
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1487
    /**
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1488
     * the number of pictures in a group of pictures, or 0 for intra_only
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1489
     * - encoding: Set by user.
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1490
     * - decoding: unused
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1491
     */
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1492
    int gop_size;
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
    /**
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1495
     * Pixel format, see AV_PIX_FMT_xxx.
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1496
     * May be set by the demuxer if known from headers.
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1497
     * May be overriden by the decoder if it knows better.
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1498
     * - encoding: Set by user.
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1499
     * - decoding: Set by user if known, overridden by libavcodec if known
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
    enum AVPixelFormat pix_fmt;
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1502
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1503
    /**
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1504
     * Motion estimation algorithm used for video coding.
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1505
     * 1 (zero), 2 (full), 3 (log), 4 (phods), 5 (epzs), 6 (x1), 7 (hex),
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1506
     * 8 (umh), 9 (iter), 10 (tesa) [7, 8, 10 are x264 specific, 9 is snow specific]
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1507
     * - encoding: MUST be set by user.
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1508
     * - decoding: unused
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1509
     */
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1510
    int me_method;
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
     * If non NULL, 'draw_horiz_band' is called by the libavcodec
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1514
     * decoder to draw a horizontal band. It improves cache usage. Not
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1515
     * all codecs can do that. You must check the codec capabilities
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1516
     * beforehand.
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1517
     * When multithreading is used, it may be called from multiple threads
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1518
     * at the same time; threads might draw different parts of the same AVFrame,
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1519
     * or multiple AVFrames, and there is no guarantee that slices will be drawn
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1520
     * in order.
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1521
     * The function is also used by hardware acceleration APIs.
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1522
     * It is called at least once during frame decoding to pass
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1523
     * the data needed for hardware render.
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1524
     * In that mode instead of pixel data, AVFrame points to
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1525
     * a structure specific to the acceleration API. The application
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1526
     * reads the structure and can change some fields to indicate progress
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1527
     * or mark state.
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1528
     * - encoding: unused
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1529
     * - decoding: Set by user.
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1530
     * @param height the height of the slice
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1531
     * @param y the y position of the slice
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1532
     * @param type 1->top field, 2->bottom field, 3->frame
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1533
     * @param offset offset into the AVFrame.data from which the slice should be read
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1534
     */
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1535
    void (*draw_horiz_band)(struct AVCodecContext *s,
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1536
                            const AVFrame *src, int offset[AV_NUM_DATA_POINTERS],
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1537
                            int y, int type, int height);
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1538
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
     * callback to negotiate the pixelFormat
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1541
     * @param fmt is the list of formats which are supported by the codec,
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1542
     * it is terminated by -1 as 0 is a valid format, the formats are ordered by quality.
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1543
     * The first is always the native one.
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1544
     * @return the chosen format
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1545
     * - encoding: unused
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1546
     * - decoding: Set by user, if not set the native format will be chosen.
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1547
     */
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1548
    enum AVPixelFormat (*get_format)(struct AVCodecContext *s, const enum AVPixelFormat * fmt);
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1549
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1550
    /**
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1551
     * maximum number of B-frames between non-B-frames
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1552
     * Note: The output will be delayed by max_b_frames+1 relative to the input.
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1553
     * - encoding: Set by user.
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1554
     * - decoding: unused
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
    int max_b_frames;
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
     * qscale factor between IP and B-frames
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1560
     * If > 0 then the last P-frame quantizer will be used (q= lastp_q*factor+offset).
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1561
     * If < 0 then normal ratecontrol will be done (q= -normal_q*factor+offset).
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1562
     * - encoding: Set by user.
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1563
     * - decoding: unused
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1564
     */
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1565
    float b_quant_factor;
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1566
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1567
    /** obsolete FIXME remove */
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1568
    int rc_strategy;
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1569
#define FF_RC_STRATEGY_XVID 1
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1570
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1571
    int b_frame_strategy;
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1572
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1573
#if FF_API_MPV_GLOBAL_OPTS
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1574
    /**
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1575
     * luma single coefficient elimination threshold
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1576
     * - encoding: Set by user.
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1577
     * - decoding: unused
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1578
     */
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1579
    attribute_deprecated int luma_elim_threshold;
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1580
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1581
    /**
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1582
     * chroma single coeff elimination threshold
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1583
     * - encoding: Set by user.
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1584
     * - decoding: unused
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1585
     */
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1586
    attribute_deprecated int chroma_elim_threshold;
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1587
#endif
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1588
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
     * qscale offset between IP and B-frames
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1591
     * - encoding: Set by user.
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1592
     * - decoding: unused
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1593
     */
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1594
    float b_quant_offset;
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
    /**
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1597
     * Size of the frame reordering buffer in the decoder.
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1598
     * For MPEG-2 it is 1 IPB or 0 low delay IP.
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1599
     * - encoding: Set by libavcodec.
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1600
     * - decoding: Set by libavcodec.
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1601
     */
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1602
    int has_b_frames;
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
    /**
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1605
     * 0-> h263 quant 1-> mpeg quant
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1606
     * - encoding: Set by user.
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1607
     * - decoding: unused
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1608
     */
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1609
    int mpeg_quant;
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
    /**
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1612
     * qscale factor between P and I-frames
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1613
     * If > 0 then the last p frame quantizer will be used (q= lastp_q*factor+offset).
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1614
     * If < 0 then normal ratecontrol will be done (q= -normal_q*factor+offset).
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1615
     * - encoding: Set by user.
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1616
     * - decoding: unused
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1617
     */
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1618
    float i_quant_factor;
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1619
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1620
    /**
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1621
     * qscale offset between P and I-frames
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1622
     * - encoding: Set by user.
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1623
     * - decoding: unused
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1624
     */
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1625
    float i_quant_offset;
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1626
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1627
    /**
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1628
     * luminance masking (0-> disabled)
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1629
     * - encoding: Set by user.
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1630
     * - decoding: unused
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1631
     */
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1632
    float lumi_masking;
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1633
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1634
    /**
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1635
     * temporary complexity masking (0-> disabled)
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1636
     * - encoding: Set by user.
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1637
     * - decoding: unused
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1638
     */
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1639
    float temporal_cplx_masking;
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1640
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
     * spatial complexity masking (0-> disabled)
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1643
     * - encoding: Set by user.
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1644
     * - decoding: unused
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1645
     */
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1646
    float spatial_cplx_masking;
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1647
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
     * p block masking (0-> disabled)
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1650
     * - encoding: Set by user.
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1651
     * - decoding: unused
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1652
     */
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1653
    float p_masking;
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
     * darkness masking (0-> disabled)
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1657
     * - encoding: Set by user.
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1658
     * - decoding: unused
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1659
     */
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1660
    float dark_masking;
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1661
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1662
    /**
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1663
     * slice count
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1664
     * - encoding: Set by libavcodec.
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1665
     * - decoding: Set by user (or 0).
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 slice_count;
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1668
    /**
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1669
     * prediction method (needed for huffyuv)
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1670
     * - encoding: Set by user.
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1671
     * - decoding: unused
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
     int prediction_method;
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1674
#define FF_PRED_LEFT   0
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1675
#define FF_PRED_PLANE  1
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1676
#define FF_PRED_MEDIAN 2
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
     * slice offsets in the frame in bytes
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1680
     * - encoding: Set/allocated by libavcodec.
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1681
     * - decoding: Set/allocated by user (or NULL).
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1682
     */
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1683
    int *slice_offset;
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1684
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1685
    /**
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1686
     * sample aspect ratio (0 if unknown)
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1687
     * That is the width of a pixel divided by the height of the pixel.
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1688
     * Numerator and denominator must be relatively prime and smaller than 256 for some video standards.
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1689
     * - encoding: Set by user.
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1690
     * - decoding: Set by libavcodec.
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
    AVRational sample_aspect_ratio;
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
     * motion estimation comparison function
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1696
     * - encoding: Set by user.
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1697
     * - decoding: unused
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1698
     */
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1699
    int me_cmp;
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1700
    /**
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1701
     * subpixel motion estimation comparison function
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1702
     * - encoding: Set by user.
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1703
     * - decoding: unused
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
    int me_sub_cmp;
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
     * macroblock comparison function (not supported yet)
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1708
     * - encoding: Set by user.
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1709
     * - decoding: unused
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1710
     */
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1711
    int mb_cmp;
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
     * interlaced DCT comparison function
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1714
     * - encoding: Set by user.
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1715
     * - decoding: unused
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1716
     */
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1717
    int ildct_cmp;
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1718
#define FF_CMP_SAD    0
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1719
#define FF_CMP_SSE    1
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1720
#define FF_CMP_SATD   2
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1721
#define FF_CMP_DCT    3
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1722
#define FF_CMP_PSNR   4
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1723
#define FF_CMP_BIT    5
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1724
#define FF_CMP_RD     6
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1725
#define FF_CMP_ZERO   7
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1726
#define FF_CMP_VSAD   8
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1727
#define FF_CMP_VSSE   9
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1728
#define FF_CMP_NSSE   10
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1729
#define FF_CMP_W53    11
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1730
#define FF_CMP_W97    12
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1731
#define FF_CMP_DCTMAX 13
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1732
#define FF_CMP_DCT264 14
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1733
#define FF_CMP_CHROMA 256
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
     * ME diamond size & shape
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1737
     * - encoding: Set by user.
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1738
     * - decoding: unused
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
    int dia_size;
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1741
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1742
    /**
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1743
     * amount of previous MV predictors (2a+1 x 2a+1 square)
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1744
     * - encoding: Set by user.
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1745
     * - decoding: unused
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1746
     */
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1747
    int last_predictor_count;
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1748
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1749
    /**
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1750
     * prepass for motion estimation
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1751
     * - encoding: Set by user.
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1752
     * - decoding: unused
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1753
     */
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1754
    int pre_me;
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1755
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1756
    /**
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1757
     * motion estimation prepass comparison function
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1758
     * - encoding: Set by user.
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1759
     * - decoding: unused
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1760
     */
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1761
    int me_pre_cmp;
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1762
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1763
    /**
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1764
     * ME prepass diamond size & shape
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1765
     * - encoding: Set by user.
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1766
     * - decoding: unused
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1767
     */
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1768
    int pre_dia_size;
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1769
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1770
    /**
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1771
     * subpel ME quality
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1772
     * - encoding: Set by user.
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1773
     * - decoding: unused
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1774
     */
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1775
    int me_subpel_quality;
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1776
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1777
    /**
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1778
     * DTG active format information (additional aspect ratio
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1779
     * information only used in DVB MPEG-2 transport streams)
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1780
     * 0 if not set.
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1781
     *
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1782
     * - encoding: unused
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1783
     * - decoding: Set by decoder.
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1784
     */
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1785
    int dtg_active_format;
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1786
#define FF_DTG_AFD_SAME         8
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1787
#define FF_DTG_AFD_4_3          9
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1788
#define FF_DTG_AFD_16_9         10
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1789
#define FF_DTG_AFD_14_9         11
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1790
#define FF_DTG_AFD_4_3_SP_14_9  13
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1791
#define FF_DTG_AFD_16_9_SP_14_9 14
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1792
#define FF_DTG_AFD_SP_4_3       15
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1793
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1794
    /**
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1795
     * maximum motion estimation search range in subpel units
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1796
     * If 0 then no limit.
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1797
     *
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1798
     * - encoding: Set by user.
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1799
     * - decoding: unused
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1800
     */
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1801
    int me_range;
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1802
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1803
    /**
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1804
     * intra quantizer bias
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1805
     * - encoding: Set by user.
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1806
     * - decoding: unused
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1807
     */
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1808
    int intra_quant_bias;
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1809
#define FF_DEFAULT_QUANT_BIAS 999999
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1810
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1811
    /**
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1812
     * inter quantizer bias
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1813
     * - encoding: Set by user.
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1814
     * - decoding: unused
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1815
     */
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1816
    int inter_quant_bias;
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1817
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1818
#if FF_API_COLOR_TABLE_ID
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1819
    /**
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1820
     * color table ID
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1821
     * - encoding: unused
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1822
     * - decoding: Which clrtable should be used for 8bit RGB images.
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1823
     *             Tables have to be stored somewhere. FIXME
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1824
     */
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1825
    attribute_deprecated int color_table_id;
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1826
#endif
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1827
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1828
    /**
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1829
     * slice flags
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1830
     * - encoding: unused
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1831
     * - decoding: Set by user.
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1832
     */
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1833
    int slice_flags;
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1834
#define SLICE_FLAG_CODED_ORDER    0x0001 ///< draw_horiz_band() is called in coded order instead of display
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1835
#define SLICE_FLAG_ALLOW_FIELD    0x0002 ///< allow draw_horiz_band() with field slices (MPEG2 field pics)
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1836
#define SLICE_FLAG_ALLOW_PLANE    0x0004 ///< allow draw_horiz_band() with 1 component at a time (SVQ1)
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1837
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1838
    /**
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1839
     * XVideo Motion Acceleration
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1840
     * - encoding: forbidden
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1841
     * - decoding: set by decoder
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1842
     */
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1843
    int xvmc_acceleration;
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1844
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1845
    /**
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1846
     * macroblock decision mode
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1847
     * - encoding: Set by user.
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1848
     * - decoding: unused
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1849
     */
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1850
    int mb_decision;
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1851
#define FF_MB_DECISION_SIMPLE 0        ///< uses mb_cmp
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1852
#define FF_MB_DECISION_BITS   1        ///< chooses the one which needs the fewest bits
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1853
#define FF_MB_DECISION_RD     2        ///< rate distortion
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1854
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1855
    /**
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1856
     * custom intra quantization matrix
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1857
     * - encoding: Set by user, can be NULL.
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1858
     * - decoding: Set by libavcodec.
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1859
     */
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1860
    uint16_t *intra_matrix;
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1861
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1862
    /**
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1863
     * custom inter quantization matrix
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1864
     * - encoding: Set by user, can be NULL.
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1865
     * - decoding: Set by libavcodec.
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1866
     */
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1867
    uint16_t *inter_matrix;
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1868
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1869
    /**
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1870
     * scene change detection threshold
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1871
     * 0 is default, larger means fewer detected scene changes.
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1872
     * - encoding: Set by user.
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1873
     * - decoding: unused
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1874
     */
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1875
    int scenechange_threshold;
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1876
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1877
    /**
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1878
     * noise reduction strength
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1879
     * - encoding: Set by user.
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1880
     * - decoding: unused
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1881
     */
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1882
    int noise_reduction;
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1883
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1884
#if FF_API_INTER_THRESHOLD
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1885
    /**
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1886
     * @deprecated this field is unused
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1887
     */
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1888
    attribute_deprecated int inter_threshold;
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1889
#endif
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1890
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1891
#if FF_API_MPV_GLOBAL_OPTS
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1892
    /**
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1893
     * @deprecated use mpegvideo private options instead
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1894
     */
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1895
    attribute_deprecated int quantizer_noise_shaping;
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1896
#endif
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1897
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1898
    /**
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1899
     * Motion estimation threshold below which no motion estimation is
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1900
     * performed, but instead the user specified motion vectors are used.
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1901
     *
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1902
     * - encoding: Set by user.
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1903
     * - decoding: unused
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1904
     */
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1905
    int me_threshold;
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1906
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1907
    /**
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1908
     * Macroblock threshold below which the user specified macroblock types will be used.
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1909
     * - encoding: Set by user.
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1910
     * - decoding: unused
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1911
     */
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1912
    int mb_threshold;
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1913
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1914
    /**
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1915
     * precision of the intra DC coefficient - 8
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1916
     * - encoding: Set by user.
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1917
     * - decoding: unused
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1918
     */
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1919
    int intra_dc_precision;
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1920
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1921
    /**
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1922
     * Number of macroblock rows at the top which are skipped.
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1923
     * - encoding: unused
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1924
     * - decoding: Set by user.
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1925
     */
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1926
    int skip_top;
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1927
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1928
    /**
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1929
     * Number of macroblock rows at the bottom which are skipped.
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1930
     * - encoding: unused
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1931
     * - decoding: Set by user.
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1932
     */
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1933
    int skip_bottom;
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1934
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1935
    /**
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1936
     * Border processing masking, raises the quantizer for mbs on the borders
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1937
     * of the picture.
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1938
     * - encoding: Set by user.
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1939
     * - decoding: unused
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1940
     */
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1941
    float border_masking;
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1942
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1943
    /**
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1944
     * minimum MB lagrange multipler
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1945
     * - encoding: Set by user.
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1946
     * - decoding: unused
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1947
     */
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1948
    int mb_lmin;
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1949
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1950
    /**
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1951
     * maximum MB lagrange multipler
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1952
     * - encoding: Set by user.
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1953
     * - decoding: unused
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1954
     */
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1955
    int mb_lmax;
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1956
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1957
    /**
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1958
     *
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1959
     * - encoding: Set by user.
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1960
     * - decoding: unused
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1961
     */
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1962
    int me_penalty_compensation;
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1963
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1964
    /**
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1965
     *
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1966
     * - encoding: Set by user.
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1967
     * - decoding: unused
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1968
     */
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1969
    int bidir_refine;
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1970
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1971
    /**
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1972
     *
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1973
     * - encoding: Set by user.
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1974
     * - decoding: unused
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1975
     */
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1976
    int brd_scale;
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1977
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1978
    /**
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1979
     * minimum GOP size
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1980
     * - encoding: Set by user.
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1981
     * - decoding: unused
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1982
     */
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1983
    int keyint_min;
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1984
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1985
    /**
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1986
     * number of reference frames
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1987
     * - encoding: Set by user.
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1988
     * - decoding: Set by lavc.
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1989
     */
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1990
    int refs;
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1991
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1992
    /**
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1993
     * chroma qp offset from luma
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1994
     * - encoding: Set by user.
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1995
     * - decoding: unused
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1996
     */
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1997
    int chromaoffset;
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1998
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  1999
    /**
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  2000
     * Multiplied by qscale for each frame and added to scene_change_score.
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  2001
     * - encoding: Set by user.
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  2002
     * - decoding: unused
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  2003
     */
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  2004
    int scenechange_factor;
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  2005
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  2006
    /**
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  2007
     *
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  2008
     * Note: Value depends upon the compare function used for fullpel ME.
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  2009
     * - encoding: Set by user.
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  2010
     * - decoding: unused
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  2011
     */
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  2012
    int mv0_threshold;
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  2013
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  2014
    /**
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  2015
     * Adjust sensitivity of b_frame_strategy 1.
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  2016
     * - encoding: Set by user.
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  2017
     * - decoding: unused
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  2018
     */
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  2019
    int b_sensitivity;
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  2020
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  2021
    /**
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  2022
     * Chromaticity coordinates of the source primaries.
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  2023
     * - encoding: Set by user
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  2024
     * - decoding: Set by libavcodec
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  2025
     */
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  2026
    enum AVColorPrimaries color_primaries;
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  2027
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  2028
    /**
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  2029
     * Color Transfer Characteristic.
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  2030
     * - encoding: Set by user
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  2031
     * - decoding: Set by libavcodec
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  2032
     */
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  2033
    enum AVColorTransferCharacteristic color_trc;
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  2034
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  2035
    /**
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  2036
     * YUV colorspace type.
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  2037
     * - encoding: Set by user
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  2038
     * - decoding: Set by libavcodec
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  2039
     */
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  2040
    enum AVColorSpace colorspace;
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  2041
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  2042
    /**
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  2043
     * MPEG vs JPEG YUV range.
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  2044
     * - encoding: Set by user
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  2045
     * - decoding: Set by libavcodec
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  2046
     */
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  2047
    enum AVColorRange color_range;
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  2048
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  2049
    /**
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  2050
     * This defines the location of chroma samples.
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  2051
     * - encoding: Set by user
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  2052
     * - decoding: Set by libavcodec
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  2053
     */
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  2054
    enum AVChromaLocation chroma_sample_location;
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  2055
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  2056
    /**
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  2057
     * Number of slices.
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  2058
     * Indicates number of picture subdivisions. Used for parallelized
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  2059
     * decoding.
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  2060
     * - encoding: Set by user
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  2061
     * - decoding: unused
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  2062
     */
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  2063
    int slices;
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  2064
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  2065
    /** Field order
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  2066
     * - encoding: set by libavcodec
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  2067
     * - decoding: Set by libavcodec
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  2068
     */
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  2069
    enum AVFieldOrder field_order;
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  2070
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  2071
    /* audio only */
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  2072
    int sample_rate; ///< samples per second
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  2073
    int channels;    ///< number of audio channels
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  2074
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  2075
    /**
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  2076
     * audio sample format
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  2077
     * - encoding: Set by user.
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  2078
     * - decoding: Set by libavcodec.
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  2079
     */
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  2080
    enum AVSampleFormat sample_fmt;  ///< sample format
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  2081
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  2082
    /* The following data should not be initialized. */
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  2083
    /**
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  2084
     * Samples per packet, initialized when calling 'init'.
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  2085
     */
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  2086
    int frame_size;
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  2087
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  2088
    /**
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  2089
     * Frame counter, set by libavcodec.
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  2090
     *
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  2091
     * - decoding: total number of frames returned from the decoder so far.
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  2092
     * - encoding: total number of frames passed to the encoder so far.
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  2093
     *
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  2094
     *   @note the counter is not incremented if encoding/decoding resulted in
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  2095
     *   an error.
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  2096
     */
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  2097
    int frame_number;
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  2098
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  2099
    /**
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  2100
     * number of bytes per packet if constant and known or 0
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  2101
     * Used by some WAV based audio codecs.
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  2102
     */
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  2103
    int block_align;
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  2104
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  2105
    /**
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  2106
     * Audio cutoff bandwidth (0 means "automatic")
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  2107
     * - encoding: Set by user.
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  2108
     * - decoding: unused
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  2109
     */
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  2110
    int cutoff;
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  2111
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  2112
#if FF_API_REQUEST_CHANNELS
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  2113
    /**
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  2114
     * Decoder should decode to this many channels if it can (0 for default)
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  2115
     * - encoding: unused
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  2116
     * - decoding: Set by user.
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  2117
     * @deprecated Deprecated in favor of request_channel_layout.
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  2118
     */
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  2119
    int request_channels;
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  2120
#endif
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  2121
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  2122
    /**
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  2123
     * Audio channel layout.
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  2124
     * - encoding: set by user.
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  2125
     * - decoding: set by libavcodec.
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  2126
     */
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  2127
    uint64_t channel_layout;
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  2128
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  2129
    /**
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  2130
     * Request decoder to use this channel layout if it can (0 for default)
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  2131
     * - encoding: unused
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  2132
     * - decoding: Set by user.
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  2133
     */
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  2134
    uint64_t request_channel_layout;
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  2135
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  2136
    /**
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  2137
     * Type of service that the audio stream conveys.
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  2138
     * - encoding: Set by user.
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  2139
     * - decoding: Set by libavcodec.
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  2140
     */
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  2141
    enum AVAudioServiceType audio_service_type;
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  2142
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  2143
    /**
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  2144
     * Used to request a sample format from the decoder.
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  2145
     * - encoding: unused.
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  2146
     * - decoding: Set by user.
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  2147
     */
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  2148
    enum AVSampleFormat request_sample_fmt;
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  2149
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  2150
    /**
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  2151
     * Called at the beginning of each frame to get a buffer for it.
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  2152
     *
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  2153
     * The function will set AVFrame.data[], AVFrame.linesize[].
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  2154
     * AVFrame.extended_data[] must also be set, but it should be the same as
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  2155
     * AVFrame.data[] except for planar audio with more channels than can fit
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  2156
     * in AVFrame.data[]. In that case, AVFrame.data[] shall still contain as
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  2157
     * many data pointers as it can hold.
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  2158
     *
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  2159
     * if CODEC_CAP_DR1 is not set then get_buffer() must call
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  2160
     * avcodec_default_get_buffer() instead of providing buffers allocated by
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  2161
     * some other means.
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  2162
     *
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  2163
     * AVFrame.data[] should be 32- or 16-byte-aligned unless the CPU doesn't
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  2164
     * need it. avcodec_default_get_buffer() aligns the output buffer properly,
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  2165
     * but if get_buffer() is overridden then alignment considerations should
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  2166
     * be taken into account.
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  2167
     *
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  2168
     * @see avcodec_default_get_buffer()
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  2169
     *
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  2170
     * Video:
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  2171
     *
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  2172
     * If pic.reference is set then the frame will be read later by libavcodec.
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  2173
     * avcodec_align_dimensions2() should be used to find the required width and
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  2174
     * height, as they normally need to be rounded up to the next multiple of 16.
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  2175
     *
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  2176
     * If frame multithreading is used and thread_safe_callbacks is set,
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  2177
     * it may be called from a different thread, but not from more than one at
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  2178
     * once. Does not need to be reentrant.
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  2179
     *
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  2180
     * @see release_buffer(), reget_buffer()
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  2181
     * @see avcodec_align_dimensions2()
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  2182
     *
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  2183
     * Audio:
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  2184
     *
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  2185
     * Decoders request a buffer of a particular size by setting
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  2186
     * AVFrame.nb_samples prior to calling get_buffer(). The decoder may,
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  2187
     * however, utilize only part of the buffer by setting AVFrame.nb_samples
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  2188
     * to a smaller value in the output frame.
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  2189
     *
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  2190
     * Decoders cannot use the buffer after returning from
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  2191
     * avcodec_decode_audio4(), so they will not call release_buffer(), as it
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  2192
     * is assumed to be released immediately upon return.
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  2193
     *
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  2194
     * As a convenience, av_samples_get_buffer_size() and
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  2195
     * av_samples_fill_arrays() in libavutil may be used by custom get_buffer()
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  2196
     * functions to find the required data size and to fill data pointers and
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  2197
     * linesize. In AVFrame.linesize, only linesize[0] may be set for audio
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  2198
     * since all planes must be the same size.
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  2199
     *
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  2200
     * @see av_samples_get_buffer_size(), av_samples_fill_arrays()
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  2201
     *
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  2202
     * - encoding: unused
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  2203
     * - decoding: Set by libavcodec, user can override.
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  2204
     */
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  2205
    int (*get_buffer)(struct AVCodecContext *c, AVFrame *pic);
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  2206
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  2207
    /**
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  2208
     * Called to release buffers which were allocated with get_buffer.
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  2209
     * A released buffer can be reused in get_buffer().
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  2210
     * pic.data[*] must be set to NULL.
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  2211
     * May be called from a different thread if frame multithreading is used,
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  2212
     * but not by more than one thread at once, so does not need to be reentrant.
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  2213
     * - encoding: unused
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  2214
     * - decoding: Set by libavcodec, user can override.
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  2215
     */
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  2216
    void (*release_buffer)(struct AVCodecContext *c, AVFrame *pic);
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  2217
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  2218
    /**
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  2219
     * Called at the beginning of a frame to get cr buffer for it.
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  2220
     * Buffer type (size, hints) must be the same. libavcodec won't check it.
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  2221
     * libavcodec will pass previous buffer in pic, function should return
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  2222
     * same buffer or new buffer with old frame "painted" into it.
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  2223
     * If pic.data[0] == NULL must behave like get_buffer().
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  2224
     * if CODEC_CAP_DR1 is not set then reget_buffer() must call
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  2225
     * avcodec_default_reget_buffer() instead of providing buffers allocated by
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  2226
     * some other means.
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  2227
     * - encoding: unused
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  2228
     * - decoding: Set by libavcodec, user can override.
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  2229
     */
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  2230
    int (*reget_buffer)(struct AVCodecContext *c, AVFrame *pic);
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  2231
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  2232
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  2233
    /* - encoding parameters */
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  2234
    float qcompress;  ///< amount of qscale change between easy & hard scenes (0.0-1.0)
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  2235
    float qblur;      ///< amount of qscale smoothing over time (0.0-1.0)
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  2236
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  2237
    /**
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  2238
     * minimum quantizer
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  2239
     * - encoding: Set by user.
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  2240
     * - decoding: unused
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  2241
     */
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  2242
    int qmin;
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  2243
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  2244
    /**
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  2245
     * maximum quantizer
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  2246
     * - encoding: Set by user.
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  2247
     * - decoding: unused
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  2248
     */
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  2249
    int qmax;
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  2250
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  2251
    /**
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  2252
     * maximum quantizer difference between frames
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  2253
     * - encoding: Set by user.
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  2254
     * - decoding: unused
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  2255
     */
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  2256
    int max_qdiff;
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  2257
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  2258
    /**
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  2259
     * ratecontrol qmin qmax limiting method
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  2260
     * 0-> clipping, 1-> use a nice continous function to limit qscale wthin qmin/qmax.
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  2261
     * - encoding: Set by user.
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  2262
     * - decoding: unused
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  2263
     */
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  2264
    float rc_qsquish;
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  2265
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  2266
    float rc_qmod_amp;
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  2267
    int rc_qmod_freq;
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  2268
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  2269
    /**
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  2270
     * decoder bitstream buffer size
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  2271
     * - encoding: Set by user.
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  2272
     * - decoding: unused
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  2273
     */
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  2274
    int rc_buffer_size;
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  2275
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  2276
    /**
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  2277
     * ratecontrol override, see RcOverride
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  2278
     * - encoding: Allocated/set/freed by user.
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  2279
     * - decoding: unused
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  2280
     */
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  2281
    int rc_override_count;
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  2282
    RcOverride *rc_override;
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  2283
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  2284
    /**
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  2285
     * rate control equation
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  2286
     * - encoding: Set by user
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  2287
     * - decoding: unused
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  2288
     */
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  2289
    const char *rc_eq;
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  2290
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  2291
    /**
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  2292
     * maximum bitrate
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  2293
     * - encoding: Set by user.
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  2294
     * - decoding: unused
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  2295
     */
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  2296
    int rc_max_rate;
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  2297
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  2298
    /**
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  2299
     * minimum bitrate
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  2300
     * - encoding: Set by user.
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  2301
     * - decoding: unused
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  2302
     */
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  2303
    int rc_min_rate;
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  2304
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  2305
    float rc_buffer_aggressivity;
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  2306
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  2307
    /**
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  2308
     * initial complexity for pass1 ratecontrol
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  2309
     * - encoding: Set by user.
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  2310
     * - decoding: unused
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  2311
     */
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  2312
    float rc_initial_cplx;
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  2313
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  2314
    /**
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  2315
     * Ratecontrol attempt to use, at maximum, <value> of what can be used without an underflow.
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  2316
     * - encoding: Set by user.
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  2317
     * - decoding: unused.
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  2318
     */
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  2319
    float rc_max_available_vbv_use;
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  2320
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  2321
    /**
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  2322
     * Ratecontrol attempt to use, at least, <value> times the amount needed to prevent a vbv overflow.
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  2323
     * - encoding: Set by user.
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  2324
     * - decoding: unused.
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  2325
     */
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  2326
    float rc_min_vbv_overflow_use;
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  2327
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  2328
    /**
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  2329
     * Number of bits which should be loaded into the rc buffer before decoding starts.
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  2330
     * - encoding: Set by user.
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  2331
     * - decoding: unused
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  2332
     */
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  2333
    int rc_initial_buffer_occupancy;
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  2334
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  2335
#define FF_CODER_TYPE_VLC       0
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  2336
#define FF_CODER_TYPE_AC        1
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  2337
#define FF_CODER_TYPE_RAW       2
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  2338
#define FF_CODER_TYPE_RLE       3
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  2339
#define FF_CODER_TYPE_DEFLATE   4
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  2340
    /**
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  2341
     * coder type
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  2342
     * - encoding: Set by user.
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  2343
     * - decoding: unused
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  2344
     */
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  2345
    int coder_type;
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  2346
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  2347
    /**
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  2348
     * context model
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  2349
     * - encoding: Set by user.
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  2350
     * - decoding: unused
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  2351
     */
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  2352
    int context_model;
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  2353
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  2354
    /**
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  2355
     * minimum Lagrange multipler
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  2356
     * - encoding: Set by user.
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  2357
     * - decoding: unused
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  2358
     */
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  2359
    int lmin;
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  2360
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  2361
    /**
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  2362
     * maximum Lagrange multipler
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  2363
     * - encoding: Set by user.
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  2364
     * - decoding: unused
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  2365
     */
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  2366
    int lmax;
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  2367
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  2368
    /**
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  2369
     * frame skip threshold
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  2370
     * - encoding: Set by user.
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  2371
     * - decoding: unused
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  2372
     */
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  2373
    int frame_skip_threshold;
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  2374
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  2375
    /**
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  2376
     * frame skip factor
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  2377
     * - encoding: Set by user.
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  2378
     * - decoding: unused
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  2379
     */
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  2380
    int frame_skip_factor;
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  2381
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  2382
    /**
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  2383
     * frame skip exponent
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  2384
     * - encoding: Set by user.
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  2385
     * - decoding: unused
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  2386
     */
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  2387
    int frame_skip_exp;
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  2388
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  2389
    /**
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  2390
     * frame skip comparison function
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  2391
     * - encoding: Set by user.
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  2392
     * - decoding: unused
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  2393
     */
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  2394
    int frame_skip_cmp;
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  2395
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  2396
    /**
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  2397
     * trellis RD quantization
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  2398
     * - encoding: Set by user.
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  2399
     * - decoding: unused
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  2400
     */
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  2401
    int trellis;
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  2402
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  2403
    /**
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  2404
     * - encoding: Set by user.
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  2405
     * - decoding: unused
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  2406
     */
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  2407
    int min_prediction_order;
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  2408
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  2409
    /**
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  2410
     * - encoding: Set by user.
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  2411
     * - decoding: unused
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  2412
     */
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  2413
    int max_prediction_order;
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  2414
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  2415
    /**
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  2416
     * GOP timecode frame start number, in non drop frame format
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  2417
     * - encoding: Set by user.
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  2418
     * - decoding: unused
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  2419
     */
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  2420
    int64_t timecode_frame_start;
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  2421
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  2422
    /* The RTP callback: This function is called    */
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  2423
    /* every time the encoder has a packet to send. */
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  2424
    /* It depends on the encoder if the data starts */
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  2425
    /* with a Start Code (it should). H.263 does.   */
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  2426
    /* mb_nb contains the number of macroblocks     */
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  2427
    /* encoded in the RTP payload.                  */
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  2428
    void (*rtp_callback)(struct AVCodecContext *avctx, void *data, int size, int mb_nb);
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  2429
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  2430
    int rtp_payload_size;   /* The size of the RTP payload: the coder will  */
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  2431
                            /* do its best to deliver a chunk with size     */
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  2432
                            /* below rtp_payload_size, the chunk will start */
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  2433
                            /* with a start code on some codecs like H.263. */
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  2434
                            /* This doesn't take account of any particular  */
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  2435
                            /* headers inside the transmitted RTP payload.  */
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  2436
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  2437
    /* statistics, used for 2-pass encoding */
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  2438
    int mv_bits;
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  2439
    int header_bits;
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  2440
    int i_tex_bits;
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  2441
    int p_tex_bits;
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  2442
    int i_count;
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  2443
    int p_count;
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  2444
    int skip_count;
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  2445
    int misc_bits;
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  2446
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  2447
    /**
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  2448
     * number of bits used for the previously encoded frame
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  2449
     * - encoding: Set by libavcodec.
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  2450
     * - decoding: unused
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  2451
     */
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  2452
    int frame_bits;
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  2453
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  2454
    /**
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  2455
     * pass1 encoding statistics output buffer
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  2456
     * - encoding: Set by libavcodec.
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  2457
     * - decoding: unused
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  2458
     */
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  2459
    char *stats_out;
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  2460
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  2461
    /**
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  2462
     * pass2 encoding statistics input buffer
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  2463
     * Concatenated stuff from stats_out of pass1 should be placed here.
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  2464
     * - encoding: Allocated/set/freed by user.
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  2465
     * - decoding: unused
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  2466
     */
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  2467
    char *stats_in;
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  2468
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  2469
    /**
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  2470
     * Work around bugs in encoders which sometimes cannot be detected automatically.
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  2471
     * - encoding: Set by user
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  2472
     * - decoding: Set by user
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  2473
     */
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  2474
    int workaround_bugs;
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  2475
#define FF_BUG_AUTODETECT       1  ///< autodetection
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  2476
#define FF_BUG_OLD_MSMPEG4      2
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  2477
#define FF_BUG_XVID_ILACE       4
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  2478
#define FF_BUG_UMP4             8
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  2479
#define FF_BUG_NO_PADDING       16
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  2480
#define FF_BUG_AMV              32
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  2481
#define FF_BUG_AC_VLC           0  ///< Will be removed, libavcodec can now handle these non-compliant files by default.
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  2482
#define FF_BUG_QPEL_CHROMA      64
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  2483
#define FF_BUG_STD_QPEL         128
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  2484
#define FF_BUG_QPEL_CHROMA2     256
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  2485
#define FF_BUG_DIRECT_BLOCKSIZE 512
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  2486
#define FF_BUG_EDGE             1024
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  2487
#define FF_BUG_HPEL_CHROMA      2048
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  2488
#define FF_BUG_DC_CLIP          4096
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  2489
#define FF_BUG_MS               8192 ///< Work around various bugs in Microsoft's broken decoders.
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  2490
#define FF_BUG_TRUNCATED       16384
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  2491
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  2492
    /**
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  2493
     * strictly follow the standard (MPEG4, ...).
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  2494
     * - encoding: Set by user.
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  2495
     * - decoding: Set by user.
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  2496
     * Setting this to STRICT or higher means the encoder and decoder will
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  2497
     * generally do stupid things, whereas setting it to unofficial or lower
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  2498
     * will mean the encoder might produce output that is not supported by all
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  2499
     * spec-compliant decoders. Decoders don't differentiate between normal,
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  2500
     * unofficial and experimental (that is, they always try to decode things
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  2501
     * when they can) unless they are explicitly asked to behave stupidly
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  2502
     * (=strictly conform to the specs)
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  2503
     */
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  2504
    int strict_std_compliance;
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  2505
#define FF_COMPLIANCE_VERY_STRICT   2 ///< Strictly conform to an older more strict version of the spec or reference software.
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  2506
#define FF_COMPLIANCE_STRICT        1 ///< Strictly conform to all the things in the spec no matter what consequences.
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  2507
#define FF_COMPLIANCE_NORMAL        0
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  2508
#define FF_COMPLIANCE_UNOFFICIAL   -1 ///< Allow unofficial extensions
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  2509
#define FF_COMPLIANCE_EXPERIMENTAL -2 ///< Allow nonstandardized experimental things.
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  2510
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  2511
    /**
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  2512
     * error concealment flags
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  2513
     * - encoding: unused
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  2514
     * - decoding: Set by user.
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  2515
     */
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  2516
    int error_concealment;
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  2517
#define FF_EC_GUESS_MVS   1
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  2518
#define FF_EC_DEBLOCK     2
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  2519
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  2520
    /**
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  2521
     * debug
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  2522
     * - encoding: Set by user.
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  2523
     * - decoding: Set by user.
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  2524
     */
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  2525
    int debug;
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  2526
#define FF_DEBUG_PICT_INFO   1
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  2527
#define FF_DEBUG_RC          2
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  2528
#define FF_DEBUG_BITSTREAM   4
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  2529
#define FF_DEBUG_MB_TYPE     8
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  2530
#define FF_DEBUG_QP          16
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  2531
#define FF_DEBUG_MV          32
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  2532
#define FF_DEBUG_DCT_COEFF   0x00000040
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  2533
#define FF_DEBUG_SKIP        0x00000080
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  2534
#define FF_DEBUG_STARTCODE   0x00000100
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  2535
#define FF_DEBUG_PTS         0x00000200
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  2536
#define FF_DEBUG_ER          0x00000400
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  2537
#define FF_DEBUG_MMCO        0x00000800
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  2538
#define FF_DEBUG_BUGS        0x00001000
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  2539
#define FF_DEBUG_VIS_QP      0x00002000
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  2540
#define FF_DEBUG_VIS_MB_TYPE 0x00004000
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  2541
#define FF_DEBUG_BUFFERS     0x00008000
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  2542
#define FF_DEBUG_THREADS     0x00010000
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  2543
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  2544
    /**
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  2545
     * debug
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  2546
     * - encoding: Set by user.
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  2547
     * - decoding: Set by user.
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  2548
     */
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  2549
    int debug_mv;
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  2550
#define FF_DEBUG_VIS_MV_P_FOR  0x00000001 //visualize forward predicted MVs of P frames
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  2551
#define FF_DEBUG_VIS_MV_B_FOR  0x00000002 //visualize forward predicted MVs of B frames
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  2552
#define FF_DEBUG_VIS_MV_B_BACK 0x00000004 //visualize backward predicted MVs of B frames
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  2553
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  2554
    /**
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  2555
     * Error recognition; may misdetect some more or less valid parts as errors.
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  2556
     * - encoding: unused
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  2557
     * - decoding: Set by user.
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  2558
     */
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  2559
    int err_recognition;
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  2560
#define AV_EF_CRCCHECK  (1<<0)
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  2561
#define AV_EF_BITSTREAM (1<<1)
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  2562
#define AV_EF_BUFFER    (1<<2)
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  2563
#define AV_EF_EXPLODE   (1<<3)
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  2564
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  2565
    /**
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  2566
     * opaque 64bit number (generally a PTS) that will be reordered and
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  2567
     * output in AVFrame.reordered_opaque
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  2568
     * @deprecated in favor of pkt_pts
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  2569
     * - encoding: unused
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  2570
     * - decoding: Set by user.
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  2571
     */
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  2572
    int64_t reordered_opaque;
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  2573
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  2574
    /**
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  2575
     * Hardware accelerator in use
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  2576
     * - encoding: unused.
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  2577
     * - decoding: Set by libavcodec
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  2578
     */
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  2579
    struct AVHWAccel *hwaccel;
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  2580
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  2581
    /**
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  2582
     * Hardware accelerator context.
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  2583
     * For some hardware accelerators, a global context needs to be
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  2584
     * provided by the user. In that case, this holds display-dependent
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  2585
     * data Libav cannot instantiate itself. Please refer to the
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  2586
     * Libav HW accelerator documentation to know how to fill this
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  2587
     * is. e.g. for VA API, this is a struct vaapi_context.
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  2588
     * - encoding: unused
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  2589
     * - decoding: Set by user
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  2590
     */
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  2591
    void *hwaccel_context;
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  2592
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  2593
    /**
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  2594
     * error
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  2595
     * - encoding: Set by libavcodec if flags&CODEC_FLAG_PSNR.
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  2596
     * - decoding: unused
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  2597
     */
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  2598
    uint64_t error[AV_NUM_DATA_POINTERS];
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  2599
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  2600
    /**
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  2601
     * DCT algorithm, see FF_DCT_* below
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  2602
     * - encoding: Set by user.
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  2603
     * - decoding: unused
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  2604
     */
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  2605
    int dct_algo;
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  2606
#define FF_DCT_AUTO    0
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  2607
#define FF_DCT_FASTINT 1
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  2608
#define FF_DCT_INT     2
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  2609
#define FF_DCT_MMX     3
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  2610
#define FF_DCT_ALTIVEC 5
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  2611
#define FF_DCT_FAAN    6
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  2612
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  2613
    /**
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  2614
     * IDCT algorithm, see FF_IDCT_* below.
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  2615
     * - encoding: Set by user.
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  2616
     * - decoding: Set by user.
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  2617
     */
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  2618
    int idct_algo;
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  2619
#define FF_IDCT_AUTO          0
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  2620
#define FF_IDCT_INT           1
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  2621
#define FF_IDCT_SIMPLE        2
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  2622
#define FF_IDCT_SIMPLEMMX     3
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  2623
#if FF_API_LIBMPEG2
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  2624
#define FF_IDCT_LIBMPEG2MMX   4
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  2625
#endif
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  2626
#if FF_API_MMI
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  2627
#define FF_IDCT_MMI           5
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  2628
#endif
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  2629
#define FF_IDCT_ARM           7
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  2630
#define FF_IDCT_ALTIVEC       8
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  2631
#define FF_IDCT_SH4           9
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  2632
#define FF_IDCT_SIMPLEARM     10
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  2633
#define FF_IDCT_H264          11
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  2634
#define FF_IDCT_VP3           12
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  2635
#define FF_IDCT_IPP           13
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  2636
#define FF_IDCT_XVIDMMX       14
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  2637
#define FF_IDCT_CAVS          15
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  2638
#define FF_IDCT_SIMPLEARMV5TE 16
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  2639
#define FF_IDCT_SIMPLEARMV6   17
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  2640
#define FF_IDCT_SIMPLEVIS     18
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  2641
#define FF_IDCT_WMV2          19
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  2642
#define FF_IDCT_FAAN          20
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  2643
#define FF_IDCT_EA            21
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  2644
#define FF_IDCT_SIMPLENEON    22
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  2645
#define FF_IDCT_SIMPLEALPHA   23
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  2646
#define FF_IDCT_BINK          24
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  2647
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  2648
#if FF_API_DSP_MASK
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  2649
    /**
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  2650
     * Unused.
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  2651
     * @deprecated use av_set_cpu_flags_mask() instead.
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  2652
     */
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  2653
    attribute_deprecated unsigned dsp_mask;
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  2654
#endif
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  2655
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  2656
    /**
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  2657
     * bits per sample/pixel from the demuxer (needed for huffyuv).
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  2658
     * - encoding: Set by libavcodec.
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  2659
     * - decoding: Set by user.
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  2660
     */
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  2661
     int bits_per_coded_sample;
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  2662
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  2663
    /**
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  2664
     * Bits per sample/pixel of internal libavcodec pixel/sample format.
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  2665
     * - encoding: set by user.
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  2666
     * - decoding: set by libavcodec.
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  2667
     */
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  2668
    int bits_per_raw_sample;
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  2669
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  2670
    /**
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  2671
     * low resolution decoding, 1-> 1/2 size, 2->1/4 size
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  2672
     * - encoding: unused
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  2673
     * - decoding: Set by user.
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  2674
     */
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  2675
    attribute_deprecated int lowres;
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  2676
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  2677
    /**
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  2678
     * the picture in the bitstream
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  2679
     * - encoding: Set by libavcodec.
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  2680
     * - decoding: Set by libavcodec.
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  2681
     */
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  2682
    AVFrame *coded_frame;
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  2683
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  2684
    /**
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  2685
     * thread count
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  2686
     * is used to decide how many independent tasks should be passed to execute()
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  2687
     * - encoding: Set by user.
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  2688
     * - decoding: Set by user.
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  2689
     */
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  2690
    int thread_count;
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  2691
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  2692
    /**
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  2693
     * Which multithreading methods to use.
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  2694
     * Use of FF_THREAD_FRAME will increase decoding delay by one frame per thread,
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  2695
     * so clients which cannot provide future frames should not use it.
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  2696
     *
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  2697
     * - encoding: Set by user, otherwise the default is used.
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  2698
     * - decoding: Set by user, otherwise the default is used.
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  2699
     */
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  2700
    int thread_type;
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  2701
#define FF_THREAD_FRAME   1 ///< Decode more than one frame at once
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  2702
#define FF_THREAD_SLICE   2 ///< Decode more than one part of a single frame at once
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  2703
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  2704
    /**
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  2705
     * Which multithreading methods are in use by the codec.
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  2706
     * - encoding: Set by libavcodec.
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  2707
     * - decoding: Set by libavcodec.
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  2708
     */
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  2709
    int active_thread_type;
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  2710
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  2711
    /**
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  2712
     * Set by the client if its custom get_buffer() callback can be called
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  2713
     * synchronously from another thread, which allows faster multithreaded decoding.
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  2714
     * draw_horiz_band() will be called from other threads regardless of this setting.
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  2715
     * Ignored if the default get_buffer() is used.
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  2716
     * - encoding: Set by user.
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  2717
     * - decoding: Set by user.
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  2718
     */
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  2719
    int thread_safe_callbacks;
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  2720
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  2721
    /**
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  2722
     * The codec may call this to execute several independent things.
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  2723
     * It will return only after finishing all tasks.
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  2724
     * The user may replace this with some multithreaded implementation,
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  2725
     * the default implementation will execute the parts serially.
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  2726
     * @param count the number of things to execute
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  2727
     * - encoding: Set by libavcodec, user can override.
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  2728
     * - decoding: Set by libavcodec, user can override.
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  2729
     */
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  2730
    int (*execute)(struct AVCodecContext *c, int (*func)(struct AVCodecContext *c2, void *arg), void *arg2, int *ret, int count, int size);
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  2731
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  2732
    /**
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  2733
     * The codec may call this to execute several independent things.
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  2734
     * It will return only after finishing all tasks.
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  2735
     * The user may replace this with some multithreaded implementation,
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  2736
     * the default implementation will execute the parts serially.
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  2737
     * Also see avcodec_thread_init and e.g. the --enable-pthread configure option.
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  2738
     * @param c context passed also to func
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  2739
     * @param count the number of things to execute
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  2740
     * @param arg2 argument passed unchanged to func
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  2741
     * @param ret return values of executed functions, must have space for "count" values. May be NULL.
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  2742
     * @param func function that will be called count times, with jobnr from 0 to count-1.
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  2743
     *             threadnr will be in the range 0 to c->thread_count-1 < MAX_THREADS and so that no
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  2744
     *             two instances of func executing at the same time will have the same threadnr.
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  2745
     * @return always 0 currently, but code should handle a future improvement where when any call to func
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  2746
     *         returns < 0 no further calls to func may be done and < 0 is returned.
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  2747
     * - encoding: Set by libavcodec, user can override.
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  2748
     * - decoding: Set by libavcodec, user can override.
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  2749
     */
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  2750
    int (*execute2)(struct AVCodecContext *c, int (*func)(struct AVCodecContext *c2, void *arg, int jobnr, int threadnr), void *arg2, int *ret, int count);
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  2751
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  2752
    /**
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  2753
     * thread opaque
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  2754
     * Can be used by execute() to store some per AVCodecContext stuff.
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  2755
     * - encoding: set by execute()
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  2756
     * - decoding: set by execute()
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  2757
     */
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  2758
    void *thread_opaque;
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  2759
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  2760
    /**
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  2761
     * noise vs. sse weight for the nsse comparsion function
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  2762
     * - encoding: Set by user.
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  2763
     * - decoding: unused
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  2764
     */
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  2765
     int nsse_weight;
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  2766
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  2767
    /**
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  2768
     * profile
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  2769
     * - encoding: Set by user.
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  2770
     * - decoding: Set by libavcodec.
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  2771
     */
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  2772
     int profile;
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  2773
#define FF_PROFILE_UNKNOWN -99
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  2774
#define FF_PROFILE_RESERVED -100
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  2775
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  2776
#define FF_PROFILE_AAC_MAIN 0
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  2777
#define FF_PROFILE_AAC_LOW  1
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  2778
#define FF_PROFILE_AAC_SSR  2
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  2779
#define FF_PROFILE_AAC_LTP  3
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  2780
#define FF_PROFILE_AAC_HE   4
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  2781
#define FF_PROFILE_AAC_HE_V2 28
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  2782
#define FF_PROFILE_AAC_LD   22
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  2783
#define FF_PROFILE_AAC_ELD  38
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  2784
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  2785
#define FF_PROFILE_DTS         20
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  2786
#define FF_PROFILE_DTS_ES      30
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  2787
#define FF_PROFILE_DTS_96_24   40
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  2788
#define FF_PROFILE_DTS_HD_HRA  50
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  2789
#define FF_PROFILE_DTS_HD_MA   60
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  2790
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  2791
#define FF_PROFILE_MPEG2_422    0
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  2792
#define FF_PROFILE_MPEG2_HIGH   1
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  2793
#define FF_PROFILE_MPEG2_SS     2
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  2794
#define FF_PROFILE_MPEG2_SNR_SCALABLE  3
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  2795
#define FF_PROFILE_MPEG2_MAIN   4
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  2796
#define FF_PROFILE_MPEG2_SIMPLE 5
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  2797
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  2798
#define FF_PROFILE_H264_CONSTRAINED  (1<<9)  // 8+1; constraint_set1_flag
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  2799
#define FF_PROFILE_H264_INTRA        (1<<11) // 8+3; constraint_set3_flag
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  2800
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  2801
#define FF_PROFILE_H264_BASELINE             66
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  2802
#define FF_PROFILE_H264_CONSTRAINED_BASELINE (66|FF_PROFILE_H264_CONSTRAINED)
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  2803
#define FF_PROFILE_H264_MAIN                 77
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  2804
#define FF_PROFILE_H264_EXTENDED             88
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  2805
#define FF_PROFILE_H264_HIGH                 100
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  2806
#define FF_PROFILE_H264_HIGH_10              110
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  2807
#define FF_PROFILE_H264_HIGH_10_INTRA        (110|FF_PROFILE_H264_INTRA)
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  2808
#define FF_PROFILE_H264_HIGH_422             122
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  2809
#define FF_PROFILE_H264_HIGH_422_INTRA       (122|FF_PROFILE_H264_INTRA)
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  2810
#define FF_PROFILE_H264_HIGH_444             144
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  2811
#define FF_PROFILE_H264_HIGH_444_PREDICTIVE  244
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  2812
#define FF_PROFILE_H264_HIGH_444_INTRA       (244|FF_PROFILE_H264_INTRA)
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  2813
#define FF_PROFILE_H264_CAVLC_444            44
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  2814
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  2815
#define FF_PROFILE_VC1_SIMPLE   0
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  2816
#define FF_PROFILE_VC1_MAIN     1
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  2817
#define FF_PROFILE_VC1_COMPLEX  2
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  2818
#define FF_PROFILE_VC1_ADVANCED 3
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  2819
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  2820
#define FF_PROFILE_MPEG4_SIMPLE                     0
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  2821
#define FF_PROFILE_MPEG4_SIMPLE_SCALABLE            1
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  2822
#define FF_PROFILE_MPEG4_CORE                       2
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  2823
#define FF_PROFILE_MPEG4_MAIN                       3
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  2824
#define FF_PROFILE_MPEG4_N_BIT                      4
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  2825
#define FF_PROFILE_MPEG4_SCALABLE_TEXTURE           5
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  2826
#define FF_PROFILE_MPEG4_SIMPLE_FACE_ANIMATION      6
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  2827
#define FF_PROFILE_MPEG4_BASIC_ANIMATED_TEXTURE     7
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  2828
#define FF_PROFILE_MPEG4_HYBRID                     8
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  2829
#define FF_PROFILE_MPEG4_ADVANCED_REAL_TIME         9
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  2830
#define FF_PROFILE_MPEG4_CORE_SCALABLE             10
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  2831
#define FF_PROFILE_MPEG4_ADVANCED_CODING           11
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  2832
#define FF_PROFILE_MPEG4_ADVANCED_CORE             12
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  2833
#define FF_PROFILE_MPEG4_ADVANCED_SCALABLE_TEXTURE 13
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  2834
#define FF_PROFILE_MPEG4_SIMPLE_STUDIO             14
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  2835
#define FF_PROFILE_MPEG4_ADVANCED_SIMPLE           15
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  2836
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  2837
    /**
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  2838
     * level
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  2839
     * - encoding: Set by user.
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  2840
     * - decoding: Set by libavcodec.
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  2841
     */
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  2842
     int level;
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  2843
#define FF_LEVEL_UNKNOWN -99
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  2844
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  2845
    /**
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  2846
     *
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  2847
     * - encoding: unused
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  2848
     * - decoding: Set by user.
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  2849
     */
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  2850
    enum AVDiscard skip_loop_filter;
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  2851
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  2852
    /**
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  2853
     *
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  2854
     * - encoding: unused
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  2855
     * - decoding: Set by user.
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  2856
     */
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  2857
    enum AVDiscard skip_idct;
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  2858
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  2859
    /**
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  2860
     *
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  2861
     * - encoding: unused
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  2862
     * - decoding: Set by user.
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  2863
     */
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  2864
    enum AVDiscard skip_frame;
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  2865
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  2866
    /**
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  2867
     * Header containing style information for text subtitles.
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  2868
     * For SUBTITLE_ASS subtitle type, it should contain the whole ASS
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  2869
     * [Script Info] and [V4+ Styles] section, plus the [Events] line and
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  2870
     * the Format line following. It shouldn't include any Dialogue line.
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  2871
     * - encoding: Set/allocated/freed by user (before avcodec_open2())
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  2872
     * - decoding: Set/allocated/freed by libavcodec (by avcodec_open2())
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  2873
     */
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  2874
    uint8_t *subtitle_header;
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  2875
    int subtitle_header_size;
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  2876
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  2877
    /**
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  2878
     * Simulates errors in the bitstream to test error concealment.
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  2879
     * - encoding: Set by user.
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  2880
     * - decoding: unused
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  2881
     */
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  2882
    int error_rate;
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  2883
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  2884
    /**
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  2885
     * Current packet as passed into the decoder, to avoid having
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  2886
     * to pass the packet into every function. Currently only valid
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  2887
     * inside lavc and get/release_buffer callbacks.
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  2888
     * - decoding: set by avcodec_decode_*, read by get_buffer() for setting pkt_pts
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  2889
     * - encoding: unused
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  2890
     */
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  2891
    AVPacket *pkt;
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  2892
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  2893
    /**
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  2894
     * VBV delay coded in the last frame (in periods of a 27 MHz clock).
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  2895
     * Used for compliant TS muxing.
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  2896
     * - encoding: Set by libavcodec.
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  2897
     * - decoding: unused.
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  2898
     */
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  2899
    uint64_t vbv_delay;
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  2900
} AVCodecContext;
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  2901
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  2902
/**
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  2903
 * AVProfile.
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  2904
 */
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  2905
typedef struct AVProfile {
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  2906
    int profile;
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  2907
    const char *name; ///< short name for the profile
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  2908
} AVProfile;
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  2909
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  2910
typedef struct AVCodecDefault AVCodecDefault;
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  2911
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  2912
struct AVSubtitle;
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  2913
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  2914
/**
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  2915
 * AVCodec.
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  2916
 */
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  2917
typedef struct AVCodec {
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  2918
    /**
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  2919
     * Name of the codec implementation.
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  2920
     * The name is globally unique among encoders and among decoders (but an
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  2921
     * encoder and a decoder can share the same name).
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  2922
     * This is the primary way to find a codec from the user perspective.
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  2923
     */
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  2924
    const char *name;
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  2925
    /**
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  2926
     * Descriptive name for the codec, meant to be more human readable than name.
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  2927
     * You should use the NULL_IF_CONFIG_SMALL() macro to define it.
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  2928
     */
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  2929
    const char *long_name;
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  2930
    enum AVMediaType type;
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  2931
    enum AVCodecID id;
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  2932
    /**
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  2933
     * Codec capabilities.
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  2934
     * see CODEC_CAP_*
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  2935
     */
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  2936
    int capabilities;
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  2937
    const AVRational *supported_framerates; ///< array of supported framerates, or NULL if any, array is terminated by {0,0}
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  2938
    const enum AVPixelFormat *pix_fmts;     ///< array of supported pixel formats, or NULL if unknown, array is terminated by -1
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  2939
    const int *supported_samplerates;       ///< array of supported audio samplerates, or NULL if unknown, array is terminated by 0
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  2940
    const enum AVSampleFormat *sample_fmts; ///< array of supported sample formats, or NULL if unknown, array is terminated by -1
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  2941
    const uint64_t *channel_layouts;         ///< array of support channel layouts, or NULL if unknown. array is terminated by 0
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  2942
    attribute_deprecated uint8_t max_lowres; ///< maximum value for lowres supported by the decoder
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  2943
    const AVClass *priv_class;              ///< AVClass for the private context
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  2944
    const AVProfile *profiles;              ///< array of recognized profiles, or NULL if unknown, array is terminated by {FF_PROFILE_UNKNOWN}
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  2945
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  2946
    /*****************************************************************
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  2947
     * 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
  2948
     * may not be used outside of libavcodec and can be changed and
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  2949
     * removed at will.
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  2950
     * New public fields should be added right above.
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  2951
     *****************************************************************
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  2952
     */
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  2953
    int priv_data_size;
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  2954
    struct AVCodec *next;
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  2955
    /**
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  2956
     * @name Frame-level threading support functions
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  2957
     * @{
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  2958
     */
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  2959
    /**
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  2960
     * If defined, called on thread contexts when they are created.
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  2961
     * If the codec allocates writable tables in init(), re-allocate them here.
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  2962
     * priv_data will be set to a copy of the original.
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  2963
     */
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  2964
    int (*init_thread_copy)(AVCodecContext *);
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  2965
    /**
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  2966
     * Copy necessary context variables from a previous thread context to the current one.
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  2967
     * If not defined, the next thread will start automatically; otherwise, the codec
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  2968
     * must call ff_thread_finish_setup().
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  2969
     *
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  2970
     * dst and src will (rarely) point to the same context, in which case memcpy should be skipped.
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  2971
     */
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  2972
    int (*update_thread_context)(AVCodecContext *dst, const AVCodecContext *src);
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  2973
    /** @} */
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  2974
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  2975
    /**
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  2976
     * Private codec-specific defaults.
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  2977
     */
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  2978
    const AVCodecDefault *defaults;
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  2979
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  2980
    /**
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  2981
     * Initialize codec static data, called from avcodec_register().
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  2982
     */
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  2983
    void (*init_static_data)(struct AVCodec *codec);
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  2984
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  2985
    int (*init)(AVCodecContext *);
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  2986
    int (*encode_sub)(AVCodecContext *, uint8_t *buf, int buf_size,
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  2987
                      const struct AVSubtitle *sub);
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  2988
    /**
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  2989
     * Encode data to an AVPacket.
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  2990
     *
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  2991
     * @param      avctx          codec context
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  2992
     * @param      avpkt          output AVPacket (may contain a user-provided buffer)
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  2993
     * @param[in]  frame          AVFrame containing the raw data to be encoded
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  2994
     * @param[out] got_packet_ptr encoder sets to 0 or 1 to indicate that a
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  2995
     *                            non-empty packet was returned in avpkt.
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  2996
     * @return 0 on success, negative error code on failure
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  2997
     */
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  2998
    int (*encode2)(AVCodecContext *avctx, AVPacket *avpkt, const AVFrame *frame,
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  2999
                   int *got_packet_ptr);
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  3000
    int (*decode)(AVCodecContext *, void *outdata, int *outdata_size, AVPacket *avpkt);
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  3001
    int (*close)(AVCodecContext *);
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  3002
    /**
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  3003
     * Flush buffers.
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  3004
     * Will be called when seeking
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  3005
     */
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  3006
    void (*flush)(AVCodecContext *);
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  3007
} AVCodec;
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  3008
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  3009
/**
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  3010
 * AVHWAccel.
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  3011
 */
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  3012
typedef struct AVHWAccel {
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  3013
    /**
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  3014
     * Name of the hardware accelerated codec.
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  3015
     * The name is globally unique among encoders and among decoders (but an
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  3016
     * encoder and a decoder can share the same name).
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  3017
     */
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  3018
    const char *name;
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  3019
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  3020
    /**
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  3021
     * Type of codec implemented by the hardware accelerator.
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  3022
     *
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  3023
     * See AVMEDIA_TYPE_xxx
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  3024
     */
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  3025
    enum AVMediaType type;
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  3026
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  3027
    /**
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  3028
     * Codec implemented by the hardware accelerator.
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  3029
     *
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  3030
     * See AV_CODEC_ID_xxx
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  3031
     */
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  3032
    enum AVCodecID id;
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  3033
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  3034
    /**
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  3035
     * Supported pixel format.
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  3036
     *
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  3037
     * Only hardware accelerated formats are supported here.
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  3038
     */
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  3039
    enum AVPixelFormat pix_fmt;
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  3040
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  3041
    /**
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  3042
     * Hardware accelerated codec capabilities.
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  3043
     * see FF_HWACCEL_CODEC_CAP_*
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  3044
     */
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  3045
    int capabilities;
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  3046
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  3047
    struct AVHWAccel *next;
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  3048
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  3049
    /**
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  3050
     * Called at the beginning of each frame or field picture.
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  3051
     *
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  3052
     * Meaningful frame information (codec specific) is guaranteed to
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  3053
     * be parsed at this point. This function is mandatory.
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  3054
     *
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  3055
     * Note that buf can be NULL along with buf_size set to 0.
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  3056
     * Otherwise, this means the whole frame is available at this point.
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  3057
     *
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  3058
     * @param avctx the codec context
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  3059
     * @param buf the frame data buffer base
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  3060
     * @param buf_size the size of the frame in bytes
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  3061
     * @return zero if successful, a negative value otherwise
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  3062
     */
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  3063
    int (*start_frame)(AVCodecContext *avctx, const uint8_t *buf, uint32_t buf_size);
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  3064
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  3065
    /**
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  3066
     * Callback for each slice.
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  3067
     *
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  3068
     * Meaningful slice information (codec specific) is guaranteed to
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  3069
     * be parsed at this point. This function is mandatory.
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  3070
     *
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  3071
     * @param avctx the codec context
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  3072
     * @param buf the slice data buffer base
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  3073
     * @param buf_size the size of the slice in bytes
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  3074
     * @return zero if successful, a negative value otherwise
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  3075
     */
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  3076
    int (*decode_slice)(AVCodecContext *avctx, const uint8_t *buf, uint32_t buf_size);
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  3077
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  3078
    /**
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  3079
     * Called at the end of each frame or field picture.
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  3080
     *
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  3081
     * The whole picture is parsed at this point and can now be sent
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  3082
     * to the hardware accelerator. This function is mandatory.
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  3083
     *
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  3084
     * @param avctx the codec context
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  3085
     * @return zero if successful, a negative value otherwise
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  3086
     */
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  3087
    int (*end_frame)(AVCodecContext *avctx);
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  3088
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  3089
    /**
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  3090
     * Size of HW accelerator private data.
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  3091
     *
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  3092
     * Private data is allocated with av_mallocz() before
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  3093
     * AVCodecContext.get_buffer() and deallocated after
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  3094
     * AVCodecContext.release_buffer().
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  3095
     */
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  3096
    int priv_data_size;
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  3097
} AVHWAccel;
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  3098
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  3099
/**
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  3100
 * @defgroup lavc_picture AVPicture
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  3101
 *
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  3102
 * Functions for working with AVPicture
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  3103
 * @{
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  3104
 */
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  3105
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  3106
/**
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  3107
 * four components are given, that's all.
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  3108
 * the last component is alpha
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  3109
 */
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  3110
typedef struct AVPicture {
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  3111
    uint8_t *data[AV_NUM_DATA_POINTERS];
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  3112
    int linesize[AV_NUM_DATA_POINTERS];     ///< number of bytes per line
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  3113
} AVPicture;
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  3114
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  3115
/**
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  3116
 * @}
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  3117
 */
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  3118
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  3119
#define AVPALETTE_SIZE 1024
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  3120
#define AVPALETTE_COUNT 256
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  3121
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  3122
enum AVSubtitleType {
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  3123
    SUBTITLE_NONE,
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  3124
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  3125
    SUBTITLE_BITMAP,                ///< A bitmap, pict will be set
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  3126
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  3127
    /**
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  3128
     * Plain text, the text field must be set by the decoder and is
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  3129
     * authoritative. ass and pict fields may contain approximations.
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  3130
     */
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  3131
    SUBTITLE_TEXT,
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  3132
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  3133
    /**
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  3134
     * Formatted text, the ass field must be set by the decoder and is
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  3135
     * authoritative. pict and text fields may contain approximations.
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  3136
     */
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  3137
    SUBTITLE_ASS,
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  3138
};
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  3139
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  3140
typedef struct AVSubtitleRect {
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  3141
    int x;         ///< top left corner  of pict, undefined when pict is not set
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  3142
    int y;         ///< top left corner  of pict, undefined when pict is not set
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  3143
    int w;         ///< width            of pict, undefined when pict is not set
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  3144
    int h;         ///< height           of pict, undefined when pict is not set
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  3145
    int nb_colors; ///< number of colors in pict, undefined when pict is not set
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  3146
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  3147
    /**
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  3148
     * data+linesize for the bitmap of this subtitle.
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  3149
     * can be set for text/ass as well once they where rendered
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  3150
     */
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  3151
    AVPicture pict;
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  3152
    enum AVSubtitleType type;
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  3153
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  3154
    char *text;                     ///< 0 terminated plain UTF-8 text
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  3155
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  3156
    /**
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  3157
     * 0 terminated ASS/SSA compatible event line.
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  3158
     * The pressentation of this is unaffected by the other values in this
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  3159
     * struct.
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  3160
     */
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  3161
    char *ass;
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  3162
} AVSubtitleRect;
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  3163
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  3164
typedef struct AVSubtitle {
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  3165
    uint16_t format; /* 0 = graphics */
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  3166
    uint32_t start_display_time; /* relative to packet pts, in ms */
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  3167
    uint32_t end_display_time; /* relative to packet pts, in ms */
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  3168
    unsigned num_rects;
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  3169
    AVSubtitleRect **rects;
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  3170
    int64_t pts;    ///< Same as packet pts, in AV_TIME_BASE
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  3171
} AVSubtitle;
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  3172
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  3173
/**
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  3174
 * If c is NULL, returns the first registered codec,
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  3175
 * if c is non-NULL, returns the next registered codec after c,
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  3176
 * or NULL if c is the last one.
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  3177
 */
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  3178
AVCodec *av_codec_next(const AVCodec *c);
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  3179
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  3180
/**
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  3181
 * Return the LIBAVCODEC_VERSION_INT constant.
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  3182
 */
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  3183
unsigned avcodec_version(void);
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  3184
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  3185
/**
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  3186
 * Return the libavcodec build-time configuration.
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  3187
 */
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  3188
const char *avcodec_configuration(void);
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  3189
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  3190
/**
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  3191
 * Return the libavcodec license.
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  3192
 */
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  3193
const char *avcodec_license(void);
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  3194
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  3195
/**
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  3196
 * Register the codec codec and initialize libavcodec.
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  3197
 *
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  3198
 * @warning either this function or avcodec_register_all() must be called
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  3199
 * before any other libavcodec functions.
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  3200
 *
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  3201
 * @see avcodec_register_all()
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  3202
 */
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  3203
void avcodec_register(AVCodec *codec);
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  3204
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  3205
/**
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  3206
 * Register all the codecs, parsers and bitstream filters which were enabled at
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  3207
 * configuration time. If you do not call this function you can select exactly
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  3208
 * which formats you want to support, by using the individual registration
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  3209
 * functions.
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  3210
 *
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  3211
 * @see avcodec_register
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  3212
 * @see av_register_codec_parser
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  3213
 * @see av_register_bitstream_filter
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  3214
 */
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  3215
void avcodec_register_all(void);
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  3216
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  3217
/**
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  3218
 * Allocate an AVCodecContext and set its fields to default values.  The
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  3219
 * resulting struct can be deallocated by calling avcodec_close() on it followed
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  3220
 * by av_free().
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  3221
 *
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  3222
 * @param codec if non-NULL, allocate private data and initialize defaults
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  3223
 *              for the given codec. It is illegal to then call avcodec_open2()
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  3224
 *              with a different codec.
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  3225
 *              If NULL, then the codec-specific defaults won't be initialized,
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  3226
 *              which may result in suboptimal default settings (this is
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  3227
 *              important mainly for encoders, e.g. libx264).
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  3228
 *
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  3229
 * @return An AVCodecContext filled with default values or NULL on failure.
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  3230
 * @see avcodec_get_context_defaults
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  3231
 */
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  3232
AVCodecContext *avcodec_alloc_context3(const AVCodec *codec);
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  3233
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  3234
/**
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  3235
 * Set the fields of the given AVCodecContext to default values corresponding
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  3236
 * to the given codec (defaults may be codec-dependent).
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  3237
 *
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  3238
 * Do not call this function if a non-NULL codec has been passed
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  3239
 * to avcodec_alloc_context3() that allocated this AVCodecContext.
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  3240
 * If codec is non-NULL, it is illegal to call avcodec_open2() with a
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  3241
 * different codec on this AVCodecContext.
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  3242
 */
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  3243
int avcodec_get_context_defaults3(AVCodecContext *s, const AVCodec *codec);
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  3244
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  3245
/**
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  3246
 * Get the AVClass for AVCodecContext. It can be used in combination with
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  3247
 * AV_OPT_SEARCH_FAKE_OBJ for examining options.
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  3248
 *
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  3249
 * @see av_opt_find().
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  3250
 */
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  3251
const AVClass *avcodec_get_class(void);
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  3252
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  3253
/**
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  3254
 * Copy the settings of the source AVCodecContext into the destination
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  3255
 * AVCodecContext. The resulting destination codec context will be
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  3256
 * unopened, i.e. you are required to call avcodec_open2() before you
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  3257
 * can use this AVCodecContext to decode/encode video/audio data.
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  3258
 *
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  3259
 * @param dest target codec context, should be initialized with
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  3260
 *             avcodec_alloc_context3(), but otherwise uninitialized
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  3261
 * @param src source codec context
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  3262
 * @return AVERROR() on error (e.g. memory allocation error), 0 on success
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  3263
 */
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  3264
int avcodec_copy_context(AVCodecContext *dest, const AVCodecContext *src);
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  3265
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  3266
/**
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  3267
 * Allocate an AVFrame and set its fields to default values.  The resulting
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  3268
 * struct must be freed using avcodec_free_frame().
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  3269
 *
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  3270
 * @return An AVFrame filled with default values or NULL on failure.
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  3271
 * @see avcodec_get_frame_defaults
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  3272
 */
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  3273
AVFrame *avcodec_alloc_frame(void);
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  3274
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  3275
/**
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  3276
 * Set the fields of the given AVFrame to default values.
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  3277
 *
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  3278
 * @param frame The AVFrame of which the fields should be set to default values.
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  3279
 */
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  3280
void avcodec_get_frame_defaults(AVFrame *frame);
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  3281
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  3282
/**
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  3283
 * Free the frame and any dynamically allocated objects in it,
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  3284
 * e.g. extended_data.
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  3285
 *
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  3286
 * @param frame frame to be freed. The pointer will be set to NULL.
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  3287
 *
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  3288
 * @warning this function does NOT free the data buffers themselves
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  3289
 * (it does not know how, since they might have been allocated with
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  3290
 *  a custom get_buffer()).
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  3291
 */
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  3292
void avcodec_free_frame(AVFrame **frame);
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  3293
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  3294
/**
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  3295
 * Initialize the AVCodecContext to use the given AVCodec. Prior to using this
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  3296
 * function the context has to be allocated with avcodec_alloc_context3().
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  3297
 *
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  3298
 * The functions avcodec_find_decoder_by_name(), avcodec_find_encoder_by_name(),
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  3299
 * avcodec_find_decoder() and avcodec_find_encoder() provide an easy way for
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  3300
 * retrieving a codec.
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  3301
 *
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  3302
 * @warning This function is not thread safe!
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  3303
 *
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  3304
 * @code
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  3305
 * avcodec_register_all();
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  3306
 * av_dict_set(&opts, "b", "2.5M", 0);
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  3307
 * codec = avcodec_find_decoder(AV_CODEC_ID_H264);
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  3308
 * if (!codec)
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  3309
 *     exit(1);
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  3310
 *
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  3311
 * context = avcodec_alloc_context3(codec);
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  3312
 *
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  3313
 * if (avcodec_open2(context, codec, opts) < 0)
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  3314
 *     exit(1);
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  3315
 * @endcode
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  3316
 *
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  3317
 * @param avctx The context to initialize.
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  3318
 * @param codec The codec to open this context for. If a non-NULL codec has been
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  3319
 *              previously passed to avcodec_alloc_context3() or
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  3320
 *              avcodec_get_context_defaults3() for this context, then this
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  3321
 *              parameter MUST be either NULL or equal to the previously passed
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  3322
 *              codec.
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  3323
 * @param options A dictionary filled with AVCodecContext and codec-private options.
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  3324
 *                On return this object will be filled with options that were not found.
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  3325
 *
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  3326
 * @return zero on success, a negative value on error
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  3327
 * @see avcodec_alloc_context3(), avcodec_find_decoder(), avcodec_find_encoder(),
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  3328
 *      av_dict_set(), av_opt_find().
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  3329
 */
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  3330
int avcodec_open2(AVCodecContext *avctx, const AVCodec *codec, AVDictionary **options);
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  3331
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  3332
/**
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  3333
 * Close a given AVCodecContext and free all the data associated with it
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  3334
 * (but not the AVCodecContext itself).
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  3335
 *
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  3336
 * Calling this function on an AVCodecContext that hasn't been opened will free
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  3337
 * the codec-specific data allocated in avcodec_alloc_context3() /
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  3338
 * avcodec_get_context_defaults3() with a non-NULL codec. Subsequent calls will
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  3339
 * do nothing.
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  3340
 */
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  3341
int avcodec_close(AVCodecContext *avctx);
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  3342
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  3343
/**
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  3344
 * Free all allocated data in the given subtitle struct.
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  3345
 *
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  3346
 * @param sub AVSubtitle to free.
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  3347
 */
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  3348
void avsubtitle_free(AVSubtitle *sub);
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  3349
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  3350
/**
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  3351
 * @}
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  3352
 */
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  3353
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  3354
/**
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  3355
 * @addtogroup lavc_packet
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  3356
 * @{
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  3357
 */
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  3358
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  3359
/**
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  3360
 * Default packet destructor.
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  3361
 */
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  3362
void av_destruct_packet(AVPacket *pkt);
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  3363
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  3364
/**
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  3365
 * Initialize optional fields of a packet with default values.
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  3366
 *
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  3367
 * Note, this does not touch the data and size members, which have to be
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  3368
 * initialized separately.
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  3369
 *
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  3370
 * @param pkt packet
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  3371
 */
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  3372
void av_init_packet(AVPacket *pkt);
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  3373
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  3374
/**
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  3375
 * Allocate the payload of a packet and initialize its fields with
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  3376
 * default values.
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  3377
 *
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  3378
 * @param pkt packet
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  3379
 * @param size wanted payload size
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  3380
 * @return 0 if OK, AVERROR_xxx otherwise
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  3381
 */
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  3382
int av_new_packet(AVPacket *pkt, int size);
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  3383
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  3384
/**
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  3385
 * Reduce packet size, correctly zeroing padding
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  3386
 *
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  3387
 * @param pkt packet
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  3388
 * @param size new size
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  3389
 */
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  3390
void av_shrink_packet(AVPacket *pkt, int size);
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  3391
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  3392
/**
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  3393
 * Increase packet size, correctly zeroing padding
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  3394
 *
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  3395
 * @param pkt packet
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  3396
 * @param grow_by number of bytes by which to increase the size of the packet
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  3397
 */
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  3398
int av_grow_packet(AVPacket *pkt, int grow_by);
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  3399
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  3400
/**
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  3401
 * @warning This is a hack - the packet memory allocation stuff is broken. The
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  3402
 * packet is allocated if it was not really allocated.
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  3403
 */
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  3404
int av_dup_packet(AVPacket *pkt);
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  3405
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  3406
/**
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  3407
 * Free a packet.
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  3408
 *
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  3409
 * @param pkt packet to free
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  3410
 */
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  3411
void av_free_packet(AVPacket *pkt);
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  3412
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  3413
/**
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  3414
 * Allocate new information of a packet.
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  3415
 *
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  3416
 * @param pkt packet
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  3417
 * @param type side information type
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  3418
 * @param size side information size
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  3419
 * @return pointer to fresh allocated data or NULL otherwise
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  3420
 */
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  3421
uint8_t* av_packet_new_side_data(AVPacket *pkt, enum AVPacketSideDataType type,
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  3422
                                 int size);
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  3423
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  3424
/**
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  3425
 * Shrink the already allocated side data buffer
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  3426
 *
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  3427
 * @param pkt packet
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  3428
 * @param type side information type
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  3429
 * @param size new side information size
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  3430
 * @return 0 on success, < 0 on failure
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  3431
 */
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  3432
int av_packet_shrink_side_data(AVPacket *pkt, enum AVPacketSideDataType type,
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  3433
                               int size);
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  3434
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  3435
/**
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  3436
 * Get side information from packet.
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  3437
 *
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  3438
 * @param pkt packet
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  3439
 * @param type desired side information type
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  3440
 * @param size pointer for side information size to store (optional)
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  3441
 * @return pointer to data if present or NULL otherwise
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  3442
 */
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  3443
uint8_t* av_packet_get_side_data(AVPacket *pkt, enum AVPacketSideDataType type,
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  3444
                                 int *size);
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  3445
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  3446
/**
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  3447
 * @}
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  3448
 */
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  3449
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  3450
/**
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  3451
 * @addtogroup lavc_decoding
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  3452
 * @{
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  3453
 */
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  3454
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  3455
/**
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  3456
 * Find a registered decoder with a matching codec ID.
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  3457
 *
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  3458
 * @param id AVCodecID of the requested decoder
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  3459
 * @return A decoder if one was found, NULL otherwise.
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  3460
 */
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  3461
AVCodec *avcodec_find_decoder(enum AVCodecID id);
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  3462
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  3463
/**
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  3464
 * Find a registered decoder with the specified name.
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  3465
 *
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  3466
 * @param name name of the requested decoder
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  3467
 * @return A decoder if one was found, NULL otherwise.
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  3468
 */
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  3469
AVCodec *avcodec_find_decoder_by_name(const char *name);
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  3470
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  3471
int avcodec_default_get_buffer(AVCodecContext *s, AVFrame *pic);
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  3472
void avcodec_default_release_buffer(AVCodecContext *s, AVFrame *pic);
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  3473
int avcodec_default_reget_buffer(AVCodecContext *s, AVFrame *pic);
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  3474
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  3475
/**
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  3476
 * Return the amount of padding in pixels which the get_buffer callback must
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  3477
 * provide around the edge of the image for codecs which do not have the
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  3478
 * CODEC_FLAG_EMU_EDGE flag.
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  3479
 *
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  3480
 * @return Required padding in pixels.
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  3481
 */
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  3482
unsigned avcodec_get_edge_width(void);
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  3483
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  3484
/**
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  3485
 * Modify width and height values so that they will result in a memory
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  3486
 * buffer that is acceptable for the codec if you do not use any horizontal
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  3487
 * padding.
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  3488
 *
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  3489
 * May only be used if a codec with CODEC_CAP_DR1 has been opened.
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  3490
 * If CODEC_FLAG_EMU_EDGE is not set, the dimensions must have been increased
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  3491
 * according to avcodec_get_edge_width() before.
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  3492
 */
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  3493
void avcodec_align_dimensions(AVCodecContext *s, int *width, int *height);
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  3494
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  3495
/**
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  3496
 * Modify width and height values so that they will result in a memory
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  3497
 * buffer that is acceptable for the codec if you also ensure that all
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  3498
 * line sizes are a multiple of the respective linesize_align[i].
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  3499
 *
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  3500
 * May only be used if a codec with CODEC_CAP_DR1 has been opened.
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  3501
 * If CODEC_FLAG_EMU_EDGE is not set, the dimensions must have been increased
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  3502
 * according to avcodec_get_edge_width() before.
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  3503
 */
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  3504
void avcodec_align_dimensions2(AVCodecContext *s, int *width, int *height,
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  3505
                               int linesize_align[AV_NUM_DATA_POINTERS]);
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  3506
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  3507
#if FF_API_OLD_DECODE_AUDIO
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  3508
/**
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  3509
 * Wrapper function which calls avcodec_decode_audio4.
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  3510
 *
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  3511
 * @deprecated Use avcodec_decode_audio4 instead.
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  3512
 *
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  3513
 * Decode the audio frame of size avpkt->size from avpkt->data into samples.
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  3514
 * Some decoders may support multiple frames in a single AVPacket, such
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  3515
 * decoders would then just decode the first frame. In this case,
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  3516
 * avcodec_decode_audio3 has to be called again with an AVPacket that contains
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  3517
 * the remaining data in order to decode the second frame etc.
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  3518
 * If no frame
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  3519
 * could be outputted, frame_size_ptr is zero. Otherwise, it is the
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  3520
 * decompressed frame size in bytes.
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  3521
 *
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  3522
 * @warning You must set frame_size_ptr to the allocated size of the
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  3523
 * output buffer before calling avcodec_decode_audio3().
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  3524
 *
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  3525
 * @warning The input buffer must be FF_INPUT_BUFFER_PADDING_SIZE larger than
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  3526
 * the actual read bytes because some optimized bitstream readers read 32 or 64
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  3527
 * bits at once and could read over the end.
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  3528
 *
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  3529
 * @warning The end of the input buffer avpkt->data should be set to 0 to ensure that
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  3530
 * no overreading happens for damaged MPEG streams.
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  3531
 *
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  3532
 * @warning You must not provide a custom get_buffer() when using
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  3533
 * avcodec_decode_audio3().  Doing so will override it with
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  3534
 * avcodec_default_get_buffer.  Use avcodec_decode_audio4() instead,
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  3535
 * which does allow the application to provide a custom get_buffer().
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  3536
 *
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  3537
 * @note You might have to align the input buffer avpkt->data and output buffer
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  3538
 * samples. The alignment requirements depend on the CPU: On some CPUs it isn't
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  3539
 * necessary at all, on others it won't work at all if not aligned and on others
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  3540
 * it will work but it will have an impact on performance.
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  3541
 *
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  3542
 * In practice, avpkt->data should have 4 byte alignment at minimum and
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  3543
 * samples should be 16 byte aligned unless the CPU doesn't need it
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  3544
 * (AltiVec and SSE do).
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  3545
 *
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  3546
 * @note Codecs which have the CODEC_CAP_DELAY capability set have a delay
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  3547
 * between input and output, these need to be fed with avpkt->data=NULL,
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  3548
 * avpkt->size=0 at the end to return the remaining frames.
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  3549
 *
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  3550
 * @param avctx the codec context
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  3551
 * @param[out] samples the output buffer, sample type in avctx->sample_fmt
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  3552
 *                     If the sample format is planar, each channel plane will
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  3553
 *                     be the same size, with no padding between channels.
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  3554
 * @param[in,out] frame_size_ptr the output buffer size in bytes
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  3555
 * @param[in] avpkt The input AVPacket containing the input buffer.
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  3556
 *            You can create such packet with av_init_packet() and by then setting
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  3557
 *            data and size, some decoders might in addition need other fields.
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  3558
 *            All decoders are designed to use the least fields possible though.
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  3559
 * @return On error a negative value is returned, otherwise the number of bytes
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  3560
 * used or zero if no frame data was decompressed (used) from the input AVPacket.
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  3561
 */
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  3562
attribute_deprecated int avcodec_decode_audio3(AVCodecContext *avctx, int16_t *samples,
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  3563
                         int *frame_size_ptr,
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  3564
                         AVPacket *avpkt);
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  3565
#endif
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  3566
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  3567
/**
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  3568
 * Decode the audio frame of size avpkt->size from avpkt->data into frame.
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  3569
 *
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  3570
 * Some decoders may support multiple frames in a single AVPacket. Such
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  3571
 * decoders would then just decode the first frame. In this case,
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  3572
 * avcodec_decode_audio4 has to be called again with an AVPacket containing
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  3573
 * the remaining data in order to decode the second frame, etc...
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  3574
 * Even if no frames are returned, the packet needs to be fed to the decoder
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  3575
 * with remaining data until it is completely consumed or an error occurs.
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  3576
 *
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  3577
 * @warning The input buffer, avpkt->data must be FF_INPUT_BUFFER_PADDING_SIZE
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  3578
 *          larger than the actual read bytes because some optimized bitstream
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  3579
 *          readers read 32 or 64 bits at once and could read over the end.
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  3580
 *
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  3581
 * @note You might have to align the input buffer. The alignment requirements
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  3582
 *       depend on the CPU and the decoder.
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  3583
 *
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  3584
 * @param      avctx the codec context
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  3585
 * @param[out] frame The AVFrame in which to store decoded audio samples.
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  3586
 *                   Decoders request a buffer of a particular size by setting
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  3587
 *                   AVFrame.nb_samples prior to calling get_buffer(). The
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  3588
 *                   decoder may, however, only utilize part of the buffer by
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  3589
 *                   setting AVFrame.nb_samples to a smaller value in the
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  3590
 *                   output frame.
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  3591
 * @param[out] got_frame_ptr Zero if no frame could be decoded, otherwise it is
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  3592
 *                           non-zero.
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  3593
 * @param[in]  avpkt The input AVPacket containing the input buffer.
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  3594
 *                   At least avpkt->data and avpkt->size should be set. Some
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  3595
 *                   decoders might also require additional fields to be set.
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  3596
 * @return A negative error code is returned if an error occurred during
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  3597
 *         decoding, otherwise the number of bytes consumed from the input
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  3598
 *         AVPacket is returned.
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  3599
 */
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  3600
int avcodec_decode_audio4(AVCodecContext *avctx, AVFrame *frame,
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  3601
                          int *got_frame_ptr, AVPacket *avpkt);
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  3602
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  3603
/**
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  3604
 * Decode the video frame of size avpkt->size from avpkt->data into picture.
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  3605
 * Some decoders may support multiple frames in a single AVPacket, such
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  3606
 * decoders would then just decode the first frame.
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  3607
 *
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  3608
 * @warning The input buffer must be FF_INPUT_BUFFER_PADDING_SIZE larger than
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  3609
 * the actual read bytes because some optimized bitstream readers read 32 or 64
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  3610
 * bits at once and could read over the end.
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  3611
 *
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  3612
 * @warning The end of the input buffer buf should be set to 0 to ensure that
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  3613
 * no overreading happens for damaged MPEG streams.
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  3614
 *
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  3615
 * @note You might have to align the input buffer avpkt->data.
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  3616
 * The alignment requirements depend on the CPU: on some CPUs it isn't
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  3617
 * necessary at all, on others it won't work at all if not aligned and on others
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  3618
 * it will work but it will have an impact on performance.
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  3619
 *
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  3620
 * In practice, avpkt->data should have 4 byte alignment at minimum.
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  3621
 *
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  3622
 * @note Codecs which have the CODEC_CAP_DELAY capability set have a delay
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  3623
 * between input and output, these need to be fed with avpkt->data=NULL,
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  3624
 * avpkt->size=0 at the end to return the remaining frames.
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  3625
 *
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  3626
 * @param avctx the codec context
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  3627
 * @param[out] picture The AVFrame in which the decoded video frame will be stored.
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  3628
 *             Use avcodec_alloc_frame to get an AVFrame, the codec will
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  3629
 *             allocate memory for the actual bitmap.
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  3630
 *             with default get/release_buffer(), the decoder frees/reuses the bitmap as it sees fit.
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  3631
 *             with overridden get/release_buffer() (needs CODEC_CAP_DR1) the user decides into what buffer the decoder
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  3632
 *                   decodes and the decoder tells the user once it does not need the data anymore,
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  3633
 *                   the user app can at this point free/reuse/keep the memory as it sees fit.
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  3634
 *
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  3635
 * @param[in] avpkt The input AVpacket containing the input buffer.
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  3636
 *            You can create such packet with av_init_packet() and by then setting
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  3637
 *            data and size, some decoders might in addition need other fields like
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  3638
 *            flags&AV_PKT_FLAG_KEY. All decoders are designed to use the least
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  3639
 *            fields possible.
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  3640
 * @param[in,out] got_picture_ptr Zero if no frame could be decompressed, otherwise, it is nonzero.
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  3641
 * @return On error a negative value is returned, otherwise the number of bytes
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  3642
 * used or zero if no frame could be decompressed.
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  3643
 */
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  3644
int avcodec_decode_video2(AVCodecContext *avctx, AVFrame *picture,
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  3645
                         int *got_picture_ptr,
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  3646
                         AVPacket *avpkt);
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  3647
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  3648
/**
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  3649
 * Decode a subtitle message.
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  3650
 * Return a negative value on error, otherwise return the number of bytes used.
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  3651
 * If no subtitle could be decompressed, got_sub_ptr is zero.
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  3652
 * Otherwise, the subtitle is stored in *sub.
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  3653
 * Note that CODEC_CAP_DR1 is not available for subtitle codecs. This is for
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  3654
 * simplicity, because the performance difference is expect to be negligible
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  3655
 * and reusing a get_buffer written for video codecs would probably perform badly
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  3656
 * due to a potentially very different allocation pattern.
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  3657
 *
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  3658
 * @param avctx the codec context
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  3659
 * @param[out] sub The AVSubtitle in which the decoded subtitle will be stored, must be
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  3660
                   freed with avsubtitle_free if *got_sub_ptr is set.
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  3661
 * @param[in,out] got_sub_ptr Zero if no subtitle could be decompressed, otherwise, it is nonzero.
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  3662
 * @param[in] avpkt The input AVPacket containing the input buffer.
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  3663
 */
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  3664
int avcodec_decode_subtitle2(AVCodecContext *avctx, AVSubtitle *sub,
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  3665
                            int *got_sub_ptr,
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  3666
                            AVPacket *avpkt);
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  3667
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  3668
/**
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  3669
 * @defgroup lavc_parsing Frame parsing
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  3670
 * @{
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  3671
 */
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  3672
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  3673
typedef struct AVCodecParserContext {
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  3674
    void *priv_data;
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  3675
    struct AVCodecParser *parser;
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  3676
    int64_t frame_offset; /* offset of the current frame */
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  3677
    int64_t cur_offset; /* current offset
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  3678
                           (incremented by each av_parser_parse()) */
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  3679
    int64_t next_frame_offset; /* offset of the next frame */
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  3680
    /* video info */
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  3681
    int pict_type; /* XXX: Put it back in AVCodecContext. */
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  3682
    /**
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  3683
     * This field is used for proper frame duration computation in lavf.
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  3684
     * It signals, how much longer the frame duration of the current frame
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  3685
     * is compared to normal frame duration.
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  3686
     *
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  3687
     * frame_duration = (1 + repeat_pict) * time_base
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  3688
     *
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  3689
     * It is used by codecs like H.264 to display telecined material.
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  3690
     */
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  3691
    int repeat_pict; /* XXX: Put it back in AVCodecContext. */
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  3692
    int64_t pts;     /* pts of the current frame */
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  3693
    int64_t dts;     /* dts of the current frame */
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  3694
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  3695
    /* private data */
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  3696
    int64_t last_pts;
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  3697
    int64_t last_dts;
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  3698
    int fetch_timestamp;
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  3699
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  3700
#define AV_PARSER_PTS_NB 4
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  3701
    int cur_frame_start_index;
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  3702
    int64_t cur_frame_offset[AV_PARSER_PTS_NB];
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  3703
    int64_t cur_frame_pts[AV_PARSER_PTS_NB];
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  3704
    int64_t cur_frame_dts[AV_PARSER_PTS_NB];
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  3705
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  3706
    int flags;
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  3707
#define PARSER_FLAG_COMPLETE_FRAMES           0x0001
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  3708
#define PARSER_FLAG_ONCE                      0x0002
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  3709
/// Set if the parser has a valid file offset
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  3710
#define PARSER_FLAG_FETCHED_OFFSET            0x0004
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  3711
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  3712
    int64_t offset;      ///< byte offset from starting packet start
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  3713
    int64_t cur_frame_end[AV_PARSER_PTS_NB];
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  3714
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  3715
    /**
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  3716
     * Set by parser to 1 for key frames and 0 for non-key frames.
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  3717
     * It is initialized to -1, so if the parser doesn't set this flag,
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  3718
     * old-style fallback using AV_PICTURE_TYPE_I picture type as key frames
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  3719
     * will be used.
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  3720
     */
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  3721
    int key_frame;
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  3722
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  3723
    /**
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  3724
     * Time difference in stream time base units from the pts of this
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  3725
     * packet to the point at which the output from the decoder has converged
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  3726
     * independent from the availability of previous frames. That is, the
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  3727
     * frames are virtually identical no matter if decoding started from
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  3728
     * the very first frame or from this keyframe.
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  3729
     * Is AV_NOPTS_VALUE if unknown.
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  3730
     * This field is not the display duration of the current frame.
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  3731
     * This field has no meaning if the packet does not have AV_PKT_FLAG_KEY
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  3732
     * set.
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  3733
     *
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  3734
     * The purpose of this field is to allow seeking in streams that have no
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  3735
     * keyframes in the conventional sense. It corresponds to the
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  3736
     * recovery point SEI in H.264 and match_time_delta in NUT. It is also
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  3737
     * essential for some types of subtitle streams to ensure that all
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  3738
     * subtitles are correctly displayed after seeking.
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  3739
     */
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  3740
    int64_t convergence_duration;
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  3741
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  3742
    // Timestamp generation support:
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  3743
    /**
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  3744
     * Synchronization point for start of timestamp generation.
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  3745
     *
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  3746
     * Set to >0 for sync point, 0 for no sync point and <0 for undefined
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  3747
     * (default).
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  3748
     *
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  3749
     * For example, this corresponds to presence of H.264 buffering period
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  3750
     * SEI message.
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  3751
     */
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  3752
    int dts_sync_point;
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  3753
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  3754
    /**
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  3755
     * Offset of the current timestamp against last timestamp sync point in
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  3756
     * units of AVCodecContext.time_base.
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  3757
     *
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  3758
     * Set to INT_MIN when dts_sync_point unused. Otherwise, it must
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  3759
     * contain a valid timestamp offset.
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  3760
     *
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  3761
     * Note that the timestamp of sync point has usually a nonzero
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  3762
     * dts_ref_dts_delta, which refers to the previous sync point. Offset of
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  3763
     * the next frame after timestamp sync point will be usually 1.
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  3764
     *
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  3765
     * For example, this corresponds to H.264 cpb_removal_delay.
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  3766
     */
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  3767
    int dts_ref_dts_delta;
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  3768
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  3769
    /**
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  3770
     * Presentation delay of current frame in units of AVCodecContext.time_base.
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  3771
     *
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  3772
     * Set to INT_MIN when dts_sync_point unused. Otherwise, it must
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  3773
     * contain valid non-negative timestamp delta (presentation time of a frame
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  3774
     * must not lie in the past).
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  3775
     *
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  3776
     * This delay represents the difference between decoding and presentation
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  3777
     * time of the frame.
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  3778
     *
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  3779
     * For example, this corresponds to H.264 dpb_output_delay.
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  3780
     */
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  3781
    int pts_dts_delta;
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  3782
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  3783
    /**
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  3784
     * Position of the packet in file.
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  3785
     *
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  3786
     * Analogous to cur_frame_pts/dts
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  3787
     */
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  3788
    int64_t cur_frame_pos[AV_PARSER_PTS_NB];
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  3789
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  3790
    /**
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  3791
     * Byte position of currently parsed frame in stream.
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  3792
     */
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  3793
    int64_t pos;
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  3794
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  3795
    /**
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  3796
     * Previous frame byte position.
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  3797
     */
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  3798
    int64_t last_pos;
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  3799
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  3800
    /**
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  3801
     * Duration of the current frame.
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  3802
     * For audio, this is in units of 1 / AVCodecContext.sample_rate.
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  3803
     * For all other types, this is in units of AVCodecContext.time_base.
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  3804
     */
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  3805
    int duration;
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  3806
} AVCodecParserContext;
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  3807
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  3808
typedef struct AVCodecParser {
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  3809
    int codec_ids[5]; /* several codec IDs are permitted */
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  3810
    int priv_data_size;
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  3811
    int (*parser_init)(AVCodecParserContext *s);
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  3812
    int (*parser_parse)(AVCodecParserContext *s,
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  3813
                        AVCodecContext *avctx,
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  3814
                        const uint8_t **poutbuf, int *poutbuf_size,
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  3815
                        const uint8_t *buf, int buf_size);
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  3816
    void (*parser_close)(AVCodecParserContext *s);
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  3817
    int (*split)(AVCodecContext *avctx, const uint8_t *buf, int buf_size);
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  3818
    struct AVCodecParser *next;
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  3819
} AVCodecParser;
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  3820
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  3821
AVCodecParser *av_parser_next(AVCodecParser *c);
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  3822
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  3823
void av_register_codec_parser(AVCodecParser *parser);
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  3824
AVCodecParserContext *av_parser_init(int codec_id);
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  3825
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  3826
/**
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  3827
 * Parse a packet.
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  3828
 *
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  3829
 * @param s             parser context.
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  3830
 * @param avctx         codec context.
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  3831
 * @param poutbuf       set to pointer to parsed buffer or NULL if not yet finished.
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  3832
 * @param poutbuf_size  set to size of parsed buffer or zero if not yet finished.
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  3833
 * @param buf           input buffer.
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  3834
 * @param buf_size      input length, to signal EOF, this should be 0 (so that the last frame can be output).
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  3835
 * @param pts           input presentation timestamp.
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  3836
 * @param dts           input decoding timestamp.
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  3837
 * @param pos           input byte position in stream.
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  3838
 * @return the number of bytes of the input bitstream used.
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  3839
 *
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  3840
 * Example:
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  3841
 * @code
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  3842
 *   while(in_len){
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  3843
 *       len = av_parser_parse2(myparser, AVCodecContext, &data, &size,
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  3844
 *                                        in_data, in_len,
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  3845
 *                                        pts, dts, pos);
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  3846
 *       in_data += len;
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  3847
 *       in_len  -= len;
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  3848
 *
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  3849
 *       if(size)
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  3850
 *          decode_frame(data, size);
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  3851
 *   }
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  3852
 * @endcode
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  3853
 */
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  3854
int av_parser_parse2(AVCodecParserContext *s,
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  3855
                     AVCodecContext *avctx,
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  3856
                     uint8_t **poutbuf, int *poutbuf_size,
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  3857
                     const uint8_t *buf, int buf_size,
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  3858
                     int64_t pts, int64_t dts,
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  3859
                     int64_t pos);
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  3860
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  3861
int av_parser_change(AVCodecParserContext *s,
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  3862
                     AVCodecContext *avctx,
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  3863
                     uint8_t **poutbuf, int *poutbuf_size,
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  3864
                     const uint8_t *buf, int buf_size, int keyframe);
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  3865
void av_parser_close(AVCodecParserContext *s);
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  3866
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  3867
/**
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  3868
 * @}
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  3869
 * @}
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  3870
 */
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  3871
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  3872
/**
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  3873
 * @addtogroup lavc_encoding
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  3874
 * @{
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  3875
 */
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  3876
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  3877
/**
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  3878
 * Find a registered encoder with a matching codec ID.
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  3879
 *
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  3880
 * @param id AVCodecID of the requested encoder
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  3881
 * @return An encoder if one was found, NULL otherwise.
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  3882
 */
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  3883
AVCodec *avcodec_find_encoder(enum AVCodecID id);
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  3884
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  3885
/**
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  3886
 * Find a registered encoder with the specified name.
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  3887
 *
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  3888
 * @param name name of the requested encoder
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  3889
 * @return An encoder if one was found, NULL otherwise.
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  3890
 */
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  3891
AVCodec *avcodec_find_encoder_by_name(const char *name);
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  3892
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  3893
#if FF_API_OLD_ENCODE_AUDIO
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  3894
/**
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  3895
 * Encode an audio frame from samples into buf.
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  3896
 *
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  3897
 * @deprecated Use avcodec_encode_audio2 instead.
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  3898
 *
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  3899
 * @note The output buffer should be at least FF_MIN_BUFFER_SIZE bytes large.
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  3900
 * However, for codecs with avctx->frame_size equal to 0 (e.g. PCM) the user
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  3901
 * will know how much space is needed because it depends on the value passed
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  3902
 * in buf_size as described below. In that case a lower value can be used.
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  3903
 *
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  3904
 * @param avctx the codec context
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  3905
 * @param[out] buf the output buffer
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  3906
 * @param[in] buf_size the output buffer size
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  3907
 * @param[in] samples the input buffer containing the samples
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  3908
 * The number of samples read from this buffer is frame_size*channels,
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  3909
 * both of which are defined in avctx.
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  3910
 * For codecs which have avctx->frame_size equal to 0 (e.g. PCM) the number of
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  3911
 * samples read from samples is equal to:
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  3912
 * buf_size * 8 / (avctx->channels * av_get_bits_per_sample(avctx->codec_id))
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  3913
 * This also implies that av_get_bits_per_sample() must not return 0 for these
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  3914
 * codecs.
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  3915
 * @return On error a negative value is returned, on success zero or the number
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  3916
 * of bytes used to encode the data read from the input buffer.
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  3917
 */
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  3918
int attribute_deprecated avcodec_encode_audio(AVCodecContext *avctx,
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  3919
                                              uint8_t *buf, int buf_size,
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  3920
                                              const short *samples);
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  3921
#endif
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  3922
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  3923
/**
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  3924
 * Encode a frame of audio.
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  3925
 *
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  3926
 * Takes input samples from frame and writes the next output packet, if
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  3927
 * available, to avpkt. The output packet does not necessarily contain data for
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  3928
 * the most recent frame, as encoders can delay, split, and combine input frames
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  3929
 * internally as needed.
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  3930
 *
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  3931
 * @param avctx     codec context
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  3932
 * @param avpkt     output AVPacket.
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  3933
 *                  The user can supply an output buffer by setting
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  3934
 *                  avpkt->data and avpkt->size prior to calling the
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  3935
 *                  function, but if the size of the user-provided data is not
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  3936
 *                  large enough, encoding will fail. All other AVPacket fields
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  3937
 *                  will be reset by the encoder using av_init_packet(). If
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  3938
 *                  avpkt->data is NULL, the encoder will allocate it.
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  3939
 *                  The encoder will set avpkt->size to the size of the
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  3940
 *                  output packet.
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  3941
 *
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  3942
 *                  If this function fails or produces no output, avpkt will be
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  3943
 *                  freed using av_free_packet() (i.e. avpkt->destruct will be
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  3944
 *                  called to free the user supplied buffer).
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  3945
 * @param[in] frame AVFrame containing the raw audio data to be encoded.
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  3946
 *                  May be NULL when flushing an encoder that has the
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  3947
 *                  CODEC_CAP_DELAY capability set.
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  3948
 *                  If CODEC_CAP_VARIABLE_FRAME_SIZE is set, then each frame
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  3949
 *                  can have any number of samples.
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  3950
 *                  If it is not set, frame->nb_samples must be equal to
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  3951
 *                  avctx->frame_size for all frames except the last.
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  3952
 *                  The final frame may be smaller than avctx->frame_size.
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  3953
 * @param[out] got_packet_ptr This field is set to 1 by libavcodec if the
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  3954
 *                            output packet is non-empty, and to 0 if it is
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  3955
 *                            empty. If the function returns an error, the
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  3956
 *                            packet can be assumed to be invalid, and the
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  3957
 *                            value of got_packet_ptr is undefined and should
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  3958
 *                            not be used.
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  3959
 * @return          0 on success, negative error code on failure
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  3960
 */
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  3961
int avcodec_encode_audio2(AVCodecContext *avctx, AVPacket *avpkt,
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  3962
                          const AVFrame *frame, int *got_packet_ptr);
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  3963
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  3964
#if FF_API_OLD_ENCODE_VIDEO
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  3965
/**
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  3966
 * @deprecated use avcodec_encode_video2() instead.
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  3967
 *
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  3968
 * Encode a video frame from pict into buf.
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  3969
 * The input picture should be
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  3970
 * stored using a specific format, namely avctx.pix_fmt.
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  3971
 *
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  3972
 * @param avctx the codec context
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  3973
 * @param[out] buf the output buffer for the bitstream of encoded frame
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  3974
 * @param[in] buf_size the size of the output buffer in bytes
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  3975
 * @param[in] pict the input picture to encode
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  3976
 * @return On error a negative value is returned, on success zero or the number
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  3977
 * of bytes used from the output buffer.
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  3978
 */
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  3979
attribute_deprecated
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  3980
int avcodec_encode_video(AVCodecContext *avctx, uint8_t *buf, int buf_size,
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  3981
                         const AVFrame *pict);
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  3982
#endif
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  3983
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  3984
/**
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  3985
 * Encode a frame of video.
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  3986
 *
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  3987
 * Takes input raw video data from frame and writes the next output packet, if
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  3988
 * available, to avpkt. The output packet does not necessarily contain data for
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  3989
 * the most recent frame, as encoders can delay and reorder input frames
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  3990
 * internally as needed.
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  3991
 *
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  3992
 * @param avctx     codec context
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  3993
 * @param avpkt     output AVPacket.
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  3994
 *                  The user can supply an output buffer by setting
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  3995
 *                  avpkt->data and avpkt->size prior to calling the
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  3996
 *                  function, but if the size of the user-provided data is not
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  3997
 *                  large enough, encoding will fail. All other AVPacket fields
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  3998
 *                  will be reset by the encoder using av_init_packet(). If
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  3999
 *                  avpkt->data is NULL, the encoder will allocate it.
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  4000
 *                  The encoder will set avpkt->size to the size of the
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  4001
 *                  output packet. The returned data (if any) belongs to the
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  4002
 *                  caller, he is responsible for freeing it.
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  4003
 *
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  4004
 *                  If this function fails or produces no output, avpkt will be
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  4005
 *                  freed using av_free_packet() (i.e. avpkt->destruct will be
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  4006
 *                  called to free the user supplied buffer).
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  4007
 * @param[in] frame AVFrame containing the raw video data to be encoded.
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  4008
 *                  May be NULL when flushing an encoder that has the
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  4009
 *                  CODEC_CAP_DELAY capability set.
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  4010
 * @param[out] got_packet_ptr This field is set to 1 by libavcodec if the
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  4011
 *                            output packet is non-empty, and to 0 if it is
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  4012
 *                            empty. If the function returns an error, the
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  4013
 *                            packet can be assumed to be invalid, and the
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  4014
 *                            value of got_packet_ptr is undefined and should
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  4015
 *                            not be used.
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  4016
 * @return          0 on success, negative error code on failure
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  4017
 */
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  4018
int avcodec_encode_video2(AVCodecContext *avctx, AVPacket *avpkt,
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  4019
                          const AVFrame *frame, int *got_packet_ptr);
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  4020
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  4021
int avcodec_encode_subtitle(AVCodecContext *avctx, uint8_t *buf, int buf_size,
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  4022
                            const AVSubtitle *sub);
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  4023
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  4024
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  4025
/**
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  4026
 * @}
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  4027
 */
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  4028
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  4029
#if FF_API_AVCODEC_RESAMPLE
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  4030
/**
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  4031
 * @defgroup lavc_resample Audio resampling
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  4032
 * @ingroup libavc
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  4033
 * @deprecated use libavresample instead
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  4034
 *
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  4035
 * @{
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  4036
 */
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  4037
struct ReSampleContext;
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  4038
struct AVResampleContext;
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  4039
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  4040
typedef struct ReSampleContext ReSampleContext;
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  4041
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  4042
/**
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  4043
 *  Initialize audio resampling context.
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  4044
 *
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  4045
 * @param output_channels  number of output channels
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  4046
 * @param input_channels   number of input channels
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  4047
 * @param output_rate      output sample rate
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  4048
 * @param input_rate       input sample rate
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  4049
 * @param sample_fmt_out   requested output sample format
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  4050
 * @param sample_fmt_in    input sample format
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  4051
 * @param filter_length    length of each FIR filter in the filterbank relative to the cutoff frequency
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  4052
 * @param log2_phase_count log2 of the number of entries in the polyphase filterbank
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  4053
 * @param linear           if 1 then the used FIR filter will be linearly interpolated
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  4054
                           between the 2 closest, if 0 the closest will be used
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  4055
 * @param cutoff           cutoff frequency, 1.0 corresponds to half the output sampling rate
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  4056
 * @return allocated ReSampleContext, NULL if error occurred
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  4057
 */
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  4058
attribute_deprecated
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  4059
ReSampleContext *av_audio_resample_init(int output_channels, int input_channels,
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  4060
                                        int output_rate, int input_rate,
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  4061
                                        enum AVSampleFormat sample_fmt_out,
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  4062
                                        enum AVSampleFormat sample_fmt_in,
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  4063
                                        int filter_length, int log2_phase_count,
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  4064
                                        int linear, double cutoff);
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  4065
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  4066
attribute_deprecated
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  4067
int audio_resample(ReSampleContext *s, short *output, short *input, int nb_samples);
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  4068
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  4069
/**
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  4070
 * Free resample context.
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  4071
 *
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  4072
 * @param s a non-NULL pointer to a resample context previously
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  4073
 *          created with av_audio_resample_init()
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  4074
 */
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  4075
attribute_deprecated
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  4076
void audio_resample_close(ReSampleContext *s);
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  4077
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  4078
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  4079
/**
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  4080
 * Initialize an audio resampler.
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  4081
 * Note, if either rate is not an integer then simply scale both rates up so they are.
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  4082
 * @param filter_length length of each FIR filter in the filterbank relative to the cutoff freq
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  4083
 * @param log2_phase_count log2 of the number of entries in the polyphase filterbank
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  4084
 * @param linear If 1 then the used FIR filter will be linearly interpolated
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  4085
                 between the 2 closest, if 0 the closest will be used
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  4086
 * @param cutoff cutoff frequency, 1.0 corresponds to half the output sampling rate
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  4087
 */
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  4088
attribute_deprecated
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  4089
struct AVResampleContext *av_resample_init(int out_rate, int in_rate, int filter_length, int log2_phase_count, int linear, double cutoff);
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  4090
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  4091
/**
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  4092
 * Resample an array of samples using a previously configured context.
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  4093
 * @param src an array of unconsumed samples
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  4094
 * @param consumed the number of samples of src which have been consumed are returned here
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  4095
 * @param src_size the number of unconsumed samples available
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  4096
 * @param dst_size the amount of space in samples available in dst
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  4097
 * @param update_ctx If this is 0 then the context will not be modified, that way several channels can be resampled with the same context.
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  4098
 * @return the number of samples written in dst or -1 if an error occurred
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  4099
 */
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  4100
attribute_deprecated
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  4101
int av_resample(struct AVResampleContext *c, short *dst, short *src, int *consumed, int src_size, int dst_size, int update_ctx);
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  4102
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  4103
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  4104
/**
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  4105
 * Compensate samplerate/timestamp drift. The compensation is done by changing
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  4106
 * the resampler parameters, so no audible clicks or similar distortions occur
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  4107
 * @param compensation_distance distance in output samples over which the compensation should be performed
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  4108
 * @param sample_delta number of output samples which should be output less
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  4109
 *
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  4110
 * example: av_resample_compensate(c, 10, 500)
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  4111
 * here instead of 510 samples only 500 samples would be output
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  4112
 *
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  4113
 * note, due to rounding the actual compensation might be slightly different,
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  4114
 * especially if the compensation_distance is large and the in_rate used during init is small
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  4115
 */
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  4116
attribute_deprecated
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  4117
void av_resample_compensate(struct AVResampleContext *c, int sample_delta, int compensation_distance);
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  4118
attribute_deprecated
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  4119
void av_resample_close(struct AVResampleContext *c);
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  4120
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  4121
/**
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  4122
 * @}
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  4123
 */
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  4124
#endif
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  4125
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  4126
/**
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  4127
 * @addtogroup lavc_picture
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  4128
 * @{
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  4129
 */
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  4130
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  4131
/**
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  4132
 * Allocate memory for a picture.  Call avpicture_free() to free it.
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  4133
 *
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  4134
 * @see avpicture_fill()
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  4135
 *
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  4136
 * @param picture the picture to be filled in
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  4137
 * @param pix_fmt the format of the picture
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  4138
 * @param width the width of the picture
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  4139
 * @param height the height of the picture
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  4140
 * @return zero if successful, a negative value if not
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  4141
 */
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  4142
int avpicture_alloc(AVPicture *picture, enum AVPixelFormat pix_fmt, int width, int height);
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  4143
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  4144
/**
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  4145
 * Free a picture previously allocated by avpicture_alloc().
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  4146
 * The data buffer used by the AVPicture is freed, but the AVPicture structure
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  4147
 * itself is not.
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  4148
 *
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  4149
 * @param picture the AVPicture to be freed
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  4150
 */
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  4151
void avpicture_free(AVPicture *picture);
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  4152
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  4153
/**
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  4154
 * Fill in the AVPicture fields.
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  4155
 * The fields of the given AVPicture are filled in by using the 'ptr' address
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  4156
 * which points to the image data buffer. Depending on the specified picture
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  4157
 * format, one or multiple image data pointers and line sizes will be set.
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  4158
 * If a planar format is specified, several pointers will be set pointing to
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  4159
 * the different picture planes and the line sizes of the different planes
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  4160
 * will be stored in the lines_sizes array.
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  4161
 * Call with ptr == NULL to get the required size for the ptr buffer.
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  4162
 *
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  4163
 * To allocate the buffer and fill in the AVPicture fields in one call,
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  4164
 * use avpicture_alloc().
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  4165
 *
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  4166
 * @param picture AVPicture whose fields are to be filled in
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  4167
 * @param ptr Buffer which will contain or contains the actual image data
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  4168
 * @param pix_fmt The format in which the picture data is stored.
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  4169
 * @param width the width of the image in pixels
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  4170
 * @param height the height of the image in pixels
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  4171
 * @return size of the image data in bytes
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  4172
 */
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  4173
int avpicture_fill(AVPicture *picture, uint8_t *ptr,
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  4174
                   enum AVPixelFormat pix_fmt, int width, int height);
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  4175
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  4176
/**
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  4177
 * Copy pixel data from an AVPicture into a buffer.
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  4178
 * The data is stored compactly, without any gaps for alignment or padding
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  4179
 * which may be applied by avpicture_fill().
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  4180
 *
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  4181
 * @see avpicture_get_size()
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  4182
 *
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  4183
 * @param[in] src AVPicture containing image data
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  4184
 * @param[in] pix_fmt The format in which the picture data is stored.
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  4185
 * @param[in] width the width of the image in pixels.
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  4186
 * @param[in] height the height of the image in pixels.
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  4187
 * @param[out] dest A buffer into which picture data will be copied.
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  4188
 * @param[in] dest_size The size of 'dest'.
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  4189
 * @return The number of bytes written to dest, or a negative value (error code) on error.
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  4190
 */
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  4191
int avpicture_layout(const AVPicture* src, enum AVPixelFormat pix_fmt,
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  4192
                     int width, int height,
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  4193
                     unsigned char *dest, int dest_size);
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  4194
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  4195
/**
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  4196
 * Calculate the size in bytes that a picture of the given width and height
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  4197
 * would occupy if stored in the given picture format.
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  4198
 * Note that this returns the size of a compact representation as generated
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  4199
 * by avpicture_layout(), which can be smaller than the size required for e.g.
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  4200
 * avpicture_fill().
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  4201
 *
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  4202
 * @param pix_fmt the given picture format
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  4203
 * @param width the width of the image
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  4204
 * @param height the height of the image
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  4205
 * @return Image data size in bytes or -1 on error (e.g. too large dimensions).
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  4206
 */
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  4207
int avpicture_get_size(enum AVPixelFormat pix_fmt, int width, int height);
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  4208
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  4209
/**
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  4210
 *  deinterlace - if not supported return -1
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  4211
 */
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  4212
int avpicture_deinterlace(AVPicture *dst, const AVPicture *src,
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  4213
                          enum AVPixelFormat pix_fmt, int width, int height);
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  4214
/**
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  4215
 * Copy image src to dst. Wraps av_picture_data_copy() above.
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  4216
 */
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  4217
void av_picture_copy(AVPicture *dst, const AVPicture *src,
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  4218
                     enum AVPixelFormat pix_fmt, int width, int height);
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  4219
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  4220
/**
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  4221
 * Crop image top and left side.
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  4222
 */
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  4223
int av_picture_crop(AVPicture *dst, const AVPicture *src,
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  4224
                    enum AVPixelFormat pix_fmt, int top_band, int left_band);
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  4225
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  4226
/**
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  4227
 * Pad image.
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  4228
 */
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  4229
int av_picture_pad(AVPicture *dst, const AVPicture *src, int height, int width, enum AVPixelFormat pix_fmt,
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  4230
            int padtop, int padbottom, int padleft, int padright, int *color);
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  4231
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  4232
/**
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  4233
 * @}
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  4234
 */
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  4235
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  4236
/**
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  4237
 * @defgroup lavc_misc Utility functions
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  4238
 * @ingroup libavc
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  4239
 *
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  4240
 * Miscellaneous utility functions related to both encoding and decoding
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  4241
 * (or neither).
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  4242
 * @{
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  4243
 */
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  4244
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  4245
/**
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  4246
 * @defgroup lavc_misc_pixfmt Pixel formats
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  4247
 *
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  4248
 * Functions for working with pixel formats.
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  4249
 * @{
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  4250
 */
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  4251
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  4252
void avcodec_get_chroma_sub_sample(enum AVPixelFormat pix_fmt, int *h_shift, int *v_shift);
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  4253
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  4254
/**
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  4255
 * Return a value representing the fourCC code associated to the
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  4256
 * pixel format pix_fmt, or 0 if no associated fourCC code can be
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  4257
 * found.
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  4258
 */
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  4259
unsigned int avcodec_pix_fmt_to_codec_tag(enum AVPixelFormat pix_fmt);
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  4260
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  4261
#define FF_LOSS_RESOLUTION  0x0001 /**< loss due to resolution change */
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  4262
#define FF_LOSS_DEPTH       0x0002 /**< loss due to color depth change */
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  4263
#define FF_LOSS_COLORSPACE  0x0004 /**< loss due to color space conversion */
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  4264
#define FF_LOSS_ALPHA       0x0008 /**< loss of alpha bits */
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  4265
#define FF_LOSS_COLORQUANT  0x0010 /**< loss due to color quantization */
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  4266
#define FF_LOSS_CHROMA      0x0020 /**< loss of chroma (e.g. RGB to gray conversion) */
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  4267
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  4268
/**
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  4269
 * Compute what kind of losses will occur when converting from one specific
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  4270
 * pixel format to another.
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  4271
 * When converting from one pixel format to another, information loss may occur.
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  4272
 * For example, when converting from RGB24 to GRAY, the color information will
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  4273
 * be lost. Similarly, other losses occur when converting from some formats to
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  4274
 * other formats. These losses can involve loss of chroma, but also loss of
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  4275
 * resolution, loss of color depth, loss due to the color space conversion, loss
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  4276
 * of the alpha bits or loss due to color quantization.
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  4277
 * avcodec_get_fix_fmt_loss() informs you about the various types of losses
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  4278
 * which will occur when converting from one pixel format to another.
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  4279
 *
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  4280
 * @param[in] dst_pix_fmt destination pixel format
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  4281
 * @param[in] src_pix_fmt source pixel format
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  4282
 * @param[in] has_alpha Whether the source pixel format alpha channel is used.
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  4283
 * @return Combination of flags informing you what kind of losses will occur.
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  4284
 */
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  4285
int avcodec_get_pix_fmt_loss(enum AVPixelFormat dst_pix_fmt, enum AVPixelFormat src_pix_fmt,
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  4286
                             int has_alpha);
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  4287
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  4288
#if FF_API_FIND_BEST_PIX_FMT
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  4289
/**
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  4290
 * @deprecated use avcodec_find_best_pix_fmt2() instead.
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  4291
 *
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  4292
 * Find the best pixel format to convert to given a certain source pixel
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  4293
 * format.  When converting from one pixel format to another, information loss
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  4294
 * may occur.  For example, when converting from RGB24 to GRAY, the color
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  4295
 * information will be lost. Similarly, other losses occur when converting from
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  4296
 * some formats to other formats. avcodec_find_best_pix_fmt() searches which of
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  4297
 * the given pixel formats should be used to suffer the least amount of loss.
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  4298
 * The pixel formats from which it chooses one, are determined by the
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  4299
 * pix_fmt_mask parameter.
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  4300
 *
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  4301
 * @code
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  4302
 * src_pix_fmt = AV_PIX_FMT_YUV420P;
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  4303
 * pix_fmt_mask = (1 << AV_PIX_FMT_YUV422P) || (1 << AV_PIX_FMT_RGB24);
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  4304
 * dst_pix_fmt = avcodec_find_best_pix_fmt(pix_fmt_mask, src_pix_fmt, alpha, &loss);
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  4305
 * @endcode
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  4306
 *
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  4307
 * @param[in] pix_fmt_mask bitmask determining which pixel format to choose from
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  4308
 * @param[in] src_pix_fmt source pixel format
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  4309
 * @param[in] has_alpha Whether the source pixel format alpha channel is used.
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  4310
 * @param[out] loss_ptr Combination of flags informing you what kind of losses will occur.
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  4311
 * @return The best pixel format to convert to or -1 if none was found.
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  4312
 */
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  4313
attribute_deprecated
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  4314
enum AVPixelFormat avcodec_find_best_pix_fmt(int64_t pix_fmt_mask, enum AVPixelFormat src_pix_fmt,
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  4315
                              int has_alpha, int *loss_ptr);
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  4316
#endif /* FF_API_FIND_BEST_PIX_FMT */
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  4317
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  4318
/**
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  4319
 * Find the best pixel format to convert to given a certain source pixel
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  4320
 * format.  When converting from one pixel format to another, information loss
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  4321
 * may occur.  For example, when converting from RGB24 to GRAY, the color
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  4322
 * information will be lost. Similarly, other losses occur when converting from
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  4323
 * some formats to other formats. avcodec_find_best_pix_fmt2() searches which of
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  4324
 * the given pixel formats should be used to suffer the least amount of loss.
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  4325
 * The pixel formats from which it chooses one, are determined by the
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  4326
 * pix_fmt_list parameter.
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  4327
 *
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  4328
 *
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  4329
 * @param[in] pix_fmt_list AV_PIX_FMT_NONE terminated array of pixel formats to choose from
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  4330
 * @param[in] src_pix_fmt source pixel format
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  4331
 * @param[in] has_alpha Whether the source pixel format alpha channel is used.
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  4332
 * @param[out] loss_ptr Combination of flags informing you what kind of losses will occur.
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  4333
 * @return The best pixel format to convert to or -1 if none was found.
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  4334
 */
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  4335
enum AVPixelFormat avcodec_find_best_pix_fmt2(enum AVPixelFormat *pix_fmt_list,
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  4336
                                              enum AVPixelFormat src_pix_fmt,
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  4337
                                              int has_alpha, int *loss_ptr);
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  4338
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  4339
enum AVPixelFormat avcodec_default_get_format(struct AVCodecContext *s, const enum AVPixelFormat * fmt);
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  4340
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  4341
/**
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  4342
 * @}
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  4343
 */
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  4344
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  4345
void avcodec_set_dimensions(AVCodecContext *s, int width, int height);
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  4346
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  4347
/**
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  4348
 * Put a string representing the codec tag codec_tag in buf.
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  4349
 *
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  4350
 * @param buf_size size in bytes of buf
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  4351
 * @return the length of the string that would have been generated if
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  4352
 * enough space had been available, excluding the trailing null
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  4353
 */
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  4354
size_t av_get_codec_tag_string(char *buf, size_t buf_size, unsigned int codec_tag);
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  4355
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  4356
void avcodec_string(char *buf, int buf_size, AVCodecContext *enc, int encode);
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  4357
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  4358
/**
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  4359
 * Return a name for the specified profile, if available.
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  4360
 *
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  4361
 * @param codec the codec that is searched for the given profile
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  4362
 * @param profile the profile value for which a name is requested
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  4363
 * @return A name for the profile if found, NULL otherwise.
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  4364
 */
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  4365
const char *av_get_profile_name(const AVCodec *codec, int profile);
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  4366
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  4367
int avcodec_default_execute(AVCodecContext *c, int (*func)(AVCodecContext *c2, void *arg2),void *arg, int *ret, int count, int size);
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  4368
int avcodec_default_execute2(AVCodecContext *c, int (*func)(AVCodecContext *c2, void *arg2, int, int),void *arg, int *ret, int count);
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  4369
//FIXME func typedef
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  4370
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  4371
/**
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  4372
 * Fill audio frame data and linesize.
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  4373
 * AVFrame extended_data channel pointers are allocated if necessary for
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  4374
 * planar audio.
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  4375
 *
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  4376
 * @param frame       the AVFrame
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  4377
 *                    frame->nb_samples must be set prior to calling the
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  4378
 *                    function. This function fills in frame->data,
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  4379
 *                    frame->extended_data, frame->linesize[0].
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  4380
 * @param nb_channels channel count
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  4381
 * @param sample_fmt  sample format
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  4382
 * @param buf         buffer to use for frame data
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  4383
 * @param buf_size    size of buffer
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  4384
 * @param align       plane size sample alignment (0 = default)
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  4385
 * @return            0 on success, negative error code on failure
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  4386
 */
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  4387
int avcodec_fill_audio_frame(AVFrame *frame, int nb_channels,
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  4388
                             enum AVSampleFormat sample_fmt, const uint8_t *buf,
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  4389
                             int buf_size, int align);
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  4390
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  4391
/**
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  4392
 * Flush buffers, should be called when seeking or when switching to a different stream.
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  4393
 */
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  4394
void avcodec_flush_buffers(AVCodecContext *avctx);
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  4395
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  4396
void avcodec_default_free_buffers(AVCodecContext *s);
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  4397
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  4398
/**
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  4399
 * Return codec bits per sample.
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  4400
 *
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  4401
 * @param[in] codec_id the codec
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  4402
 * @return Number of bits per sample or zero if unknown for the given codec.
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  4403
 */
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  4404
int av_get_bits_per_sample(enum AVCodecID codec_id);
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  4405
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  4406
/**
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  4407
 * Return codec bits per sample.
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  4408
 * Only return non-zero if the bits per sample is exactly correct, not an
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  4409
 * approximation.
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  4410
 *
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  4411
 * @param[in] codec_id the codec
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  4412
 * @return Number of bits per sample or zero if unknown for the given codec.
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  4413
 */
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  4414
int av_get_exact_bits_per_sample(enum AVCodecID codec_id);
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  4415
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  4416
/**
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  4417
 * Return audio frame duration.
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  4418
 *
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  4419
 * @param avctx        codec context
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  4420
 * @param frame_bytes  size of the frame, or 0 if unknown
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  4421
 * @return             frame duration, in samples, if known. 0 if not able to
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  4422
 *                     determine.
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  4423
 */
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  4424
int av_get_audio_frame_duration(AVCodecContext *avctx, int frame_bytes);
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  4425
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  4426
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  4427
typedef struct AVBitStreamFilterContext {
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  4428
    void *priv_data;
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  4429
    struct AVBitStreamFilter *filter;
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  4430
    AVCodecParserContext *parser;
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  4431
    struct AVBitStreamFilterContext *next;
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  4432
} AVBitStreamFilterContext;
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  4433
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  4434
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  4435
typedef struct AVBitStreamFilter {
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  4436
    const char *name;
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  4437
    int priv_data_size;
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  4438
    int (*filter)(AVBitStreamFilterContext *bsfc,
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  4439
                  AVCodecContext *avctx, const char *args,
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  4440
                  uint8_t **poutbuf, int *poutbuf_size,
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  4441
                  const uint8_t *buf, int buf_size, int keyframe);
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  4442
    void (*close)(AVBitStreamFilterContext *bsfc);
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  4443
    struct AVBitStreamFilter *next;
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  4444
} AVBitStreamFilter;
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  4445
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  4446
void av_register_bitstream_filter(AVBitStreamFilter *bsf);
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  4447
AVBitStreamFilterContext *av_bitstream_filter_init(const char *name);
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  4448
int av_bitstream_filter_filter(AVBitStreamFilterContext *bsfc,
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  4449
                               AVCodecContext *avctx, const char *args,
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  4450
                               uint8_t **poutbuf, int *poutbuf_size,
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  4451
                               const uint8_t *buf, int buf_size, int keyframe);
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  4452
void av_bitstream_filter_close(AVBitStreamFilterContext *bsf);
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  4453
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  4454
AVBitStreamFilter *av_bitstream_filter_next(AVBitStreamFilter *f);
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  4455
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  4456
/* memory */
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  4457
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  4458
/**
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  4459
 * Reallocate the given block if it is not large enough, otherwise do nothing.
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  4460
 *
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  4461
 * @see av_realloc
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  4462
 */
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  4463
void *av_fast_realloc(void *ptr, unsigned int *size, size_t min_size);
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  4464
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  4465
/**
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  4466
 * Allocate a buffer, reusing the given one if large enough.
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  4467
 *
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  4468
 * Contrary to av_fast_realloc the current buffer contents might not be
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  4469
 * preserved and on error the old buffer is freed, thus no special
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  4470
 * handling to avoid memleaks is necessary.
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  4471
 *
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  4472
 * @param ptr pointer to pointer to already allocated buffer, overwritten with pointer to new buffer
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  4473
 * @param size size of the buffer *ptr points to
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  4474
 * @param min_size minimum size of *ptr buffer after returning, *ptr will be NULL and
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  4475
 *                 *size 0 if an error occurred.
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  4476
 */
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  4477
void av_fast_malloc(void *ptr, unsigned int *size, size_t min_size);
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  4478
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  4479
/**
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  4480
 * Allocate a buffer with padding, reusing the given one if large enough.
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  4481
 *
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  4482
 * Same behaviour av_fast_malloc but the buffer has additional
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  4483
 * FF_INPUT_PADDING_SIZE at the end which will always memset to 0.
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  4484
 *
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  4485
 */
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  4486
void av_fast_padded_malloc(void *ptr, unsigned int *size, size_t min_size);
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  4487
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  4488
/**
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  4489
 * Encode extradata length to a buffer. Used by xiph codecs.
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  4490
 *
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  4491
 * @param s buffer to write to; must be at least (v/255+1) bytes long
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  4492
 * @param v size of extradata in bytes
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  4493
 * @return number of bytes written to the buffer.
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  4494
 */
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  4495
unsigned int av_xiphlacing(unsigned char *s, unsigned int v);
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  4496
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  4497
/**
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  4498
 * Log a generic warning message about a missing feature. This function is
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  4499
 * intended to be used internally by Libav (libavcodec, libavformat, etc.)
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  4500
 * only, and would normally not be used by applications.
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  4501
 * @param[in] avc a pointer to an arbitrary struct of which the first field is
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  4502
 * a pointer to an AVClass struct
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  4503
 * @param[in] feature string containing the name of the missing feature
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  4504
 * @param[in] want_sample indicates if samples are wanted which exhibit this feature.
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  4505
 * If want_sample is non-zero, additional verbage will be added to the log
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  4506
 * message which tells the user how to report samples to the development
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  4507
 * mailing list.
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  4508
 */
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  4509
void av_log_missing_feature(void *avc, const char *feature, int want_sample);
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  4510
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  4511
/**
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  4512
 * Log a generic warning message asking for a sample. This function is
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  4513
 * intended to be used internally by Libav (libavcodec, libavformat, etc.)
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  4514
 * only, and would normally not be used by applications.
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  4515
 * @param[in] avc a pointer to an arbitrary struct of which the first field is
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  4516
 * a pointer to an AVClass struct
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  4517
 * @param[in] msg string containing an optional message, or NULL if no message
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  4518
 */
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  4519
void av_log_ask_for_sample(void *avc, const char *msg, ...) av_printf_format(2, 3);
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  4520
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  4521
/**
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  4522
 * Register the hardware accelerator hwaccel.
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  4523
 */
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  4524
void av_register_hwaccel(AVHWAccel *hwaccel);
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  4525
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  4526
/**
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  4527
 * If hwaccel is NULL, returns the first registered hardware accelerator,
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  4528
 * if hwaccel is non-NULL, returns the next registered hardware accelerator
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  4529
 * after hwaccel, or NULL if hwaccel is the last one.
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  4530
 */
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  4531
AVHWAccel *av_hwaccel_next(AVHWAccel *hwaccel);
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  4532
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  4533
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  4534
/**
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  4535
 * Lock operation used by lockmgr
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  4536
 */
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  4537
enum AVLockOp {
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  4538
  AV_LOCK_CREATE,  ///< Create a mutex
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  4539
  AV_LOCK_OBTAIN,  ///< Lock the mutex
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  4540
  AV_LOCK_RELEASE, ///< Unlock the mutex
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  4541
  AV_LOCK_DESTROY, ///< Free mutex resources
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  4542
};
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  4543
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  4544
/**
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  4545
 * Register a user provided lock manager supporting the operations
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  4546
 * specified by AVLockOp. mutex points to a (void *) where the
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  4547
 * lockmgr should store/get a pointer to a user allocated mutex. It's
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  4548
 * NULL upon AV_LOCK_CREATE and != NULL for all other ops.
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  4549
 *
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  4550
 * @param cb User defined callback. Note: Libav may invoke calls to this
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  4551
 *           callback during the call to av_lockmgr_register().
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  4552
 *           Thus, the application must be prepared to handle that.
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  4553
 *           If cb is set to NULL the lockmgr will be unregistered.
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  4554
 *           Also note that during unregistration the previously registered
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  4555
 *           lockmgr callback may also be invoked.
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  4556
 */
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  4557
int av_lockmgr_register(int (*cb)(void **mutex, enum AVLockOp op));
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  4558
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  4559
/**
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  4560
 * Get the type of the given codec.
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  4561
 */
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  4562
enum AVMediaType avcodec_get_type(enum AVCodecID codec_id);
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  4563
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  4564
/**
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  4565
 * @return a positive value if s is open (i.e. avcodec_open2() was called on it
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  4566
 * with no corresponding avcodec_close()), 0 otherwise.
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  4567
 */
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  4568
int avcodec_is_open(AVCodecContext *s);
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  4569
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  4570
/**
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  4571
 * @return a non-zero number if codec is an encoder, zero otherwise
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  4572
 */
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  4573
int av_codec_is_encoder(const AVCodec *codec);
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  4574
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  4575
/**
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  4576
 * @return a non-zero number if codec is a decoder, zero otherwise
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  4577
 */
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  4578
int av_codec_is_decoder(const AVCodec *codec);
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  4579
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  4580
/**
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  4581
 * @return descriptor for given codec ID or NULL if no descriptor exists.
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  4582
 */
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  4583
const AVCodecDescriptor *avcodec_descriptor_get(enum AVCodecID id);
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  4584
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  4585
/**
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  4586
 * Iterate over all codec descriptors known to libavcodec.
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  4587
 *
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  4588
 * @param prev previous descriptor. NULL to get the first descriptor.
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  4589
 *
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  4590
 * @return next descriptor or NULL after the last descriptor
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  4591
 */
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  4592
const AVCodecDescriptor *avcodec_descriptor_next(const AVCodecDescriptor *prev);
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  4593
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  4594
/**
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  4595
 * @return codec descriptor with the given name or NULL if no such descriptor
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  4596
 *         exists.
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  4597
 */
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  4598
const AVCodecDescriptor *avcodec_descriptor_get_by_name(const char *name);
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  4599
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  4600
/**
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  4601
 * @}
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  4602
 */
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  4603
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
  4604
#endif /* AVCODEC_AVCODEC_H */