if (gfx->H264)
capsSet->flags |= RDPGFX_CAPS_FLAG_AVC420_ENABLED;
- capsSet = &capsSets[pdu.capsSetCount++];
- capsSet->version = RDPGFX_CAPVERSION_10;
- capsSet->flags = 0;
+ if (gfx->AVC444)
+ {
+ capsSet = &capsSets[pdu.capsSetCount++];
+ capsSet->version = RDPGFX_CAPVERSION_10;
+ capsSet->flags = 0;
- if (gfx->SmallCache)
- capsSet->flags |= RDPGFX_CAPS_FLAG_SMALL_CACHE;
+ if (gfx->SmallCache)
+ capsSet->flags |= RDPGFX_CAPS_FLAG_SMALL_CACHE;
- if (!gfx->H264)
- capsSet->flags |= RDPGFX_CAPS_FLAG_AVC_DISABLED;
+ if (!gfx->H264)
+ capsSet->flags |= RDPGFX_CAPS_FLAG_AVC_DISABLED;
+ }
header.pduLength = RDPGFX_HEADER_SIZE + 2 + (pdu.capsSetCount * RDPGFX_CAPSET_SIZE);
- WLog_DBG(TAG, "SendCapsAdvertisePdu");
+ WLog_DBG(TAG, "SendCapsAdvertisePdu %d", pdu.capsSetCount);
s = Stream_New(NULL, header.pduLength);
if (!s)
gfx->Progressive = gfx->settings->GfxProgressive;
gfx->ProgressiveV2 = gfx->settings->GfxProgressiveV2;
gfx->H264 = gfx->settings->GfxH264;
+ gfx->AVC444 = gfx->settings->GfxAVC444;
if (gfx->H264)
gfx->SmallCache = TRUE;
gfx->MaxCacheSlot = (gfx->ThinClient) ? 4096 : 25600;
-
context = (RdpgfxClientContext*) calloc(1, sizeof(RdpgfxClientContext));
if (!context)
{ "themes", COMMAND_LINE_VALUE_BOOL, NULL, BoolValueTrue, NULL, -1, NULL, "Themes" },
{ "wallpaper", COMMAND_LINE_VALUE_BOOL, NULL, BoolValueTrue, NULL, -1, NULL, "Wallpaper" },
{ "gdi", COMMAND_LINE_VALUE_REQUIRED, "<sw|hw>", NULL, NULL, -1, NULL, "GDI rendering" },
- { "gfx", COMMAND_LINE_VALUE_OPTIONAL, NULL, NULL, NULL, -1, NULL, "RDP8 graphics pipeline (experimental)" },
+ { "gfx", COMMAND_LINE_VALUE_OPTIONAL, "<RFX|AVC420|AVC444>", NULL, NULL, -1, NULL, "RDP8 graphics pipeline (experimental)" },
{ "gfx-thin-client", COMMAND_LINE_VALUE_BOOL, NULL, BoolValueFalse, NULL, -1, NULL, "RDP8 graphics pipeline thin client mode" },
{ "gfx-small-cache", COMMAND_LINE_VALUE_BOOL, NULL, BoolValueFalse, NULL, -1, NULL, "RDP8 graphics pipeline small cache mode" },
{ "gfx-progressive", COMMAND_LINE_VALUE_BOOL, NULL, BoolValueFalse, NULL, -1, NULL, "RDP8 graphics pipeline progressive codec" },
- { "gfx-h264", COMMAND_LINE_VALUE_BOOL, NULL, BoolValueFalse, NULL, -1, NULL, "RDP8.1 graphics pipeline H264 codec" },
+ { "gfx-h264", COMMAND_LINE_VALUE_OPTIONAL, "<AVC420|AVC444>", NULL, NULL, -1, NULL, "RDP8.1 graphics pipeline H264 codec" },
{ "rfx", COMMAND_LINE_VALUE_FLAG, NULL, NULL, NULL, -1, NULL, "RemoteFX" },
{ "rfx-mode", COMMAND_LINE_VALUE_REQUIRED, "<image|video>", NULL, NULL, -1, NULL, "RemoteFX mode" },
{ "frame-ack", COMMAND_LINE_VALUE_REQUIRED, "<number>", NULL, NULL, -1, NULL, "Frame acknowledgement" },
CommandLineSwitchCase(arg, "gfx")
{
settings->SupportGraphicsPipeline = TRUE;
+ if (arg->Value)
+ {
+ if (_strnicmp("AVC444", arg->Value, 6) == 0)
+ {
+ settings->GfxH264 = TRUE;
+ settings->GfxAVC444 = TRUE;
+ }
+ else if (_strnicmp("AVC420", arg->Value, 6) == 0)
+ {
+ settings->GfxH264 = TRUE;
+ }
+ else if (_strnicmp("RFX", arg->Value, 3) == 0)
+ {
+
+ }
+ else if (arg->Value != NULL)
+ return COMMAND_LINE_ERROR;
+ }
}
CommandLineSwitchCase(arg, "gfx-thin-client")
{
}
CommandLineSwitchCase(arg, "gfx-h264")
{
- settings->GfxH264 = arg->Value ? TRUE : FALSE;
settings->SupportGraphicsPipeline = TRUE;
+ settings->GfxH264 = TRUE;
+ if (arg->Value)
+ {
+ if (_strnicmp("AVC444", arg->Value, 6) == 0)
+ {
+ settings->GfxAVC444 = TRUE;
+ }
+ else if (_strnicmp("AVC420", arg->Value, 6) == 0)
+ {
+ }
+ else if (arg->Value != NULL)
+ return COMMAND_LINE_ERROR;
+ }
}
CommandLineSwitchCase(arg, "rfx")
{