schroencoder

schroencoder

Synopsis




                    SchroEncoder;
                    SchroEncoderParams;
                    SchroEncoderTask;
                    SchroPredictionVector;
                    SchroPredictionList;
enum                SchroPrefEnum;
struct              SchroEncoderSettings;
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);
int                 schro_encoder_iterate               (SchroEncoder *encoder);
void                schro_encoder_copy_to_frame_buffer  (SchroEncoder *encoder,
                                                         SchroBuffer *buffer);
void                schro_encoder_encode_access_unit_header
                                                        (SchroEncoder *encoder,
                                                         SchroBits *bits);
void                schro_encoder_encode_parse_info     (SchroBits *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);

Description

Details

SchroEncoder

typedef struct {
  SchroAsync *async;

  SchroPictureNumber next_frame_number;

  SchroQueue *frame_queue;

  //int frame_queue_index;

  SchroQueue *reference_queue;
  //SchroEncoderFrame *reference_frames[SCHRO_MAX_REFERENCE_FRAMES];
  //int n_reference_frames;

  int need_rap;

  int version_major;
  int version_minor;
  int profile;
  int level;

  int video_format_index;

  SchroVideoFormat video_format;
  SchroEncoderParams encoder_params;

  int end_of_stream;
  int end_of_stream_handled;
  int end_of_stream_pulled;
  int completed_eos;
  int prev_offset;

  SchroPictureNumber au_frame;
  int au_distance;
  int next_slot;

  int output_slot;

  SchroBuffer *inserted_buffer;
  int queue_depth;
  int queue_changed;

#if 0
  double pan_x, pan_y;
  double mag_x, mag_y;
  double skew_x, skew_y;
#endif

  int engine_init;
  int engine;

  int prefs[SCHRO_PREF_LAST];

  /* engine specific stuff */

  int last_ref;
  int ref_distance;
  int next_ref;
  int mid1_ref;
  int mid2_ref;
} SchroEncoder;


SchroEncoderParams

typedef struct {
  int ignore;
} SchroEncoderParams;


SchroEncoderTask

typedef struct {
  int state;
  int completed;

  SchroEncoder *encoder;
  SchroParams params;
  SchroEncoderFrame *encoder_frame;
  
  int outbuffer_size;
  SchroBuffer *outbuffer;
  SchroBits *bits;
  SchroFrame *encode_frame;

  SchroFrame *iwt_frame;
  SchroFrame *prediction_frame;

  int16_t *tmpbuf;
  int16_t *tmpbuf2;

  int subband_size;
  SchroBuffer *subband_buffer;
  SchroSubband subbands[1+SCHRO_MAX_TRANSFORM_DEPTH*3];

  SchroEncoderFrame *ref_frame0;
  SchroEncoderFrame *ref_frame1;

  int16_t *quant_data;

  SchroMotionField *motion_field;

  //SchroPredictionList *predict_lists;
  SchroMotionField *motion_fields[32];

  int slot;
  int is_ref;
  SchroPictureNumber frame_number;
  SchroPictureNumber reference_frame_number[2];

  int n_retire;
  SchroPictureNumber retire[SCHRO_MAX_REFERENCE_FRAMES];

  int presentation_frame;

  /* engine specific stuff */

  /* intra_only */

  /* backref */

  int stats_dc;
  int stats_global;
  int stats_motion;

  int estimated_entropy;
} SchroEncoderTask;


SchroPredictionVector

typedef struct {
  unsigned int pred_mode : 2;
  unsigned int using_global : 1;
  unsigned int split : 2;
  unsigned int common : 1;
  uint8_t dc[3];
  int16_t dx;
  int16_t dy;
  int metric;
  int cost;
} SchroPredictionVector;


SchroPredictionList

typedef struct {
  SchroPredictionVector vectors[SCHRO_PREDICTION_LIST_LENGTH];
} SchroPredictionList;


enum SchroPrefEnum

typedef enum {
  SCHRO_PREF_ENGINE,
  SCHRO_PREF_REF_DISTANCE,
  SCHRO_PREF_TRANSFORM_DEPTH,
  SCHRO_PREF_INTRA_WAVELET,
  SCHRO_PREF_INTER_WAVELET,
  SCHRO_PREF_QUANT_BASE,
  SCHRO_PREF_QUANT_OFFSET_NONREF,
  SCHRO_PREF_QUANT_OFFSET_SUBBAND,
  SCHRO_PREF_QUANT_DC,
  SCHRO_PREF_QUANT_DC_OFFSET_NONREF,
  SCHRO_PREF_LAST
} SchroPrefEnum;


struct SchroEncoderSettings

struct SchroEncoderSettings {
  int transform_depth;
  int wavelet_filter_index;

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

  int xbsep_luma;
  int ybsep_luma;
  int xblen_luma;
  int yblen_luma;
#endif
};


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_iterate ()

int                 schro_encoder_iterate               (SchroEncoder *encoder);

encoder :

Returns :


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,
                                                         SchroBits *bits);

encoder :

bits :


schro_encoder_encode_parse_info ()

void                schro_encoder_encode_parse_info     (SchroBits *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 :