| 522 | } |
| 523 | |
| 524 | void RawFrameDataWriter::Process() |
| 525 | { |
| 526 | // continue consuming frames until none are left pending |
| 527 | do { |
| 528 | pQueryElementContainer->Consume(procTracker, blobs); |
| 529 | // loop over populated blobs |
| 530 | for (auto pBlob : blobs) { |
| 531 | if (pStatsTracker) { |
| 532 | // tracking trace duration |
| 533 | if (startTime < 0.) { |
| 534 | startTime = pQueryElementContainer->ExtractTotalTimeFromBlob(pBlob); |
| 535 | endTime = startTime; |
| 536 | } |
| 537 | else { |
| 538 | endTime = pQueryElementContainer->ExtractTotalTimeFromBlob(pBlob); |
| 539 | } |
| 540 | // tracking frame times |
| 541 | pStatsTracker->Push(pQueryElementContainer->ExtractFrameTimeFromBlob(pBlob)); |
| 542 | } |
| 543 | if (pAnimationErrorTracker) { |
| 544 | auto animationError = (pQueryElementContainer->ExtractAnimationErrorFromBlob(pBlob)); |
| 545 | if (std::isnan(animationError) == false) { |
| 546 | pAnimationErrorTracker->Push(std::abs(animationError)); |
| 547 | } |
| 548 | } |
| 549 | pQueryElementContainer->WriteFrame(file, pBlob); |
| 550 | } |
| 551 | } while (blobs.AllBlobsPopulated()); // if container filled, means more might be left |
| 552 | file << std::flush; |
| 553 | } |
| 554 | |
| 555 | double RawFrameDataWriter::GetDuration_() const |
| 556 | { |
nothing calls this directly
no test coverage detected