schroencoder

schroencoder

Synopsis




                    SchroEncoder;
                    SchroEncoderFrame;
enum                SchroEncoderFrameStateEnum;
enum                SchroEncoderPerceptualEnum;
enum                SchroPrefEnum;
struct              SchroEncoderSettings;
enum                SchroQuantiserEngineEnum;
enum                SchroStateEnum;
enum                SchroEncoderGOPEnum;
enum                SchroEncoderRateControlEnum;
                    SchroEncoderSetting;
enum                SchroEncoderSettingTypeEnum;
int                 (*SchroEngineIterateFunc)           (SchroEncoder *encoder);
SchroEncoder*       schro_encoder_new                   (void);
void                schro_encoder_free                  (SchroEncoder *encoder);
SchroVideoFormat*   schro_encoder_get_video_format      (SchroEncoder *encoder);
void                schro_encoder_set_video_format      (SchroEncoder *encoder,
                                                         SchroVideoFormat *video_format);
void                schro_encoder_end_of_stream         (SchroEncoder *encoder);
void                schro_encoder_push_frame            (SchroEncoder *encoder,
                                                         SchroFrame *frame);
void                schro_encoder_copy_to_frame_buffer  (SchroEncoder *encoder,
                                                         SchroBuffer *buffer);
void                schro_encoder_encode_access_unit_header
                                                        (SchroEncoder *encoder,
                                                         SchroPack *bits);
void                schro_encoder_encode_parse_info     (SchroPack *bits,
                                                         int parse_code);
SchroBuffer*        schro_encoder_pull                  (SchroEncoder *encoder,
                                                         int *n_decodable_frames);
int                 schro_encoder_preference_get_range  (SchroEncoder *encoder,
                                                         SchroPrefEnum pref,
                                                         int *min,
                                                         int *max);
int                 schro_encoder_preference_get        (SchroEncoder *encoder,
                                                         SchroPrefEnum pref);
int                 schro_encoder_preference_set        (SchroEncoder *encoder,
                                                         SchroPrefEnum pref,
                                                         int value);
void                schro_encoder_analyse_picture       (SchroEncoderFrame *frame);
void                schro_encoder_calculate_subband_weights
                                                        (SchroEncoder *encoder,
                                                         double (*perceptual_weight) (double));
void                schro_encoder_calculate_test_info   (SchroEncoderFrame *frame);
void                schro_encoder_choose_quantisers     (SchroEncoderFrame *frame);
void                schro_encoder_clean_up_transform    (SchroEncoderFrame *frame);
SchroBuffer*        schro_encoder_encode_access_unit    (SchroEncoder *encoder);
SchroBuffer*        schro_encoder_encode_auxiliary_data (SchroEncoder *encoder,
                                                         SchroAuxiliaryDataID id,
                                                         void *data,
                                                         int size);
SchroBuffer*        schro_encoder_encode_end_of_stream  (SchroEncoder *encoder);
void                schro_encoder_encode_lowdelay_transform_data
                                                        (SchroEncoderFrame *frame);
void                schro_encoder_encode_picture        (SchroEncoderFrame *frame);
void                schro_encoder_encode_picture_all    (SchroEncoderFrame *frame);
void                schro_encoder_encode_picture_header (SchroEncoderFrame *frame);
void                schro_encoder_encode_subband        (SchroEncoderFrame *frame,
                                                         int component,
                                                         int index);
void                schro_encoder_encode_subband_noarith
                                                        (SchroEncoderFrame *frame,
                                                         int component,
                                                         int index);
int                 schro_encoder_engine_backref        (SchroEncoder *encoder);
int                 schro_encoder_engine_backtest       (SchroEncoder *encoder);
int                 schro_encoder_engine_intra_only     (SchroEncoder *encoder);
int                 schro_encoder_engine_lossless       (SchroEncoder *encoder);
int                 schro_encoder_engine_lowdelay       (SchroEncoder *encoder);
int                 schro_encoder_engine_test_intra     (SchroEncoder *encoder);
int                 schro_encoder_engine_tworef         (SchroEncoder *encoder);
void                schro_encoder_estimate_entropy      (SchroEncoderFrame *frame);
void                schro_encoder_frame_analyse         (SchroEncoderFrame *frame);
void                schro_encoder_frame_downsample      (SchroEncoderFrame *frame);
void                schro_encoder_frame_insert_buffer   (SchroEncoderFrame *frame,
                                                         SchroBuffer *buffer);
SchroEncoderFrame*  schro_encoder_frame_new             (SchroEncoder *encoder);
SchroFrame*         schro_encoder_frame_queue_get       (SchroEncoder *encoder,
                                                         SchroPictureNumber frame_number);
