/// <summary> /// Method to send TS_RFX_TILESET to client. /// </summary> /// <param name="opMode">Indicates the operational mode.</param> /// <param name="entropy">Indicates the entropy algorithm.</param> /// <param name="tileImages">The image array for tiles to be sent. The width and height must be less than or equals with 64.</param> /// <param name="positions">A TILE_POSITION array indicating the positions of each tile images</param> /// <param name="codecQuantVals">Quant values array</param> /// <param name="quantIdxYs">Index array of Y component in Quant value array</param> /// <param name="quantIdxCbs">Index array of Cb component in Quant value array</param> /// <param name="quantIdxCrs">Index array of Cr component in Quant value array</param> public void SendTsRfxTileSet(OperationalMode opMode, EntropyAlgorithm entropy, Image[] tileImages, TILE_POSITION[] positions, TS_RFX_CODEC_QUANT[] codecQuantVals = null, byte[] quantIdxYs = null, byte[] quantIdxCbs = null, byte[] quantIdxCrs = null) { this.admEntropyAlgorithm = entropy; this.admOperationMode = opMode; TS_RFX_TILESET rfxTileSet = rdprfxServer.CreateTsRfxTileSet(opMode, entropy, tileImages, positions, codecQuantVals, quantIdxYs, quantIdxCbs, quantIdxCrs); if (this.currentTestType == RdprfxNegativeType.TsRfxTileSet_InvalidIdx) { rfxTileSet.idx = 0x0001; //set to an invalid value other than 0x0000. } else if (this.currentTestType == RdprfxNegativeType.TsRfxTileSet_InvalidLt) { rfxTileSet.properties &= 0xFFFE; //set "lt" to an invalid value: 0x0. } else if (this.currentTestType == RdprfxNegativeType.TsRfxTileSet_InvalidCct) { rfxTileSet.properties &= 0xFFCF; //set "cct" to an invalid value: 0x0. } else if (this.currentTestType == RdprfxNegativeType.TsRfxTileSet_InvalidXft) { rfxTileSet.properties &= 0xFC3F; //set "xft" to an invalid value: 0x0. } else if (this.currentTestType == RdprfxNegativeType.TsRfxTileSet_InvalidQt) { rfxTileSet.properties &= 0x3FFF; //set "xft" to an invalid value: 0x0. } else if (this.currentTestType == RdprfxNegativeType.TsRfxTileSet_InvalidTileSize) { rfxTileSet.tileSize = 0x80; //set to an invalid value other than 0x40. } if (this.rdpbcgrAdapter.SimulatedScreen != null) { this.rdpbcgrAdapter.SimulatedScreen.SetRemoteFXTileSet(rfxTileSet, entropy); } AddToPendingList(rfxTileSet); if (!CheckIfClientSupports(opMode, entropy)) { Site.Log.Add(LogEntryKind.Debug, "The client Cap is not supported: OperationalMode = {0}, EntropyAlgorithm = {1}", opMode.ToString(), entropy.ToString()); } }
/// <summary> /// Set TS_RFX_TILESET for RemoteFX codec image /// </summary> /// <param name="rfxTileSet"></param> /// <param name="entropy"></param> public void SetRemoteFXTileSet(TS_RFX_TILESET rfxTileSet, EntropyAlgorithm entropy) { remoteFXContext.TileSet = rfxTileSet; remoteFXContext.Entropy = entropy; }