int gdi_SurfaceCommand(RdpgfxClientContext* context, RDPGFX_SURFACE_COMMAND* cmd) { int status = 1; rdpGdi* gdi = (rdpGdi*) context->custom; switch (cmd->codecId) { case RDPGFX_CODECID_UNCOMPRESSED: status = gdi_SurfaceCommand_Uncompressed(gdi, context, cmd); break; case RDPGFX_CODECID_CAVIDEO: status = gdi_SurfaceCommand_RemoteFX(gdi, context, cmd); break; case RDPGFX_CODECID_CLEARCODEC: status = gdi_SurfaceCommand_ClearCodec(gdi, context, cmd); break; case RDPGFX_CODECID_PLANAR: status = gdi_SurfaceCommand_Planar(gdi, context, cmd); break; case RDPGFX_CODECID_H264: status = gdi_SurfaceCommand_H264(gdi, context, cmd); break; case RDPGFX_CODECID_ALPHA: status = gdi_SurfaceCommand_Alpha(gdi, context, cmd); break; case RDPGFX_CODECID_CAPROGRESSIVE: status = gdi_SurfaceCommand_Progressive(gdi, context, cmd); break; case RDPGFX_CODECID_CAPROGRESSIVE_V2: break; } return 1; }
/** * Function description * * @return 0 on success, otherwise a Win32 error code */ static UINT gdi_SurfaceCommand(RdpgfxClientContext* context, const RDPGFX_SURFACE_COMMAND* cmd) { UINT status = CHANNEL_RC_OK; rdpGdi* gdi = (rdpGdi*) context->custom; if (!context || !cmd) return ERROR_INVALID_PARAMETER; WLog_Print(gdi->log, WLOG_TRACE, "surfaceId=%lu, codec=%lu, contextId=%lu, format=%s, " "left=%lu, top=%lu, right=%lu, bottom=%lu, width=%lu, height=%lu " "length=%lu, data=%p, extra=%p", cmd->surfaceId, cmd->codecId, cmd->contextId, GetColorFormatName(cmd->format), cmd->left, cmd->top, cmd->right, cmd->bottom, cmd->width, cmd->height, cmd->length, cmd->data, cmd->extra); switch (cmd->codecId) { case RDPGFX_CODECID_UNCOMPRESSED: status = gdi_SurfaceCommand_Uncompressed(gdi, context, cmd); break; case RDPGFX_CODECID_CAVIDEO: status = gdi_SurfaceCommand_RemoteFX(gdi, context, cmd); break; case RDPGFX_CODECID_CLEARCODEC: status = gdi_SurfaceCommand_ClearCodec(gdi, context, cmd); break; case RDPGFX_CODECID_PLANAR: status = gdi_SurfaceCommand_Planar(gdi, context, cmd); break; case RDPGFX_CODECID_AVC420: status = gdi_SurfaceCommand_AVC420(gdi, context, cmd); break; case RDPGFX_CODECID_AVC444: status = gdi_SurfaceCommand_AVC444(gdi, context, cmd); break; case RDPGFX_CODECID_ALPHA: status = gdi_SurfaceCommand_Alpha(gdi, context, cmd); break; case RDPGFX_CODECID_CAPROGRESSIVE: status = gdi_SurfaceCommand_Progressive(gdi, context, cmd); break; case RDPGFX_CODECID_CAPROGRESSIVE_V2: WLog_WARN(TAG, "SurfaceCommand %08X not implemented", cmd->codecId); break; default: WLog_WARN(TAG, "Invalid SurfaceCommand %08X", cmd->codecId); break; } return status; }