Alien-FreeImage
view release on metacpan or search on metacpan
src/Source/LibJXR/image/sys/strcodec.c view on Meta::CPAN
if (PACKET1(pIO->pbStart, pIO->pbCurrent, PACKETLENGTH))
{
PERFTIMER_STOP(pSC->m_fMeasurePerf, pSC->m_ptEncDecPerf);
err = pIO->pWS->Write(pIO->pWS, pIO->pbStart, PACKETLENGTH);
PERFTIMER_START(pSC->m_fMeasurePerf, pSC->m_ptEncDecPerf);
Call(err);
// reposition pbStart pointer
pIO->pbStart = MASKPTR(pIO->pbStart + PACKETLENGTH, pIO->iMask);
}
Cleanup:
return err;
}
// write out partially filled buffer and detach bitIO from IStream
ERR detachISWrite(CWMImageStrCodec* pSC, BitIOInfo* pIO)
{
ERR err = WMP_errSuccess;
// we can ONLY detach IStream at byte boundary
assert(0 == (pIO->cBitsUsed % 8));
Call(writeIS_L1(pSC, pIO));
PERFTIMER_STOP(pSC->m_fMeasurePerf, pSC->m_ptEncDecPerf);
err = pIO->pWS->Write(pIO->pWS, pIO->pbStart, pIO->pbCurrent + pIO->cBitsUsed / 8 - pIO->pbStart);
PERFTIMER_START(pSC->m_fMeasurePerf, pSC->m_ptEncDecPerf);
Call(err);
pIO->pWS = NULL;
Cleanup:
return err;
}
//=========================
// Performance Measurement
//=========================
#ifndef DISABLE_PERF_MEASUREMENT
void OutputIndivPerfTimer(struct PERFTIMERSTATE *pPerfTimer,
char *pszTimerName,
char *pszDescription,
float fltMegaPixels)
{
PERFTIMERRESULTS rResults;
Bool fResult;
fResult = FALSE;
printf("%s (%s): ", pszTimerName, pszDescription);
if (pPerfTimer)
{
fResult = PerfTimerGetResults(pPerfTimer, &rResults);
if (fResult)
{
printf("%.3f milliseconds, %.6f MP/sec\n", (float)rResults.iElapsedTime / 1000000,
1000000000 * fltMegaPixels / rResults.iElapsedTime);
if (rResults.iZeroTimeIntervals > 0)
{
printf(" *** WARNING: %d time intervals were measured as zero. "
"This perf timer has insufficient precision!\n\n",
(int) rResults.iZeroTimeIntervals);
}
}
}
if (FALSE == fResult)
printf("Results not available!\n");
}
void OutputPerfTimerReport(CWMImageStrCodec *pState)
{
float fltMegaPixels;
assert(pState->m_fMeasurePerf);
printf("***************************************************************************\n");
printf("* Perf Report\n");
printf("***************************************************************************\n\n");
fltMegaPixels = (float)pState->WMII.cWidth * pState->WMII.cHeight / 1000000;
printf("Image Width = %d, Height = %d, total MegaPixels = %.1f MP\n",
(int) pState->WMII.cWidth, (int) pState->WMII.cHeight, fltMegaPixels);
OutputIndivPerfTimer(pState->m_ptEncDecPerf, "m_ptEncDecPerf", "excl I/O", fltMegaPixels);
OutputIndivPerfTimer(pState->m_ptEndToEndPerf, "m_ptEndToEndPerf", "incl I/O", fltMegaPixels);
}
#endif // DISABLE_PERF_MEASUREMENT
( run in 0.958 second using v1.01-cache-2.11-cpan-02777c243ea )