I believe you have the right expectation and you may be seeing an issue in the decoder handling of MFXVideoDECODE_GetPayload for MPEG-2 streams. If the encoded stream has 2 payloads, then you should be able to call MFXVideoDECODE_GetPayload twice while decoding and payload->NumBit should not be 0 (until a 3rd call is made).
Is the MFXVideoDECODE_GetPayload call returning any error or warning? Do the payload->Type or BufSize fields look valid?
I do not get any errors or warnings from GetPayload. I am calling it in a loop, unitl it returns 0 NumBit. The problem is: The second call of GetPayload will always return 0 for NumBits, even though there should be more data. I am not sure if the issue is in the encoder not writing more than one payload, or the decoder not returning more than one..
We revisited this topic by creating a similar setup as you describe. I'm sorry to say but as you point out there seem to be issues with the way payload handling for MPEG2 operates. Thanks for making us aware of this.
We are currently investigating how to resolve the issues.
In the meantime would it be possible to limit your payload size to 1KB and a single payload? If not, can you please explain in more detail how this impacts your implementation.