Community
cancel
Showing results for 
Search instead for 
Did you mean: 
Highlighted
New Contributor I
41 Views

How to not write any SEI into encoded stream?

How does I prevent any SEI inserts from the encoder?

For example, this

         m_mfxEncExtCodingOptionPtr->PicTimingSEI = MFX_CODINGOPTION_OFF;  // still there

does not do as I would expect.  I can get rid of the AUD but not the pic timing.  And the buffer period is there, and no apparent way to not put that out.  At least one decoder I've seen does not like SEI at all - it flicks (HTC HD7).

[cpp]000000  00 00 00 01 27 42 40 1f 95 a0 28 0b fe 5c 04 40 00 00 03 00 80 00 00 1e 38 18 00 01 00 59 00 00
000020  10 05 92 f7 be 06 d0 c1 95 00 00 00 01 28 ce 3c 80 00 00 01 06 00 07 80 af c8 00 00 03 00 40 01
000040  06 00 00 03 00 00 03 00 00 80 00 00 01 25 ...                   ^.... buffering period SEI

 :                             .............. pic timing SEI
                              v
001700  . . . 00 00 00 01 06 01 06 00 00 03 02 00 00 03 00 80 00 00 01 21 ...[/cpp]

With the code below all I accomplish is not putting out the AUD.

[cpp]#define DO_EXT_CONFIG
#ifdef DO_EXT_CONFIG
         // --
         //  configure extended encoding options
         if (m_mfxEncExtCodingOptionPtr != nullptr) {
            delete m_mfxEncExtCodingOptionPtr;
            m_mfxEncExtCodingOptionPtr = nullptr;
         }
         m_mfxEncExtCodingOptionPtr = new mfxExtCodingOption;
         memset(m_mfxEncExtCodingOptionPtr, 0, sizeof(mfxExtCodingOption));
         m_mfxEncExtCodingOptionPtr->Header.BufferId = MFX_EXTBUFF_CODING_OPTION;
         m_mfxEncExtCodingOptionPtr->Header.BufferSz = sizeof(mfxExtCodingOption);
         // ...
         m_mfxEncExtCodingOptionPtr->AUDelimiter = MFX_CODINGOPTION_OFF;  // this works (removes it)
         m_mfxEncExtCodingOptionPtr->PicTimingSEI = MFX_CODINGOPTION_OFF;  // still there
         m_mfxEncExtCodingOptionPtr->MaxDecFrameBuffering = 1;  // since I wantt this

         // requires API 1.6: m_mfxEncExtCodingOptionPtr->RecoveryPointSEI = MFX_CODINGOPTION_OFF;  // If intra refresh is not enabled then this flag is ignored  
         m_mfxExtBuffers[0] = (mfxExtBuffer*)m_mfxEncExtCodingOptionPtr;
         m_mfxEncParms.ExtParam = &m_mfxExtBuffers[0];
         m_mfxEncParms.NumExtParam = 1;
         // --
#endif[/cpp]

(Other than removing it myself after the fact)

0 Kudos
2 Replies
Highlighted
Employee
41 Views

Hi,

can you please share some details about your system configuration, such as the type of processor, graphics driver (assuming your using HW acceleration), OS, SDK version etc.

You can capture some of this info using the Media SDK system_analyzer tool.

Regards,
Petter 

0 Kudos
Highlighted
New Contributor I
41 Views

It was my mistake.  I was not reading the packed SEIs correctly (I was a bit rusty).  In the mean time I came across a post here, in google, that mentioned the buffering (or timing -  I forget) SEI would always be put in on HW encode.  From this (that's a URL in case I can't put in links):

http://software.intel.com/en-us/forums/topic/326861

In the end I coded it up to pull it out myself.

0 Kudos