{"rtphint","Add RTP hint tracks",0,AV_OPT_TYPE_CONST,{.i64=FF_MOV_FLAG_RTP_HINT},INT_MIN,INT_MAX,AV_OPT_FLAG_ENCODING_PARAM,"movflags"},
{"moov_size","maximum moov size so it can be placed at the begin",offsetof(MOVMuxContext,reserved_moov_size),AV_OPT_TYPE_INT,{.i64=0},0,INT_MAX,AV_OPT_FLAG_ENCODING_PARAM,0},
{"empty_moov","Make the initial moov atom empty",0,AV_OPT_TYPE_CONST,{.i64=FF_MOV_FLAG_EMPTY_MOOV},INT_MIN,INT_MAX,AV_OPT_FLAG_ENCODING_PARAM,"movflags"},
{"frag_keyframe","Fragment at video keyframes",0,AV_OPT_TYPE_CONST,{.i64=FF_MOV_FLAG_FRAG_KEYFRAME},INT_MIN,INT_MAX,AV_OPT_FLAG_ENCODING_PARAM,"movflags"},
{"frag_every_frame","Fragment at every frame",0,AV_OPT_TYPE_CONST,{.i64=FF_MOV_FLAG_FRAG_EVERY_FRAME},INT_MIN,INT_MAX,AV_OPT_FLAG_ENCODING_PARAM,"movflags"},
{"separate_moof","Write separate moof/mdat atoms for each track",0,AV_OPT_TYPE_CONST,{.i64=FF_MOV_FLAG_SEPARATE_MOOF},INT_MIN,INT_MAX,AV_OPT_FLAG_ENCODING_PARAM,"movflags"},
{"frag_custom","Flush fragments on caller requests",0,AV_OPT_TYPE_CONST,{.i64=FF_MOV_FLAG_FRAG_CUSTOM},INT_MIN,INT_MAX,AV_OPT_FLAG_ENCODING_PARAM,"movflags"},
{"isml","Create a live smooth streaming feed (for pushing to a publishing point)",0,AV_OPT_TYPE_CONST,{.i64=FF_MOV_FLAG_ISML},INT_MIN,INT_MAX,AV_OPT_FLAG_ENCODING_PARAM,"movflags"},
{"faststart","Run a second pass to put the index (moov atom) at the beginning of the file",0,AV_OPT_TYPE_CONST,{.i64=FF_MOV_FLAG_FASTSTART},INT_MIN,INT_MAX,AV_OPT_FLAG_ENCODING_PARAM,"movflags"},
{"omit_tfhd_offset","Omit the base data offset in tfhd atoms",0,AV_OPT_TYPE_CONST,{.i64=FF_MOV_FLAG_OMIT_TFHD_OFFSET},INT_MIN,INT_MAX,AV_OPT_FLAG_ENCODING_PARAM,"movflags"},
{"default_base_moof","Set the default-base-is-moof flag in tfhd atoms",0,AV_OPT_TYPE_CONST,{.i64=FF_MOV_FLAG_DEFAULT_BASE_MOOF},INT_MIN,INT_MAX,AV_OPT_FLAG_ENCODING_PARAM,"movflags"},
{"frag_discont","Signal that the next fragment is discontinuous from earlier ones",0,AV_OPT_TYPE_CONST,{.i64=FF_MOV_FLAG_FRAG_DISCONT},INT_MIN,INT_MAX,AV_OPT_FLAG_ENCODING_PARAM,"movflags"},
{"delay_moov","Delay writing the initial moov until the first fragment is cut, or until the first fragment flush",0,AV_OPT_TYPE_CONST,{.i64=FF_MOV_FLAG_DELAY_MOOV},INT_MIN,INT_MAX,AV_OPT_FLAG_ENCODING_PARAM,"movflags"},
{"global_sidx","Write a global sidx index at the start of the file",0,AV_OPT_TYPE_CONST,{.i64=FF_MOV_FLAG_GLOBAL_SIDX},INT_MIN,INT_MAX,AV_OPT_FLAG_ENCODING_PARAM,"movflags"},
{"skip_sidx","Skip writing of sidx atom",0,AV_OPT_TYPE_CONST,{.i64=FF_MOV_FLAG_SKIP_SIDX},INT_MIN,INT_MAX,AV_OPT_FLAG_ENCODING_PARAM,"movflags"},
{"write_colr","Write colr atom even if the color info is unspecified (Experimental, may be renamed or changed, do not use from scripts)",0,AV_OPT_TYPE_CONST,{.i64=FF_MOV_FLAG_WRITE_COLR},INT_MIN,INT_MAX,AV_OPT_FLAG_ENCODING_PARAM,"movflags"},
{"prefer_icc","If writing colr atom prioritise usage of ICC profile if it exists in stream packet side data",0,AV_OPT_TYPE_CONST,{.i64=FF_MOV_FLAG_PREFER_ICC},INT_MIN,INT_MAX,AV_OPT_FLAG_ENCODING_PARAM,"movflags"},
{"use_metadata_tags","Use mdta atom for metadata.",0,AV_OPT_TYPE_CONST,{.i64=FF_MOV_FLAG_USE_MDTA},INT_MIN,INT_MAX,AV_OPT_FLAG_ENCODING_PARAM,"movflags"},
{"skip_trailer","Skip writing the mfra/tfra/mfro trailer for fragmented files",0,AV_OPT_TYPE_CONST,{.i64=FF_MOV_FLAG_SKIP_TRAILER},INT_MIN,INT_MAX,AV_OPT_FLAG_ENCODING_PARAM,"movflags"},
{"negative_cts_offsets","Use negative CTS offsets (reducing the need for edit lists)",0,AV_OPT_TYPE_CONST,{.i64=FF_MOV_FLAG_NEGATIVE_CTS_OFFSETS},INT_MIN,INT_MAX,AV_OPT_FLAG_ENCODING_PARAM,"movflags"},
{"iods_video_profile","iods video profile atom.",offsetof(MOVMuxContext,iods_video_profile),AV_OPT_TYPE_INT,{.i64=-1},-1,255,AV_OPT_FLAG_ENCODING_PARAM},
{"brand","Override major brand",offsetof(MOVMuxContext,major_brand),AV_OPT_TYPE_STRING,{.str=NULL},.flags=AV_OPT_FLAG_ENCODING_PARAM},
{"empty_hdlr_name","write zero-length name string in hdlr atoms within mdia and minf atoms",offsetof(MOVMuxContext,empty_hdlr_name),AV_OPT_TYPE_BOOL,{.i64=0},0,1,AV_OPT_FLAG_ENCODING_PARAM},
{"encryption_key","The media encryption key (hex)",offsetof(MOVMuxContext,encryption_key),AV_OPT_TYPE_BINARY,.flags=AV_OPT_FLAG_ENCODING_PARAM},
{"encryption_kid","The media encryption key identifier (hex)",offsetof(MOVMuxContext,encryption_kid),AV_OPT_TYPE_BINARY,.flags=AV_OPT_FLAG_ENCODING_PARAM},
{"encryption_scheme","Configures the encryption scheme, allowed values are none, cenc-aes-ctr",offsetof(MOVMuxContext,encryption_scheme_str),AV_OPT_TYPE_STRING,{.str=NULL},.flags=AV_OPT_FLAG_ENCODING_PARAM},
{"frag_duration","Maximum fragment duration",offsetof(MOVMuxContext,max_fragment_duration),AV_OPT_TYPE_INT,{.i64=0},0,INT_MAX,AV_OPT_FLAG_ENCODING_PARAM},
{"min_frag_duration","Minimum fragment duration",offsetof(MOVMuxContext,min_fragment_duration),AV_OPT_TYPE_INT,{.i64=0},0,INT_MAX,AV_OPT_FLAG_ENCODING_PARAM},
{"frag_interleave","Interleave samples within fragments (max number of consecutive samples, lower is tighter interleaving, but with more overhead)",offsetof(MOVMuxContext,frag_interleave),AV_OPT_TYPE_INT,{.i64=0},0,INT_MAX,AV_OPT_FLAG_ENCODING_PARAM},
{"frag_size","Maximum fragment size",offsetof(MOVMuxContext,max_fragment_size),AV_OPT_TYPE_INT,{.i64=0},0,INT_MAX,AV_OPT_FLAG_ENCODING_PARAM},
{"ism_lookahead","Number of lookahead entries for ISM files",offsetof(MOVMuxContext,ism_lookahead),AV_OPT_TYPE_INT,{.i64=0},0,255,AV_OPT_FLAG_ENCODING_PARAM},
{"video_track_timescale","set timescale of all video tracks",offsetof(MOVMuxContext,video_track_timescale),AV_OPT_TYPE_INT,{.i64=0},0,INT_MAX,AV_OPT_FLAG_ENCODING_PARAM},
{"brand","Override major brand",offsetof(MOVMuxContext,major_brand),AV_OPT_TYPE_STRING,{.str=NULL},.flags=AV_OPT_FLAG_ENCODING_PARAM},
{"fragment_index","Fragment number of the next fragment",offsetof(MOVMuxContext,fragments),AV_OPT_TYPE_INT,{.i64=1},1,INT_MAX,AV_OPT_FLAG_ENCODING_PARAM},
{"iods_video_profile","iods video profile atom.",offsetof(MOVMuxContext,iods_video_profile),AV_OPT_TYPE_INT,{.i64=-1},-1,255,AV_OPT_FLAG_ENCODING_PARAM},
{"ism_lookahead","Number of lookahead entries for ISM files",offsetof(MOVMuxContext,ism_lookahead),AV_OPT_TYPE_INT,{.i64=0},0,255,AV_OPT_FLAG_ENCODING_PARAM},
{"default_base_moof","Set the default-base-is-moof flag in tfhd atoms",0,AV_OPT_TYPE_CONST,{.i64=FF_MOV_FLAG_DEFAULT_BASE_MOOF},INT_MIN,INT_MAX,AV_OPT_FLAG_ENCODING_PARAM,"movflags"},
{"delay_moov","Delay writing the initial moov until the first fragment is cut, or until the first fragment flush",0,AV_OPT_TYPE_CONST,{.i64=FF_MOV_FLAG_DELAY_MOOV},INT_MIN,INT_MAX,AV_OPT_FLAG_ENCODING_PARAM,"movflags"},
{"empty_moov","Make the initial moov atom empty",0,AV_OPT_TYPE_CONST,{.i64=FF_MOV_FLAG_EMPTY_MOOV},INT_MIN,INT_MAX,AV_OPT_FLAG_ENCODING_PARAM,"movflags"},
{"faststart","Run a second pass to put the index (moov atom) at the beginning of the file",0,AV_OPT_TYPE_CONST,{.i64=FF_MOV_FLAG_FASTSTART},INT_MIN,INT_MAX,AV_OPT_FLAG_ENCODING_PARAM,"movflags"},
{"frag_custom","Flush fragments on caller requests",0,AV_OPT_TYPE_CONST,{.i64=FF_MOV_FLAG_FRAG_CUSTOM},INT_MIN,INT_MAX,AV_OPT_FLAG_ENCODING_PARAM,"movflags"},
{"frag_discont","Signal that the next fragment is discontinuous from earlier ones",0,AV_OPT_TYPE_CONST,{.i64=FF_MOV_FLAG_FRAG_DISCONT},INT_MIN,INT_MAX,AV_OPT_FLAG_ENCODING_PARAM,"movflags"},
{"frag_every_frame","Fragment at every frame",0,AV_OPT_TYPE_CONST,{.i64=FF_MOV_FLAG_FRAG_EVERY_FRAME},INT_MIN,INT_MAX,AV_OPT_FLAG_ENCODING_PARAM,"movflags"},
{"frag_keyframe","Fragment at video keyframes",0,AV_OPT_TYPE_CONST,{.i64=FF_MOV_FLAG_FRAG_KEYFRAME},INT_MIN,INT_MAX,AV_OPT_FLAG_ENCODING_PARAM,"movflags"},
{"global_sidx","Write a global sidx index at the start of the file",0,AV_OPT_TYPE_CONST,{.i64=FF_MOV_FLAG_GLOBAL_SIDX},INT_MIN,INT_MAX,AV_OPT_FLAG_ENCODING_PARAM,"movflags"},
{"isml","Create a live smooth streaming feed (for pushing to a publishing point)",0,AV_OPT_TYPE_CONST,{.i64=FF_MOV_FLAG_ISML},INT_MIN,INT_MAX,AV_OPT_FLAG_ENCODING_PARAM,"movflags"},
{"moov_size","maximum moov size so it can be placed at the begin",offsetof(MOVMuxContext,reserved_moov_size),AV_OPT_TYPE_INT,{.i64=0},0,INT_MAX,AV_OPT_FLAG_ENCODING_PARAM,0},
{"negative_cts_offsets","Use negative CTS offsets (reducing the need for edit lists)",0,AV_OPT_TYPE_CONST,{.i64=FF_MOV_FLAG_NEGATIVE_CTS_OFFSETS},INT_MIN,INT_MAX,AV_OPT_FLAG_ENCODING_PARAM,"movflags"},
{"omit_tfhd_offset","Omit the base data offset in tfhd atoms",0,AV_OPT_TYPE_CONST,{.i64=FF_MOV_FLAG_OMIT_TFHD_OFFSET},INT_MIN,INT_MAX,AV_OPT_FLAG_ENCODING_PARAM,"movflags"},
{"prefer_icc","If writing colr atom prioritise usage of ICC profile if it exists in stream packet side data",0,AV_OPT_TYPE_CONST,{.i64=FF_MOV_FLAG_PREFER_ICC},INT_MIN,INT_MAX,AV_OPT_FLAG_ENCODING_PARAM,"movflags"},
{"rtphint","Add RTP hint tracks",0,AV_OPT_TYPE_CONST,{.i64=FF_MOV_FLAG_RTP_HINT},INT_MIN,INT_MAX,AV_OPT_FLAG_ENCODING_PARAM,"movflags"},
{"separate_moof","Write separate moof/mdat atoms for each track",0,AV_OPT_TYPE_CONST,{.i64=FF_MOV_FLAG_SEPARATE_MOOF},INT_MIN,INT_MAX,AV_OPT_FLAG_ENCODING_PARAM,"movflags"},
{"skip_sidx","Skip writing of sidx atom",0,AV_OPT_TYPE_CONST,{.i64=FF_MOV_FLAG_SKIP_SIDX},INT_MIN,INT_MAX,AV_OPT_FLAG_ENCODING_PARAM,"movflags"},
{"skip_trailer","Skip writing the mfra/tfra/mfro trailer for fragmented files",0,AV_OPT_TYPE_CONST,{.i64=FF_MOV_FLAG_SKIP_TRAILER},INT_MIN,INT_MAX,AV_OPT_FLAG_ENCODING_PARAM,"movflags"},
{"use_metadata_tags","Use mdta atom for metadata.",0,AV_OPT_TYPE_CONST,{.i64=FF_MOV_FLAG_USE_MDTA},INT_MIN,INT_MAX,AV_OPT_FLAG_ENCODING_PARAM,"movflags"},
{"write_colr","Write colr atom even if the color info is unspecified (Experimental, may be renamed or changed, do not use from scripts)",0,AV_OPT_TYPE_CONST,{.i64=FF_MOV_FLAG_WRITE_COLR},INT_MIN,INT_MAX,AV_OPT_FLAG_ENCODING_PARAM,"movflags"},
{"min_frag_duration","Minimum fragment duration",offsetof(MOVMuxContext,min_fragment_duration),AV_OPT_TYPE_INT,{.i64=0},0,INT_MAX,AV_OPT_FLAG_ENCODING_PARAM},
{"mov_gamma","gamma value for gama atom",offsetof(MOVMuxContext,gamma),AV_OPT_TYPE_FLOAT,{.dbl=0.0},0.0,10,AV_OPT_FLAG_ENCODING_PARAM},
{"frag_interleave","Interleave samples within fragments (max number of consecutive samples, lower is tighter interleaving, but with more overhead)",offsetof(MOVMuxContext,frag_interleave),AV_OPT_TYPE_INT,{.i64=0},0,INT_MAX,AV_OPT_FLAG_ENCODING_PARAM},
{"encryption_scheme","Configures the encryption scheme, allowed values are none, cenc-aes-ctr",offsetof(MOVMuxContext,encryption_scheme_str),AV_OPT_TYPE_STRING,{.str=NULL},.flags=AV_OPT_FLAG_ENCODING_PARAM},
{"encryption_key","The media encryption key (hex)",offsetof(MOVMuxContext,encryption_key),AV_OPT_TYPE_BINARY,.flags=AV_OPT_FLAG_ENCODING_PARAM},
{"encryption_kid","The media encryption key identifier (hex)",offsetof(MOVMuxContext,encryption_kid),AV_OPT_TYPE_BINARY,.flags=AV_OPT_FLAG_ENCODING_PARAM},
{"movie_timescale","set movie timescale",offsetof(MOVMuxContext,movie_timescale),AV_OPT_TYPE_INT,{.i64=MOV_TIMESCALE},1,INT_MAX,AV_OPT_FLAG_ENCODING_PARAM},
{"use_stream_ids_as_track_ids","use stream ids as track ids",offsetof(MOVMuxContext,use_stream_ids_as_track_ids),AV_OPT_TYPE_BOOL,{.i64=0},0,1,AV_OPT_FLAG_ENCODING_PARAM},
{"video_track_timescale","set timescale of all video tracks",offsetof(MOVMuxContext,video_track_timescale),AV_OPT_TYPE_INT,{.i64=0},0,INT_MAX,AV_OPT_FLAG_ENCODING_PARAM},
{"write_btrt","force or disable writing btrt",offsetof(MOVMuxContext,write_btrt),AV_OPT_TYPE_BOOL,{.i64=-1},-1,1,AV_OPT_FLAG_ENCODING_PARAM},
{"write_tmcd","force or disable writing tmcd",offsetof(MOVMuxContext,write_tmcd),AV_OPT_TYPE_BOOL,{.i64=-1},-1,1,AV_OPT_FLAG_ENCODING_PARAM},
{"write_prft","Write producer reference time box with specified time source",offsetof(MOVMuxContext,write_prft),AV_OPT_TYPE_INT,{.i64=MOV_PRFT_NONE},0,MOV_PRFT_NB-1,AV_OPT_FLAG_ENCODING_PARAM,"prft"},
{"empty_hdlr_name","write zero-length name string in hdlr atoms within mdia and minf atoms",offsetof(MOVMuxContext,empty_hdlr_name),AV_OPT_TYPE_BOOL,{.i64=0},0,1,AV_OPT_FLAG_ENCODING_PARAM},
{"movie_timescale","set movie timescale",offsetof(MOVMuxContext,movie_timescale),AV_OPT_TYPE_INT,{.i64=MOV_TIMESCALE},1,INT_MAX,AV_OPT_FLAG_ENCODING_PARAM},