void                schro_encoder_frame_queue_remove    (SchroEncoder *encoder,
                                                         SchroPictureNumber frame_number);
void                schro_encoder_frame_ref             (SchroEncoderFrame *frame);
void                schro_encoder_frame_unref           (SchroEncoderFrame *frame);
void                schro_encoder_init_subbands         (SchroEncoderFrame *frame);
void                schro_encoder_insert_buffer         (SchroEncoder *encoder,
                                                         SchroBuffer *buffer);
void                schro_encoder_output_push           (SchroEncoder *encoder,
                                                         SchroBuffer *buffer,
                                                         int slot,
                                                         int presentation_frame);
double              schro_encoder_perceptual_weight_ccir959
                                                        (double ppd);
double              schro_encoder_perceptual_weight_constant
                                                        (double ppd);
double              schro_encoder_perceptual_weight_moo (double ppd);
void                schro_encoder_postanalyse_picture   (SchroEncoderFrame *frame);
void                schro_encoder_predict_picture       (SchroEncoderFrame *frame);
int                 schro_encoder_push_ready            (SchroEncoder *encoder);
void                schro_encoder_recalculate_allocations
                                                        (SchroEncoder *encoder);
void                schro_encoder_reconstruct_picture   (SchroEncoderFrame *frame);
void                schro_encoder_reference_add         (SchroEncoder *encoder,
                                                         SchroEncoderFrame *encoder_frame);
SchroEncoderFrame*  schro_encoder_reference_get         (SchroEncoder *encoder,
                                                         SchroPictureNumber frame_number);
void                schro_encoder_set_default_subband_weights
                                                        (SchroEncoder *encoder);
void                schro_encoder_start                 (SchroEncoder *encoder);
SchroStateEnum      schro_encoder_wait                  (SchroEncoder *encoder);
int                 schro_encoder_get_n_settings        (void);
const SchroEncoderSetting* schro_encoder_get_setting_info
                                                        (int i);
void                schro_encoder_global_estimation     (SchroMotionEst *me);
void                schro_encoder_init_error_tables     (SchroEncoder *encoder);
void                schro_encoder_phasecorr_estimation  (SchroMotionEst *me);
double              schro_encoder_setting_get_double    (SchroEncoder *encoder,
                                                         const char *name);
void                schro_encoder_setting_set_double    (SchroEncoder *encoder,
                                                         const char *name,
                                                         double d);

Description

Details

SchroEncoder

typedef struct {
} SchroEncoder;


SchroEncoderFrame

typedef struct {
} SchroEncoderFrame;


enum SchroEncoderFrameStateEnum

typedef enum {
  SCHRO_ENCODER_FRAME_STATE_NEW = 0,
  SCHRO_ENCODER_FRAME_STATE_INITED = (1<<0),
  SCHRO_ENCODER_FRAME_STATE_ANALYSE = (1<<1),
  SCHRO_ENCODER_FRAME_STATE_PREDICT = (1<<2),
  SCHRO_ENCODER_FRAME_STATE_ENCODING = (1<<3),
  SCHRO_ENCODER_FRAME_STATE_RECONSTRUCT = (1<<4),
  SCHRO_ENCODER_FRAME_STATE_POSTANALYSE = (1<<5),
  SCHRO_ENCODER_FRAME_STATE_DONE = (1<<6),
  SCHRO_ENCODER_FRAME_STATE_HAVE_GOP = (1<<7),
  SCHRO_ENCODER_FRAME_STATE_HAVE_PARAMS = (1<<8),
  SCHRO_ENCODER_FRAME_STATE_FREE = (1<<9),
  SCHRO_ENCODER_FRAME_STATE_HAVE_REFS = (1<<10)
} SchroEncoderFrameStateEnum;


enum SchroEncoderPerceptualEnum

typedef enum {
  SCHRO_ENCODER_PERCEPTUAL_CONSTANT,
  SCHRO_ENCODER_PERCEPTUAL_CCIR959,
  SCHRO_ENCODER_PERCEPTUAL_MOO
} SchroEncoderPerceptualEnum;


enum SchroPrefEnum

typedef enum {
  SCHRO_PREF_ENGINE,
  SCHRO_PREF_QUANT_ENGINE,
  SCHRO_PREF_REF_DISTANCE,
  SCHRO_PREF_TRANSFORM_DEPTH,
  SCHRO_PREF_INTRA_WAVELET,
  SCHRO_PREF_INTER_WAVELET,
  SCHRO_PREF_LAMBDA,
  SCHRO_PREF_PSNR,
  SCHRO_PREF_BITRATE,
  SCHRO_PREF_NOARITH,
  SCHRO_PREF_MD5,
  SCHRO_PREF_LAST
} SchroPrefEnum;


