schroframe

schroframe —

Synopsis




            SchroFrame;
            SchroFrameData;
void        (*SchroFrameFreeFunc)           (SchroFrame *frame,
                                             void *priv);
enum        SchroFrameFormat;
            SchroUpsampledFrame;
#define     SCHRO_FRAME_FORMAT_DEPTH        (format)
#define     SCHRO_FRAME_FORMAT_DEPTH_S16
#define     SCHRO_FRAME_FORMAT_DEPTH_S32
#define     SCHRO_FRAME_FORMAT_DEPTH_U8
#define     SCHRO_FRAME_FORMAT_H_SHIFT      (format)
#define     SCHRO_FRAME_FORMAT_V_SHIFT      (format)
#define     SCHRO_FRAME_IS_PACKED           (format)
#define     SCHRO_FRAME_DATA_GET_LINE       (fd,i)
#define     SCHRO_FRAME_DATA_GET_PIXEL_S16  (fd,i,j)
#define     SCHRO_FRAME_DATA_GET_PIXEL_U8   (fd,i,j)
SchroFrame* schro_frame_new                 (void);
SchroFrame* schro_frame_new_and_alloc       (SchroMemoryDomain *domain,
                                             SchroFrameFormat format,
                                             int width,
                                             int height);
SchroFrame* schro_frame_new_from_data_AYUV  (void *data,
                                             int width,
                                             int height);
SchroFrame* schro_frame_new_from_data_I420  (void *data,
                                             int width,
                                             int height);
SchroFrame* schro_frame_new_from_data_YUY2  (void *data,
                                             int width,
                                             int height);
SchroFrame* schro_frame_dup                 (SchroFrame *frame);
SchroFrame* schro_frame_ref                 (SchroFrame *frame);
void        schro_frame_unref               (SchroFrame *frame);
void        schro_frame_set_free_callback   (SchroFrame *frame,
                                             SchroFrameFreeFunc free_func,
                                             void *priv);
SchroFrame* schro_frame_clone               (SchroMemoryDomain *domain,
                                             SchroFrame *frame);
void        schro_frame_data_get_codeblock  (SchroFrameData *dest,
                                             SchroFrameData *src,
                                             int x,
                                             int y,
                                             int horiz_codeblocks,
                                             int vert_codeblocks);
int         schro_frame_get_metric          (SchroFrame *frame1,
                                             int x1,
                                             int y1,
                                             SchroFrame *frame2,
                                             int x2,
                                             int y2);
void        schro_frame_get_subdata         (SchroFrame *frame,
                                             SchroFrameData *fd,
                                             int comp,
                                             int x,
                                             int y);
void        schro_frame_inverse_iwt_transform_cuda
                                            (SchroFrame *frame,
                                             SchroFrame *transform_frame,
                                             SchroParams *params);
SchroFrame* schro_frame_new_from_data_UYVY  (void *data,
                                             int width,
                                             int height);
SchroFrame* schro_frame_new_from_data_YV12  (void *data,
                                             int width,
                                             int height);

void        schro_frame_convert             (SchroFrame *dest,
                                             SchroFrame *src);
SchroFrame* schro_frame_convert_to_444      (SchroFrame *frame);
void        schro_frame_add                 (SchroFrame *dest,
                                             SchroFrame *src);
void        schro_frame_subtract            (SchroFrame *dest,
                                             SchroFrame *src);
void        schro_frame_shift_left          (SchroFrame *frame,
                                             int shift);
void        schro_frame_shift_right         (SchroFrame *frame,
                                             int shift);
void        schro_frame_edge_extend         (SchroFrame *frame,
                                             int width,
                                             int height);
void        schro_frame_zero_extend         (SchroFrame *frame,
                                             int width,
                                             int height);
void        schro_frame_iwt_transform       (SchroFrame *frame,
                                             SchroParams *params,
                                             int16_t *tmp);
void        schro_frame_inverse_iwt_transform
                                            (SchroFrame *frame,
                                             SchroParams *params,
                                             int16_t *tmp);
void        schro_frame_downsample          (SchroFrame *dest,
                                             SchroFrame *src);
void        schro_frame_mark                (SchroFrame *frame,
                                             int value);
void        schro_frame_upsample_horiz      (SchroFrame *dest,
                                             SchroFrame *src);
void        schro_frame_upsample_vert       (SchroFrame *dest,
                                             SchroFrame *src);

double      schro_frame_ssim                (SchroFrame *a,
                                             SchroFrame *b);
void        schro_frame_mean_squared_error  (SchroFrame *a,
                                             SchroFrame *b,
                                             double *mse);
