From 1f9ad132c6d6288d9a842120c05a1a4431800e1c Mon Sep 17 00:00:00 2001 From: Dave Clark Date: Thu, 8 Mar 2018 15:12:56 -0500 Subject: Push GfeSDK 1.1.191 Plus documentation updates --- doc/html/index.html | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) (limited to 'doc/html/index.html') diff --git a/doc/html/index.html b/doc/html/index.html index b8e54b8..9a665c8 100644 --- a/doc/html/index.html +++ b/doc/html/index.html @@ -91,14 +91,14 @@ $(document).ready(function(){initNavTree('index.html','');});

C++ Bindings

createParams.appName = "gfesdk_dx_sample"; // appName will only be used/visible if GFE cannot identify your game
createParams.pollForCallbacks = true; // We will poll for callbacks in order to execute callbacks from game loop
createParams.requiredScopes = {
GfeSDK::NVGSDK_SCOPE_HIGHLIGHTS,
GfeSDK::NVGSDK_SCOPE_HIGHLIGHTS_VIDEO,
GfeSDK::NVGSDK_SCOPE_HIGHLIGHTS_SCREENSHOT
};
createParams.notificationCallback = std::bind(&HighlightsWrapper::OnNotification, this, _1, _2);
GfeSDK::Core* gfesdkCore = GfeSDK::Core::Create(createParams, response);
if (GfeSDK::NVGSDK_SUCCEEDED(response.returnCode))
{
// Valid handle has been returned
LOG("Success: %s", GfeSDK::NVGSDK_RetCodeToString(response.returnCode));
LOG("PC is running GFE version %s", response.nvidiaGfeVersion.c_str());
LOG("PC is running GfeSDK version %d.%d", response.versionMajor, response.versionMinor);
switch (response.returnCode)
{
case GfeSDK::NVGSDK_SUCCESS_VERSION_OLD_GFE:
LOG("Compatible, but the user should update to the latest version of GFE.");
break;
case GfeSDK::NVGSDK_SUCCESS_VERSION_OLD_SDK:
LOG("Compatible, but this application should update to a more recent GfeSDK to get latest features/bugfixes");
break;
}
}
else
{
// No valid handle
LOG("Failure: %s", GfeSDK::NVGSDK_RetCodeToString(response.returnCode));
switch (response.returnCode)
{
case GfeSDK::NVGSDK_ERR_SDK_VERSION:
LOG("This version of the SDK is too old to communicate with the user's SDK. We're never planning on this happening.");
LOG("PC is running GFE version %s", response.nvidiaGfeVersion.c_str());
LOG("PC is running GfeSDK version %d.%d", response.versionMajor, response.versionMinor);
break;
case GfeSDK::NVGSDK_SUCCESS_VERSION_OLD_SDK:
LOG("The installed version of GFE is too old to continue. User must upgrade.");
LOG("PC is running GFE version %s", response.nvidiaGfeVersion.c_str());
LOG("PC is running GfeSDK version %d.%d", response.versionMajor, response.versionMinor);
break;
}
return;
}

// After using GfeSDK

delete gfesdkCore;

C API

-
memset(&inParams, 0, sizeof(inParams));
NVGSDK_Scope scopes[] = { NVGSDK_SCOPE_HIGHLIGHTS, NVGSDK_SCOPE_HIGHLIGHTS_VIDEO, NVGSDK_SCOPE_HIGHLIGHTS_SCREENSHOT };
NVGSDK_ScopePermission scopePermissions[COUNT_OF(scopes)];
inParams.appName = "gfesdk_dx_sample";
inParams.pollForCallbacks = true;
inParams.scopeTable = &scopes;
inParams.scopeTableSize = COUNT_OF(scopes);
inParams.notificationCallback = handleNotification;
memset(&outParams, 0, sizeof(outParams));
outParams.scopePermissionTable = &scopePermissions;
outParams.scopePermissionTableSize = COUNT_OF(scopes);
NVGSDK_RetCode rc = NVGSDK_Create(&g_sdk, &inParams, &outParams);
if (NVGSDK_SUCCEEDED(rc))
{
// Valid handle has been returned
LOG("Success: %s", NVGSDK_RetCodeToString(rc));
LOG("PC is running GFE version %s", outParams.gfeVersionStr);
LOG("PC is running GfeSDK version %d.%d", outParams.versionMajor, outParams.versionMinor);
switch (rc)
{
case NVGSDK_SUCCESS_VERSION_OLD_GFE:
LOG("Compatible, but the user should update to the latest version of GFE.");
break;
case NVGSDK_SUCCESS_VERSION_OLD_SDK:
LOG("Compatible, but this application should update to a more recent GfeSDK to get latest features/bugfixes");
break;
}
}
else
{
// No valid handle
LOG("Failure: %s", NVGSDK_RetCodeToString(rc));
switch (rc)
{
case NVGSDK_ERR_SDK_VERSION:
LOG("This version of the SDK is too old to communicate with the user's SDK. We're never planning on this happening.");
LOG("PC is running GFE version %s", outParams.gfeVersionStr);
LOG("PC is running GfeSDK version %d.%d", outParams.versionMajor, outParams.versionMinor);
break;
case NVGSDK_SUCCESS_VERSION_OLD_SDK:
LOG("The installed version of GFE is too old to continue. User must upgrade.");
LOG("PC is running GFE version %s", outParams.gfeVersionStr);
LOG("PC is running GfeSDK version %d.%d", outParams.versionMajor, outParams.versionMinor);
break;
}
return;
}