struct SchroEncoderSettings

struct SchroEncoderSettings {
  int transform_depth;
  int wavelet_filter_index;

  /* stuff we don't handle yet */
  int profile;
  int level;

  int xbsep_luma;
  int ybsep_luma;
  int xblen_luma;
  int yblen_luma;
};


enum SchroQuantiserEngineEnum

typedef enum {
  SCHRO_QUANTISER_ENGINE_SIMPLE,
  SCHRO_QUANTISER_ENGINE_RATE_DISTORTION,
  SCHRO_QUANTISER_ENGINE_LOSSLESS,
  SCHRO_QUANTISER_ENGINE_LOWDELAY,
  SCHRO_QUANTISER_ENGINE_RATE_DISTORTION_2
} SchroQuantiserEngineEnum;


enum SchroStateEnum

typedef enum {
  SCHRO_STATE_NEED_FRAME,
  SCHRO_STATE_HAVE_BUFFER,
  SCHRO_STATE_AGAIN,
  SCHRO_STATE_END_OF_STREAM
} SchroStateEnum;


enum SchroEncoderGOPEnum

typedef enum {
  SCHRO_ENCODER_GOP_ADAPTIVE,
  SCHRO_ENCODER_GOP_INTRA_ONLY,
  SCHRO_ENCODER_GOP_BACKREF,
  SCHRO_ENCODER_GOP_CHAINED_BACKREF,
  SCHRO_ENCODER_GOP_BIREF,
  SCHRO_ENCODER_GOP_CHAINED_BIREF,
} SchroEncoderGOPEnum;


enum SchroEncoderRateControlEnum

typedef enum {
  SCHRO_ENCODER_RATE_CONTROL_CONSTANT_NOISE_THRESHOLD,
  SCHRO_ENCODER_RATE_CONTROL_CONSTANT_BITRATE,
  SCHRO_ENCODER_RATE_CONTROL_LOW_DELAY,
  SCHRO_ENCODER_RATE_CONTROL_LOSSLESS
} SchroEncoderRateControlEnum;


SchroEncoderSetting

typedef struct {
  char *name;
  SchroEncoderSettingTypeEnum type;

  double min;
  double max;
  double default_value;

  char **enum_list;
} SchroEncoderSetting;


enum SchroEncoderSettingTypeEnum

typedef enum {
  SCHRO_ENCODER_SETTING_TYPE_BOOLEAN,
  SCHRO_ENCODER_SETTING_TYPE_INT,
  SCHRO_ENCODER_SETTING_TYPE_ENUM,
  SCHRO_ENCODER_SETTING_TYPE_DOUBLE,
  SCHRO_ENCODER_SETTING_TYPE_LAST
} SchroEncoderSettingTypeEnum;


SchroEngineIterateFunc ()

int                 (*SchroEngineIterateFunc)           (SchroEncoder *encoder);

encoder :
Returns :

schro_encoder_new ()

SchroEncoder*       schro_encoder_new                   (void);

Returns :

schro_encoder_free ()

void                schro_encoder_free                  (SchroEncoder *encoder);

encoder :

schro_encoder_get_video_format ()

SchroVideoFormat*   schro_encoder_get_video_format      (SchroEncoder *encoder);

encoder :
Returns :

schro_encoder_set_video_format ()

void                schro_encoder_set_video_format      (SchroEncoder *encoder,
                                                         SchroVideoFormat *video_format);

encoder :
video_format :

schro_encoder_end_of_stream ()

void                schro_encoder_end_of_stream         (SchroEncoder *encoder);

encoder :

schro_encoder_push_frame ()

void                schro_encoder_push_frame            (SchroEncoder *encoder,
                                                         SchroFrame *frame);

encoder :
frame :

schro_encoder_copy_to_frame_buffer ()

void                schro_encoder_copy_to_frame_buffer  (SchroEncoder *encoder,
                                                         SchroBuffer *buffer);

encoder :
buffer :

schro_encoder_encode_access_unit_header ()

void                schro_encoder_encode_access_unit_header
                                                        (SchroEncoder *encoder,
                                                         SchroPack *bits);

encoder :
bits :

schro_encoder_encode_parse_info ()

void                schro_encoder_encode_parse_info     (SchroPack *bits,
                                                         int parse_code);

bits :
parse_code :

schro_encoder_pull ()

