misc/winutils/include/libavcodec/avcodec.h
author Wuzzy <Wuzzy2@mail.ru>
Tue, 20 Feb 2018 19:07:32 +0100
changeset 13040 a87d3119c962
parent 7813 7ac83d79b897
permissions -rw-r--r--
VideoRec: Fix many effects not being recorded
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 */