// After using GfeSDK

+
memset(&inParams, 0, sizeof(inParams));
NVGSDK_Scope scopes[] = { NVGSDK_SCOPE_HIGHLIGHTS, NVGSDK_SCOPE_HIGHLIGHTS_VIDEO, NVGSDK_SCOPE_HIGHLIGHTS_SCREENSHOT };
NVGSDK_ScopePermission scopePermissions[COUNT_OF(scopes)];
inParams.appName = "gfesdk_dx_sample";
inParams.pollForCallbacks = true;
inParams.scopeTable = &scopes[0];
inParams.scopeTableSize = COUNT_OF(scopes);
inParams.notificationCallback = handleNotification;
memset(&outParams, 0, sizeof(outParams));
outParams.scopePermissionTable = &scopePermissions[0];
outParams.scopePermissionTableSize = COUNT_OF(scopes);
NVGSDK_RetCode rc = NVGSDK_Create(&g_sdk, &inParams, &outParams);
if (NVGSDK_SUCCEEDED(rc))
{
// Valid handle has been returned
LOG("Success: %s", NVGSDK_RetCodeToString(rc));
LOG("PC is running GFE version %s", outParams.gfeVersionStr);
LOG("PC is running GfeSDK version %d.%d", outParams.versionMajor, outParams.versionMinor);
switch (rc)
{
case NVGSDK_SUCCESS_VERSION_OLD_GFE:
LOG("Compatible, but the user should update to the latest version of GFE.");
break;
case NVGSDK_SUCCESS_VERSION_OLD_SDK:
LOG("Compatible, but this application should update to a more recent GfeSDK to get latest features/bugfixes");
break;
}
}
else
{
// No valid handle
LOG("Failure: %s", NVGSDK_RetCodeToString(rc));
switch (rc)
{
case NVGSDK_ERR_SDK_VERSION:
LOG("This version of the SDK is too old to communicate with the user's SDK. We're never planning on this happening.");
LOG("PC is running GFE version %s", outParams.gfeVersionStr);
LOG("PC is running GfeSDK version %d.%d", outParams.versionMajor, outParams.versionMinor);
break;
case NVGSDK_SUCCESS_VERSION_OLD_SDK:
LOG("The installed version of GFE is too old to continue. User must upgrade.");
LOG("PC is running GFE version %s", outParams.gfeVersionStr);
LOG("PC is running GfeSDK version %d.%d", outParams.versionMajor, outParams.versionMinor);
break;
}
return;
}

// After using GfeSDK

The Create call will inform the app if one or more scopes require user permission. If so, make this call. It will display the overlay UI.

C++ Bindings

// Request Permissions if user hasn't decided yet
GfeSDK::RequestPermissionsParams requestPermissionsParams;
// 'response' came from create call. It tells us which permissions we requested during Create,
// but the user hasn't yet made a decision on
for (auto&& entry : response.scopePermissions)
{
if (entry.second == GfeSDK::NVGSDK_PERMISSION_MUST_ASK)
{
requestPermissionsParams.scopes.push_back(entry.first);
}
}
if (!requestPermissionsParams.scopes.empty())
{
// If the user hasn't given permission for recording yet, ask them to do so now via overlay
m_gfesdk->RequestPermissionsAsync(requestPermissionsParams, [this, defaultLocale, highlights, numHighlights](GfeSDK::NVGSDK_RetCode rc, void* cbContext) {
UpdateLastResultString(rc);
if (GfeSDK::NVGSDK_SUCCEEDED(rc))
{
ConfigureHighlights(defaultLocale, highlights, numHighlights);
}
});
}
else
{
// Otherwise, go ahead and set up now
ConfigureHighlights(defaultLocale, highlights, numHighlights);
}

