Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(1291)

Unified Diff: webrtc/modules/video_capture/windows/device_info_ds.cc

Issue 2685783014: Replace NULL with nullptr in all C++ files. (Closed)
Patch Set: Fixing android. Created 3 years, 10 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: webrtc/modules/video_capture/windows/device_info_ds.cc
diff --git a/webrtc/modules/video_capture/windows/device_info_ds.cc b/webrtc/modules/video_capture/windows/device_info_ds.cc
index 0b704abe954caa86038a96b81fbfa44f9fc0410a..2a177083c4b29fdb21f1e8549b13646b8a6ba23e 100644
--- a/webrtc/modules/video_capture/windows/device_info_ds.cc
+++ b/webrtc/modules/video_capture/windows/device_info_ds.cc
@@ -48,53 +48,63 @@ DeviceInfoDS* DeviceInfoDS::Create()
if (!dsInfo || dsInfo->Init() != 0)
{
delete dsInfo;
- dsInfo = NULL;
+ dsInfo = nullptr;
}
return dsInfo;
}
DeviceInfoDS::DeviceInfoDS()
- : _dsDevEnum(NULL), _dsMonikerDevEnum(NULL),
- _CoUninitializeIsRequired(true)
-{
- // 1) Initialize the COM library (make Windows load the DLLs).
- //
- // CoInitializeEx must be called at least once, and is usually called only once,
- // for each thread that uses the COM library. Multiple calls to CoInitializeEx
- // by the same thread are allowed as long as they pass the same concurrency flag,
- // but subsequent valid calls return S_FALSE.
- // To close the COM library gracefully on a thread, each successful call to
- // CoInitializeEx, including any call that returns S_FALSE, must be balanced
- // by a corresponding call to CoUninitialize.
- //
-
- /*Apartment-threading, while allowing for multiple threads of execution,
- serializes all incoming calls by requiring that calls to methods of objects created by this thread always run on the same thread
- the apartment/thread that created them. In addition, calls can arrive only at message-queue boundaries (i.e., only during a
- PeekMessage, SendMessage, DispatchMessage, etc.). Because of this serialization, it is not typically necessary to write concurrency control into
- the code for the object, other than to avoid calls to PeekMessage and SendMessage during processing that must not be interrupted by other method
- invocations or calls to other objects in the same apartment/thread.*/
-
- ///CoInitializeEx(NULL, COINIT_APARTMENTTHREADED ); //| COINIT_SPEED_OVER_MEMORY
- HRESULT hr = CoInitializeEx(NULL, COINIT_MULTITHREADED); // Use COINIT_MULTITHREADED since Voice Engine uses COINIT_MULTITHREADED
- if (FAILED(hr))
- {
- // Avoid calling CoUninitialize() since CoInitializeEx() failed.
- _CoUninitializeIsRequired = FALSE;
-
- if (hr == RPC_E_CHANGED_MODE)
- {
- // Calling thread has already initialized COM to be used in a single-threaded
- // apartment (STA). We are then prevented from using STA.
- // Details: hr = 0x80010106 <=> "Cannot change thread mode after it is set".
- //
- WEBRTC_TRACE(webrtc::kTraceWarning, webrtc::kTraceVideoCapture, 0,
- "VideoCaptureWindowsDSInfo::VideoCaptureWindowsDSInfo "
- "CoInitializeEx(NULL, COINIT_APARTMENTTHREADED) => "
- "RPC_E_CHANGED_MODE, error 0x%x",
- hr);
- }
+ : _dsDevEnum(nullptr),
+ _dsMonikerDevEnum(nullptr),
+ _CoUninitializeIsRequired(true) {
+ // 1) Initialize the COM library (make Windows load the DLLs).
+ //
+ // CoInitializeEx must be called at least once, and is usually called only
+ // once,
+ // for each thread that uses the COM library. Multiple calls to CoInitializeEx
+ // by the same thread are allowed as long as they pass the same concurrency
+ // flag,
+ // but subsequent valid calls return S_FALSE.
+ // To close the COM library gracefully on a thread, each successful call to
+ // CoInitializeEx, including any call that returns S_FALSE, must be balanced
+ // by a corresponding call to CoUninitialize.
+ //
+
+ /*Apartment-threading, while allowing for multiple threads of execution,
+ serializes all incoming calls by requiring that calls to methods of objects
+ created by this thread always run on the same thread
+ the apartment/thread that created them. In addition, calls can arrive only at
+ message-queue boundaries (i.e., only during a
+ PeekMessage, SendMessage, DispatchMessage, etc.). Because of this
+ serialization, it is not typically necessary to write concurrency control
+ into
+ the code for the object, other than to avoid calls to PeekMessage and
+ SendMessage during processing that must not be interrupted by other method
+ invocations or calls to other objects in the same apartment/thread.*/
+
+ /// CoInitializeEx(null, COINIT_APARTMENTTHREADED ); //|
+ /// COINIT_SPEED_OVER_MEMORY
+ HRESULT hr = CoInitializeEx(
+ nullptr, COINIT_MULTITHREADED); // Use COINIT_MULTITHREADED since Voice
+ // Engine uses COINIT_MULTITHREADED
+ if (FAILED(hr)) {
+ // Avoid calling CoUninitialize() since CoInitializeEx() failed.
+ _CoUninitializeIsRequired = FALSE;
+
+ if (hr == RPC_E_CHANGED_MODE) {
+ // Calling thread has already initialized COM to be used in a
+ // single-threaded
+ // apartment (STA). We are then prevented from using STA.
+ // Details: hr = 0x80010106 <=> "Cannot change thread mode after it is
+ // set".
+ //
+ WEBRTC_TRACE(webrtc::kTraceWarning, webrtc::kTraceVideoCapture, 0,
+ "VideoCaptureWindowsDSInfo::VideoCaptureWindowsDSInfo "
+ "CoInitializeEx(null, COINIT_APARTMENTTHREADED) => "
+ "RPC_E_CHANGED_MODE, error 0x%x",
+ hr);
}
+ }
}
DeviceInfoDS::~DeviceInfoDS()
@@ -109,13 +119,12 @@ DeviceInfoDS::~DeviceInfoDS()
int32_t DeviceInfoDS::Init()
{
- HRESULT hr = CoCreateInstance(CLSID_SystemDeviceEnum, NULL, CLSCTX_INPROC,
- IID_ICreateDevEnum, (void **) &_dsDevEnum);
- if (hr != NOERROR)
- {
- WEBRTC_TRACE(webrtc::kTraceError, webrtc::kTraceVideoCapture, 0,
- "Failed to create CLSID_SystemDeviceEnum, error 0x%x", hr);
- return -1;
+ HRESULT hr = CoCreateInstance(CLSID_SystemDeviceEnum, nullptr, CLSCTX_INPROC,
+ IID_ICreateDevEnum, (void**)&_dsDevEnum);
+ if (hr != NOERROR) {
+ WEBRTC_TRACE(webrtc::kTraceError, webrtc::kTraceVideoCapture, 0,
+ "Failed to create CLSID_SystemDeviceEnum, error 0x%x", hr);
+ return -1;
}
return 0;
}
@@ -189,72 +198,56 @@ int32_t DeviceInfoDS::GetDeviceInfo(
if (SUCCEEDED(hr))
{
// ignore all VFW drivers
- if ((wcsstr(varName.bstrVal, (L"(VFW)")) == NULL) &&
- (_wcsnicmp(varName.bstrVal, (L"Google Camera Adapter"),21)
- != 0))
- {
- // Found a valid device.
- if (index == static_cast<int>(deviceNumber))
- {
- int convResult = 0;
- if (deviceNameLength > 0)
- {
- convResult = WideCharToMultiByte(CP_UTF8, 0,
- varName.bstrVal, -1,
- (char*) deviceNameUTF8,
- deviceNameLength, NULL,
- NULL);
- if (convResult == 0)
- {
- WEBRTC_TRACE(webrtc::kTraceError,
- webrtc::kTraceVideoCapture, 0,
- "Failed to convert device name to UTF8. %d",
- GetLastError());
- return -1;
- }
+ if ((wcsstr(varName.bstrVal, (L"(VFW)")) == nullptr) &&
+ (_wcsnicmp(varName.bstrVal, (L"Google Camera Adapter"),
+ 21) != 0)) {
+ // Found a valid device.
+ if (index == static_cast<int>(deviceNumber)) {
+ int convResult = 0;
+ if (deviceNameLength > 0) {
+ convResult = WideCharToMultiByte(
+ CP_UTF8, 0, varName.bstrVal, -1,
+ (char*)deviceNameUTF8, deviceNameLength, nullptr,
+ nullptr);
+ if (convResult == 0) {
+ WEBRTC_TRACE(
+ webrtc::kTraceError, webrtc::kTraceVideoCapture, 0,
+ "Failed to convert device name to UTF8. %d",
+ GetLastError());
+ return -1;
+ }
+ }
+ if (deviceUniqueIdUTF8Length > 0) {
+ hr = pBag->Read(L"DevicePath", &varName, 0);
+ if (FAILED(hr)) {
+ strncpy_s((char*)deviceUniqueIdUTF8,
+ deviceUniqueIdUTF8Length,
+ (char*)deviceNameUTF8, convResult);
+ WEBRTC_TRACE(webrtc::kTraceError,
+ webrtc::kTraceVideoCapture, 0,
+ "Failed to get deviceUniqueIdUTF8 using "
+ "deviceNameUTF8");
+ } else {
+ convResult = WideCharToMultiByte(
+ CP_UTF8, 0, varName.bstrVal, -1,
+ (char*)deviceUniqueIdUTF8, deviceUniqueIdUTF8Length,
+ nullptr, nullptr);
+ if (convResult == 0) {
+ WEBRTC_TRACE(
+ webrtc::kTraceError, webrtc::kTraceVideoCapture,
+ 0, "Failed to convert device name to UTF8. %d",
+ GetLastError());
+ return -1;
}
- if (deviceUniqueIdUTF8Length > 0)
- {
- hr = pBag->Read(L"DevicePath", &varName, 0);
- if (FAILED(hr))
- {
- strncpy_s((char *) deviceUniqueIdUTF8,
- deviceUniqueIdUTF8Length,
- (char *) deviceNameUTF8, convResult);
- WEBRTC_TRACE(webrtc::kTraceError,
- webrtc::kTraceVideoCapture, 0,
- "Failed to get deviceUniqueIdUTF8 using deviceNameUTF8");
- }
- else
- {
- convResult = WideCharToMultiByte(
- CP_UTF8,
- 0,
- varName.bstrVal,
- -1,
- (char*) deviceUniqueIdUTF8,
- deviceUniqueIdUTF8Length,
- NULL, NULL);
- if (convResult == 0)
- {
- WEBRTC_TRACE(webrtc::kTraceError,
- webrtc::kTraceVideoCapture, 0,
- "Failed to convert device name to UTF8. %d",
- GetLastError());
- return -1;
- }
- if (productUniqueIdUTF8
- && productUniqueIdUTF8Length > 0)
- {
- GetProductId(deviceUniqueIdUTF8,
- productUniqueIdUTF8,
- productUniqueIdUTF8Length);
- }
- }
+ if (productUniqueIdUTF8 &&
+ productUniqueIdUTF8Length > 0) {
+ GetProductId(deviceUniqueIdUTF8, productUniqueIdUTF8,
+ productUniqueIdUTF8Length);
}
-
+ }
}
- ++index; // increase the number of valid devices
+ }
+ ++index; // increase the number of valid devices
}
}
VariantClear(&varName);
@@ -277,14 +270,12 @@ IBaseFilter * DeviceInfoDS::GetDeviceFilter(
char* productUniqueIdUTF8,
uint32_t productUniqueIdUTF8Length)
{
-
- const int32_t deviceUniqueIdUTF8Length =
- (int32_t) strlen((char*) deviceUniqueIdUTF8); // UTF8 is also NULL terminated
- if (deviceUniqueIdUTF8Length > kVideoCaptureUniqueNameLength)
- {
- WEBRTC_TRACE(webrtc::kTraceError, webrtc::kTraceVideoCapture, 0,
- "Device name too long");
- return NULL;
+ const int32_t deviceUniqueIdUTF8Length = (int32_t)strlen(
+ (char*)deviceUniqueIdUTF8); // UTF8 is also nullptr terminated
+ if (deviceUniqueIdUTF8Length > kVideoCaptureUniqueNameLength) {
+ WEBRTC_TRACE(webrtc::kTraceError, webrtc::kTraceVideoCapture, 0,
+ "Device name too long");
+ return nullptr;
}
// enumerate all video capture devices
@@ -302,7 +293,7 @@ IBaseFilter * DeviceInfoDS::GetDeviceFilter(
ULONG cFetched;
IMoniker *pM;
- IBaseFilter *captureFilter = NULL;
+ IBaseFilter* captureFilter = nullptr;
bool deviceFound = false;
while (S_OK == _dsMonikerDevEnum->Next(1, &pM, &cFetched) && !deviceFound)
{
@@ -328,10 +319,9 @@ IBaseFilter * DeviceInfoDS::GetDeviceFilter(
{
char tempDevicePathUTF8[256];
tempDevicePathUTF8[0] = 0;
- WideCharToMultiByte(CP_UTF8, 0, varName.bstrVal, -1,
- tempDevicePathUTF8,
- sizeof(tempDevicePathUTF8), NULL,
- NULL);
+ WideCharToMultiByte(
+ CP_UTF8, 0, varName.bstrVal, -1, tempDevicePathUTF8,
+ sizeof(tempDevicePathUTF8), nullptr, nullptr);
if (strncmp(tempDevicePathUTF8,
(const char*) deviceUniqueIdUTF8,
deviceUniqueIdUTF8Length) == 0)
@@ -416,7 +406,7 @@ int32_t DeviceInfoDS::CreateCapabilityMap(
RELEASE_AND_CLEAR(captureDevice);
return -1;
}
- IAMExtDevice* extDevice = NULL;
+ IAMExtDevice* extDevice = nullptr;
HRESULT hr = captureDevice->QueryInterface(IID_IAMExtDevice,
(void **) &extDevice);
if (SUCCEEDED(hr) && extDevice)
@@ -426,7 +416,7 @@ int32_t DeviceInfoDS::CreateCapabilityMap(
extDevice->Release();
}
- IAMStreamConfig* streamConfig = NULL;
+ IAMStreamConfig* streamConfig = nullptr;
hr = outputCapturePin->QueryInterface(IID_IAMStreamConfig,
(void**) &streamConfig);
if (FAILED(hr))
@@ -437,7 +427,7 @@ int32_t DeviceInfoDS::CreateCapabilityMap(
}
// this gets the FPS
- IAMVideoControl* videoControlConfig = NULL;
+ IAMVideoControl* videoControlConfig = nullptr;
HRESULT hrVC = captureDevice->QueryInterface(IID_IAMVideoControl,
(void**) &videoControlConfig);
if (FAILED(hrVC))
@@ -446,7 +436,7 @@ int32_t DeviceInfoDS::CreateCapabilityMap(
"IID_IAMVideoControl Interface NOT SUPPORTED");
}
- AM_MEDIA_TYPE *pmt = NULL;
+ AM_MEDIA_TYPE* pmt = nullptr;
VIDEO_STREAM_CONFIG_CAPS caps;
int count, size;
@@ -673,7 +663,7 @@ int32_t DeviceInfoDS::CreateCapabilityMap(
capability.rawType, capability.maxFPS);
}
DeleteMediaType(pmt);
- pmt = NULL;
+ pmt = nullptr;
}
RELEASE_AND_CLEAR(streamConfig);
RELEASE_AND_CLEAR(videoControlConfig);
@@ -748,11 +738,11 @@ int32_t DeviceInfoDS::DisplayCaptureSettingsDialogBox(
ReadLockScoped cs(_apiLock);
HWND window = (HWND) parentWindow;
- IBaseFilter* filter = GetDeviceFilter(deviceUniqueIdUTF8, NULL, 0);
+ IBaseFilter* filter = GetDeviceFilter(deviceUniqueIdUTF8, nullptr, 0);
if (!filter)
return -1;
- ISpecifyPropertyPages* pPages = NULL;
+ ISpecifyPropertyPages* pPages = nullptr;
CAUUID uuid;
HRESULT hr = S_OK;
@@ -779,16 +769,17 @@ int32_t DeviceInfoDS::DisplayCaptureSettingsDialogBox(
// Invoke a dialog box to display.
- hr = OleCreatePropertyFrame(window, // You must create the parent window.
- positionX, // Horizontal position for the dialog box.
- positionY, // Vertical position for the dialog box.
- tempDialogTitleWide,// String used for the dialog box caption.
- 1, // Number of pointers passed in pPlugin.
- (LPUNKNOWN*) &filter, // Pointer to the filter.
- uuid.cElems, // Number of property pages.
- uuid.pElems, // Array of property page CLSIDs.
- LOCALE_USER_DEFAULT, // Locale ID for the dialog box.
- 0, NULL); // Reserved
+ hr = OleCreatePropertyFrame(
+ window, // You must create the parent window.
+ positionX, // Horizontal position for the dialog box.
+ positionY, // Vertical position for the dialog box.
+ tempDialogTitleWide, // String used for the dialog box caption.
+ 1, // Number of pointers passed in pPlugin.
+ (LPUNKNOWN*)&filter, // Pointer to the filter.
+ uuid.cElems, // Number of property pages.
+ uuid.pElems, // Array of property page CLSIDs.
+ LOCALE_USER_DEFAULT, // Locale ID for the dialog box.
+ 0, nullptr); // Reserved
// Release memory.
if (uuid.pElems)
{

Powered by Google App Engine
This is Rietveld 408576698