| 1353 | } |
| 1354 | |
| 1355 | bool CompressTextureSet(ntc::IContext* context, ntc::ITextureSet* textureSet, float* outFinalPsnr) |
| 1356 | { |
| 1357 | ntc::Status ntcStatus = textureSet->BeginCompression(g_options.compressionSettings); |
| 1358 | CHECK_NTC_RESULT(BeginCompression); |
| 1359 | |
| 1360 | ntc::CompressionStats stats; |
| 1361 | do |
| 1362 | { |
| 1363 | ntcStatus = textureSet->RunCompressionSteps(&stats); |
| 1364 | if (ntcStatus == ntc::Status::Incomplete || ntcStatus == ntc::Status::Ok) |
| 1365 | { |
| 1366 | printf("Training: %d steps, %.4f ms/step, intermediate PSNR: %.2f dB\r", stats.currentStep, |
| 1367 | stats.millisecondsPerStep, ntc::LossToPSNR(stats.loss)); |
| 1368 | fflush(stdout); |
| 1369 | } |
| 1370 | } while (ntcStatus == ntc::Status::Incomplete); |
| 1371 | CHECK_NTC_RESULT(RunCompressionSteps); |
| 1372 | printf("\n"); |
| 1373 | |
| 1374 | ntcStatus = textureSet->FinalizeCompression(); |
| 1375 | CHECK_NTC_RESULT(FinalizeCompression); |
| 1376 | |
| 1377 | if (outFinalPsnr) |
| 1378 | *outFinalPsnr = ntc::LossToPSNR(stats.loss); |
| 1379 | |
| 1380 | return true; |
| 1381 | } |
| 1382 | |
| 1383 | struct AdaptiveSearchResult |
| 1384 | { |
no test coverage detected