You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardExpand all lines: README.md
+3Lines changed: 3 additions & 0 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -4,6 +4,9 @@ Advanced Interactive Streaming SDK is a C++ library that provides building block
4
4
Virtual and Augmented Reality, etc. using AMD Radeon graphics. It allows you to build a complete streaming solution including video and audio capture, video and audio encoder/decoder/pre-post-processing pipelines, a robust and secure network stack, or use some of its components, while implementing the rest yourself.
5
5
6
6
## Changelog:
7
+
- v1.1.1 - bug fixes:
8
+
- Allowing the server to start without audio when no audio output device is available on the server
9
+
- Code clean-up
7
10
- v1.1.0 - added support for Linux:
8
11
- Server supported on AMD graphics with the Pro driver (X.org required)
9
12
- Client supported on AMD graphics with the Pro and RADV drivers, NVidia graphics (proprietary driver recommended), Intel graphics (X.org recommended, Wayland supported with some limitations)
SetParamDescription(PARAM_NAME_PASSPHRASE, ParamCommon, L"Specify a passphrase for AES encryption", nullptr);
168
167
169
168
SetParamDescription(PARAM_NAME_MONITOR_ID, ParamCommon, L"Specify a 0-based index of the monitor to capture video from, default = 0", ParamConverterInt64);
SetParamDescription(PARAM_NAME_CAPTURE_RATE, ParamCommon, L"Specify capture frame rate for the \"framerate\" capture mode, default = 60", ParamConverterInt64);
172
170
SetParamDescription(CAPTURE_FORCE_COPY, ParamCommon, L"Force display capture to make a copy of the captured surface (true, false), default = false", ParamConverterBoolean);
AMFTraceWarning(AMF_FACILITY, L"Failed to set video capture frame rate to %d fps", int32_t(frameRate));
492
-
result = true;
493
-
break;
494
-
default:
495
-
break;
496
-
}
497
-
}
498
-
break;
499
-
case AMF_NOT_FOUND:
500
-
case AMF_ACCESS_DENIED:
501
-
AMFTraceWarning(AMF_FACILITY, L"Selected video capture method does not support capture at a fixed frame rate, -%s %s ignored", PARAM_NAME_CAPTURE_MODE, CAPTURE_MODE_FRAMERATE);
502
-
result = true;
503
-
break;
504
-
default:
505
-
AMFTraceError(AMF_FACILITY, L"Error setting the AMF_DISPLAYCAPTURE_MODE property on the display capture component, result=%s", amf::AMFGetResultText(amfResult));
m_VideoStreamDescriptor.SetFramerate(float(DEFAULT_FRAMERATE)); // Set the initial frame rate to 60fps, it will be adjusted automatically in a few seconds to the actual frame rate determined by capture
m_VideoStreamDescriptor.SetFramerate(float(DEFAULT_FRAMERATE)); // Set the initial frame rate to 60fps, it will be adjusted automatically in a few seconds to the actual frame rate determined by capture
518
-
}
519
-
if (result != true)
520
-
{
521
-
if (amfResult == AMF_OK)
522
-
{
523
-
AMFTraceInfo(AMF_FACILITY, L"Capture mode is set to %s", captureMode.c_str());
524
-
}
525
-
else
526
-
{
527
-
AMFTraceError(AMF_FACILITY, L"Failed to set video capture mode to %s, result=%s", captureMode.c_str(), amf::AMFGetResultText(amfResult));
528
-
}
529
-
}
461
+
AMFTraceWarning(AMF_FACILITY, L"Capture component does not support surface duplication, ignored, result=%s", amf::AMFGetResultText(amfResult));
462
+
}
530
463
531
-
if ((amfResult = m_VideoCapture->SetProperty(AMF_DISPLAYCAPTURE_DUPLICATEOUTPUT, forceCopy)) == AMF_OK)
464
+
if ((amfResult = m_VideoCapture->SetProperty(AMF_DISPLAYCAPTURE_CURRENT_TIME_INTERFACE, m_CurrentTime)) != AMF_OK)
465
+
{
466
+
AMFTraceError(AMF_FACILITY, L"Failed to set the current time interface on the video capture component, result=%s", amf::AMFGetResultText(amfResult));
467
+
}
468
+
else
469
+
{ // All properties are configured
470
+
if ((amfResult = m_VideoCapture->Init(amf::AMF_SURFACE_UNKNOWN, 0, 0)) != AMF_OK)
532
471
{
533
-
AMFTraceInfo(AMF_FACILITY, L"Captured surface will be %s", forceCopy ? L"duplicated" : L"used directly");
472
+
AMFTraceError(AMF_FACILITY, L"Failed to initialize display capture, result=%s", amf::AMFGetResultText(amfResult));
473
+
result = false;
534
474
}
535
475
else
536
476
{
537
-
AMFTraceWarning(AMF_FACILITY, L"Capture component does not support surface duplication, ignored, result=%s", amf::AMFGetResultText(amfResult));
538
-
}
539
-
540
-
if ((amfResult = m_VideoCapture->SetProperty(AMF_DISPLAYCAPTURE_CURRENT_TIME_INTERFACE, m_CurrentTime)) != AMF_OK)
541
-
{
542
-
AMFTraceError(AMF_FACILITY, L"Failed to set the current time interface on the video capture component, result=%s", amf::AMFGetResultText(amfResult));
543
-
}
544
-
else
545
-
{ // All properties are configured
546
-
if ((amfResult = m_VideoCapture->Init(amf::AMF_SURFACE_UNKNOWN, 0, 0)) != AMF_OK)
547
-
{
548
-
AMFTraceError(AMF_FACILITY, L"Failed to initialize display capture, result=%s", amf::AMFGetResultText(amfResult));
AMFTraceWarning(AMF_FACILITY, L"Failed to set video capture frame rate to %d fps", int32_t(frameRate));
281
+
result = true;
282
+
break;
283
+
default:
284
+
break;
285
+
}
286
+
}
287
+
break;
288
+
case AMF_NOT_FOUND:
289
+
case AMF_ACCESS_DENIED:
290
+
AMFTraceWarning(AMF_FACILITY, L"Selected video capture method does not support capture at a fixed frame rate, -%s %s ignored", PARAM_NAME_CAPTURE_MODE, CAPTURE_MODE_FRAMERATE);
291
+
result = true;
292
+
break;
293
+
default:
294
+
AMFTraceError(AMF_FACILITY, L"Error setting the AMF_DISPLAYCAPTURE_MODE property on the display capture component, result=%s", amf::AMFGetResultText(amfResult));
m_VideoStreamDescriptor.SetFramerate(float(DEFAULT_FRAMERATE)); // Set the initial frame rate to 60fps, it will be adjusted automatically in a few seconds to the actual frame rate determined by capture
m_VideoStreamDescriptor.SetFramerate(float(DEFAULT_FRAMERATE)); // Set the initial frame rate to 60fps, it will be adjusted automatically in a few seconds to the actual frame rate determined by capture
310
+
m_CaptureMode = CaptureMode::ASAP;
311
+
result = true;
312
+
}
313
+
if (result != true)
314
+
{
315
+
if (amfResult == AMF_OK)
316
+
{
317
+
AMFTraceInfo(AMF_FACILITY, L"Capture mode is set to %s", captureMode.c_str());
318
+
}
319
+
else
320
+
{
321
+
AMFTraceError(AMF_FACILITY, L"Failed to set video capture mode to %s, result=%s", captureMode.c_str(), amf::AMFGetResultText(amfResult));
0 commit comments