Revert: "winrt: fix camera preview on Lumia 630"
This reverts commit be0a231be4. Moving
blitting away from the camera device removed the need to lock buffer.
Change-Id: I3a0e983d9ff2135e32e3e352c443ca653c1dd017
Reviewed-by: Oliver Wolff <oliver.wolff@theqtcompany.com>
Reviewed-by: Andrew Knight <andrew.knight@intopalo.com>
This commit is contained in:
@@ -55,11 +55,6 @@
|
||||
#include <windows.storage.streams.h>
|
||||
#include <windows.media.devices.h>
|
||||
|
||||
#ifdef Q_OS_WINPHONE
|
||||
#include <Windows.Security.ExchangeActiveSyncProvisioning.h>
|
||||
using namespace ABI::Windows::Security::ExchangeActiveSyncProvisioning;
|
||||
#endif
|
||||
|
||||
using namespace Microsoft::WRL;
|
||||
using namespace Microsoft::WRL::Wrappers;
|
||||
using namespace ABI::Windows::Devices::Enumeration;
|
||||
@@ -200,21 +195,9 @@ private:
|
||||
|
||||
class MediaStream : public RuntimeClass<RuntimeClassFlags<WinRtClassicComMix>, IMFStreamSink, IMFMediaEventGenerator, IMFMediaTypeHandler>
|
||||
{
|
||||
enum Flags { NoFlag = 0, BufferLockRequired = 1 };
|
||||
|
||||
template <int n>
|
||||
static Flags bufferLockRequired(const wchar_t (&blackListName)[n], const HString &deviceModel)
|
||||
{
|
||||
quint32 deviceNameLength;
|
||||
const wchar_t *deviceName = deviceModel.GetRawBuffer(&deviceNameLength);
|
||||
if (n - 1 <= deviceNameLength && !wmemcmp(blackListName, deviceName, n - 1))
|
||||
return BufferLockRequired;
|
||||
return NoFlag;
|
||||
}
|
||||
|
||||
public:
|
||||
MediaStream(IMFMediaType *type, IMFMediaSink *mediaSink, QWinRTCameraVideoRendererControl *videoRenderer)
|
||||
: m_type(type), m_sink(mediaSink), m_videoRenderer(videoRenderer), m_flags(NoFlag)
|
||||
: m_type(type), m_sink(mediaSink), m_videoRenderer(videoRenderer)
|
||||
{
|
||||
Q_ASSERT(m_videoRenderer);
|
||||
|
||||
@@ -225,19 +208,6 @@ public:
|
||||
Q_ASSERT_SUCCEEDED(hr);
|
||||
hr = MFAllocateSerialWorkQueue(MFASYNC_CALLBACK_QUEUE_STANDARD, &m_workQueueId);
|
||||
Q_ASSERT_SUCCEEDED(hr);
|
||||
|
||||
#ifdef Q_OS_WINPHONE
|
||||
// Workaround for certain devices which fail to blit software buffers without first mapping them
|
||||
ComPtr<IEasClientDeviceInformation> deviceInfo;
|
||||
hr = RoActivateInstance(HString::MakeReference(RuntimeClass_Windows_Security_ExchangeActiveSyncProvisioning_EasClientDeviceInformation).Get(),
|
||||
&deviceInfo);
|
||||
Q_ASSERT_SUCCEEDED(hr);
|
||||
HString deviceModel;
|
||||
hr = deviceInfo->get_SystemSku(deviceModel.GetAddressOf());
|
||||
Q_ASSERT_SUCCEEDED(hr);
|
||||
m_flags |= bufferLockRequired(L"NOKIA RM-976", deviceModel);
|
||||
m_flags |= bufferLockRequired(L"NOKIA RM-1019", deviceModel);
|
||||
#endif
|
||||
}
|
||||
|
||||
~MediaStream()
|
||||
@@ -311,16 +281,6 @@ public:
|
||||
hr = buffer.As(&buffer2d);
|
||||
RETURN_HR_IF_FAILED("Failed to cast camera sample buffer to 2D buffer");
|
||||
|
||||
#ifdef Q_OS_WINPHONE
|
||||
if (m_flags & BufferLockRequired) {
|
||||
BYTE *bytes;
|
||||
LONG stride;
|
||||
hr = buffer2d->Lock2D(&bytes, &stride);
|
||||
RETURN_HR_IF_FAILED("Failed to lock camera frame buffer");
|
||||
hr = buffer2d->Unlock2D();
|
||||
RETURN_HR_IF_FAILED("Failed to unlock camera frame buffer");
|
||||
}
|
||||
#endif
|
||||
m_pendingSamples.deref();
|
||||
m_videoRenderer->queueBuffer(buffer2d.Get());
|
||||
|
||||
@@ -394,7 +354,6 @@ private:
|
||||
|
||||
QWinRTCameraVideoRendererControl *m_videoRenderer;
|
||||
QAtomicInt m_pendingSamples;
|
||||
quint32 m_flags;
|
||||
};
|
||||
|
||||
class MediaSink : public RuntimeClass<RuntimeClassFlags<WinRtClassicComMix>, IMediaExtension, IMFMediaSink, IMFClockStateSink>
|
||||
|
||||
Reference in New Issue
Block a user