void        schro_frame_md5                 (SchroFrame *frame,
                                             uint32_t *state);
double      schro_frame_calculate_average_luma
                                            (SchroFrame *frame);


void        schro_upsampled_frame_free      (SchroUpsampledFrame *df);
SchroUpsampledFrame* schro_upsampled_frame_new
                                            (SchroFrame *frame);
void        schro_upsampled_frame_upsample  (SchroUpsampledFrame *df);
void        schro_upsampled_frame_get_block_fast_precN
                                            (SchroUpsampledFrame *upframe,
                                             int k,
                                             int x,
                                             int y,
                                             int prec,
                                             SchroFrameData *fd);
void        schro_upsampled_frame_get_block_precN
                                            (SchroUpsampledFrame *upframe,
                                             int k,
                                             int x,
                                             int y,
                                             int prec,
                                             SchroFrameData *fd);
int         schro_upsampled_frame_get_pixel_prec0
                                            (SchroUpsampledFrame *upframe,
                                             int k,
                                             int x,
                                             int y);
int         schro_upsampled_frame_get_pixel_prec1
                                            (SchroUpsampledFrame *upframe,
                                             int k,
                                             int x,
                                             int y);
int         schro_upsampled_frame_get_pixel_prec3
                                            (SchroUpsampledFrame *upframe,
                                             int k,
                                             int x,
                                             int y);
int         schro_upsampled_frame_get_pixel_precN
                                            (SchroUpsampledFrame *upframe,
                                             int k,
                                             int x,
                                             int y,
                                             int mv_precision);

Description

Details

SchroFrame

typedef struct {
  int refcount;
  SchroFrameFreeFunc free;
  SchroMemoryDomain *domain;
  void *regions[3];
  void *priv;

  SchroFrameFormat format;
  int width;
  int height;

  SchroFrameData components[3];

  int is_virtual;
  int cached_lines[3][SCHRO_FRAME_CACHE_SIZE];
  SchroFrame *virt_frame1;
  SchroFrame *virt_frame2;
  void (*render_line) (SchroFrame *frame, void *dest, int component, int i);
} SchroFrame;


SchroFrameData

typedef struct {
  SchroFrameFormat format;
  void *data;
  int stride;
  int width;
  int height;
  int length;
  int h_shift;
  int v_shift;
} SchroFrameData;


SchroFrameFreeFunc ()

void        (*SchroFrameFreeFunc)           (SchroFrame *frame,
                                             void *priv);

frame :
priv :

enum SchroFrameFormat

typedef enum _SchroFrameFormat {
  SCHRO_FRAME_FORMAT_U8_444 = 0x00,
  SCHRO_FRAME_FORMAT_U8_422 = 0x01,
  SCHRO_FRAME_FORMAT_U8_420 = 0x03,

  SCHRO_FRAME_FORMAT_S16_444 = 0x04,
  SCHRO_FRAME_FORMAT_S16_422 = 0x05,
  SCHRO_FRAME_FORMAT_S16_420 = 0x07,

  SCHRO_FRAME_FORMAT_S32_444 = 0x08,
  SCHRO_FRAME_FORMAT_S32_422 = 0x09,
  SCHRO_FRAME_FORMAT_S32_420 = 0x0b,

  /* indirectly supported */
  SCHRO_FRAME_FORMAT_YUYV = 0x100, /* YUYV order */
  SCHRO_FRAME_FORMAT_UYVY = 0x101, /* UYVY order */
  SCHRO_FRAME_FORMAT_AYUV = 0x102,
  SCHRO_FRAME_FORMAT_ARGB = 0x103
} SchroFrameFormat;


SchroUpsampledFrame

typedef struct {
  SchroFrame *frames[4];
  void *components[3];
} SchroUpsampledFrame;


SCHRO_FRAME_FORMAT_DEPTH()

#define SCHRO_FRAME_FORMAT_DEPTH(format) ((format) & 0xc)

format :

SCHRO_FRAME_FORMAT_DEPTH_S16

#define SCHRO_FRAME_FORMAT_DEPTH_S16 0x04


SCHRO_FRAME_FORMAT_DEPTH_S32

#define SCHRO_FRAME_FORMAT_DEPTH_S32 0x08


SCHRO_FRAME_FORMAT_DEPTH_U8

#define SCHRO_FRAME_FORMAT_DEPTH_U8 0x00


SCHRO_FRAME_FORMAT_H_SHIFT()

#define SCHRO_FRAME_FORMAT_H_SHIFT(format) ((format) & 0x1)

format :

SCHRO_FRAME_FORMAT_V_SHIFT()

