Changeset 18960 for trunk/psModules/src/detrend/pmFlatField.c
- Timestamp:
- Aug 8, 2008, 8:09:07 AM (18 years ago)
- File:
-
- 1 edited
-
trunk/psModules/src/detrend/pmFlatField.c (modified) (4 diffs)
Legend:
- Unmodified
- Added
- Removed
-
trunk/psModules/src/detrend/pmFlatField.c
r18893 r18960 13 13 #include "pmDetrendThreads.h" 14 14 15 bool pmFlatFieldScan_Threaded (psThreadJob *job) { 15 bool pmFlatFieldScan_Threaded(const psThreadJob *job) 16 { 17 PS_ASSERT_THREAD_JOB_NON_NULL(job, false); 18 16 19 psImage *inImage = job->args->data[0]; 17 20 psImage *inMask = job->args->data[1]; … … 29 32 30 33 // Macro for all PS types 31 #define FLAT_DIVISION_CASE(TYPE, SPECIAL) \32 case PS_TYPE_##TYPE: \34 #define FLAT_DIVISION_CASE(TYPE, SPECIAL) \ 35 case PS_TYPE_##TYPE: \ 33 36 for (int j = rowStart; j < rowStop; j++) { \ 34 37 for (int i = 0; i < inImage->numCols; i++) { \ … … 129 132 bool threaded = true; 130 133 int scanRows = pmDetrendGetScanRows(); 131 if (scanRows == 0) { 132 threaded = false;133 scanRows = inImage->numRows;134 if (scanRows == 0) { 135 threaded = false; 136 scanRows = inImage->numRows; 134 137 } 135 138 … … 137 140 int rowStop = PS_MIN (rowStart + scanRows, inImage->numRows); 138 141 139 # define PS_ARRAY_ADD_SCALAR(ARRAY, VALUE, TYPE) { \140 psScalar *scalar = psScalarAlloc(VALUE, TYPE); \141 psArrayAdd(ARRAY, 1, scalar); \142 psFree (scalar); }143 144 142 if (threaded) { 145 // allocate a job, construct the arguments for this job146 psThreadJob *job = psThreadJobAlloc ("PSMODULES_DETREND_FLAT");147 psArrayAdd (job->args, 1, inImage);148 psArrayAdd (job->args, 1, inMask);149 psArrayAdd (job->args, 1, flatImage);150 psArrayAdd (job->args, 1, flatMask);151 PS_ARRAY_ADD_SCALAR (job->args, badFlat, PS_TYPE_U8);152 PS_ARRAY_ADD_SCALAR (job->args, xOffset, PS_TYPE_S32);153 PS_ARRAY_ADD_SCALAR (job->args, yOffset, PS_TYPE_S32);154 PS_ARRAY_ADD_SCALAR (job->args, rowStart, PS_TYPE_S32);155 PS_ARRAY_ADD_SCALAR (job->args, rowStop, PS_TYPE_S32);143 // allocate a job, construct the arguments for this job 144 psThreadJob *job = psThreadJobAlloc ("PSMODULES_DETREND_FLAT"); 145 psArrayAdd (job->args, 1, inImage); 146 psArrayAdd (job->args, 1, inMask); 147 psArrayAdd (job->args, 1, flatImage); 148 psArrayAdd (job->args, 1, flatMask); 149 PS_ARRAY_ADD_SCALAR (job->args, badFlat, PS_TYPE_U8); 150 PS_ARRAY_ADD_SCALAR (job->args, xOffset, PS_TYPE_S32); 151 PS_ARRAY_ADD_SCALAR (job->args, yOffset, PS_TYPE_S32); 152 PS_ARRAY_ADD_SCALAR (job->args, rowStart, PS_TYPE_S32); 153 PS_ARRAY_ADD_SCALAR (job->args, rowStop, PS_TYPE_S32); 156 154 157 // ppImageDetrendReadout(config, options, view) 158 if (!psThreadJobAddPending (job)) { 159 return false; 160 } 155 // ppImageDetrendReadout(config, options, view) 156 if (!psThreadJobAddPending (job)) { 157 psFree(job); 158 return false; 159 } 160 psFree(job); 161 161 } else { 162 pmFlatFieldScan (inImage, inMask, flatImage, flatMask, badFlat, xOffset, yOffset, rowStart, rowStop);162 pmFlatFieldScan (inImage, inMask, flatImage, flatMask, badFlat, xOffset, yOffset, rowStart, rowStop); 163 163 } 164 164 } 165 165 166 166 if (threaded) { 167 // wait here for the threaded jobs to finish168 if (!psThreadPoolWait ()) {169 psError(PS_ERR_UNKNOWN, false, "Unable to interpolate image.");170 return false;171 }172 fprintf (stderr, "success for threaded jobs\n");167 // wait here for the threaded jobs to finish 168 if (!psThreadPoolWait(false)) { 169 psError(PS_ERR_UNKNOWN, false, "Unable to interpolate image."); 170 return false; 171 } 172 fprintf (stderr, "success for threaded jobs\n"); 173 173 174 // free done jobs175 psThreadJob *job = NULL;176 while ((job = psThreadJobGetDone()) != NULL) {177 psFree (job);178 }174 // free done jobs 175 psThreadJob *job = NULL; 176 while ((job = psThreadJobGetDone()) != NULL) { 177 psFree (job); 178 } 179 179 } 180 180
Note:
See TracChangeset
for help on using the changeset viewer.
