#include "dcmtk/config/osconfig.h" /* make sure OS specific configuration is included first */ #include "dcmtk/dcmdata/dctk.h" #include #ifndef NTHREADS #define NTHREADS 32 #endif static void* run(void* arg) { const char* filename = static_cast(arg); const char utf8_charset[] = "ISO_IR 192"; const E_FileReadMode opt_readMode = ERM_autoDetect; const E_TransferSyntax opt_ixfer = EXS_Unknown; DcmFileFormat fileformat; OFCondition error = fileformat.loadFile(filename, opt_ixfer, EGL_noChange, DCM_MaxReadLength, opt_readMode); assert(error.good()); DcmDataset* dataset = fileformat.getDataset(); const size_t opt_conversionFlags = 0; const OFString toCharset(utf8_charset); error = dataset->convertCharacterSet(toCharset, opt_conversionFlags); return nullptr; } int main(int argc, char* argv[]) { if (argc < 2) { return 1; } const char* filename = argv[1]; int rc; pthread_t threads[NTHREADS]; for (int i = 0; i < NTHREADS; ++i) { if (rc = pthread_create(threads + i, nullptr, run, (void*)filename)) { return 1; } } for (int i = 0; i < NTHREADS; ++i) { if (rc = pthread_join(threads[i], nullptr)) { return 1; } } return 0; }