Media (Intel® Video Processing Library, Intel Media SDK)
Access community support with transcoding, decoding, and encoding in applications using media tools like Intel® oneAPI Video Processing Library and Intel® Media SDK
公告
The Intel Media SDK project is no longer active. For continued support and access to new features, Intel Media SDK users are encouraged to read the transition guide on upgrading from Intel® Media SDK to Intel® Video Processing Library (VPL), and to move to VPL as soon as possible.
For more information, see the VPL website.

where is key frame ?

china_y_
初學者
869 檢視

i  use the intel media sdk to encode video .

when  i get the encoded frame i want to know what frame it is .

sts = m_VideoSession.SyncOperation(syncp,6000) ;
MSDK_CHECK_RESULT(sts,MFX_ERR_NONE,sts) ;
nLenOut = m_fxBS.DataLength ;
if (MFX_FRAMETYPE_I==m_fxBS.FrameType)
{
bKeyFrame = TRUE ;
}
else
{
bKeyFrame = FALSE ;
}
WriteBitStream(&m_fxBS,pBuffOut) ;

up  is my code  i am confused about  the  m_fxBS.FrameType

its value  is 193 when i encoded the first frame ,this must be a key frame ,but the sdk do not define  any value  193 as the frame type ,

sometime it return 66 the same .

and  very little it return 4 that means a B_frame

i was confused about this

is anybody  who can give me some suggest?

very appreciate it

thank you very much  in advanced  

0 積分
3 回應
celli4
新貢獻者 I
869 檢視

MFX_FRAMETYPE_I and its brethren appear to be mask values, an should  be checked for using Bitwise And.

http://en.wikipedia.org/wiki/Bitwise_operation#AND

andy4us
初學者
869 檢視

Look in the file mfxstructures.h

/* FrameType */

enum {

MFX_FRAMETYPE_UNKNOWN =0x0000,

MFX_FRAMETYPE_I =0x0001,

MFX_FRAMETYPE_P =0x0002,

MFX_FRAMETYPE_B =0x0004,

MFX_FRAMETYPE_S =0x0008,

MFX_FRAMETYPE_REF =0x0040,

MFX_FRAMETYPE_IDR =0x0080,

MFX_FRAMETYPE_xI =0x0100,

MFX_FRAMETYPE_xP =0x0200,

MFX_FRAMETYPE_xB =0x0400,

MFX_FRAMETYPE_xS =0x0800,

MFX_FRAMETYPE_xREF =0x4000,

MFX_FRAMETYPE_xIDR =0x8000

};

lee_j_
初學者
869 檢視

Hi

If you do the following:
sts = m_pmfxENC-> EncodeFrameAsync (NULL, & m_pEncSurfaces [nEncSurfIdx], & pCurrentTask-> mfxBS, & pCurrentTask-> EncSyncP);

How do I know if I am on the current frame is a key frame?

Or Do I know from another function?

Regards,

Lee

回覆