Module Schroedinger.Encoder

module Encoder: sig .. end

type t 
val create : Schroedinger.video_format -> t
val get_video_format : t -> Schroedinger.video_format
val encode_header : t -> Ogg.Stream.stream -> unit
val encode_frame : t -> Schroedinger.frame -> Ogg.Stream.stream -> unit
val encoded_of_granulepos : Int64.t -> t -> Int64.t
val eos : t -> Ogg.Stream.stream -> unit
type rate_control = 
| Constant_noise_threshold
| Constant_bitrate
| Low_delay
| Lossless
| Constant_lambda
| Constant_error
type gop_structure = 
| Adaptive
| Intra_only
| Backref
| Chained_backref
| Biref
| Chained_biref
type perceptual_weighting = 
| None
| Ccir959
| Moo
| Manos_sakrison
type filtering = 
| None
| Center_weighted_median
| Gaussian
| Add_noise
| Adaptive_gaussian
type wavelet = 
| Desl_dubuc_9_7
| Le_gall_5_3
| Desl_dubuc_13_7
| Haar_0
| Haar_1
| Fidelity
| Daub_9_7
type block_size = 
| Automatic
| Small
| Medium
| Large
type block_overlap = 
| Automatic
| None
| Partial
| Full
type settings = {
   rate_control :rate_control;
   bitrate :int;
   max_bitrate :int;
   min_bitrate :int;
   buffer_size :int;
   buffer_level :int;
   noise_threshold :float;
   gop_structure :gop_structure;
   queue_depth :int;
   perceptual_weighting :perceptual_weighting;
   perceptual_distance :float;
   filtering :filtering;
   filter_value :float;
   profile :int;
   level :int;
   au_distance :int;
   enable_psnr :bool;
   enable_ssim :bool;
   ref_distance :int;
   transform_depth :int;
   intra_wavelet :wavelet;
   inter_wavelet :wavelet;
   mv_precision :int;
   motion_block_size :block_size;
   motion_block_overlap :block_overlap;
   interlaced_coding :bool;
   enable_internal_testing :bool;
   enable_noarith :bool;
   enable_md5 :bool;
   enable_fullscan_estimation :bool;
   enable_hierarchical_estimation :bool;
   enable_zero_estimation :bool;
   enable_phasecorr_estimation :bool;
   enable_bigblock_estimation :bool;
   horiz_slices :int;
   vert_slices :int;
   magic_dc_metric_offset :float;
   magic_subband0_lambda_scale :float;
   magic_chroma_lambda_scale :float;
   magic_nonref_lambda_scale :float;
   magic_allocation_scale :float;
   magic_keyframe_weight :float;
   magic_scene_change_threshold :float;
   magic_inter_p_weight :float;
   magic_inter_b_weight :float;
   magic_mc_bailout_limit :float;
   magic_bailout_weight :float;
   magic_error_power :float;
   magic_mc_lambda :float;
   magic_subgroup_length :float;
   magic_lambda :float;
}
val get_settings : t -> settings
val set_settings : t -> settings -> unit