Community
cancel
Showing results for 
Search instead for 
Did you mean: 
94 Views

H.264 stream decoding issue

Jump to solution

Hi,

I modified the sample_multi transcode example to decode H.264 image sequences (streams) to raw NV12.

Streams are sent via RTP-UDP to the decoder which reconstructs bitstreams heades and FU NALS and dumps incoming data to file.

I noticed that after a while (400 frames) the decoding always stops working with va_res=VA_STATUS_ERROR_DECODING_ERROR(0x17) that gets remapped to mfx_res=MFX_ERR_UNKNOWN(-1):

va_res = m_libva->vaSyncSurface(m_dpy, *(vaapi_mid->m_surface));                     (LockFrame() - vaapi_allocator.cpp) 
    ...
    sts = Surface2BS(&VppExtSurface, &m_BSPool.back()->Bitstream,m_mfxVppParams.vpp.Out.FourCC);     (Transcode() - pipeline-transcode.cpp)
        ...
        while (MFX_ERR_NONE == pContext->transcodingSts)                    (ThranscodeRoutine() - pipeline-transcode.cpp)

and the subsequent call to vaQuerySurfaceError returns:
{status = -670922364, start_mb = 32767, end_mb = 0, decode_error_type = VADecodeSliceMissing, num_mb = 0}

I'm confident about the received compressed data because calling unmodified sample_multi_transcode on the dumped file does not returns any errors.

What sounds strange to me is start_mb = 32767, end_mb = 0 on the vaQuerySurfaceError returned value. It seems like an overflow on macroblocks.

I would like to solve the issue but even a workaround to recover the decoder without loosing data would be fine.

I'm on a Ubuntu 16.4 machine running Intel® Media Server Studio – Community Edition    Version 2017 (2017_R2).

Thanks in advance

 

 

 

 

 

0 Kudos
1 Solution
94 Views

Solved, the issue is related to application specific code.

The buffer I'm sending to decoder sometimes gets corrupted and decoder complains about that.

View solution in original post

1 Reply
95 Views

Solved, the issue is related to application specific code.

The buffer I'm sending to decoder sometimes gets corrupted and decoder complains about that.

View solution in original post

Reply