/usr/include/schroedinger-1.0/schroedinger/schromotion.h is in libschroedinger-dev 1.0.11-2ubuntu1.
This file is owned by root:root, with mode 0o644.
The actual contents of the file can be viewed below.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 | #ifndef __SCHRO_MOTION_H__
#define __SCHRO_MOTION_H__
#include <schroedinger/schroframe.h>
#include <schroedinger/schroparams.h>
#ifdef SCHRO_ENABLE_UNSTABLE_API
#include <orc/orc.h>
#endif
SCHRO_BEGIN_DECLS
typedef struct _SchroMotionVector SchroMotionVector;
typedef struct _SchroMotionField SchroMotionField;
typedef struct _SchroMotion SchroMotion;
typedef struct _SchroMotionScan SchroMotionScan;
typedef struct _SchroMotionFuncs SchroMotionFuncs;
#ifdef SCHRO_ENABLE_UNSTABLE_API
struct _SchroMotionVector {
unsigned int pred_mode : 2;
unsigned int using_global : 1;
unsigned int split : 2;
unsigned int unused : 3;
unsigned int scan : 8;
uint32_t metric;
uint32_t chroma_metric;
union {
struct {
int16_t dx[2];
int16_t dy[2];
} vec;
struct {
int16_t dc[3];
} dc;
} u;
};
struct _SchroMotionField {
int x_num_blocks;
int y_num_blocks;
SchroMotionVector *motion_vectors;
};
struct _SchroMotionFuncs {
OrcProgram *block_accumulate;
OrcProgram *block_accumulate_scaled;
OrcProgram *block_accumulate_dc;
OrcProgram *block_accumulate_avg;
OrcProgram *block_accumulate_biref;
};
struct _SchroMotion {
SchroUpsampledFrame *src1;
SchroUpsampledFrame *src2;
SchroMotionVector *motion_vectors;
SchroParams *params;
uint8_t *tmpdata;
int ref_weight_precision;
int ref1_weight;
int ref2_weight;
int mv_precision;
int xoffset;
int yoffset;
int xbsep;
int ybsep;
int xblen;
int yblen;
SchroFrameData block;
SchroFrameData alloc_block;
SchroFrameData obmc_weight;
SchroFrameData alloc_block_ref[2];
SchroFrameData block_ref[2];
int weight_x[SCHRO_LIMIT_BLOCK_SIZE];
int weight_y[SCHRO_LIMIT_BLOCK_SIZE];
int width;
int height;
int max_fast_x;
int max_fast_y;
schro_bool simple_weight;
schro_bool oneref_noscale;
};
#define SCHRO_MOTION_GET_BLOCK(motion,x,y) \
((motion)->motion_vectors+(y)*(motion)->params->x_num_blocks + (x))
SchroMotion * schro_motion_new (SchroParams *params,
SchroUpsampledFrame *ref1, SchroUpsampledFrame *ref2);
void schro_motion_free (SchroMotion *motion);
int schro_motion_verify (SchroMotion *mf);
void schro_motion_render_ref (SchroMotion *motion, SchroFrame *dest,
SchroFrame *addframe, int add, SchroFrame *output_frame);
void schro_motion_render_u8 (SchroMotion *motion, SchroFrame *dest,
SchroFrame *addframe, int add, SchroFrame *output_frame);
void schro_motion_render (SchroMotion *motion, SchroFrame *dest,
SchroFrame *addframe, int add, SchroFrame *output_frame);
void schro_motion_init_obmc_weight (SchroMotion *motion);
void schro_motion_render_fast (SchroMotion *motion, SchroFrame *dest,
SchroFrame *addframe, int add, SchroFrame *output_frame);
int schro_motion_render_fast_allowed (SchroMotion *motion);
void schro_mf_vector_prediction (SchroMotionField* mf,
int x, int y, int *pred_x, int *pred_y, int mode);
void schro_motion_vector_prediction (SchroMotion *motion,
int x, int y, int *pred_x, int *pred_y, int mode);
int schro_motion_split_prediction (SchroMotion *motion, int x, int y);
int schro_motion_get_mode_prediction (SchroMotion *motion, int x, int y);
void schro_motion_dc_prediction (SchroMotion *motion,
int x, int y, int *pred);
int schro_motion_get_global_prediction (SchroMotion *motion,
int x, int y);
int schro_motion_vector_is_equal (SchroMotionVector *mv1, SchroMotionVector *mv2);
#endif
SCHRO_END_DECLS
#endif
|