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)
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);

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);
void                schro_upsampled_frame_free          (SchroUpsampledFrame *df);
SchroUpsampledFrame* schro_upsampled_frame_new          (SchroFrame *frame);
void                schro_upsampled_frame_upsample      (SchroUpsampledFrame *df);

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);

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];
} SchroFrame;


SchroFrameData

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

  /* for CUDA */
  //void *gdata;
} 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];
#ifdef HAVE_CUDA
  struct cudaArray *components[3];
#endif
} 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) (OFFSET((fd)->data,(fd)->stride*(i)))

fd :

i :


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_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_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_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 :