MVDSTD:ProcessNALUnit

MVDSTD:ProcessNALUnit

Request #

Index WordDescription
0Header code [0x00080142]
1Virtual addr for the input buffer.
2Physical addr, normally the above vaddr converted to physaddr.
3Buffer byte-size.
4Sequence-number / ID. The range normally used for this is 0x0..0x12. This value starts at 0x0, after value 0x12 is used the value that would be used for the next one is reset to zero.
5bool flag.
6Value 0x0
7KProcess handle

Response #

Index WordDescription
0Header code
1Resultcode
2End-address of the processed NAL-unit(internal MVD heap vaddr).
3End-address of the processed NAL-unit(physaddr following the input physaddr).
4Total remaining unprocessed input data, if any. Buffer_end_pos=bufsize-.

Flag #

SKATER is only known to use 0x0 here. Patching code so that the value used by MVD here is always 1, breaks video playback under SKATER(or at least in some cases).

When non-zero this will return 0x17007 for nal_unit_type 1, “Coded slice of a non-IDR picture”. However the output remaining_size is set to zero. When this flag is used and the user-process doesn’t abort on this retval, the end result is a video-decoding speed-up(same speed-up as with skipping using those NAL-units with this command, minus the errors thrown near the start of video decoding).

Description #

This processes the specified NAL-unit. This seems to always start with the 3-byte NAL prefix(00 00 01). Following that is the actual NAL-unit.

This is only used for H.264, not color-conversion.