#define SCHRO_FRAME_FORMAT_V_SHIFT(format) (((format)>>1) & 0x1)

format :

SCHRO_FRAME_IS_PACKED()

#define SCHRO_FRAME_IS_PACKED(format) (((format)>>8) & 0x1)

format :

SCHRO_FRAME_DATA_GET_LINE()

#define SCHRO_FRAME_DATA_GET_LINE(fd,i) (SCHRO_OFFSET((fd)->data,(fd)->stride*(i)))

fd :
i :

SCHRO_FRAME_DATA_GET_PIXEL_S16()

#define SCHRO_FRAME_DATA_GET_PIXEL_S16(fd,i,j) ((int16_t *)SCHRO_OFFSET((fd)->data,(fd)->stride*(j)+(i)*sizeof(int16_t)))

fd :
i :
j :

SCHRO_FRAME_DATA_GET_PIXEL_U8()

#define SCHRO_FRAME_DATA_GET_PIXEL_U8(fd,i,j) ((uint8_t *)SCHRO_OFFSET((fd)->data,(fd)->stride*(j)+(i)))

fd :
i :
j :

schro_frame_new ()

SchroFrame* schro_frame_new                 (void);

Returns :

schro_frame_new_and_alloc ()

SchroFrame* schro_frame_new_and_alloc       (SchroMemoryDomain *domain,
                                             SchroFrameFormat format,
                                             int width,
                                             int height);

domain :
format :
width :
height :
Returns :

schro_frame_new_from_data_AYUV ()

SchroFrame* schro_frame_new_from_data_AYUV  (void *data,
                                             int width,
                                             int height);

data :
width :
height :
Returns :

schro_frame_new_from_data_I420 ()

SchroFrame* schro_frame_new_from_data_I420  (void *data,
                                             int width,
                                             int height);

data :
width :
height :
Returns :

schro_frame_new_from_data_YUY2 ()

SchroFrame* schro_frame_new_from_data_YUY2  (void *data,
                                             int width,
                                             int height);

data :
width :
height :
Returns :

schro_frame_dup ()

SchroFrame* schro_frame_dup                 (SchroFrame *frame);

frame :
Returns :

schro_frame_ref ()

SchroFrame* schro_frame_ref                 (SchroFrame *frame);

frame :
Returns :

schro_frame_unref ()

void        schro_frame_unref               (SchroFrame *frame);

frame :

schro_frame_set_free_callback ()

void        schro_frame_set_free_callback   (SchroFrame *frame,
                                             SchroFrameFreeFunc free_func,
                                             void *priv);

frame :
free_func :
priv :

schro_frame_clone ()

SchroFrame* schro_frame_clone               (SchroMemoryDomain *domain,
                                             SchroFrame *frame);

domain :
frame :
Returns :

schro_frame_data_get_codeblock ()

void        schro_frame_data_get_codeblock  (SchroFrameData *dest,
                                             SchroFrameData *src,
                                             int x,
                                             int y,
                                             int horiz_codeblocks,
                                             int vert_codeblocks);

dest :
src :
x :
y :
horiz_codeblocks :
vert_codeblocks :

schro_frame_get_metric ()

int         schro_frame_get_metric          (SchroFrame *frame1,
                                             int x1,
                                             int y1,
                                             SchroFrame *frame2,
                                             int x2,
                                             int y2);

frame1 :
x1 :
y1 :
frame2 :
x2 :
y2 :
Returns :

schro_frame_get_subdata ()

void        schro_frame_get_subdata         (SchroFrame *frame,
                                             SchroFrameData *fd,
                                             int comp,
                                             int x,
                                             int y);

frame :
fd :
comp :
x :
y :

schro_frame_inverse_iwt_transform_cuda ()

void        schro_frame_inverse_iwt_transform_cuda
                                            (SchroFrame *frame,
                                             SchroFrame *transform_frame,
                                             SchroParams *params);

frame :
transform_frame :
params :

schro_frame_new_from_data_UYVY ()

SchroFrame* schro_frame_new_from_data_UYVY  (void *data,
                                             int width,
                                             int height);

data :
width :
height :
Returns :

schro_frame_new_from_data_YV12 ()

SchroFrame* schro_frame_new_from_data_YV12  (void *data,
                                             int width,
                                             int height);

data :
width :
height :
Returns :

schro_frame_convert ()

void        schro_frame_convert             (SchroFrame *dest,
                                             SchroFrame *src);

dest :
src :

schro_frame_convert_to_444 ()

SchroFrame* schro_frame_convert_to_444      (SchroFrame *frame);

frame :
Returns :

schro_frame_add ()

void        schro_frame_add                 (SchroFrame *dest,
                                             SchroFrame *src);