SchroBuffer*        schro_encoder_pull                  (SchroEncoder *encoder,
                                                         int *n_decodable_frames);

encoder :
n_decodable_frames :
Returns :

schro_encoder_preference_get_range ()

int                 schro_encoder_preference_get_range  (SchroEncoder *encoder,
                                                         SchroPrefEnum pref,
                                                         int *min,
                                                         int *max);

encoder :
pref :
min :
max :
Returns :

schro_encoder_preference_get ()

int                 schro_encoder_preference_get        (SchroEncoder *encoder,
                                                         SchroPrefEnum pref);

encoder :
pref :
Returns :

schro_encoder_preference_set ()

int                 schro_encoder_preference_set        (SchroEncoder *encoder,
                                                         SchroPrefEnum pref,
                                                         int value);

encoder :
pref :
value :
Returns :

schro_encoder_analyse_picture ()

void                schro_encoder_analyse_picture       (SchroEncoderFrame *frame);

frame :

schro_encoder_calculate_subband_weights ()

void                schro_encoder_calculate_subband_weights
                                                        (SchroEncoder *encoder,
                                                         double (*perceptual_weight) (double));

encoder :
perceptual_weight :

schro_encoder_calculate_test_info ()

void                schro_encoder_calculate_test_info   (SchroEncoderFrame *frame);

frame :

schro_encoder_choose_quantisers ()

void                schro_encoder_choose_quantisers     (SchroEncoderFrame *frame);

frame :

schro_encoder_clean_up_transform ()

void                schro_encoder_clean_up_transform    (SchroEncoderFrame *frame);

frame :

schro_encoder_encode_access_unit ()

SchroBuffer*        schro_encoder_encode_access_unit    (SchroEncoder *encoder);

encoder :
Returns :

schro_encoder_encode_auxiliary_data ()

SchroBuffer*        schro_encoder_encode_auxiliary_data (SchroEncoder *encoder,
                                                         SchroAuxiliaryDataID id,
                                                         void *data,
                                                         int size);

encoder :
id :
data :
size :
Returns :

schro_encoder_encode_end_of_stream ()

SchroBuffer*        schro_encoder_encode_end_of_stream  (SchroEncoder *encoder);

encoder :
Returns :

schro_encoder_encode_lowdelay_transform_data ()

void                schro_encoder_encode_lowdelay_transform_data
                                                        (SchroEncoderFrame *frame);

frame :

schro_encoder_encode_picture ()

void                schro_encoder_encode_picture        (SchroEncoderFrame *frame);

frame :

schro_encoder_encode_picture_all ()

void                schro_encoder_encode_picture_all    (SchroEncoderFrame *frame);

frame :

schro_encoder_encode_picture_header ()

void                schro_encoder_encode_picture_header (SchroEncoderFrame *frame);

frame :

schro_encoder_encode_subband ()

void                schro_encoder_encode_subband        (SchroEncoderFrame *frame,
                                                         int component,
                                                         int index);

frame :
component :
index :

schro_encoder_encode_subband_noarith ()

void                schro_encoder_encode_subband_noarith
                                                        (SchroEncoderFrame *frame,
                                                         int component,
                                                         int index);

frame :
component :
index :

schro_encoder_engine_backref ()

int                 schro_encoder_engine_backref        (SchroEncoder *encoder);

encoder :
Returns :

schro_encoder_engine_backtest ()

int                 schro_encoder_engine_backtest       (SchroEncoder *encoder);

encoder :
Returns :

schro_encoder_engine_intra_only ()

int                 schro_encoder_engine_intra_only     (SchroEncoder *encoder);

encoder :
Returns :

schro_encoder_engine_lossless ()

int                 schro_encoder_engine_lossless       (SchroEncoder *encoder);

encoder :
Returns :

schro_encoder_engine_lowdelay ()

int                 schro_encoder_engine_lowdelay       (SchroEncoder *encoder);

encoder :
Returns :

schro_encoder_engine_test_intra ()

int                 schro_encoder_engine_test_intra     (SchroEncoder *encoder);

encoder :
Returns :

schro_encoder_engine_tworef ()

int                 schro_encoder_engine_tworef         (SchroEncoder *encoder);

encoder :
Returns :

schro_encoder_estimate_entropy ()

void                schro_encoder_estimate_entropy      (SchroEncoderFrame *frame);

frame :

schro_encoder_frame_analyse ()

void                schro_encoder_frame_analyse         (SchroEncoderFrame *frame);

frame :

schro_encoder_frame_downsample ()

void                schro_encoder_frame_downsample      (SchroEncoderFrame *frame);

