#ifdef _H_MENCODER_H_ #define _H_MENCODER_H_ /*************************************** * File: mEncoder.h. * Desc: Definition of the MEncoder class. * $Log$ ****************************************/ class CPUInfo; class FileFormats { public: enum VideoTypes { muxerTypeAvi }; }; class SubtitleConfig { protected: char *font_name; float font_factor; char *sub_name; float sub_delay; float sub_fps; int sub_auto ; int subcc_enabled; int suboverlap_enabled ; }; class LameConfig { protected: int lame_param_quality; // best int lame_param_algqual; // same as old default int lame_param_vbr; int lame_param_mode; // unset int lame_param_padding; // unset int lame_param_br; // unset int lame_param_ratio; // unset float lame_param_scale; // unset public: LameConfig(); virtual ~LameConfig(); }; class ExtLameConfig { protected: int lame_param_fast; // unset char* lame_param_preset; // unset public: ExtLameConfig(); virtual ExtLameConfig(); virtual int lame_presets_set( lame_t gfp, int fast, int cbr, const char* preset_name ); virtual void lame_presets_longinfo_dm ( FILE* msgfp ); }; class Configuration { protected: uint doubleBuffering; // vo_doublebuffering= 0. uint directRendering; // vo_directrendering= 0. uint configCount; // vo_config_count= 0. int streamCacheSize; // stream_cache_size= -1; int vcdTrack; // vcd_track= 0; int audioId; // audio_id= -1; int dvdsubId; // dvdsub_id= -1; int vobSubId; // vobsub_id= -1; char *audioLang; // audio_lang= NULL; char *dvdSubLang; // dvdsub_lang; char *spuDecIfo; // spudec_ifo; char** audioCodeList; // audio_codec_list=NULL; // override audio codec char** videoCodecList; // video_codec_list=NULL; // override video codec char** audioFmList; // audio_fm_list=NULL; // override audio codec family char** videoFmList; // video_fm_list=NULL; // override video codec family int outAudioCodec; // out_audio_codec=-1; int outVideoCodec; // out_video_codec=-1; int outFileFormat; // out_file_format=MUXER_TYPE_AVI; // default to AVI // A-V sync: int delay_corrected; // =1; float default_max_pts_correction; // =-1;//0.01f; float max_pts_correction; // =0;//default_max_pts_correction; float c_total; // =0; float audio_preload; // =0.5; float audio_delay; // =0.0; int audio_density; // =2; float force_fps; // =0; float force_ofps; // =0; // set to 24 for inverse telecine int skip_limit; // =-1; int force_srate; // =0; int audio_output_format; // =0; char *vobsub_out; // =NULL; uint vobsub_out_index; // =0; char *vobsub_out_id; // =NULL; char* out_filename; // ="test.avi"; char *force_fourcc; // =NULL; char* passtmpfile; // ="divx2pass.log"; int play_n_frames; // =-1; int play_n_frames_mf; // =-1; char *seek_to_sec; off_t seek_to_byte; public: Configuration(); virtual ~Configuration(); virtual int m_config_parse_config_file(mconfig, filename); // Equiv cfg_include. virtual int parse_end_at(struct config *conf, const char* param); virtual void parse_cfgfiles( m_config_t* conf ); }; class ExtConfiguration : public Configuration { protected: uint cache_fill_status; // extern. }; class MEncoder { protected: char *bannerText; // banner_text= "\n\nMEncoder "VERSION MSGTR_MEncoderCopyright "\n"; int verbosity; // verbose= 0; double videoTimeUsage; // video_time_usage=0; double videoOutTimeUsage; // out_time_usage=0; double maxVideoTimeUsage; // max_video_time_usage=0; double maxVideoOutTimeUsage; // max_vout_time_usage=0; double currentVideoTimeUsage; // cur_video_time_usage=0; double currentVideoOutTimeUsage; // cur_vout_time_usage=0; int benchmark; // =0; int at_eof=0; int interrupted=0; enum end_at_type_t { END_AT_NONE, END_AT_TIME, END_AT_SIZE }; end_at_type_t end_at_type; double end_at; muxer_t* muxer; FILE* muxer_f; public: public: MEncoder(); virtual ~MEncoder(); virtual void exit(int level, char *how); virtual int dec_audio(sh_audio_t *sh_audio,unsigned char* buffer,int total); virtual void exit_sighandler(int x); virtual void print_wave_header(WAVEFORMATEX *h); // Extern. inline cfg_inc_verbose() { verbosity++; } }; #endif /* _H_MENCODER_H_ */