Changeset 17227 for trunk/ppMerge/src/ppMerge.c
- Timestamp:
- Mar 28, 2008, 5:08:31 PM (18 years ago)
- File:
-
- 1 edited
-
trunk/ppMerge/src/ppMerge.c (modified) (3 diffs)
Legend:
- Unmodified
- Added
- Removed
-
trunk/ppMerge/src/ppMerge.c
r15631 r17227 4 4 5 5 #include <stdio.h> 6 #include <string.h> 6 7 #include <pslib.h> 7 8 #include <psmodules.h> 8 9 9 10 #include "ppMerge.h" 10 #include "ppMergeConfig.h"11 #include "ppMergeData.h"12 #include "ppMergeOptions.h"13 #include "ppMergeCheckInputs.h"14 #include "ppMergeCombine.h"15 #include "ppMergeScaleZero.h"16 #include "ppMergeMask.h"17 11 18 12 //#include "ppMem.h" … … 27 21 { 28 22 psLibInit(NULL); 29 psMemSetThreadSafety(false); // Turn off thread safety, for more23 psMemSetThreadSafety(false); 30 24 psTimerStart(TIMERNAME); 31 25 32 // Parse the configuration and arguments 33 // Open the input image(s) 34 // Determine camera, format from header if not already defined 35 // Construct camera in preparation for reading 36 pmConfig *config = ppMergeConfig(argc, argv); 26 psExit exitValue = PS_EXIT_SUCCESS; // Exit value for program 27 28 pmConfig *config = pmConfigRead(&argc, argv, PPMERGE_RECIPE); // Configuration 37 29 if (!config) { 38 psErrorStackPrint(stderr, "Unable to get configuration."); 39 exit(EXIT_FAILURE); 30 psErrorStackPrint(stderr, "Error reading configuration."); 31 exitValue = PS_EXIT_CONFIG_ERROR; 32 goto die; 40 33 } 41 34 35 if (!ppMergeArguments(argc, argv, config)) { 36 psErrorStackPrint(stderr, "Error reading arguments."); 37 exitValue = PS_EXIT_CONFIG_ERROR; 38 goto die; 39 } 40 41 ppMergeType type = psMetadataLookupS32(NULL, config->arguments, "TYPE"); // Type of frame 42 switch (type) { 43 case PPMERGE_TYPE_MASK: 44 if (!ppMergeMask(config)) { 45 psErrorStackPrint(stderr, "Error generating mask."); 46 exitValue = PS_EXIT_DATA_ERROR; 47 goto die; 48 } 49 break; 50 case PPMERGE_TYPE_BIAS: 51 case PPMERGE_TYPE_DARK: 52 case PPMERGE_TYPE_SHUTTER: 53 case PPMERGE_TYPE_FLAT: 54 case PPMERGE_TYPE_FRINGE: 55 if (!ppMergeScaleZero(config)) { 56 psErrorStackPrint(stderr, "Error getting scale and zero-points."); 57 exitValue = PS_EXIT_DATA_ERROR; 58 goto die; 59 } 60 if (!ppMergeLoop(config)) { 61 psErrorStackPrint(stderr, "Error performing merge."); 62 exitValue = PS_EXIT_PROG_ERROR; 63 goto die; 64 } 65 break; 66 default: 67 psAbort("Invalid frame type: %x", type); 68 } 69 70 71 // Output the statistics 72 bool mdok; // Status of MD lookup 73 psString statsName = psMetadataLookupStr(&mdok, config->arguments, "STATS.NAME"); // Statistics file name 74 if (mdok && statsName && strlen(statsName) > 0) { 75 psString resolved = pmConfigConvertFilename(statsName, config, true); // Resolved filename 76 FILE *statsFile = fopen(resolved, "w"); // Output statistics file 77 if (!statsFile) { 78 psError(PS_ERR_IO, true, "Unable to open statistics file %s for writing.", resolved); 79 psFree(resolved); 80 exitValue = PS_EXIT_CONFIG_ERROR; 81 goto die; 82 } 83 psFree(resolved); 84 psMetadata *stats = psMetadataLookupMetadata(&mdok, config->arguments, "STATS.DATA"); // Statistics 85 if (!stats) { 86 psError(PS_ERR_UNEXPECTED_NULL, false, "Unable to find statistics"); 87 exitValue = PS_EXIT_PROG_ERROR; 88 goto die; 89 } 90 psString statsOut = psMetadataConfigFormat(stats); // String to write out 91 fprintf(statsFile, "%s", statsOut); 92 psFree(statsOut); 93 fclose(statsFile); 94 } 95 96 97 98 99 #if 0 42 100 // Set various tasks (define optional operations) 43 101 ppMergeOptions *options = ppMergeOptionsParse(config); … … 81 139 } 82 140 83 #if 084 pmFPAPrint(stdout, data->out, true, true);85 #endif86 87 141 // Cleaning up 88 142 psFree(data); 89 143 psFree(options); 144 #endif 145 146 die: 147 psTrace("ppSub", 1, "Finished at %f sec\n", psTimerMark("ppSub")); 148 psTimerStop(); 149 90 150 psFree(config); 91 92 pmConceptsDone();93 151 pmConfigDone(); 94 152 psLibFinalize(); 95 153 96 // ppMemCheck(); 97 98 return EXIT_SUCCESS; 154 exit(exitValue); 99 155 }
Note:
See TracChangeset
for help on using the changeset viewer.
