Re: Как мне распарсить конфигурацию кодека полученную ICGetS
От: romson  
Дата: 28.10.04 10:24
Оценка:
Очень просто. Берём исходник этого кодека, и вытаскиваем оттуда описание структуры, которую он заполняет по команде ICM_GETSTATE. Например, для XviD 1.0.2 это будет следующая структура:
typedef struct
{
/********** ATTENTION **********/
    int mode;                    // Vidomi directly accesses these vars
    int rc_bitrate;                //
    int desired_size;            // please try to avoid modifications here
    char stats1[MAX_PATH];        //
/*******************************/

    int quality;
    int    quant;
    int rc_reaction_delay_factor;
    int rc_averaging_period;
    int rc_buffer;

    int motion_search;
    int quant_type;
    int fourcc_used;
    int vhq_mode;
    int max_key_interval;
    int min_key_interval;
    int lum_masking;
    int interlacing;
    int qpel;
    int gmc;
    int chromame;
//added by koepi for gruel's greyscale_mode
    int greyscale;
// end of koepi's additions
    int max_bframes;
    int bquant_ratio;
    int bquant_offset;
    int packed;
    int dx50bvop;
    int debug;
    int reduced_resolution;

    int min_iquant;
    int max_iquant;
    int min_pquant;
    int max_pquant;
    BYTE qmatrix_intra[64];
    BYTE qmatrix_inter[64];

    int keyframe_boost;
//added by koepi for new 2pass curve treatment
    int kftreshold;
    int kfreduction;
// end of koepi's additions
    int discard1pass;
    int dummy2pass;
    int curve_compression_high;
    int curve_compression_low;
    int use_alt_curve;
    int alt_curve_use_auto;
    int alt_curve_auto_str;
    int alt_curve_use_auto_bonus_bias;
    int alt_curve_bonus_bias;
    int alt_curve_type;
    int alt_curve_high_dist;
    int alt_curve_low_dist;
    int alt_curve_min_rel_qual;
    int twopass_max_bitrate;
    int twopass_max_overflow_improvement;
    int twopass_max_overflow_degradation;
    int bitrate_payback_delay;
    int bitrate_payback_method;
    int hinted_me;
    char hintfile[MAX_PATH];
    char stats2[MAX_PATH];

    int credits_start;
    int credits_start_begin;
    int credits_start_end;
    int credits_end;
    int credits_end_begin;
    int credits_end_end;

//added by koepi for gruel's greyscale_mode
    int credits_greyscale;
// end of koepi's additions
    int credits_mode;
    int credits_rate;
    int credits_quant_i;
    int credits_quant_p;
    int credits_start_size;
    int credits_end_size;

#ifdef _SMP
    int num_threads;
#endif
    int chroma_opt;

    int frame_drop_ratio;

    /* decoder */

    int deblock_y;
    int deblock_uv;

//    char build[50];
    DWORD cpu;
    float fquant;
    BOOL save;
} CONFIG;

Надеюсь, мысль понятна?
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.