2012-03-14 15:18:20 +03:00
/*
2012-03-21 02:15:18 +03:00
* Copyright ( c ) 2000 , 2001 , 2002 Fabrice Bellard
2012-03-14 15:18:20 +03:00
*
2012-03-21 02:15:18 +03:00
* This file is part of FFmpeg .
*
* FFmpeg is free software ; you can redistribute it and / or
2012-03-14 15:18:20 +03: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 02:15:18 +03:00
* FFmpeg is distributed in the hope that it will be useful ,
2012-03-14 15:18:20 +03: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 02:15:18 +03:00
* License along with FFmpeg ; if not , write to the Free Software
2012-03-14 15:18:20 +03:00
* Foundation , Inc . , 51 Franklin Street , Fifth Floor , Boston , MA 02110 - 1301 USA
*/
2012-12-09 15:35:21 +03:00
# ifndef AVFORMAT_OPTIONS_TABLE_H
# define AVFORMAT_OPTIONS_TABLE_H
2012-03-14 15:18:20 +03:00
2012-05-08 02:25:12 +03:00
# include <limits.h>
# include "libavutil/opt.h"
# include "avformat.h"
2014-01-28 01:09:38 +03:00
# include "internal.h"
2012-03-14 15:18:20 +03: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 15:35:01 +03:00
static const AVOption avformat_options [ ] = {
2012-09-05 15:09:09 +03:00
{ " avioflags " , NULL , OFFSET ( avio_flags ) , AV_OPT_TYPE_FLAGS , { . i64 = DEFAULT } , INT_MIN , INT_MAX , D | E , " avioflags " } ,
2012-09-05 14:58:11 +03: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-28 01:09:38 +03: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 } ,
2016-04-07 09:59:39 +02:00
{ " fflags " , NULL , OFFSET ( flags ) , AV_OPT_TYPE_FLAGS , { . i64 = AVFMT_FLAG_FLUSH_PACKETS | AVFMT_FLAG_AUTO_BSF } , INT_MIN , INT_MAX , D | E , " fflags " } ,
2014-06-28 22:23:32 +03: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 14:58:11 +03: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 " } ,
2013-06-29 03:24:26 +03:00
{ " keepside " , " don't merge side data " , 0 , AV_OPT_TYPE_CONST , { . i64 = AVFMT_FLAG_KEEP_SIDE_DATA } , 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-09-05 14:58:11 +03:00
{ " latm " , " enable RTP MP4A-LATM payload " , 0 , AV_OPT_TYPE_CONST , { . i64 = AVFMT_FLAG_MP4A_LATM } , INT_MIN , INT_MAX , E , " 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 " } ,
2015-11-21 23:05:07 +02:00
{ " seek2any " , " allow seeking to non-keyframes on demuxer level when supported " , OFFSET ( seek2any ) , AV_OPT_TYPE_BOOL , { . i64 = 0 } , 0 , 1 , D } ,
2014-05-01 11:43:10 +03: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 " } ,
2016-04-07 09:59:39 +02:00
{ " autobsf " , " add needed bsfs automatically (delays header until each stream's first packet is written) " , 0 , AV_OPT_TYPE_CONST , { . i64 = AVFMT_FLAG_AUTO_BSF } , 0 , 0 , E , " fflags " } ,
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 15:18:20 +03: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-12 02:58:34 +03: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 15:26:01 +03: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 15:18:20 +03: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 17:37:28 +03: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 21:28:31 +03: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 " } ,
2012-09-05 14:58:11 +03:00
{ " compliant " , " consider all spec non compliancies as errors " , 0 , AV_OPT_TYPE_CONST , { . i64 = AV_EF_COMPLIANT } , INT_MIN , INT_MAX , D , " err_detect " } ,
2013-06-29 03:24:26 +03:00
{ " aggressive " , " consider things that a sane encoder shouldn't do as an error " , 0 , AV_OPT_TYPE_CONST , { . i64 = AV_EF_AGGRESSIVE } , INT_MIN , INT_MAX , D , " err_detect " } ,
2016-02-18 15:47:10 +02: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 01:05:31 +03: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 23:05:07 +02:00
{ " correct_ts_overflow " , " correct single timestamp overflows " , OFFSET ( correct_ts_overflow ) , AV_OPT_TYPE_BOOL , { . i64 = 1 } , 0 , 1 , D } ,
{ " flush_packets " , " enable flushing of the I/O context after each packet " , OFFSET ( flush_packets ) , AV_OPT_TYPE_BOOL , { . i64 = 1 } , 0 , 1 , E } ,
2013-12-30 00:42:33 +03: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 21:16:45 +03: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 15:28:37 +03: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 19:58:33 +03: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 19:58:33 +03: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 22:43:17 +03:00
{ " unofficial " , " allow unofficial extensions " , 0 , AV_OPT_TYPE_CONST , { . i64 = FF_COMPLIANCE_UNOFFICIAL } , INT_MIN , INT_MAX , D | E , " strict " } ,
2014-03-06 19:58:33 +03: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 20:49:58 +03: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 16:55:16 +03: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 " } ,
2014-11-07 23:59:00 +02:00
{ " disabled " , " do not change timestamps " , 0 , AV_OPT_TYPE_CONST , { . i64 = 0 } , INT_MIN , INT_MAX , E , " avoid_negative_ts " } ,
2012-09-26 16:55:16 +03: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 " } ,
2014-10-09 00:48:32 +03:00
{ " dump_separator " , " set information dump field separator " , OFFSET ( dump_separator ) , AV_OPT_TYPE_STRING , { . str = " , " } , CHAR_MIN , CHAR_MAX , D | E } ,
2014-10-01 00:25:39 +03:00
{ " codec_whitelist " , " List of decoders that are allowed to be used " , OFFSET ( codec_whitelist ) , AV_OPT_TYPE_STRING , { . str = NULL } , CHAR_MIN , CHAR_MAX , D } ,
{ " format_whitelist " , " List of demuxers that are allowed to be used " , OFFSET ( format_whitelist ) , AV_OPT_TYPE_STRING , { . str = NULL } , CHAR_MIN , CHAR_MAX , D } ,
2016-01-30 03:17:50 +02:00
{ " protocol_whitelist " , " List of protocols that are allowed to be used " , OFFSET ( protocol_whitelist ) , AV_OPT_TYPE_STRING , { . str = NULL } , CHAR_MIN , CHAR_MAX , D } ,
2016-03-03 19:14:26 +02:00
{ " protocol_blacklist " , " List of protocols that are not allowed to be used " , OFFSET ( protocol_blacklist ) , AV_OPT_TYPE_STRING , { . str = NULL } , CHAR_MIN , CHAR_MAX , D } ,
2016-12-10 21:15:12 +02:00
{ " max_streams " , " maximum number of streams " , OFFSET ( max_streams ) , AV_OPT_TYPE_INT , { . i64 = 1000 } , 0 , INT_MAX , D } ,
2012-03-14 15:18:20 +03:00
{ NULL } ,
} ;
# undef E
# undef D
# undef DEFAULT
# undef OFFSET
2012-12-09 15:35:21 +03:00
# endif /* AVFORMAT_OPTIONS_TABLE_H */