00001
00020 #ifndef PITHSYNC_H
00021 #define PITHSYNC_H
00022
00023 #include "blobbox.h"
00024 #include "varable.h"
00025 #include "statistc.h"
00026 #include "notdll.h"
00027
00028 class FPSEGPT_LIST;
00029
00057 class FPCUTPT
00058 {
00059 public:
00060 FPCUTPT() {
00061 }
00062 void setup (
00063 FPCUTPT cutpts[],
00064 INT16 array_origin,
00065 STATS * projection,
00066 INT16 zero_count,
00067 INT16 pitch,
00068 INT16 x,
00069 INT16 offset);
00070
00071 void assign (
00072 FPCUTPT cutpts[],
00073 INT16 array_origin,
00074 INT16 x,
00075 BOOL8 faking,
00076 BOOL8 mid_cut,
00077 INT16 offset,
00078 STATS * projection,
00079 float projection_scale,
00080 INT16 zero_count,
00081 INT16 pitch,
00082 INT16 pitch_error);
00083
00084 void assign_cheap (
00085 FPCUTPT cutpts[],
00086 INT16 array_origin,
00087 INT16 x,
00088 BOOL8 faking,
00089 BOOL8 mid_cut,
00090 INT16 offset,
00091 STATS * projection,
00092 float projection_scale,
00093 INT16 zero_count,
00094 INT16 pitch,
00095 INT16 pitch_error);
00096
00097 INT32 position() {
00098 return xpos;
00099 }
00100 double cost_function() {
00101 return cost;
00102 }
00103 double squares() {
00104 return sq_sum;
00105 }
00106 double sum() {
00107 return mean_sum;
00108 }
00109 FPCUTPT *previous() {
00110 return pred;
00111 }
00112 INT16 cheap_cuts() const {
00113 return mid_cuts;
00114 }
00115 INT16 index() const {
00116 return region_index;
00117 }
00118
00119 BOOL8 faked;
00120 BOOL8 terminal;
00121 INT16 fake_count;
00122
00123 private:
00124 INT16 region_index;
00125 INT16 mid_cuts;
00126 INT32 xpos;
00127 UINT32 back_balance;
00128 UINT32 fwd_balance;
00129 FPCUTPT *pred;
00130 double mean_sum;
00131 double sq_sum;
00132 double cost;
00133 };
00134
00135 double check_pitch_sync2(
00136 BLOBNBOX_IT *blob_it,
00137 INT16 blob_count,
00138 INT16 pitch,
00139 INT16 pitch_error,
00140 STATS *projection,
00141 INT16 projection_left,
00142 INT16 projection_right,
00143 float projection_scale,
00144 INT16 &occupation_count,
00145 FPSEGPT_LIST *seg_list,
00146 INT16 start,
00147 INT16 end
00148 );
00149 double check_pitch_sync3(
00150 INT16 projection_left,
00151 INT16 projection_right,
00152 INT16 zero_count,
00153 INT16 pitch,
00154 INT16 pitch_error,
00155 STATS *projection,
00156 float projection_scale,
00157 INT16 &occupation_count,
00158 FPSEGPT_LIST *seg_list,
00159 INT16 start,
00160 INT16 end
00161 );
00162 #endif