frame :

schro_encoder_frame_insert_buffer ()

void                schro_encoder_frame_insert_buffer   (SchroEncoderFrame *frame,
                                                         SchroBuffer *buffer);

frame :
buffer :

schro_encoder_frame_new ()

SchroEncoderFrame*  schro_encoder_frame_new             (SchroEncoder *encoder);

encoder :
Returns :

schro_encoder_frame_queue_get ()

SchroFrame*         schro_encoder_frame_queue_get       (SchroEncoder *encoder,
                                                         SchroPictureNumber frame_number);

encoder :
frame_number :
Returns :

schro_encoder_frame_queue_remove ()

void                schro_encoder_frame_queue_remove    (SchroEncoder *encoder,
                                                         SchroPictureNumber frame_number);

encoder :
frame_number :

schro_encoder_frame_ref ()

void                schro_encoder_frame_ref             (SchroEncoderFrame *frame);

frame :

schro_encoder_frame_unref ()

void                schro_encoder_frame_unref           (SchroEncoderFrame *frame);

frame :

schro_encoder_init_subbands ()

void                schro_encoder_init_subbands         (SchroEncoderFrame *frame);

frame :

schro_encoder_insert_buffer ()

void                schro_encoder_insert_buffer         (SchroEncoder *encoder,
                                                         SchroBuffer *buffer);

encoder :
buffer :

schro_encoder_output_push ()

void                schro_encoder_output_push           (SchroEncoder *encoder,
                                                         SchroBuffer *buffer,
                                                         int slot,
                                                         int presentation_frame);

encoder :
buffer :
slot :
presentation_frame :

schro_encoder_perceptual_weight_ccir959 ()

double              schro_encoder_perceptual_weight_ccir959
                                                        (double ppd);

ppd :
Returns :

schro_encoder_perceptual_weight_constant ()

double              schro_encoder_perceptual_weight_constant
                                                        (double ppd);

ppd :
Returns :

schro_encoder_perceptual_weight_moo ()

double              schro_encoder_perceptual_weight_moo (double ppd);

ppd :
Returns :

schro_encoder_postanalyse_picture ()

void                schro_encoder_postanalyse_picture   (SchroEncoderFrame *frame);

frame :

schro_encoder_predict_picture ()

void                schro_encoder_predict_picture       (SchroEncoderFrame *frame);

frame :

schro_encoder_push_ready ()

int                 schro_encoder_push_ready            (SchroEncoder *encoder);

encoder :
Returns :

schro_encoder_recalculate_allocations ()

void                schro_encoder_recalculate_allocations
                                                        (SchroEncoder *encoder);

encoder :

schro_encoder_reconstruct_picture ()

void                schro_encoder_reconstruct_picture   (SchroEncoderFrame *frame);

frame :

schro_encoder_reference_add ()

void                schro_encoder_reference_add         (SchroEncoder *encoder,
                                                         SchroEncoderFrame *encoder_frame);

encoder :
encoder_frame :

schro_encoder_reference_get ()

SchroEncoderFrame*  schro_encoder_reference_get         (SchroEncoder *encoder,
                                                         SchroPictureNumber frame_number);

encoder :
frame_number :
Returns :

schro_encoder_set_default_subband_weights ()

void                schro_encoder_set_default_subband_weights
                                                        (SchroEncoder *encoder);

encoder :

schro_encoder_start ()

void                schro_encoder_start                 (SchroEncoder *encoder);

encoder :

schro_encoder_wait ()

SchroStateEnum      schro_encoder_wait                  (SchroEncoder *encoder);

encoder :
Returns :

schro_encoder_get_n_settings ()

int                 schro_encoder_get_n_settings        (void);

Returns :

schro_encoder_get_setting_info ()

const SchroEncoderSetting* schro_encoder_get_setting_info
                                                        (int i);

i :
Returns :

schro_encoder_global_estimation ()

void                schro_encoder_global_estimation     (SchroMotionEst *me);

me :

schro_encoder_init_error_tables ()

void                schro_encoder_init_error_tables     (SchroEncoder *encoder);

encoder :

schro_encoder_phasecorr_estimation ()

void                schro_encoder_phasecorr_estimation  (SchroMotionEst *me);

me :

schro_encoder_setting_get_double ()

double              schro_encoder_setting_get_double    (SchroEncoder *encoder,
                                                         const char *name);

encoder :
name :
Returns :

schro_encoder_setting_set_double ()

void                schro_encoder_setting_set_double    (SchroEncoder *encoder,
                                                         const char *name,
                                                         double d);

encoder :
name :
d :