C API

-
// Request Permissions if user hasn't decided yet
NVGSDK_RequestPermissionsParams requestPermissionsParams = { 0 };
NVGSDK_Scope requestScopes[COUNT_OF(scopes)];
memset(requestScopes, NVGSDK_SCOPE_MAX, COUNT_OF(scopes));
requestPermissionsParams.scopeTable = &requestScopes;
// 'response' came from create call. It tells us which permissions we requested during Create,
// but the user hasn't yet made a decision on
for (size_t i = 0, j = 0; i < outParams.scopePermissionTableSize; ++i)
{
if (outParams.scopePermissionTable[i].permission == NVGSDK_PERMISSION_MUST_ASK)
{
requestPermissionsParams.scopeTable[j++] = outParams.scopePermissionTable[i].scope;
requestPermissionsParams.scopeTableSize++;
}
}
if (requestPermissionsParams.scopeTableSize > 0)
{
TConfigHolder* configHolder = malloc(sizeof(TConfigHolder));
configHolder->defaultLocale = defaultLocale;
configHolder->highlights = highlights;
configHolder->numHighlights = numHighlights;
// If the user hasn't given permission for recording yet, ask them to do so now via overlay
NVGSDK_RequestPermissionsAsync(g_sdk, &requestPermissionsParams, &handlePermissionRequested, configHolder);
}
else
{
// Otherwise, go ahead and set up now
ConfigureHighlights(defaultLocale, highlights, numHighlights);
}

This only needs to happen once ever. It is persistent. It could even happen during game installation.

+
// Request Permissions if user hasn't decided yet
NVGSDK_RequestPermissionsParams requestPermissionsParams = { 0 };
NVGSDK_Scope requestScopes[COUNT_OF(scopes)];
memset(requestScopes, NVGSDK_SCOPE_MAX, COUNT_OF(scopes));
requestPermissionsParams.scopeTable = &requestScopes[0];
// 'response' came from create call. It tells us which permissions we requested during Create,
// but the user hasn't yet made a decision on
for (size_t i = 0, j = 0; i < outParams.scopePermissionTableSize; ++i)
{
if (outParams.scopePermissionTable[i].permission == NVGSDK_PERMISSION_MUST_ASK)
{
requestPermissionsParams.scopeTable[j++] = outParams.scopePermissionTable[i].scope;
requestPermissionsParams.scopeTableSize++;
}
}
if (requestPermissionsParams.scopeTableSize > 0)
{
TConfigHolder* configHolder = malloc(sizeof(TConfigHolder));
configHolder->defaultLocale = defaultLocale;
configHolder->highlights = highlights;
configHolder->numHighlights = numHighlights;
// If the user hasn't given permission for recording yet, ask them to do so now via overlay
NVGSDK_RequestPermissionsAsync(g_sdk, &requestPermissionsParams, &handlePermissionRequested, configHolder);
}
else
{
// Otherwise, go ahead and set up now
ConfigureHighlights(defaultLocale, highlights, numHighlights);
}

This only needs to happen once ever. It is persistent. It could even happen during game installation.

C++ Bindings

// Create handle to highlights module
m_highlights.reset(GfeSDK::Highlights::Create(m_gfesdk.get()));
configParams.defaultLocale = defaultLocale;
// Set up highlight definition table
for (size_t i = 0; i < numHighlights; ++i)
{
highlightDef.id = highlights[i].id;
highlightDef.userDefaultInterest = highlights[i].userInterest;
highlightDef.significance = highlights[i].significance;
highlightDef.highlightTags = highlights[i].highlightTags;
for (size_t j = 0; j < highlights[i].nameTableSize; ++j)
{
highlightDef.nameLocaleTable[highlights[i].nameTable[j].localeCode] = highlights[i].nameTable[j].localizedString;
}
configParams.highlightDefinitions.push_back(highlightDef);
}
m_highlights->ConfigureAsync(configParams, [this](GfeSDK::NVGSDK_RetCode rc, void*) {
UpdateLastResultString(rc);
});

C API

