Changeset 18880
- Timestamp:
- Aug 4, 2008, 7:45:02 AM (18 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
branches/eam_branch_20080804/psModules/src/detrend/pmBias.c
r18879 r18880 18 18 #include "pmBias.h" 19 19 20 typedef struct { 21 pmReadout *in; 22 pmReadout *sub; 23 float scan; 24 int xOffset, yOffset; 25 int rowStart, rowStop; 26 } pmBiasSubtractScanArgs; 27 28 void pmBiasSubtractScanArgsFree (pmBiasSubtractScanArgs *args) { 29 return; 30 } 31 32 pmBiasSubtractScanArgs *pmBiasSubtractScanArgsAlloc () { 33 34 } 20 // XXX create scalar macro lookups: PS_SCALAR_VALUE(DATA,TYPE) 21 22 # define PS_SCALAR_VALUE(DATA,TYPE) ((psScalar *)(DATA)->data.##TYPE) 35 23 36 24 pmBiasSubtractScan_Threaded (psThreadJob *job) { 37 38 args->in = in; 39 args->sub = sub; 40 args->scan = scan; 41 args->xOffset = xOffset; 42 args->yOffset = yOffset; 43 args->rowStart = rowStart; 44 args->rowStop = rowStop; 45 bool status = pmBiasSubtractScan (args->in, args->sub, args->scan, args->xOffset, args->yOffset, args->rowStart, args->rowStop); 46 return status; 25 pmReadout *in = job->args->data[0]; 26 pmReadout *sub = job->args->data[1]; 27 float scan = PS_SCALAR_VALUE(job->args->data[2],F32); 28 int xOffset = PS_SCALAR_VALUE(job->args->data[3],S32); 29 int yOffset = PS_SCALAR_VALUE(job->args->data[4],S32); 30 int rowStart = PS_SCALAR_VALUE(job->args->data[5],S32); 31 int rowStop = PS_SCALAR_VALUE(job->args->data[6],S32); 32 bool status = pmBiasSubtractScan (in, sub, scan, xOffset, yOffset, rowStart, rowStop); 33 return status; 47 34 } 48 35 … … 149 136 int rowStop = PS_MIN (rowStart + scanRows, inImage->numRows); 150 137 151 // allocate a job 138 // allocate a job, construct the arguments for this job 152 139 psThreadJob *job = psThreadJobAlloc ("PSMODULES_DETREND_BIAS"); 153 154 pmBiasSubtractScanArgs *args = pmBiasSubtractScanArgsAlloc (); 155 args->in = in; 156 args->sub = sub; 157 args->scan = scan; 158 args->xOffset = xOffset; 159 args->yOffset = yOffset; 160 args->rowStart = rowStart; 161 args->rowStop = rowStop; 162 163 // construct the arguments for this job 164 psArrayAdd (job->args, 1, args); 165 psFree (args); 140 psArrayAdd (job->args, 1, in); 141 psArrayAdd (job->args, 1, sub); 142 psArrayAdd (job->args, 1, psScalarAlloc(scan, PS_TYPE_F32)); 143 psArrayAdd (job->args, 1, psScalarAlloc(xOffset, PS_TYPE_S32)); 144 psArrayAdd (job->args, 1, psScalarAlloc(yOffset, PS_TYPE_S32)); 145 psArrayAdd (job->args, 1, psScalarAlloc(rowStart, PS_TYPE_S32)); 146 psArrayAdd (job->args, 1, psScalarAlloc(rowStop, PS_TYPE_S32)); 166 147 167 148 // ppImageDetrendReadout(config, options, view) … … 169 150 return false; 170 151 } 171 172 pmBiasSubtractScan (in, sub, scan, xOffset, yOffset, rowStart, rowStop); 152 // pmBiasSubtractScan (in, sub, scan, xOffset, yOffset, rowStart, rowStop); 153 } 154 155 // wait here for the threaded jobs to finish 156 if (!psThreadPoolWait ()) { 157 psError(PS_ERR_UNKNOWN, false, "Unable to interpolate image."); 158 return false; 159 } 160 fprintf (stderr, "success for threaded jobs\n"); 161 162 // each job records its own goodPixel values; sum them here 163 // we have only supplied one type of job, so we can assume the types here 164 psThreadJob *job = NULL; 165 while ((job = psThreadJobGetDone()) != NULL) { 166 pswarpTransformTileArgs *args = job->args->data[0]; 167 goodPixels += args->goodPixels; 168 psFree (job); 173 169 } 174 170
Note:
See TracChangeset
for help on using the changeset viewer.
