mirror of
https://github.com/FFmpeg/FFmpeg.git
synced 2024-12-23 12:43:46 +02:00
AVOption first try
Originally committed as revision 4563 to svn://svn.ffmpeg.org/ffmpeg/trunk
This commit is contained in:
parent
f926cbe74c
commit
860a40c8a7
@ -17,7 +17,8 @@ OBJS= bitstream.o utils.o mem.o allcodecs.o \
|
|||||||
ratecontrol.o adpcm.o eval.o error_resilience.o \
|
ratecontrol.o adpcm.o eval.o error_resilience.o \
|
||||||
fft.o mdct.o raw.o golomb.o cabac.o\
|
fft.o mdct.o raw.o golomb.o cabac.o\
|
||||||
dpcm.o adx.o faandct.o parser.o g726.o \
|
dpcm.o adx.o faandct.o parser.o g726.o \
|
||||||
vp3dsp.o h264idct.o rangecoder.o pnm.o h263.o msmpeg4.o h263dec.o dvdsub.o dvbsub.o dvbsubdec.o
|
vp3dsp.o h264idct.o rangecoder.o pnm.o h263.o msmpeg4.o h263dec.o dvdsub.o dvbsub.o dvbsubdec.o\
|
||||||
|
opt.o
|
||||||
|
|
||||||
ifeq ($(CONFIG_AASC_DECODER),yes)
|
ifeq ($(CONFIG_AASC_DECODER),yes)
|
||||||
OBJS+= aasc.o
|
OBJS+= aasc.o
|
||||||
|
@ -21,8 +21,8 @@ extern "C" {
|
|||||||
#define AV_STRINGIFY(s) AV_TOSTRING(s)
|
#define AV_STRINGIFY(s) AV_TOSTRING(s)
|
||||||
#define AV_TOSTRING(s) #s
|
#define AV_TOSTRING(s) #s
|
||||||
|
|
||||||
#define LIBAVCODEC_VERSION_INT ((49<<16)+(0<<8)+2)
|
#define LIBAVCODEC_VERSION_INT ((49<<16)+(1<<8)+0)
|
||||||
#define LIBAVCODEC_VERSION 49.0.2
|
#define LIBAVCODEC_VERSION 49.1.0
|
||||||
#define LIBAVCODEC_BUILD LIBAVCODEC_VERSION_INT
|
#define LIBAVCODEC_BUILD LIBAVCODEC_VERSION_INT
|
||||||
|
|
||||||
#define LIBAVCODEC_IDENT "Lavc" AV_STRINGIFY(LIBAVCODEC_VERSION)
|
#define LIBAVCODEC_IDENT "Lavc" AV_STRINGIFY(LIBAVCODEC_VERSION)
|
||||||
@ -671,6 +671,35 @@ typedef struct AVFrame {
|
|||||||
|
|
||||||
#define DEFAULT_FRAME_RATE_BASE 1001000
|
#define DEFAULT_FRAME_RATE_BASE 1001000
|
||||||
|
|
||||||
|
enum AVOptionType{
|
||||||
|
FF_OPT_TYPE_INT,
|
||||||
|
FF_OPT_TYPE_INT64,
|
||||||
|
FF_OPT_TYPE_DOUBLE,
|
||||||
|
FF_OPT_TYPE_FLOAT,
|
||||||
|
FF_OPT_TYPE_STRING,
|
||||||
|
FF_OPT_TYPE_RATIONAL,
|
||||||
|
FF_OPT_TYPE_CONST=128,
|
||||||
|
};
|
||||||
|
|
||||||
|
/**
|
||||||
|
* AVOption.
|
||||||
|
*/
|
||||||
|
typedef struct AVOption {
|
||||||
|
const char *name;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* short English text help.
|
||||||
|
* @fixme what about other languages
|
||||||
|
*/
|
||||||
|
const char *help;
|
||||||
|
int offset; ///< offset to context structure where the parsed value should be stored
|
||||||
|
enum AVOptionType type;
|
||||||
|
|
||||||
|
double default_val;
|
||||||
|
double min;
|
||||||
|
double max;
|
||||||
|
} AVOption;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Used by av_log
|
* Used by av_log
|
||||||
*/
|
*/
|
||||||
@ -681,6 +710,7 @@ struct AVCLASS {
|
|||||||
or AVFormatContext, which begin with an AVClass.
|
or AVFormatContext, which begin with an AVClass.
|
||||||
Needed because av_log is in libavcodec and has no visibility
|
Needed because av_log is in libavcodec and has no visibility
|
||||||
of AVIn/OutputFormat */
|
of AVIn/OutputFormat */
|
||||||
|
AVOption *option;
|
||||||
};
|
};
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -1847,41 +1877,13 @@ typedef struct AVCodecContext {
|
|||||||
enum AVDiscard skip_frame;
|
enum AVDiscard skip_frame;
|
||||||
} AVCodecContext;
|
} AVCodecContext;
|
||||||
|
|
||||||
|
int av_set_string(void *obj, const char *name, const char *val);
|
||||||
|
int av_set_double(void *obj, const char *name, double n);
|
||||||
|
int av_set_q(void *obj, const char *name, AVRational n);
|
||||||
|
int av_set_int(void *obj, const char *name, int64_t n);
|
||||||
|
const char *av_get_string(void *obj, const char *name);
|
||||||
|
double av_get_double(void *obj, const char *name);
|
||||||
|
|
||||||
/**
|
|
||||||
* AVOption.
|
|
||||||
*/
|
|
||||||
typedef struct AVOption {
|
|
||||||
/** options' name */
|
|
||||||
const char *name; /* if name is NULL, it indicates a link to next */
|
|
||||||
/** short English text help or const struct AVOption* subpointer */
|
|
||||||
const char *help; // const struct AVOption* sub;
|
|
||||||
/** offset to context structure where the parsed value should be stored */
|
|
||||||
int offset;
|
|
||||||
/** options' type */
|
|
||||||
int type;
|
|
||||||
#define FF_OPT_TYPE_BOOL 1 ///< boolean - true,1,on (or simply presence)
|
|
||||||
#define FF_OPT_TYPE_DOUBLE 2 ///< double
|
|
||||||
#define FF_OPT_TYPE_INT 3 ///< integer
|
|
||||||
#define FF_OPT_TYPE_STRING 4 ///< string (finished with \0)
|
|
||||||
#define FF_OPT_TYPE_MASK 0x1f ///< mask for types - upper bits are various flags
|
|
||||||
//#define FF_OPT_TYPE_EXPERT 0x20 // flag for expert option
|
|
||||||
#define FF_OPT_TYPE_FLAG (FF_OPT_TYPE_BOOL | 0x40)
|
|
||||||
#define FF_OPT_TYPE_RCOVERRIDE (FF_OPT_TYPE_STRING | 0x80)
|
|
||||||
/** min value (min == max -> no limits) */
|
|
||||||
double min;
|
|
||||||
/** maximum value for double/int */
|
|
||||||
double max;
|
|
||||||
/** default boo [0,1]l/double/int value */
|
|
||||||
double defval;
|
|
||||||
/**
|
|
||||||
* default string value (with optional semicolon delimited extra option-list
|
|
||||||
* i.e. option1;option2;option3
|
|
||||||
* defval might select other then first argument as default
|
|
||||||
*/
|
|
||||||
const char *defstr;
|
|
||||||
#define FF_OPT_MAX_DEPTH 10
|
|
||||||
} AVOption;
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* AVCodec.
|
* AVCodec.
|
||||||
|
162
libavcodec/opt.c
Normal file
162
libavcodec/opt.c
Normal file
@ -0,0 +1,162 @@
|
|||||||
|
/*
|
||||||
|
* AVOptions
|
||||||
|
* Copyright (c) 2005 Michael Niedermayer <michaelni@gmx.at>
|
||||||
|
*
|
||||||
|
* This library is free software; you can redistribute it and/or
|
||||||
|
* modify it under the terms of the GNU Lesser General Public
|
||||||
|
* License as published by the Free Software Foundation; either
|
||||||
|
* version 2 of the License, or (at your option) any later version.
|
||||||
|
*
|
||||||
|
* This library is distributed in the hope that it will be useful,
|
||||||
|
* 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
|
||||||
|
* License along with this library; if not, write to the Free Software
|
||||||
|
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @file opt.c
|
||||||
|
* AVOptions
|
||||||
|
* @author Michael Niedermayer <michaelni@gmx.at>
|
||||||
|
*/
|
||||||
|
|
||||||
|
#include "avcodec.h"
|
||||||
|
|
||||||
|
static double av_parse_num(const char *name, char **tail){
|
||||||
|
double d;
|
||||||
|
d= strtod(name, tail);
|
||||||
|
if(*tail>name && (**tail=='/' || **tail==':'))
|
||||||
|
d/=strtod((*tail)+1, tail);
|
||||||
|
return d;
|
||||||
|
}
|
||||||
|
|
||||||
|
//FIXME order them and do a bin search
|
||||||
|
static AVOption *find_opt(void *v, const char *name){
|
||||||
|
AVClass *c= *(AVClass**)v; //FIXME silly way of storing AVClass
|
||||||
|
AVOption *o= c->option;
|
||||||
|
|
||||||
|
for(;o && o->name; o++){
|
||||||
|
if(!strcmp(o->name, name))
|
||||||
|
return o;
|
||||||
|
}
|
||||||
|
return NULL;
|
||||||
|
}
|
||||||
|
|
||||||
|
static int av_set_number(void *obj, const char *name, double num, int den, int64_t intnum){
|
||||||
|
AVOption *o= find_opt(obj, name);
|
||||||
|
void *dst;
|
||||||
|
if(!o || o->offset<=0)
|
||||||
|
return -1;
|
||||||
|
|
||||||
|
if(o->max*den < num*intnum || o->min*den > num*intnum)
|
||||||
|
return -1;
|
||||||
|
|
||||||
|
dst= ((uint8_t*)obj) + o->offset;
|
||||||
|
|
||||||
|
switch(o->type){
|
||||||
|
case FF_OPT_TYPE_INT:
|
||||||
|
*(int*)dst= lrintf(num/den)*intnum;
|
||||||
|
break;
|
||||||
|
case FF_OPT_TYPE_INT64:
|
||||||
|
*(int64_t*)dst= lrintf(num/den)*intnum;
|
||||||
|
break;
|
||||||
|
case FF_OPT_TYPE_FLOAT:
|
||||||
|
*(float*)dst= num*intnum/den;
|
||||||
|
break;
|
||||||
|
case FF_OPT_TYPE_DOUBLE:
|
||||||
|
*(double*)dst= num*intnum/den;
|
||||||
|
break;
|
||||||
|
case FF_OPT_TYPE_RATIONAL:
|
||||||
|
if((int)num == num)
|
||||||
|
*(AVRational*)dst= (AVRational){num*intnum, den};
|
||||||
|
else
|
||||||
|
*(AVRational*)dst= av_d2q(num*intnum/den, 1<<24);
|
||||||
|
default:
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
//FIXME use eval.c maybe?
|
||||||
|
int av_set_string(void *obj, const char *name, const char *val){
|
||||||
|
AVOption *o= find_opt(obj, name);
|
||||||
|
if(!o || !val || o->offset<=0)
|
||||||
|
return -1;
|
||||||
|
if(o->type != FF_OPT_TYPE_STRING){
|
||||||
|
double d=0, tmp_d;
|
||||||
|
for(;;){
|
||||||
|
int i;
|
||||||
|
char buf[256], *tail;
|
||||||
|
|
||||||
|
for(i=0; i<sizeof(buf)-1 && val[i] && val[i]!='+'; i++)
|
||||||
|
buf[i]= val[i];
|
||||||
|
buf[i]=0;
|
||||||
|
val+= i;
|
||||||
|
|
||||||
|
tmp_d= av_parse_num(buf, &tail);
|
||||||
|
if(tail > buf)
|
||||||
|
d+= tmp_d;
|
||||||
|
else{
|
||||||
|
AVOption *o_named= find_opt(obj, buf);
|
||||||
|
if(o_named && o_named->type == FF_OPT_TYPE_CONST)
|
||||||
|
d+= o_named->default_val;
|
||||||
|
else if(!strcmp(buf, "default")) d+= o->default_val;
|
||||||
|
else if(!strcmp(buf, "max" )) d+= o->max;
|
||||||
|
else if(!strcmp(buf, "min" )) d+= o->min;
|
||||||
|
else return -1;
|
||||||
|
}
|
||||||
|
|
||||||
|
if(*val == '+') val++;
|
||||||
|
if(!*val)
|
||||||
|
return av_set_number(obj, name, d, 1, 1);
|
||||||
|
}
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
|
|
||||||
|
memcpy(((uint8_t*)obj) + o->offset, val, sizeof(val));
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
int av_set_double(void *obj, const char *name, double n){
|
||||||
|
return av_set_number(obj, name, n, 1, 1);
|
||||||
|
}
|
||||||
|
|
||||||
|
int av_set_q(void *obj, const char *name, AVRational n){
|
||||||
|
return av_set_number(obj, name, n.num, n.den, 1);
|
||||||
|
}
|
||||||
|
|
||||||
|
int av_set_int(void *obj, const char *name, int64_t n){
|
||||||
|
return av_set_number(obj, name, 1, 1, n);
|
||||||
|
}
|
||||||
|
|
||||||
|
const char *av_get_string(void *obj, const char *name){
|
||||||
|
AVOption *o= find_opt(obj, name);
|
||||||
|
if(!o || o->offset<=0)
|
||||||
|
return NULL;
|
||||||
|
if(o->type != FF_OPT_TYPE_STRING) //FIXME convert to string? but what about free()?
|
||||||
|
return NULL;
|
||||||
|
|
||||||
|
return (const char*)(((uint8_t*)obj) + o->offset);
|
||||||
|
}
|
||||||
|
|
||||||
|
double av_get_double(void *obj, const char *name){
|
||||||
|
AVOption *o= find_opt(obj, name);
|
||||||
|
void *dst;
|
||||||
|
if(!o || o->offset<=0)
|
||||||
|
return NAN;
|
||||||
|
|
||||||
|
dst= ((uint8_t*)obj) + o->offset;
|
||||||
|
|
||||||
|
switch(o->type){
|
||||||
|
case FF_OPT_TYPE_INT: return *(int*)dst;
|
||||||
|
case FF_OPT_TYPE_INT64: return *(int64_t*)dst; //FIXME maybe write a av_get_int64() ?
|
||||||
|
case FF_OPT_TYPE_FLOAT: return *(float*)dst;
|
||||||
|
case FF_OPT_TYPE_DOUBLE: return *(double*)dst;
|
||||||
|
case FF_OPT_TYPE_RATIONAL: return av_q2d(*(AVRational*)dst); //FIXME maybe write a av_get_q() ?
|
||||||
|
default: return NAN;
|
||||||
|
}
|
||||||
|
}
|
@ -30,6 +30,7 @@
|
|||||||
#include "integer.h"
|
#include "integer.h"
|
||||||
#include <stdarg.h>
|
#include <stdarg.h>
|
||||||
#include <limits.h>
|
#include <limits.h>
|
||||||
|
#include <float.h>
|
||||||
|
|
||||||
const uint8_t ff_reverse[256]={
|
const uint8_t ff_reverse[256]={
|
||||||
0x00,0x80,0x40,0xC0,0x20,0xA0,0x60,0xE0,0x10,0x90,0x50,0xD0,0x30,0xB0,0x70,0xF0,
|
0x00,0x80,0x40,0xC0,0x20,0xA0,0x60,0xE0,0x10,0x90,0x50,0xD0,0x30,0xB0,0x70,0xF0,
|
||||||
@ -434,7 +435,143 @@ static const char* context_to_name(void* ptr) {
|
|||||||
return "NULL";
|
return "NULL";
|
||||||
}
|
}
|
||||||
|
|
||||||
static AVClass av_codec_context_class = { "AVCodecContext", context_to_name };
|
#define OFFSET(x) (int)&((AVCodecContext*)0)->x
|
||||||
|
#define DEFAULT 0 //should be NAN but it doesnt work as its not a constant in glibc as required by ANSI/ISO C
|
||||||
|
|
||||||
|
static AVOption options[]={
|
||||||
|
{"bit_rate", NULL, OFFSET(bit_rate), FF_OPT_TYPE_INT, DEFAULT, INT_MIN, INT_MAX},
|
||||||
|
{"bit_rate_tolerance", NULL, OFFSET(bit_rate_tolerance), FF_OPT_TYPE_INT, DEFAULT, INT_MIN, INT_MAX},
|
||||||
|
{"flags", NULL, OFFSET(flags), FF_OPT_TYPE_INT, DEFAULT, INT_MIN, INT_MAX},
|
||||||
|
{"sub_id", NULL, OFFSET(sub_id), FF_OPT_TYPE_INT, DEFAULT, INT_MIN, INT_MAX},
|
||||||
|
{"me_method", NULL, OFFSET(me_method), FF_OPT_TYPE_INT, DEFAULT, INT_MIN, INT_MAX},
|
||||||
|
{"extradata_size", NULL, OFFSET(extradata_size), FF_OPT_TYPE_INT, DEFAULT, INT_MIN, INT_MAX},
|
||||||
|
{"time_base", NULL, OFFSET(time_base), FF_OPT_TYPE_RATIONAL, DEFAULT, INT_MIN, INT_MAX},
|
||||||
|
{"gop_size", NULL, OFFSET(gop_size), FF_OPT_TYPE_INT, DEFAULT, INT_MIN, INT_MAX},
|
||||||
|
{"rate_emu", NULL, OFFSET(rate_emu), FF_OPT_TYPE_INT, DEFAULT, INT_MIN, INT_MAX},
|
||||||
|
{"sample_rate", NULL, OFFSET(sample_rate), FF_OPT_TYPE_INT, DEFAULT, INT_MIN, INT_MAX},
|
||||||
|
{"channels", NULL, OFFSET(channels), FF_OPT_TYPE_INT, DEFAULT, INT_MIN, INT_MAX},
|
||||||
|
{"frame_size", NULL, OFFSET(frame_size), FF_OPT_TYPE_INT, DEFAULT, INT_MIN, INT_MAX},
|
||||||
|
{"frame_number", NULL, OFFSET(frame_number), FF_OPT_TYPE_INT, DEFAULT, INT_MIN, INT_MAX},
|
||||||
|
{"real_pict_num", NULL, OFFSET(real_pict_num), FF_OPT_TYPE_INT, DEFAULT, INT_MIN, INT_MAX},
|
||||||
|
{"delay", NULL, OFFSET(delay), FF_OPT_TYPE_INT, DEFAULT, INT_MIN, INT_MAX},
|
||||||
|
{"qcompress", NULL, OFFSET(qcompress), FF_OPT_TYPE_FLOAT, DEFAULT, FLT_MIN, FLT_MAX},
|
||||||
|
{"qblur", NULL, OFFSET(qblur), FF_OPT_TYPE_FLOAT, DEFAULT, FLT_MIN, FLT_MAX},
|
||||||
|
{"qmin", NULL, OFFSET(qmin), FF_OPT_TYPE_INT, DEFAULT, INT_MIN, INT_MAX},
|
||||||
|
{"qmax", NULL, OFFSET(qmax), FF_OPT_TYPE_INT, DEFAULT, INT_MIN, INT_MAX},
|
||||||
|
{"max_qdiff", NULL, OFFSET(max_qdiff), FF_OPT_TYPE_INT, DEFAULT, INT_MIN, INT_MAX},
|
||||||
|
{"max_b_frames", NULL, OFFSET(max_b_frames), FF_OPT_TYPE_INT, DEFAULT, INT_MIN, INT_MAX},
|
||||||
|
{"b_quant_factor", NULL, OFFSET(b_quant_factor), FF_OPT_TYPE_FLOAT, DEFAULT, FLT_MIN, FLT_MAX},
|
||||||
|
{"rc_strategy", NULL, OFFSET(rc_strategy), FF_OPT_TYPE_INT, DEFAULT, INT_MIN, INT_MAX},
|
||||||
|
{"b_frame_strategy", NULL, OFFSET(b_frame_strategy), FF_OPT_TYPE_INT, DEFAULT, INT_MIN, INT_MAX},
|
||||||
|
{"hurry_up", NULL, OFFSET(hurry_up), FF_OPT_TYPE_INT, DEFAULT, INT_MIN, INT_MAX},
|
||||||
|
{"rtp_mode", NULL, OFFSET(rtp_mode), FF_OPT_TYPE_INT, DEFAULT, INT_MIN, INT_MAX},
|
||||||
|
{"rtp_payload_size", NULL, OFFSET(rtp_payload_size), FF_OPT_TYPE_INT, DEFAULT, INT_MIN, INT_MAX},
|
||||||
|
{"mv_bits", NULL, OFFSET(mv_bits), FF_OPT_TYPE_INT, DEFAULT, INT_MIN, INT_MAX},
|
||||||
|
{"header_bits", NULL, OFFSET(header_bits), FF_OPT_TYPE_INT, DEFAULT, INT_MIN, INT_MAX},
|
||||||
|
{"i_tex_bits", NULL, OFFSET(i_tex_bits), FF_OPT_TYPE_INT, DEFAULT, INT_MIN, INT_MAX},
|
||||||
|
{"p_tex_bits", NULL, OFFSET(p_tex_bits), FF_OPT_TYPE_INT, DEFAULT, INT_MIN, INT_MAX},
|
||||||
|
{"i_count", NULL, OFFSET(i_count), FF_OPT_TYPE_INT, DEFAULT, INT_MIN, INT_MAX},
|
||||||
|
{"p_count", NULL, OFFSET(p_count), FF_OPT_TYPE_INT, DEFAULT, INT_MIN, INT_MAX},
|
||||||
|
{"skip_count", NULL, OFFSET(skip_count), FF_OPT_TYPE_INT, DEFAULT, INT_MIN, INT_MAX},
|
||||||
|
{"misc_bits", NULL, OFFSET(misc_bits), FF_OPT_TYPE_INT, DEFAULT, INT_MIN, INT_MAX},
|
||||||
|
{"frame_bits", NULL, OFFSET(frame_bits), FF_OPT_TYPE_INT, DEFAULT, INT_MIN, INT_MAX},
|
||||||
|
{"codec_tag", NULL, OFFSET(codec_tag), FF_OPT_TYPE_INT, DEFAULT, INT_MIN, INT_MAX},
|
||||||
|
{"workaround_bugs", NULL, OFFSET(workaround_bugs), FF_OPT_TYPE_INT, DEFAULT, INT_MIN, INT_MAX},
|
||||||
|
{"luma_elim_threshold", NULL, OFFSET(luma_elim_threshold), FF_OPT_TYPE_INT, DEFAULT, INT_MIN, INT_MAX},
|
||||||
|
{"chroma_elim_threshold", NULL, OFFSET(chroma_elim_threshold), FF_OPT_TYPE_INT, DEFAULT, INT_MIN, INT_MAX},
|
||||||
|
{"strict_std_compliance", NULL, OFFSET(strict_std_compliance), FF_OPT_TYPE_INT, DEFAULT, INT_MIN, INT_MAX},
|
||||||
|
{"b_quant_offset", NULL, OFFSET(b_quant_offset), FF_OPT_TYPE_FLOAT, DEFAULT, FLT_MIN, FLT_MAX},
|
||||||
|
{"error_resilience", NULL, OFFSET(error_resilience), FF_OPT_TYPE_INT, DEFAULT, INT_MIN, INT_MAX},
|
||||||
|
{"has_b_frames", NULL, OFFSET(has_b_frames), FF_OPT_TYPE_INT, DEFAULT, INT_MIN, INT_MAX},
|
||||||
|
{"block_align", NULL, OFFSET(block_align), FF_OPT_TYPE_INT, DEFAULT, INT_MIN, INT_MAX},
|
||||||
|
{"parse_only", NULL, OFFSET(parse_only), FF_OPT_TYPE_INT, DEFAULT, INT_MIN, INT_MAX},
|
||||||
|
{"mpeg_quant", NULL, OFFSET(mpeg_quant), FF_OPT_TYPE_INT, DEFAULT, INT_MIN, INT_MAX},
|
||||||
|
{"stats_out", NULL, OFFSET(stats_out), FF_OPT_TYPE_STRING, DEFAULT, CHAR_MIN, CHAR_MAX},
|
||||||
|
{"stats_in", NULL, OFFSET(stats_in), FF_OPT_TYPE_STRING, DEFAULT, CHAR_MIN, CHAR_MAX},
|
||||||
|
{"rc_qsquish", NULL, OFFSET(rc_qsquish), FF_OPT_TYPE_FLOAT, DEFAULT, FLT_MIN, FLT_MAX},
|
||||||
|
{"rc_qmod_amp", NULL, OFFSET(rc_qmod_amp), FF_OPT_TYPE_FLOAT, DEFAULT, FLT_MIN, FLT_MAX},
|
||||||
|
{"rc_qmod_freq", NULL, OFFSET(rc_qmod_freq), FF_OPT_TYPE_INT, DEFAULT, INT_MIN, INT_MAX},
|
||||||
|
{"rc_override_count", NULL, OFFSET(rc_override_count), FF_OPT_TYPE_INT, DEFAULT, INT_MIN, INT_MAX},
|
||||||
|
{"rc_eq", NULL, OFFSET(rc_eq), FF_OPT_TYPE_STRING, DEFAULT, CHAR_MIN, CHAR_MAX},
|
||||||
|
{"rc_max_rate", NULL, OFFSET(rc_max_rate), FF_OPT_TYPE_INT, DEFAULT, INT_MIN, INT_MAX},
|
||||||
|
{"rc_min_rate", NULL, OFFSET(rc_min_rate), FF_OPT_TYPE_INT, DEFAULT, INT_MIN, INT_MAX},
|
||||||
|
{"rc_buffer_size", NULL, OFFSET(rc_buffer_size), FF_OPT_TYPE_INT, DEFAULT, INT_MIN, INT_MAX},
|
||||||
|
{"rc_buffer_aggressivity", NULL, OFFSET(rc_buffer_aggressivity), FF_OPT_TYPE_FLOAT, DEFAULT, FLT_MIN, FLT_MAX},
|
||||||
|
{"i_quant_factor", NULL, OFFSET(i_quant_factor), FF_OPT_TYPE_FLOAT, DEFAULT, FLT_MIN, FLT_MAX},
|
||||||
|
{"i_quant_offset", NULL, OFFSET(i_quant_offset), FF_OPT_TYPE_FLOAT, DEFAULT, FLT_MIN, FLT_MAX},
|
||||||
|
{"rc_initial_cplx", NULL, OFFSET(rc_initial_cplx), FF_OPT_TYPE_FLOAT, DEFAULT, FLT_MIN, FLT_MAX},
|
||||||
|
{"dct_algo", NULL, OFFSET(dct_algo), FF_OPT_TYPE_INT, DEFAULT, INT_MIN, INT_MAX},
|
||||||
|
{"lumi_masking", NULL, OFFSET(lumi_masking), FF_OPT_TYPE_FLOAT, DEFAULT, FLT_MIN, FLT_MAX},
|
||||||
|
{"temporal_cplx_masking", NULL, OFFSET(temporal_cplx_masking), FF_OPT_TYPE_FLOAT, DEFAULT, FLT_MIN, FLT_MAX},
|
||||||
|
{"spatial_cplx_masking", NULL, OFFSET(spatial_cplx_masking), FF_OPT_TYPE_FLOAT, DEFAULT, FLT_MIN, FLT_MAX},
|
||||||
|
{"p_masking", NULL, OFFSET(p_masking), FF_OPT_TYPE_FLOAT, DEFAULT, FLT_MIN, FLT_MAX},
|
||||||
|
{"dark_masking", NULL, OFFSET(dark_masking), FF_OPT_TYPE_FLOAT, DEFAULT, FLT_MIN, FLT_MAX},
|
||||||
|
{"unused", NULL, OFFSET(unused), FF_OPT_TYPE_INT, DEFAULT, INT_MIN, INT_MAX},
|
||||||
|
{"idct_algo", NULL, OFFSET(idct_algo), FF_OPT_TYPE_INT, DEFAULT, INT_MIN, INT_MAX},
|
||||||
|
{"slice_count", NULL, OFFSET(slice_count), FF_OPT_TYPE_INT, DEFAULT, INT_MIN, INT_MAX},
|
||||||
|
{"error_concealment", NULL, OFFSET(error_concealment), FF_OPT_TYPE_INT, DEFAULT, INT_MIN, INT_MAX},
|
||||||
|
{"bits_per_sample", NULL, OFFSET(bits_per_sample), FF_OPT_TYPE_INT, DEFAULT, INT_MIN, INT_MAX},
|
||||||
|
{"prediction_method", NULL, OFFSET(prediction_method), FF_OPT_TYPE_INT, DEFAULT, INT_MIN, INT_MAX},
|
||||||
|
{"sample_aspect_ratio", NULL, OFFSET(sample_aspect_ratio), FF_OPT_TYPE_RATIONAL, DEFAULT, INT_MIN, INT_MAX},
|
||||||
|
{"debug", NULL, OFFSET(debug), FF_OPT_TYPE_INT, DEFAULT, INT_MIN, INT_MAX},
|
||||||
|
{"debug_mv", NULL, OFFSET(debug_mv), FF_OPT_TYPE_INT, DEFAULT, INT_MIN, INT_MAX},
|
||||||
|
{"mb_qmin", NULL, OFFSET(mb_qmin), FF_OPT_TYPE_INT, DEFAULT, INT_MIN, INT_MAX},
|
||||||
|
{"mb_qmax", NULL, OFFSET(mb_qmax), FF_OPT_TYPE_INT, DEFAULT, INT_MIN, INT_MAX},
|
||||||
|
{"me_cmp", NULL, OFFSET(me_cmp), FF_OPT_TYPE_INT, DEFAULT, INT_MIN, INT_MAX},
|
||||||
|
{"me_sub_cmp", NULL, OFFSET(me_sub_cmp), FF_OPT_TYPE_INT, DEFAULT, INT_MIN, INT_MAX},
|
||||||
|
{"mb_cmp", NULL, OFFSET(mb_cmp), FF_OPT_TYPE_INT, DEFAULT, INT_MIN, INT_MAX},
|
||||||
|
{"ildct_cmp", NULL, OFFSET(ildct_cmp), FF_OPT_TYPE_INT, DEFAULT, INT_MIN, INT_MAX},
|
||||||
|
{"dia_size", NULL, OFFSET(dia_size), FF_OPT_TYPE_INT, DEFAULT, INT_MIN, INT_MAX},
|
||||||
|
{"last_predictor_count", NULL, OFFSET(last_predictor_count), FF_OPT_TYPE_INT, DEFAULT, INT_MIN, INT_MAX},
|
||||||
|
{"pre_me", NULL, OFFSET(pre_me), FF_OPT_TYPE_INT, DEFAULT, INT_MIN, INT_MAX},
|
||||||
|
{"me_pre_cmp", NULL, OFFSET(me_pre_cmp), FF_OPT_TYPE_INT, DEFAULT, INT_MIN, INT_MAX},
|
||||||
|
{"pre_dia_size", NULL, OFFSET(pre_dia_size), FF_OPT_TYPE_INT, DEFAULT, INT_MIN, INT_MAX},
|
||||||
|
{"me_subpel_quality", NULL, OFFSET(me_subpel_quality), FF_OPT_TYPE_INT, DEFAULT, INT_MIN, INT_MAX},
|
||||||
|
{"dtg_active_format", NULL, OFFSET(dtg_active_format), FF_OPT_TYPE_INT, DEFAULT, INT_MIN, INT_MAX},
|
||||||
|
{"me_range", NULL, OFFSET(me_range), FF_OPT_TYPE_INT, DEFAULT, INT_MIN, INT_MAX},
|
||||||
|
{"intra_quant_bias", NULL, OFFSET(intra_quant_bias), FF_OPT_TYPE_INT, DEFAULT, INT_MIN, INT_MAX},
|
||||||
|
{"inter_quant_bias", NULL, OFFSET(inter_quant_bias), FF_OPT_TYPE_INT, DEFAULT, INT_MIN, INT_MAX},
|
||||||
|
{"color_table_id", NULL, OFFSET(color_table_id), FF_OPT_TYPE_INT, DEFAULT, INT_MIN, INT_MAX},
|
||||||
|
{"internal_buffer_count", NULL, OFFSET(internal_buffer_count), FF_OPT_TYPE_INT, DEFAULT, INT_MIN, INT_MAX},
|
||||||
|
{"global_quality", NULL, OFFSET(global_quality), FF_OPT_TYPE_INT, DEFAULT, INT_MIN, INT_MAX},
|
||||||
|
{"coder_type", NULL, OFFSET(coder_type), FF_OPT_TYPE_INT, DEFAULT, INT_MIN, INT_MAX},
|
||||||
|
{"context_model", NULL, OFFSET(context_model), FF_OPT_TYPE_INT, DEFAULT, INT_MIN, INT_MAX},
|
||||||
|
{"slice_flags", NULL, OFFSET(slice_flags), FF_OPT_TYPE_INT, DEFAULT, INT_MIN, INT_MAX},
|
||||||
|
{"xvmc_acceleration", NULL, OFFSET(xvmc_acceleration), FF_OPT_TYPE_INT, DEFAULT, INT_MIN, INT_MAX},
|
||||||
|
{"mb_decision", NULL, OFFSET(mb_decision), FF_OPT_TYPE_INT, DEFAULT, INT_MIN, INT_MAX},
|
||||||
|
{"stream_codec_tag", NULL, OFFSET(stream_codec_tag), FF_OPT_TYPE_INT, DEFAULT, INT_MIN, INT_MAX},
|
||||||
|
{"scenechange_threshold", NULL, OFFSET(scenechange_threshold), FF_OPT_TYPE_INT, DEFAULT, INT_MIN, INT_MAX},
|
||||||
|
{"lmin", NULL, OFFSET(lmin), FF_OPT_TYPE_INT, DEFAULT, INT_MIN, INT_MAX},
|
||||||
|
{"lmax", NULL, OFFSET(lmax), FF_OPT_TYPE_INT, DEFAULT, INT_MIN, INT_MAX},
|
||||||
|
{"noise_reduction", NULL, OFFSET(noise_reduction), FF_OPT_TYPE_INT, DEFAULT, INT_MIN, INT_MAX},
|
||||||
|
{"rc_initial_buffer_occupancy", NULL, OFFSET(rc_initial_buffer_occupancy), FF_OPT_TYPE_INT, DEFAULT, INT_MIN, INT_MAX},
|
||||||
|
{"inter_threshold", NULL, OFFSET(inter_threshold), FF_OPT_TYPE_INT, DEFAULT, INT_MIN, INT_MAX},
|
||||||
|
{"flags2", NULL, OFFSET(flags2), FF_OPT_TYPE_INT, DEFAULT, INT_MIN, INT_MAX},
|
||||||
|
{"error_rate", NULL, OFFSET(error_rate), FF_OPT_TYPE_INT, DEFAULT, INT_MIN, INT_MAX},
|
||||||
|
{"antialias_algo", NULL, OFFSET(antialias_algo), FF_OPT_TYPE_INT, DEFAULT, INT_MIN, INT_MAX},
|
||||||
|
{"quantizer_noise_shaping", NULL, OFFSET(quantizer_noise_shaping), FF_OPT_TYPE_INT, DEFAULT, INT_MIN, INT_MAX},
|
||||||
|
{"thread_count", NULL, OFFSET(thread_count), FF_OPT_TYPE_INT, DEFAULT, INT_MIN, INT_MAX},
|
||||||
|
{"me_threshold", NULL, OFFSET(me_threshold), FF_OPT_TYPE_INT, DEFAULT, INT_MIN, INT_MAX},
|
||||||
|
{"mb_threshold", NULL, OFFSET(mb_threshold), FF_OPT_TYPE_INT, DEFAULT, INT_MIN, INT_MAX},
|
||||||
|
{"intra_dc_precision", NULL, OFFSET(intra_dc_precision), FF_OPT_TYPE_INT, DEFAULT, INT_MIN, INT_MAX},
|
||||||
|
{"nsse_weight", NULL, OFFSET(nsse_weight), FF_OPT_TYPE_INT, DEFAULT, INT_MIN, INT_MAX},
|
||||||
|
{"skip_top", NULL, OFFSET(skip_top), FF_OPT_TYPE_INT, DEFAULT, INT_MIN, INT_MAX},
|
||||||
|
{"skip_bottom", NULL, OFFSET(skip_bottom), FF_OPT_TYPE_INT, DEFAULT, INT_MIN, INT_MAX},
|
||||||
|
{"profile", NULL, OFFSET(profile), FF_OPT_TYPE_INT, DEFAULT, INT_MIN, INT_MAX},
|
||||||
|
{"level", NULL, OFFSET(level), FF_OPT_TYPE_INT, DEFAULT, INT_MIN, INT_MAX},
|
||||||
|
{"lowres", NULL, OFFSET(lowres), FF_OPT_TYPE_INT, DEFAULT, INT_MIN, INT_MAX},
|
||||||
|
{"frame_skip_threshold", NULL, OFFSET(frame_skip_threshold), FF_OPT_TYPE_INT, DEFAULT, INT_MIN, INT_MAX},
|
||||||
|
{"frame_skip_factor", NULL, OFFSET(frame_skip_factor), FF_OPT_TYPE_INT, DEFAULT, INT_MIN, INT_MAX},
|
||||||
|
{"frame_skip_exp", NULL, OFFSET(frame_skip_exp), FF_OPT_TYPE_INT, DEFAULT, INT_MIN, INT_MAX},
|
||||||
|
{"frame_skip_cmp", NULL, OFFSET(frame_skip_cmp), FF_OPT_TYPE_INT, DEFAULT, INT_MIN, INT_MAX},
|
||||||
|
{"border_masking", NULL, OFFSET(border_masking), FF_OPT_TYPE_FLOAT, DEFAULT, FLT_MIN, FLT_MAX},
|
||||||
|
{"mb_lmin", NULL, OFFSET(mb_lmin), FF_OPT_TYPE_INT, DEFAULT, INT_MIN, INT_MAX},
|
||||||
|
{"mb_lmax", NULL, OFFSET(mb_lmax), FF_OPT_TYPE_INT, DEFAULT, INT_MIN, INT_MAX},
|
||||||
|
{"me_penalty_compensation", NULL, OFFSET(me_penalty_compensation), FF_OPT_TYPE_INT, DEFAULT, INT_MIN, INT_MAX},
|
||||||
|
{NULL},
|
||||||
|
};
|
||||||
|
|
||||||
|
static AVClass av_codec_context_class = { "AVCodecContext", context_to_name, options };
|
||||||
|
|
||||||
void avcodec_get_context_defaults(AVCodecContext *s){
|
void avcodec_get_context_defaults(AVCodecContext *s){
|
||||||
memset(s, 0, sizeof(AVCodecContext));
|
memset(s, 0, sizeof(AVCodecContext));
|
||||||
|
Loading…
Reference in New Issue
Block a user