-
NVGSDK_Highlight* highlights = calloc(numHighlights, sizeof(NVGSDK_Highlight));
highlights[0].userInterest = false;
params->defaultLocale = defaultLocale;
params->highlightDefinitionTable = highlights;
params->highlightTableSize = numHighlights;
for (size_t i = 0; i < numHighlights; ++i)
{
highlights[i].id = hl[i].id;
highlights[i].highlightTags = hl[i].highlightTags;
highlights[i].significance = hl[i].significance;
highlights[i].userInterest = hl[i].userInterest;
highlights[i].nameTableSize = hl[i].nameTableSize;
highlights[i].nameTable = hl[i].nameTableSize > 0 ? calloc(hl[i].nameTableSize, sizeof(NVGSDK_LocalizedPair)) : NULL;
for (size_t name = 0; name < hl[i].nameTableSize; ++name)
{
highlights[i].nameTable[name].localeCode = calloc(NVGSDK_MAX_LENGTH, sizeof(char));
strncpy_s(highlights[i].nameTable[name].localeCode, NVGSDK_MAX_LENGTH, hl[i].nameTable[name].localeCode, NVGSDK_MAX_LENGTH);
highlights[i].nameTable[name].localizedString = calloc(NVGSDK_MAX_LENGTH, sizeof(char));
strncpy_s(highlights[i].nameTable[name].localizedString, NVGSDK_MAX_LENGTH, hl[i].nameTable[name].localizedString, NVGSDK_MAX_LENGTH);
}
}
NVGSDK_Highlights_ConfigureAsync(g_sdk, params, &handleConfigured, params);

C++ Bindings

+
NVGSDK_Highlight* highlights = calloc(numHighlights, sizeof(NVGSDK_Highlight));
highlights[0].userInterest = false;
params->defaultLocale = defaultLocale;
params->highlightDefinitionTable = highlights;
params->highlightTableSize = numHighlights;
for (size_t i = 0; i < numHighlights; ++i)
{
highlights[i].id = hl[i].id;
highlights[i].highlightTags = hl[i].highlightTags;
highlights[i].significance = hl[i].significance;
highlights[i].userInterest = hl[i].userInterest;
highlights[i].nameTableSize = hl[i].nameTableSize;
highlights[i].nameTable = hl[i].nameTableSize > 0 ? calloc(hl[i].nameTableSize, sizeof(NVGSDK_LocalizedPair)) : NULL;
for (size_t name = 0; name < hl[i].nameTableSize; ++name)
{
highlights[i].nameTable[name].localeCode = calloc(NVGSDK_MAX_LENGTH, sizeof(char));
strncpy_s((char*)highlights[i].nameTable[name].localeCode, NVGSDK_MAX_LENGTH, hl[i].nameTable[name].localeCode, NVGSDK_MAX_LENGTH);
highlights[i].nameTable[name].localizedString = calloc(NVGSDK_MAX_LENGTH, sizeof(char));
strncpy_s((char*)highlights[i].nameTable[name].localizedString, NVGSDK_MAX_LENGTH, hl[i].nameTable[name].localizedString, NVGSDK_MAX_LENGTH);
}
}
NVGSDK_Highlights_ConfigureAsync(g_sdk, params, &handleConfigured, params);

C++ Bindings

params.groupId = id;
params.groupDescriptionLocaleTable["en-US"] = id;
m_highlights->OpenGroupAsync(params, [this](GfeSDK::NVGSDK_RetCode rc, void*) {
UpdateLastResultString(rc);
});
params.startDelta = startDelta;
params.endDelta = endDelta;
params.groupId = groupId;
params.highlightId = highlightId;
m_highlights->SetVideoHighlightAsync(params, [this](GfeSDK::NVGSDK_RetCode rc, void*) {
UpdateLastResultString(rc);
});
params.groupId = id;
params.destroyHighlights = destroy;
m_highlights->CloseGroupAsync(params, [this](GfeSDK::NVGSDK_RetCode rc, void*) {
UpdateLastResultString(rc);
});

C API

params.groupId = groupId;
NVGSDK_Highlights_OpenGroupAsync(g_sdk, &params, &handleGenericResponse, NULL);
params.groupId = groupId;
params.highlightId = highlightId;
params.startDelta = startDelta;
params.endDelta = endDelta;
NVGSDK_Highlights_SetVideoHighlightAsync(g_sdk, &params, &handleGenericResponse, NULL);
params.groupId = groupId;
params.destroyHighlights = destroy;
NVGSDK_Highlights_CloseGroupAsync(g_sdk, &params, &handleGenericResponse, NULL);

C++ Bindings

// Can show more than one group at a time, each with their own filters if desired
for (size_t i = 0; i < numGroups; ++i)
{
v.groupId = groupIds[i];
v.significanceFilter = sigFilter;
v.tagsFilter = tagFilter;
params.groupViews.push_back(v);
}
m_highlights->OpenSummaryAsync(params, [this](GfeSDK::NVGSDK_RetCode rc, void*) {
UpdateLastResultString(rc);
});

C API

-- cgit v1.2.3