#pragma once struct SceVideodecQueryInitInfoHwAvcdec { le_t size; le_t horizontal; le_t vertical; le_t numOfRefFrames; le_t numOfStreams; }; union SceVideodecQueryInitInfo { u8 reserved[32]; SceVideodecQueryInitInfoHwAvcdec hwAvc; }; struct SceVideodecTimeStamp { le_t upper; le_t lower; }; struct SceAvcdecQueryDecoderInfo { le_t horizontal; le_t vertical; le_t numOfRefFrames; }; struct SceAvcdecDecoderInfo { le_t frameMemSize; }; struct SceAvcdecBuf { vm::lptr pBuf; le_t size; }; struct SceAvcdecCtrl { le_t handle; SceAvcdecBuf frameBuf; }; struct SceAvcdecAu { SceVideodecTimeStamp pts; SceVideodecTimeStamp dts; SceAvcdecBuf es; }; struct SceAvcdecInfo { le_t numUnitsInTick; le_t timeScale; u8 fixedFrameRateFlag; u8 aspectRatioIdc; le_t sarWidth; le_t sarHeight; u8 colourPrimaries; u8 transferCharacteristics; u8 matrixCoefficients; u8 videoFullRangeFlag; u8 picStruct[2]; u8 ctType; u8 padding[3]; }; struct SceAvcdecFrameOptionRGBA { u8 alpha; u8 cscCoefficient; u8 reserved[14]; }; union SceAvcdecFrameOption { u8 reserved[16]; SceAvcdecFrameOptionRGBA rgba; }; struct SceAvcdecFrame { le_t pixelType; le_t framePitch; le_t frameWidth; le_t frameHeight; le_t horizontalSize; le_t verticalSize; le_t frameCropLeftOffset; le_t frameCropRightOffset; le_t frameCropTopOffset; le_t frameCropBottomOffset; SceAvcdecFrameOption opt; vm::lptr pPicture[2]; }; struct SceAvcdecPicture { le_t size; SceAvcdecFrame frame; SceAvcdecInfo info; }; struct SceAvcdecArrayPicture { le_t numOfOutput; le_t numOfElm; vm::lpptr pPicture; };