- Marcar como novo
- Marcador
- Subscrever
- Silenciar
- Subscrever fonte RSS
- Destacar
- Imprimir
- Denunciar conteúdo inapropriado
HI
I have a problem,it seem impossible.
this is my function. but the CPU occupancy rate is same as soft decode,sometimes higher.
The other parts are same, just one use soft decode, the other use mfx . the frame rate is same. the decode image is right.
Is the function bellow wrong?
BOOL CIntelDecode::DecodeInputData(BYTE *pData , int size)
{
//decodeData
mfxStatus sts = MFX_ERR_NONE;
mfxSyncPoint syncp;
mfxFrameSurface1* pmfxOutSurface;
mfxBitstream mfxBS;
memset(&mfxBS, 0, sizeof(mfxBS));
mfxBS.Data = (mfxU8 *)pData;
mfxBS.MaxLength = size;
mfxBS.DataLength = size;
mfxBS.DataOffset = 0;
while (MFX_ERR_NONE <= sts || MFX_ERR_MORE_DATA == sts || MFX_ERR_MORE_SURFACE == sts)
{
if (MFX_WRN_DEVICE_BUSY == sts)
{
MSDK_SLEEP(1); // Wait if device is busy, then repeat the same call to DecodeFrameAsync
}
if (MFX_ERR_MORE_DATA == sts)
{
break;
// Read more data into input bit stream
//MSDK_BREAK_ON_ERROR(sts);
}
if (MFX_ERR_MORE_SURFACE == sts || MFX_ERR_NONE == sts)
{
_currentSurfaceIndex = GetFreeSurfaceIndex(_pmfxSurfaces, _numSurfaces); // Find free frame surface
if(MFX_ERR_NOT_FOUND == _currentSurfaceIndex)
{
break;
}
//MSDK_CHECK_ERROR(MFX_ERR_NOT_FOUND, nIndex, MFX_ERR_MEMORY_ALLOC);
}
// Decode a frame asychronously (returns immediately)
// - If input bitstream contains multiple frames DecodeFrameAsync will start decoding multiple frames, and remove them from bitstream
sts = _mfxDEC->DecodeFrameAsync(&mfxBS, _pmfxSurfaces[_currentSurfaceIndex], &pmfxOutSurface, &syncp);
// Ignore warnings if output is available,
// if no output and no action required just repeat the DecodeFrameAsync call
if (MFX_ERR_NONE < sts && syncp)
{
sts = MFX_ERR_NONE;
}
if (MFX_ERR_NONE == sts)
{
sts = _mfxSession.SyncOperation(syncp, 60000); // Synchronize. Wait until decoded frame is ready
}
if (MFX_ERR_NONE == sts)
{
//ConvertToRGB(pmfxOutSurface);
}
}
return TRUE;
}
Link copiado
- Marcar como novo
- Marcador
- Subscrever
- Silenciar
- Subscrever fonte RSS
- Destacar
- Imprimir
- Denunciar conteúdo inapropriado
Hello Dong,
Thanks for the question. Looking at your code, it looks very similar to our simple_2_decode_vmem tutorial code - which does give considerable performance benefit for HW impl versus SW.
Can you please let me know:
- what system you are working on (processor/gfx, OS, MSS version installed) -> If you are on Windows, please send the output of sys_analyzer you will find in the tools/ folder in the install path.
- if you are accounting for file i/o as well (output of YUV raw frames, as you know, can considerably affect the overall fps),
- if you can reproduce the issue using simple_2_decode_vmem and send the output please?
(Apologies for the delayed response).
- Marcar como novo
- Marcador
- Subscrever
- Silenciar
- Subscrever fonte RSS
- Destacar
- Imprimir
- Denunciar conteúdo inapropriado
Hi SRAVANTHI K
thanks a lot!
that is my problem. Change SW to HW, the CPU usage is down.
- Marcar como novo
- Marcador
- Subscrever
- Silenciar
- Subscrever fonte RSS
- Destacar
- Imprimir
- Denunciar conteúdo inapropriado
Glad it is resolved Dong. Happy coding!
- Subscrever fonte RSS
- Marcar tópico como novo
- Marcar tópico como lido
- Flutuar este Tópico para o utilizador atual
- Marcador
- Subscrever
- Página amigável para impressora