2012-03-14 13:18:20 +01:00
/*
2012-03-21 00:15:18 +01:00
* Copyright (c) 2000, 2001, 2002 Fabrice Bellard
2012-03-14 13:18:20 +01:00
*
2012-03-21 00:15:18 +01:00
* This file is part of FFmpeg.
*
* FFmpeg is free software; you can redistribute it and/or
2012-03-14 13:18:20 +01:00
* modify it under the terms of the GNU Lesser General Public
* License as published by the Free Software Foundation; either
* version 2.1 of the License, or (at your option) any later version.
*
2012-03-21 00:15:18 +01:00
* FFmpeg is distributed in the hope that it will be useful,
2012-03-14 13:18:20 +01:00
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public
2012-03-21 00:15:18 +01:00
* License along with FFmpeg; if not, write to the Free Software
2012-03-14 13:18:20 +01:00
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
*/
2012-12-09 13:35:21 +01:00
#ifndef AVFORMAT_OPTIONS_TABLE_H
#define AVFORMAT_OPTIONS_TABLE_H
2012-03-14 13:18:20 +01:00
2012-05-07 16:25:12 -07:00
#include <limits.h>
#include "libavutil/opt.h"
#include "avformat.h"
2014-01-27 23:09:38 +01:00
#include "internal.h"
2012-03-14 13:18:20 +01:00
#define OFFSET(x) offsetof(AVFormatContext,x)
#define DEFAULT 0 //should be NAN but it does not work as it is not a constant in glibc as required by ANSI/ISO C
//these names are too long to be readable
#define E AV_OPT_FLAG_ENCODING_PARAM
#define D AV_OPT_FLAG_DECODING_PARAM
2013-08-01 14:35:01 +02:00
static const AVOption avformat_options [] = {
2012-09-05 14:09:09 +02:00
{ "avioflags" , NULL , OFFSET ( avio_flags ), AV_OPT_TYPE_FLAGS , {. i64 = DEFAULT }, INT_MIN , INT_MAX , D | E , "avioflags" },
2012-09-05 13:58:11 +02:00
{ "direct" , "reduce buffering" , 0 , AV_OPT_TYPE_CONST , {. i64 = AVIO_FLAG_DIRECT }, INT_MIN , INT_MAX , D | E , "avioflags" },
2015-09-01 09:19:49 +02:00
{ "probesize" , "set probing size" , OFFSET ( probesize ), AV_OPT_TYPE_INT64 , {. i64 = 5000000 }, 32 , INT64_MAX , D },
2014-01-27 23:09:38 +01:00
{ "formatprobesize" , "number of bytes to probe file format" , OFFSET ( format_probesize ), AV_OPT_TYPE_INT , {. i64 = PROBE_BUF_MAX }, 0 , INT_MAX - 1 , D },
2012-08-31 13:22:31 +03:00
{ "packetsize" , "set packet size" , OFFSET ( packet_size ), AV_OPT_TYPE_INT , {. i64 = DEFAULT }, 0 , INT_MAX , E },
2017-06-04 04:19:33 +02:00
{ "fflags" , NULL , OFFSET ( flags ), AV_OPT_TYPE_FLAGS , {. i64 = AVFMT_FLAG_AUTO_BSF }, INT_MIN , INT_MAX , D | E , "fflags" },
2014-06-28 21:23:32 +02:00
{ "flush_packets" , "reduce the latency by flushing out packets immediately" , 0 , AV_OPT_TYPE_CONST , {. i64 = AVFMT_FLAG_FLUSH_PACKETS }, INT_MIN , INT_MAX , E , "fflags" },
2012-08-31 12:45:52 +03:00
{ "ignidx" , "ignore index" , 0 , AV_OPT_TYPE_CONST , {. i64 = AVFMT_FLAG_IGNIDX }, INT_MIN , INT_MAX , D , "fflags" },
{ "genpts" , "generate pts" , 0 , AV_OPT_TYPE_CONST , {. i64 = AVFMT_FLAG_GENPTS }, INT_MIN , INT_MAX , D , "fflags" },
{ "nofillin" , "do not fill in missing values that can be exactly calculated" , 0 , AV_OPT_TYPE_CONST , {. i64 = AVFMT_FLAG_NOFILLIN }, INT_MIN , INT_MAX , D , "fflags" },
{ "noparse" , "disable AVParsers, this needs nofillin too" , 0 , AV_OPT_TYPE_CONST , {. i64 = AVFMT_FLAG_NOPARSE }, INT_MIN , INT_MAX , D , "fflags" },
{ "igndts" , "ignore dts" , 0 , AV_OPT_TYPE_CONST , {. i64 = AVFMT_FLAG_IGNDTS }, INT_MIN , INT_MAX , D , "fflags" },
{ "discardcorrupt" , "discard corrupted frames" , 0 , AV_OPT_TYPE_CONST , {. i64 = AVFMT_FLAG_DISCARD_CORRUPT }, INT_MIN , INT_MAX , D , "fflags" },
2012-09-05 13:58:11 +02:00
{ "sortdts" , "try to interleave outputted packets by dts" , 0 , AV_OPT_TYPE_CONST , {. i64 = AVFMT_FLAG_SORT_DTS }, INT_MIN , INT_MAX , D , "fflags" },
2015-04-22 12:24:41 +02:00
{ "fastseek" , "fast but inaccurate seeks" , 0 , AV_OPT_TYPE_CONST , {. i64 = AVFMT_FLAG_FAST_SEEK }, INT_MIN , INT_MAX , D , "fflags" },
2012-08-31 12:45:52 +03:00
{ "nobuffer" , "reduce the latency introduced by optional buffering" , 0 , AV_OPT_TYPE_CONST , {. i64 = AVFMT_FLAG_NOBUFFER }, 0 , INT_MAX , D , "fflags" },
2014-05-01 10:43:10 +02:00
{ "bitexact" , "do not write random/volatile data" , 0 , AV_OPT_TYPE_CONST , { . i64 = AVFMT_FLAG_BITEXACT }, 0 , 0 , E , "fflags" },
2016-08-12 21:28:08 +02:00
{ "shortest" , "stop muxing with the shortest stream" , 0 , AV_OPT_TYPE_CONST , { . i64 = AVFMT_FLAG_SHORTEST }, 0 , 0 , E , "fflags" },
2017-11-26 16:47:26 -03:00
{ "autobsf" , "add needed bsfs automatically" , 0 , AV_OPT_TYPE_CONST , { . i64 = AVFMT_FLAG_AUTO_BSF }, 0 , 0 , E , "fflags" },
2018-04-01 15:53:11 +08:00
{ "seek2any" , "allow seeking to non-keyframes on demuxer level when supported" , OFFSET ( seek2any ), AV_OPT_TYPE_BOOL , {. i64 = 0 }, 0 , 1 , D },
2015-09-01 09:19:49 +02:00
{ "analyzeduration" , "specify how many microseconds are analyzed to probe the input" , OFFSET ( max_analyze_duration ), AV_OPT_TYPE_INT64 , {. i64 = 0 }, 0 , INT64_MAX , D },
2012-03-14 13:18:20 +01:00
{ "cryptokey" , "decryption key" , OFFSET ( key ), AV_OPT_TYPE_BINARY , {. dbl = 0 }, 0 , 0 , D },
2012-08-31 13:22:31 +03:00
{ "indexmem" , "max memory used for timestamp index (per stream)" , OFFSET ( max_index_size ), AV_OPT_TYPE_INT , {. i64 = 1 << 20 }, 0 , INT_MAX , D },
{ "rtbufsize" , "max memory used for buffering real-time frames" , OFFSET ( max_picture_buffer ), AV_OPT_TYPE_INT , {. i64 = 3041280 }, 0 , INT_MAX , D }, /* defaults to 1s of 15fps 352x288 YUYV422 video */
2012-08-31 12:52:18 +03:00
{ "fdebug" , "print specific debug info" , OFFSET ( debug ), AV_OPT_TYPE_FLAGS , {. i64 = DEFAULT }, 0 , INT_MAX , E | D , "fdebug" },
2012-08-31 12:45:52 +03:00
{ "ts" , NULL , 0 , AV_OPT_TYPE_CONST , {. i64 = FF_FDEBUG_TS }, INT_MIN , INT_MAX , E | D , "fdebug" },
2012-08-31 13:22:31 +03:00
{ "max_delay" , "maximum muxing or demuxing delay in microseconds" , OFFSET ( max_delay ), AV_OPT_TYPE_INT , {. i64 = - 1 }, - 1 , INT_MAX , E | D },
2014-03-11 17:58:34 -06:00
{ "start_time_realtime" , "wall-clock time when stream begins (PTS==0)" , OFFSET ( start_time_realtime ), AV_OPT_TYPE_INT64 , {. i64 = AV_NOPTS_VALUE }, INT64_MIN , INT64_MAX , E },
2012-08-31 13:22:31 +03:00
{ "fpsprobesize" , "number of frames used to probe fps" , OFFSET ( fps_probe_size ), AV_OPT_TYPE_INT , {. i64 = - 1 }, - 1 , INT_MAX - 1 , D },
2012-09-05 14:26:01 +02:00
{ "audio_preload" , "microseconds by which audio packets should be interleaved earlier" , OFFSET ( audio_preload ), AV_OPT_TYPE_INT , {. i64 = 0 }, 0 , INT_MAX - 1 , E },
{ "chunk_duration" , "microseconds for each chunk" , OFFSET ( max_chunk_duration ), AV_OPT_TYPE_INT , {. i64 = 0 }, 0 , INT_MAX - 1 , E },
{ "chunk_size" , "size in bytes for each chunk" , OFFSET ( max_chunk_size ), AV_OPT_TYPE_INT , {. i64 = 0 }, 0 , INT_MAX - 1 , E },
2012-03-14 13:18:20 +01:00
/* this is a crutch for avconv, since it cannot deal with identically named options in different contexts.
* to be removed when avconv is fixed */
2012-08-31 12:52:18 +03:00
{ "f_err_detect" , "set error detection flags (deprecated; use err_detect, save via avconv)" , OFFSET ( error_recognition ), AV_OPT_TYPE_FLAGS , {. i64 = AV_EF_CRCCHECK }, INT_MIN , INT_MAX , D , "err_detect" },
{ "err_detect" , "set error detection flags" , OFFSET ( error_recognition ), AV_OPT_TYPE_FLAGS , {. i64 = AV_EF_CRCCHECK }, INT_MIN , INT_MAX , D , "err_detect" },
2012-08-31 12:45:52 +03:00
{ "crccheck" , "verify embedded CRCs" , 0 , AV_OPT_TYPE_CONST , {. i64 = AV_EF_CRCCHECK }, INT_MIN , INT_MAX , D , "err_detect" },
{ "bitstream" , "detect bitstream specification deviations" , 0 , AV_OPT_TYPE_CONST , {. i64 = AV_EF_BITSTREAM }, INT_MIN , INT_MAX , D , "err_detect" },
{ "buffer" , "detect improper bitstream length" , 0 , AV_OPT_TYPE_CONST , {. i64 = AV_EF_BUFFER }, INT_MIN , INT_MAX , D , "err_detect" },
{ "explode" , "abort decoding on minor error detection" , 0 , AV_OPT_TYPE_CONST , {. i64 = AV_EF_EXPLODE }, INT_MIN , INT_MAX , D , "err_detect" },
2014-05-02 16:37:28 +02:00
{ "ignore_err" , "ignore errors" , 0 , AV_OPT_TYPE_CONST , {. i64 = AV_EF_IGNORE_ERR }, INT_MIN , INT_MAX , D , "err_detect" },
2013-10-27 19:28:31 +01:00
{ "careful" , "consider things that violate the spec, are fast to check and have not been seen in the wild as errors" , 0 , AV_OPT_TYPE_CONST , {. i64 = AV_EF_CAREFUL }, INT_MIN , INT_MAX , D , "err_detect" },
2019-11-29 23:32:24 +01:00
{ "compliant" , "consider all spec non compliancies as errors" , 0 , AV_OPT_TYPE_CONST , {. i64 = AV_EF_COMPLIANT | AV_EF_CAREFUL }, INT_MIN , INT_MAX , D , "err_detect" },
{ "aggressive" , "consider things that a sane encoder shouldn't do as an error" , 0 , AV_OPT_TYPE_CONST , {. i64 = AV_EF_AGGRESSIVE | AV_EF_COMPLIANT | AV_EF_CAREFUL }, INT_MIN , INT_MAX , D , "err_detect" },
2016-02-18 14:47:10 +01:00
{ "use_wallclock_as_timestamps" , "use wallclock as timestamps" , OFFSET ( use_wallclock_as_timestamps ), AV_OPT_TYPE_BOOL , {. i64 = 0 }, 0 , 1 , D },
2014-06-06 00:05:31 +02:00
{ "skip_initial_bytes" , "set number of bytes to skip before reading header and frames" , OFFSET ( skip_initial_bytes ), AV_OPT_TYPE_INT64 , {. i64 = 0 }, 0 , INT64_MAX - 1 , D },
2015-11-21 22:05:07 +01:00
{ "correct_ts_overflow" , "correct single timestamp overflows" , OFFSET ( correct_ts_overflow ), AV_OPT_TYPE_BOOL , {. i64 = 1 }, 0 , 1 , D },
2017-06-04 04:19:33 +02:00
{ "flush_packets" , "enable flushing of the I/O context after each packet" , OFFSET ( flush_packets ), AV_OPT_TYPE_INT , {. i64 = - 1 }, - 1 , 1 , E },
2013-12-29 22:42:33 +01:00
{ "metadata_header_padding" , "set number of bytes to be written as padding in a metadata header" , OFFSET ( metadata_header_padding ), AV_OPT_TYPE_INT , {. i64 = - 1 }, - 1 , INT_MAX , E },
2014-01-27 19:16:45 +01:00
{ "output_ts_offset" , "set output timestamp offset" , OFFSET ( output_ts_offset ), AV_OPT_TYPE_DURATION , {. i64 = 0 }, - INT64_MAX , INT64_MAX , E },
2014-01-20 13:28:37 +01:00
{ "max_interleave_delta" , "maximum buffering duration for interleaving" , OFFSET ( max_interleave_delta ), AV_OPT_TYPE_INT64 , { . i64 = 10000000 }, 0 , INT64_MAX , E },
2014-03-06 17:58:33 +01:00
{ "f_strict" , "how strictly to follow the standards (deprecated; use strict, save via avconv)" , OFFSET ( strict_std_compliance ), AV_OPT_TYPE_INT , {. i64 = DEFAULT }, INT_MIN , INT_MAX , D | E , "strict" },
{ "strict" , "how strictly to follow the standards" , OFFSET ( strict_std_compliance ), AV_OPT_TYPE_INT , {. i64 = DEFAULT }, INT_MIN , INT_MAX , D | E , "strict" },
2016-05-02 22:00:55 +02:00
{ "very" , "strictly conform to a older more strict version of the spec or reference software" , 0 , AV_OPT_TYPE_CONST , {. i64 = FF_COMPLIANCE_VERY_STRICT }, INT_MIN , INT_MAX , D | E , "strict" },
2014-03-06 17:58:33 +01:00
{ "strict" , "strictly conform to all the things in the spec no matter what the consequences" , 0 , AV_OPT_TYPE_CONST , {. i64 = FF_COMPLIANCE_STRICT }, INT_MIN , INT_MAX , D | E , "strict" },
{ "normal" , NULL , 0 , AV_OPT_TYPE_CONST , {. i64 = FF_COMPLIANCE_NORMAL }, INT_MIN , INT_MAX , D | E , "strict" },
2014-10-05 21:43:17 +02:00
{ "unofficial" , "allow unofficial extensions" , 0 , AV_OPT_TYPE_CONST , {. i64 = FF_COMPLIANCE_UNOFFICIAL }, INT_MIN , INT_MAX , D | E , "strict" },
2014-03-06 17:58:33 +01:00
{ "experimental" , "allow non-standardized experimental variants" , 0 , AV_OPT_TYPE_CONST , {. i64 = FF_COMPLIANCE_EXPERIMENTAL }, INT_MIN , INT_MAX , D | E , "strict" },
2014-08-19 17:49:58 +00:00
{ "max_ts_probe" , "maximum number of packets to read while waiting for the first timestamp" , OFFSET ( max_ts_probe ), AV_OPT_TYPE_INT , { . i64 = 50 }, 0 , INT_MAX , D },
2012-09-26 15:55:16 +02:00
{ "avoid_negative_ts" , "shift timestamps so they start at 0" , OFFSET ( avoid_negative_ts ), AV_OPT_TYPE_INT , {. i64 = - 1 }, - 1 , 2 , E , "avoid_negative_ts" },
{ "auto" , "enabled when required by target format" , 0 , AV_OPT_TYPE_CONST , {. i64 = AVFMT_AVOID_NEG_TS_AUTO }, INT_MIN , INT_MAX , E , "avoid_negative_ts" },
2022-01-18 16:17:09 +01:00
{ "disabled" , "do not change timestamps" , 0 , AV_OPT_TYPE_CONST , {. i64 = AVFMT_AVOID_NEG_TS_DISABLED }, INT_MIN , INT_MAX , E , "avoid_negative_ts" },
2012-09-26 15:55:16 +02:00
{ "make_non_negative" , "shift timestamps so they are non negative" , 0 , AV_OPT_TYPE_CONST , {. i64 = AVFMT_AVOID_NEG_TS_MAKE_NON_NEGATIVE }, INT_MIN , INT_MAX , E , "avoid_negative_ts" },
{ "make_zero" , "shift timestamps so they start at 0" , 0 , AV_OPT_TYPE_CONST , {. i64 = AVFMT_AVOID_NEG_TS_MAKE_ZERO }, INT_MIN , INT_MAX , E , "avoid_negative_ts" },
2020-03-17 22:46:36 +01:00
{ "dump_separator" , "set information dump field separator" , OFFSET ( dump_separator ), AV_OPT_TYPE_STRING , {. str = ", " }, 0 , 0 , D | E },
{ "codec_whitelist" , "List of decoders that are allowed to be used" , OFFSET ( codec_whitelist ), AV_OPT_TYPE_STRING , { . str = NULL }, 0 , 0 , D },
{ "format_whitelist" , "List of demuxers that are allowed to be used" , OFFSET ( format_whitelist ), AV_OPT_TYPE_STRING , { . str = NULL }, 0 , 0 , D },
{ "protocol_whitelist" , "List of protocols that are allowed to be used" , OFFSET ( protocol_whitelist ), AV_OPT_TYPE_STRING , { . str = NULL }, 0 , 0 , D },
{ "protocol_blacklist" , "List of protocols that are not allowed to be used" , OFFSET ( protocol_blacklist ), AV_OPT_TYPE_STRING , { . str = NULL }, 0 , 0 , D },
2016-12-10 20:15:12 +01:00
{ "max_streams" , "maximum number of streams" , OFFSET ( max_streams ), AV_OPT_TYPE_INT , { . i64 = 1000 }, 0 , INT_MAX , D },
2018-05-15 15:56:45 -07:00
{ "skip_estimate_duration_from_pts" , "skip duration calculation in estimate_timings_from_pts" , OFFSET ( skip_estimate_duration_from_pts ), AV_OPT_TYPE_BOOL , {. i64 = 0 }, 0 , 1 , D },
2019-10-17 10:49:20 -04:00
{ "max_probe_packets" , "Maximum number of packets to probe a codec" , OFFSET ( max_probe_packets ), AV_OPT_TYPE_INT , { . i64 = 2500 }, 0 , INT_MAX , D },
2012-03-14 13:18:20 +01:00
{ NULL },
};
#undef E
#undef D
#undef DEFAULT
#undef OFFSET
2012-12-09 13:35:21 +01:00
#endif /* AVFORMAT_OPTIONS_TABLE_H */