dest :
src :

schro_frame_subtract ()

void        schro_frame_subtract            (SchroFrame *dest,
                                             SchroFrame *src);

dest :
src :

schro_frame_shift_left ()

void        schro_frame_shift_left          (SchroFrame *frame,
                                             int shift);

frame :
shift :

schro_frame_shift_right ()

void        schro_frame_shift_right         (SchroFrame *frame,
                                             int shift);

frame :
shift :

schro_frame_edge_extend ()

void        schro_frame_edge_extend         (SchroFrame *frame,
                                             int width,
                                             int height);

frame :
width :
height :

schro_frame_zero_extend ()

void        schro_frame_zero_extend         (SchroFrame *frame,
                                             int width,
                                             int height);

frame :
width :
height :

schro_frame_iwt_transform ()

void        schro_frame_iwt_transform       (SchroFrame *frame,
                                             SchroParams *params,
                                             int16_t *tmp);

frame :
params :
tmp :

schro_frame_inverse_iwt_transform ()

void        schro_frame_inverse_iwt_transform
                                            (SchroFrame *frame,
                                             SchroParams *params,
                                             int16_t *tmp);

frame :
params :
tmp :

schro_frame_downsample ()

void        schro_frame_downsample          (SchroFrame *dest,
                                             SchroFrame *src);

dest :
src :

schro_frame_mark ()

void        schro_frame_mark                (SchroFrame *frame,
                                             int value);

frame :
value :

schro_frame_upsample_horiz ()

void        schro_frame_upsample_horiz      (SchroFrame *dest,
                                             SchroFrame *src);

dest :
src :

schro_frame_upsample_vert ()

void        schro_frame_upsample_vert       (SchroFrame *dest,
                                             SchroFrame *src);

dest :
src :

schro_frame_ssim ()

double      schro_frame_ssim                (SchroFrame *a,
                                             SchroFrame *b);

a :
b :
Returns :

schro_frame_mean_squared_error ()

void        schro_frame_mean_squared_error  (SchroFrame *a,
                                             SchroFrame *b,
                                             double *mse);

a :
b :
mse :

schro_frame_md5 ()

void        schro_frame_md5                 (SchroFrame *frame,
                                             uint32_t *state);

frame :
state :

schro_frame_calculate_average_luma ()

double      schro_frame_calculate_average_luma
                                            (SchroFrame *frame);

frame :
Returns :

schro_upsampled_frame_free ()

void        schro_upsampled_frame_free      (SchroUpsampledFrame *df);

df :

schro_upsampled_frame_new ()

SchroUpsampledFrame* schro_upsampled_frame_new
                                            (SchroFrame *frame);

frame :
Returns :

schro_upsampled_frame_upsample ()

void        schro_upsampled_frame_upsample  (SchroUpsampledFrame *df);

df :

schro_upsampled_frame_get_block_fast_precN ()

void        schro_upsampled_frame_get_block_fast_precN
                                            (SchroUpsampledFrame *upframe,
                                             int k,
                                             int x,
                                             int y,
                                             int prec,
                                             SchroFrameData *fd);

upframe :
k :
x :
y :
prec :
fd :

schro_upsampled_frame_get_block_precN ()

void        schro_upsampled_frame_get_block_precN
                                            (SchroUpsampledFrame *upframe,
                                             int k,
                                             int x,
                                             int y,
                                             int prec,
                                             SchroFrameData *fd);

upframe :
k :
x :
y :
prec :
fd :

schro_upsampled_frame_get_pixel_prec0 ()

int         schro_upsampled_frame_get_pixel_prec0
                                            (SchroUpsampledFrame *upframe,
                                             int k,
                                             int x,
                                             int y);

upframe :
k :
x :
y :
Returns :

schro_upsampled_frame_get_pixel_prec1 ()

int         schro_upsampled_frame_get_pixel_prec1
                                            (SchroUpsampledFrame *upframe,
                                             int k,
                                             int x,
                                             int y);

upframe :
k :
x :
y :
Returns :

schro_upsampled_frame_get_pixel_prec3 ()

int         schro_upsampled_frame_get_pixel_prec3
                                            (SchroUpsampledFrame *upframe,
                                             int k,
                                             int x,
                                             int y);

upframe :
k :
x :
y :
Returns :

schro_upsampled_frame_get_pixel_precN ()

int         schro_upsampled_frame_get_pixel_precN
                                            (SchroUpsampledFrame *upframe,
                                             int k,
                                             int x,
                                             int y,
                                             int mv_precision);

upframe :
k :
x :
y :
mv_precision :
Returns :