summaryrefslogtreecommitdiffstats
path: root/src/plugins/directshow/common
diff options
context:
space:
mode:
Diffstat (limited to 'src/plugins/directshow/common')
-rw-r--r--src/plugins/directshow/common/directshowaudioprobecontrol.h2
-rw-r--r--src/plugins/directshow/common/directshowbasefilter.cpp75
-rw-r--r--src/plugins/directshow/common/directshowbasefilter.h26
-rw-r--r--src/plugins/directshow/common/directshoweventloop.cpp1
-rw-r--r--src/plugins/directshow/common/directshoweventloop.h4
-rw-r--r--src/plugins/directshow/common/directshowmediatype.cpp35
-rw-r--r--src/plugins/directshow/common/directshowmediatype.h4
-rw-r--r--src/plugins/directshow/common/directshowmediatypeenum.cpp34
-rw-r--r--src/plugins/directshow/common/directshowpin.cpp109
-rw-r--r--src/plugins/directshow/common/directshowpin.h57
-rw-r--r--src/plugins/directshow/common/directshowpinenum.cpp35
-rw-r--r--src/plugins/directshow/common/directshowsamplegrabber.cpp13
-rw-r--r--src/plugins/directshow/common/directshowvideobuffer.h8
13 files changed, 179 insertions, 224 deletions
diff --git a/src/plugins/directshow/common/directshowaudioprobecontrol.h b/src/plugins/directshow/common/directshowaudioprobecontrol.h
index 553bd1178..034e958fd 100644
--- a/src/plugins/directshow/common/directshowaudioprobecontrol.h
+++ b/src/plugins/directshow/common/directshowaudioprobecontrol.h
@@ -51,7 +51,7 @@ class DirectShowAudioProbeControl : public QMediaAudioProbeControl
Q_OBJECT
public:
explicit DirectShowAudioProbeControl(QObject *p = nullptr);
- ~DirectShowAudioProbeControl();
+ ~DirectShowAudioProbeControl() override;
bool ref() { return m_ref.ref(); }
bool deref() { return m_ref.deref(); }
diff --git a/src/plugins/directshow/common/directshowbasefilter.cpp b/src/plugins/directshow/common/directshowbasefilter.cpp
index 1e45eea51..2792dc3c6 100644
--- a/src/plugins/directshow/common/directshowbasefilter.cpp
+++ b/src/plugins/directshow/common/directshowbasefilter.cpp
@@ -172,51 +172,43 @@ HRESULT DirectShowBaseFilter::SetSyncSource(IReferenceClock *pClock)
HRESULT DirectShowBaseFilter::GetSyncSource(IReferenceClock **ppClock)
{
- if (!ppClock) {
+ if (!ppClock)
return E_POINTER;
- } else {
- if (!m_clock) {
- *ppClock = 0;
-
- return S_FALSE;
- } else {
- m_clock->AddRef();
- *ppClock = m_clock;
-
- return S_OK;
- }
+ if (!m_clock) {
+ *ppClock = nullptr;
+ return S_FALSE;
}
+ m_clock->AddRef();
+ *ppClock = m_clock;
+ return S_OK;
}
HRESULT DirectShowBaseFilter::EnumPins(IEnumPins **ppEnum)
{
- if (!ppEnum) {
+ if (!ppEnum)
return E_POINTER;
- } else {
- *ppEnum = new DirectShowPinEnum(this);
- return S_OK;
- }
+ *ppEnum = new DirectShowPinEnum(this);
+ return S_OK;
}
HRESULT DirectShowBaseFilter::FindPin(LPCWSTR Id, IPin **ppPin)
{
- if (!ppPin || !Id) {
+ if (!ppPin || !Id)
return E_POINTER;
- } else {
- QMutexLocker locker(&m_mutex);
- const QList<DirectShowPin *> pinList = pins();
- for (DirectShowPin *pin : pinList) {
- if (QString::fromWCharArray(Id) == pin->name()) {
- pin->AddRef();
- *ppPin = pin;
- return S_OK;
- }
- }
- *ppPin = 0;
- return VFW_E_NOT_FOUND;
+ QMutexLocker locker(&m_mutex);
+ const QList<DirectShowPin *> pinList = pins();
+ for (DirectShowPin *pin : pinList) {
+ if (pin->name() == QStringView(Id)) {
+ pin->AddRef();
+ *ppPin = pin;
+ return S_OK;
+ }
}
+
+ *ppPin = 0;
+ return VFW_E_NOT_FOUND;
}
HRESULT DirectShowBaseFilter::JoinFilterGraph(IFilterGraph *pGraph, LPCWSTR pName)
@@ -237,24 +229,23 @@ HRESULT DirectShowBaseFilter::JoinFilterGraph(IFilterGraph *pGraph, LPCWSTR pNam
HRESULT DirectShowBaseFilter::QueryFilterInfo(FILTER_INFO *pInfo)
{
- if (!pInfo) {
+ if (!pInfo)
return E_POINTER;
- } else {
- QString name = m_filterName;
- if (name.length() >= MAX_FILTER_NAME)
- name.truncate(MAX_FILTER_NAME - 1);
+ QString name = m_filterName;
- int length = name.toWCharArray(pInfo->achName);
- pInfo->achName[length] = '\0';
+ if (name.length() >= MAX_FILTER_NAME)
+ name.truncate(MAX_FILTER_NAME - 1);
- if (m_graph)
- m_graph->AddRef();
+ int length = name.toWCharArray(pInfo->achName);
+ pInfo->achName[length] = '\0';
- pInfo->pGraph = m_graph;
+ if (m_graph)
+ m_graph->AddRef();
- return S_OK;
- }
+ pInfo->pGraph = m_graph;
+
+ return S_OK;
}
HRESULT DirectShowBaseFilter::QueryVendorInfo(LPWSTR *pVendorInfo)
diff --git a/src/plugins/directshow/common/directshowbasefilter.h b/src/plugins/directshow/common/directshowbasefilter.h
index 21ca648eb..fe78f96b2 100644
--- a/src/plugins/directshow/common/directshowbasefilter.h
+++ b/src/plugins/directshow/common/directshowbasefilter.h
@@ -48,7 +48,7 @@ class DirectShowBaseFilter : public IBaseFilter
{
public:
DirectShowBaseFilter();
- ~DirectShowBaseFilter();
+ virtual ~DirectShowBaseFilter();
FILTER_STATE state() const { return m_state; }
HRESULT NotifyEvent(long eventCode, LONG_PTR eventParam1, LONG_PTR eventParam2);
@@ -56,26 +56,26 @@ public:
virtual QList<DirectShowPin *> pins() = 0;
// IPersist
- STDMETHODIMP GetClassID(CLSID *pClassID);
+ STDMETHODIMP GetClassID(CLSID *pClassID) override;
// IMediaFilter
- STDMETHODIMP Run(REFERENCE_TIME tStart);
- STDMETHODIMP Pause();
- STDMETHODIMP Stop();
+ STDMETHODIMP Run(REFERENCE_TIME tStart) override;
+ STDMETHODIMP Pause() override;
+ STDMETHODIMP Stop() override;
- STDMETHODIMP GetState(DWORD dwMilliSecsTimeout, FILTER_STATE *pState);
+ STDMETHODIMP GetState(DWORD dwMilliSecsTimeout, FILTER_STATE *pState) override;
- STDMETHODIMP SetSyncSource(IReferenceClock *pClock);
- STDMETHODIMP GetSyncSource(IReferenceClock **ppClock);
+ STDMETHODIMP SetSyncSource(IReferenceClock *pClock) override;
+ STDMETHODIMP GetSyncSource(IReferenceClock **ppClock) override;
// IBaseFilter
- STDMETHODIMP EnumPins(IEnumPins **ppEnum);
- STDMETHODIMP FindPin(LPCWSTR Id, IPin **ppPin);
+ STDMETHODIMP EnumPins(IEnumPins **ppEnum) override;
+ STDMETHODIMP FindPin(LPCWSTR Id, IPin **ppPin) override;
- STDMETHODIMP JoinFilterGraph(IFilterGraph *pGraph, LPCWSTR pName);
+ STDMETHODIMP JoinFilterGraph(IFilterGraph *pGraph, LPCWSTR pName) override;
- STDMETHODIMP QueryFilterInfo(FILTER_INFO *pInfo);
- STDMETHODIMP QueryVendorInfo(LPWSTR *pVendorInfo);
+ STDMETHODIMP QueryFilterInfo(FILTER_INFO *pInfo) override;
+ STDMETHODIMP QueryVendorInfo(LPWSTR *pVendorInfo) override;
protected:
QMutex m_mutex;
diff --git a/src/plugins/directshow/common/directshoweventloop.cpp b/src/plugins/directshow/common/directshoweventloop.cpp
index ef85c0429..fbc7b8cee 100644
--- a/src/plugins/directshow/common/directshoweventloop.cpp
+++ b/src/plugins/directshow/common/directshoweventloop.cpp
@@ -46,6 +46,7 @@ QT_BEGIN_NAMESPACE
class DirectShowPostedEvent
{
+ Q_DISABLE_COPY(DirectShowPostedEvent)
public:
DirectShowPostedEvent(QObject *receiver, QEvent *event)
: receiver(receiver)
diff --git a/src/plugins/directshow/common/directshoweventloop.h b/src/plugins/directshow/common/directshoweventloop.h
index 609e53134..a29274b7b 100644
--- a/src/plugins/directshow/common/directshoweventloop.h
+++ b/src/plugins/directshow/common/directshoweventloop.h
@@ -55,7 +55,7 @@ class DirectShowEventLoop : public QObject
Q_OBJECT
public:
DirectShowEventLoop(QObject *parent = 0);
- ~DirectShowEventLoop();
+ ~DirectShowEventLoop() override;
void wait(QMutex *mutex);
void wake();
@@ -63,7 +63,7 @@ public:
void postEvent(QObject *object, QEvent *event);
protected:
- void customEvent(QEvent *event);
+ void customEvent(QEvent *event) override;
private:
void processEvents();
diff --git a/src/plugins/directshow/common/directshowmediatype.cpp b/src/plugins/directshow/common/directshowmediatype.cpp
index 65882806c..fe86e0204 100644
--- a/src/plugins/directshow/common/directshowmediatype.cpp
+++ b/src/plugins/directshow/common/directshowmediatype.cpp
@@ -98,7 +98,7 @@ DirectShowMediaType::DirectShowMediaType(const DirectShowMediaType &other)
copy(&mediaType, &other.mediaType);
}
-DirectShowMediaType::DirectShowMediaType(DirectShowMediaType &&other)
+DirectShowMediaType::DirectShowMediaType(DirectShowMediaType &&other) noexcept
: DirectShowMediaType()
{
move(&mediaType, other.mediaType);
@@ -110,7 +110,7 @@ DirectShowMediaType &DirectShowMediaType::operator=(const DirectShowMediaType &o
return *this;
}
-DirectShowMediaType &DirectShowMediaType::operator=(DirectShowMediaType &&other)
+DirectShowMediaType &DirectShowMediaType::operator=(DirectShowMediaType &&other) noexcept
{
move(&mediaType, other.mediaType);
return *this;
@@ -222,11 +222,10 @@ void DirectShowMediaType::clear(AM_MEDIA_TYPE &type)
GUID DirectShowMediaType::convertPixelFormat(QVideoFrame::PixelFormat format)
{
- const int count = sizeof(qt_typeLookup) / sizeof(TypeLookup);
-
- for (int i = 0; i < count; ++i)
- if (qt_typeLookup[i].pixelFormat == format)
- return qt_typeLookup[i].mediaType;
+ for (const auto &lookupType : qt_typeLookup) {
+ if (lookupType.pixelFormat == format)
+ return lookupType.mediaType;
+ }
return MEDIASUBTYPE_None;
}
@@ -236,16 +235,14 @@ QVideoSurfaceFormat DirectShowMediaType::videoFormatFromType(const AM_MEDIA_TYPE
if (!type)
return QVideoSurfaceFormat();
- const int count = sizeof(qt_typeLookup) / sizeof(TypeLookup);
-
- for (int i = 0; i < count; ++i) {
- if (IsEqualGUID(qt_typeLookup[i].mediaType, type->subtype) && type->cbFormat > 0) {
+ for (const auto &lookupType : qt_typeLookup) {
+ if (IsEqualGUID(lookupType.mediaType, type->subtype) && type->cbFormat > 0) {
if (IsEqualGUID(type->formattype, FORMAT_VideoInfo)) {
VIDEOINFOHEADER *header = reinterpret_cast<VIDEOINFOHEADER *>(type->pbFormat);
QVideoSurfaceFormat format(
QSize(header->bmiHeader.biWidth, qAbs(header->bmiHeader.biHeight)),
- qt_typeLookup[i].pixelFormat);
+ lookupType.pixelFormat);
if (header->AvgTimePerFrame > 0)
format.setFrameRate(10000 /header->AvgTimePerFrame);
@@ -253,12 +250,13 @@ QVideoSurfaceFormat DirectShowMediaType::videoFormatFromType(const AM_MEDIA_TYPE
format.setScanLineDirection(scanLineDirection(format.pixelFormat(), header->bmiHeader));
return format;
- } else if (IsEqualGUID(type->formattype, FORMAT_VideoInfo2)) {
+ }
+ if (IsEqualGUID(type->formattype, FORMAT_VideoInfo2)) {
VIDEOINFOHEADER2 *header = reinterpret_cast<VIDEOINFOHEADER2 *>(type->pbFormat);
QVideoSurfaceFormat format(
QSize(header->bmiHeader.biWidth, qAbs(header->bmiHeader.biHeight)),
- qt_typeLookup[i].pixelFormat);
+ lookupType.pixelFormat);
if (header->AvgTimePerFrame > 0)
format.setFrameRate(10000 / header->AvgTimePerFrame);
@@ -277,12 +275,9 @@ QVideoFrame::PixelFormat DirectShowMediaType::pixelFormatFromType(const AM_MEDIA
if (!type)
return QVideoFrame::Format_Invalid;
- const int count = sizeof(qt_typeLookup) / sizeof(TypeLookup);
-
- for (int i = 0; i < count; ++i) {
- if (IsEqualGUID(qt_typeLookup[i].mediaType, type->subtype)) {
- return qt_typeLookup[i].pixelFormat;
- }
+ for (const auto &lookupType : qt_typeLookup) {
+ if (IsEqualGUID(lookupType.mediaType, type->subtype))
+ return lookupType.pixelFormat;
}
return QVideoFrame::Format_Invalid;
diff --git a/src/plugins/directshow/common/directshowmediatype.h b/src/plugins/directshow/common/directshowmediatype.h
index 7f495f3b2..ee44329a5 100644
--- a/src/plugins/directshow/common/directshowmediatype.h
+++ b/src/plugins/directshow/common/directshowmediatype.h
@@ -54,13 +54,13 @@ class DirectShowMediaType
public:
DirectShowMediaType();
DirectShowMediaType(const DirectShowMediaType &other);
- DirectShowMediaType(DirectShowMediaType &&other);
+ DirectShowMediaType(DirectShowMediaType &&other) noexcept;
explicit DirectShowMediaType(const AM_MEDIA_TYPE &type);
explicit DirectShowMediaType(AM_MEDIA_TYPE &&type);
~DirectShowMediaType() { clear(mediaType); }
DirectShowMediaType &operator =(const DirectShowMediaType &other);
- DirectShowMediaType &operator =(DirectShowMediaType &&other);
+ DirectShowMediaType &operator =(DirectShowMediaType &&other) noexcept;
void clear() { clear(mediaType); }
diff --git a/src/plugins/directshow/common/directshowmediatypeenum.cpp b/src/plugins/directshow/common/directshowmediatypeenum.cpp
index a6afcd5f1..10623a246 100644
--- a/src/plugins/directshow/common/directshowmediatypeenum.cpp
+++ b/src/plugins/directshow/common/directshowmediatypeenum.cpp
@@ -78,21 +78,20 @@ HRESULT DirectShowMediaTypeEnum::QueryInterface(REFIID riid, void **ppv)
HRESULT DirectShowMediaTypeEnum::Next(ULONG cMediaTypes, AM_MEDIA_TYPE **ppMediaTypes, ULONG *pcFetched)
{
- if (ppMediaTypes && (pcFetched || cMediaTypes == 1)) {
- ULONG count = qBound<ULONG>(0, cMediaTypes, m_mediaTypes.count() - m_index);
-
- for (ULONG i = 0; i < count; ++i, ++m_index) {
- ppMediaTypes[i] = reinterpret_cast<AM_MEDIA_TYPE *>(CoTaskMemAlloc(sizeof(AM_MEDIA_TYPE)));
- DirectShowMediaType::copyToUninitialized(ppMediaTypes[i], &m_mediaTypes.at(m_index));
- }
+ if (!ppMediaTypes || (!pcFetched && cMediaTypes != 1))
+ return E_POINTER;
- if (pcFetched)
- *pcFetched = count;
+ ULONG count = qBound<ULONG>(0, cMediaTypes, m_mediaTypes.count() - m_index);
- return count == cMediaTypes ? S_OK : S_FALSE;
- } else {
- return E_POINTER;
+ for (ULONG i = 0; i < count; ++i, ++m_index) {
+ ppMediaTypes[i] = reinterpret_cast<AM_MEDIA_TYPE *>(CoTaskMemAlloc(sizeof(AM_MEDIA_TYPE)));
+ DirectShowMediaType::copyToUninitialized(ppMediaTypes[i], &m_mediaTypes.at(m_index));
}
+
+ if (pcFetched)
+ *pcFetched = count;
+
+ return count == cMediaTypes ? S_OK : S_FALSE;
}
HRESULT DirectShowMediaTypeEnum::Skip(ULONG cMediaTypes)
@@ -109,14 +108,9 @@ HRESULT DirectShowMediaTypeEnum::Reset()
HRESULT DirectShowMediaTypeEnum::Clone(IEnumMediaTypes **ppEnum)
{
- if (ppEnum) {
- if (m_pin)
- *ppEnum = new DirectShowMediaTypeEnum(m_pin);
- else
- *ppEnum = new DirectShowMediaTypeEnum(m_mediaTypes);
- return S_OK;
- } else {
+ if (!ppEnum)
return E_POINTER;
- }
+ *ppEnum = m_pin ? new DirectShowMediaTypeEnum(m_pin) : new DirectShowMediaTypeEnum(m_mediaTypes);
+ return S_OK;
}
diff --git a/src/plugins/directshow/common/directshowpin.cpp b/src/plugins/directshow/common/directshowpin.cpp
index 65b54b8e9..508a9b21d 100644
--- a/src/plugins/directshow/common/directshowpin.cpp
+++ b/src/plugins/directshow/common/directshowpin.cpp
@@ -56,10 +56,7 @@ DirectShowPin::DirectShowPin(DirectShowBaseFilter *filter, const QString &name,
{
}
-DirectShowPin::~DirectShowPin()
-{
-
-}
+DirectShowPin::~DirectShowPin() = default;
HRESULT DirectShowPin::Connect(IPin *pReceivePin, const AM_MEDIA_TYPE *pmt)
{
@@ -233,70 +230,60 @@ HRESULT DirectShowPin::Disconnect()
HRESULT DirectShowPin::ConnectedTo(IPin **ppPin)
{
- if (!ppPin) {
+ if (!ppPin)
return E_POINTER;
- } else {
- QMutexLocker locker(&m_mutex);
-
- if (!m_peerPin) {
- *ppPin = 0;
- return VFW_E_NOT_CONNECTED;
- } else {
- m_peerPin->AddRef();
- *ppPin = m_peerPin;
- return S_OK;
- }
+
+ QMutexLocker locker(&m_mutex);
+ if (!m_peerPin) {
+ *ppPin = 0;
+ return VFW_E_NOT_CONNECTED;
}
+ m_peerPin->AddRef();
+ *ppPin = m_peerPin;
+ return S_OK;
}
HRESULT DirectShowPin::ConnectionMediaType(AM_MEDIA_TYPE *pmt)
{
- if (!pmt) {
+ if (!pmt)
return E_POINTER;
- } else {
- QMutexLocker locker(&m_mutex);
- if (!m_peerPin) {
- DirectShowMediaType::init(pmt);
- return VFW_E_NOT_CONNECTED;
- } else {
- DirectShowMediaType::copy(pmt, &m_mediaType);
- return S_OK;
- }
+ QMutexLocker locker(&m_mutex);
+ if (!m_peerPin) {
+ DirectShowMediaType::init(pmt);
+ return VFW_E_NOT_CONNECTED;
}
+ DirectShowMediaType::copy(pmt, &m_mediaType);
+ return S_OK;
}
HRESULT DirectShowPin::QueryPinInfo(PIN_INFO *pInfo)
{
- if (!pInfo) {
+ if (!pInfo)
return E_POINTER;
- } else {
- pInfo->pFilter = m_filter;
- if (m_filter) {
- m_filter->AddRef();
- }
- pInfo->dir = m_direction;
- QString name = m_name;
- if (name.length() >= MAX_PIN_NAME)
- name.truncate(MAX_PIN_NAME - 1);
- int length = name.toWCharArray(pInfo->achName);
- pInfo->achName[length] = '\0';
+ pInfo->pFilter = m_filter;
+ if (m_filter)
+ m_filter->AddRef();
+ pInfo->dir = m_direction;
- return S_OK;
- }
+ QString name = m_name;
+ if (name.length() >= MAX_PIN_NAME)
+ name.truncate(MAX_PIN_NAME - 1);
+ int length = name.toWCharArray(pInfo->achName);
+ pInfo->achName[length] = '\0';
+
+ return S_OK;
}
HRESULT DirectShowPin::QueryId(LPWSTR *Id)
{
- if (!Id) {
+ if (!Id)
return E_POINTER;
- } else {
- const int bytes = (m_name.length() + 1) * 2;
- *Id = static_cast<LPWSTR>(::CoTaskMemAlloc(bytes));
- ::memcpy(*Id, m_name.utf16(), bytes);
- return S_OK;
- }
+ const int bytes = (m_name.length() + 1) * 2;
+ *Id = static_cast<LPWSTR>(::CoTaskMemAlloc(bytes));
+ ::memcpy(*Id, m_name.utf16(), bytes);
+ return S_OK;
}
HRESULT DirectShowPin::QueryAccept(const AM_MEDIA_TYPE *pmt)
@@ -312,12 +299,10 @@ HRESULT DirectShowPin::QueryAccept(const AM_MEDIA_TYPE *pmt)
HRESULT DirectShowPin::EnumMediaTypes(IEnumMediaTypes **ppEnum)
{
- if (!ppEnum) {
+ if (!ppEnum)
return E_POINTER;
- } else {
- *ppEnum = new DirectShowMediaTypeEnum(this);
- return S_OK;
- }
+ *ppEnum = new DirectShowMediaTypeEnum(this);
+ return S_OK;
}
HRESULT DirectShowPin::QueryInternalConnections(IPin **apPin, ULONG *nPin)
@@ -352,12 +337,10 @@ HRESULT DirectShowPin::NewSegment(REFERENCE_TIME tStart, REFERENCE_TIME tStop, d
HRESULT DirectShowPin::QueryDirection(PIN_DIRECTION *pPinDir)
{
- if (!pPinDir) {
+ if (!pPinDir)
return E_POINTER;
- } else {
- *pPinDir = m_direction;
- return S_OK;
- }
+ *pPinDir = m_direction;
+ return S_OK;
}
QList<DirectShowMediaType> DirectShowPin::supportedMediaTypes()
@@ -403,9 +386,7 @@ DirectShowOutputPin::DirectShowOutputPin(DirectShowBaseFilter *filter, const QSt
}
-DirectShowOutputPin::~DirectShowOutputPin()
-{
-}
+DirectShowOutputPin::~DirectShowOutputPin() = default;
HRESULT DirectShowOutputPin::completeConnection(IPin *pin)
{
@@ -511,10 +492,7 @@ DirectShowInputPin::DirectShowInputPin(DirectShowBaseFilter *filter, const QStri
ZeroMemory(&m_sampleProperties, sizeof(m_sampleProperties));
}
-DirectShowInputPin::~DirectShowInputPin()
-{
-
-}
+DirectShowInputPin::~DirectShowInputPin() = default;
HRESULT DirectShowInputPin::connectionEnded()
{
@@ -630,7 +608,8 @@ HRESULT DirectShowInputPin::Receive(IMediaSample *pSample)
IMediaSample2 *sample2;
if (SUCCEEDED(pSample->QueryInterface(IID_PPV_ARGS(&sample2)))) {
- hr = sample2->GetProperties(sizeof(m_sampleProperties), (PBYTE)&m_sampleProperties);
+ hr = sample2->GetProperties(sizeof(m_sampleProperties),
+ reinterpret_cast<PBYTE>(&m_sampleProperties));
sample2->Release();
if (FAILED(hr))
return hr;
diff --git a/src/plugins/directshow/common/directshowpin.h b/src/plugins/directshow/common/directshowpin.h
index 9598cf525..5e513d002 100644
--- a/src/plugins/directshow/common/directshowpin.h
+++ b/src/plugins/directshow/common/directshowpin.h
@@ -68,30 +68,30 @@ public:
virtual HRESULT setActive(bool active);
// IPin
- STDMETHODIMP Connect(IPin *pReceivePin, const AM_MEDIA_TYPE *pmt);
- STDMETHODIMP ReceiveConnection(IPin *pConnector, const AM_MEDIA_TYPE *pmt);
- STDMETHODIMP Disconnect();
- STDMETHODIMP ConnectedTo(IPin **ppPin);
+ STDMETHODIMP Connect(IPin *pReceivePin, const AM_MEDIA_TYPE *pmt) override;
+ STDMETHODIMP ReceiveConnection(IPin *pConnector, const AM_MEDIA_TYPE *pmt) override;
+ STDMETHODIMP Disconnect() override;
+ STDMETHODIMP ConnectedTo(IPin **ppPin) override;
- STDMETHODIMP ConnectionMediaType(AM_MEDIA_TYPE *pmt);
+ STDMETHODIMP ConnectionMediaType(AM_MEDIA_TYPE *pmt) override;
- STDMETHODIMP QueryPinInfo(PIN_INFO *pInfo);
- STDMETHODIMP QueryId(LPWSTR *Id);
+ STDMETHODIMP QueryPinInfo(PIN_INFO *pInfo) override;
+ STDMETHODIMP QueryId(LPWSTR *Id) override;
- STDMETHODIMP QueryAccept(const AM_MEDIA_TYPE *pmt);
+ STDMETHODIMP QueryAccept(const AM_MEDIA_TYPE *pmt) override;
- STDMETHODIMP EnumMediaTypes(IEnumMediaTypes **ppEnum);
+ STDMETHODIMP EnumMediaTypes(IEnumMediaTypes **ppEnum) override;
- STDMETHODIMP QueryInternalConnections(IPin **apPin, ULONG *nPin);
+ STDMETHODIMP QueryInternalConnections(IPin **apPin, ULONG *nPin) override;
- STDMETHODIMP EndOfStream();
+ STDMETHODIMP EndOfStream() override;
- STDMETHODIMP BeginFlush();
- STDMETHODIMP EndFlush();
+ STDMETHODIMP BeginFlush() override;
+ STDMETHODIMP EndFlush() override;
- STDMETHODIMP NewSegment(REFERENCE_TIME tStart, REFERENCE_TIME tStop, double dRate);
+ STDMETHODIMP NewSegment(REFERENCE_TIME tStart, REFERENCE_TIME tStop, double dRate) override;
- STDMETHODIMP QueryDirection(PIN_DIRECTION *pPinDir);
+ STDMETHODIMP QueryDirection(PIN_DIRECTION *pPinDir) override;
protected:
DirectShowPin(DirectShowBaseFilter *filter, const QString &name, PIN_DIRECTION direction);
@@ -140,27 +140,28 @@ class DirectShowInputPin : public DirectShowPin
, public IMemInputPin
{
public:
- virtual ~DirectShowInputPin();
+ ~DirectShowInputPin() override;
const AM_SAMPLE2_PROPERTIES *currentSampleProperties() const { return &m_sampleProperties; }
// DirectShowPin
- HRESULT connectionEnded();
- HRESULT setActive(bool active);
+ HRESULT connectionEnded() override;
+ HRESULT setActive(bool active) override;
// IPin
- STDMETHODIMP EndOfStream();
- STDMETHODIMP BeginFlush();
- STDMETHODIMP EndFlush();
+ STDMETHODIMP EndOfStream() override;
+ STDMETHODIMP BeginFlush() override;
+ STDMETHODIMP EndFlush() override;
// IMemInputPin
- STDMETHODIMP GetAllocator(IMemAllocator **ppAllocator);
- STDMETHODIMP NotifyAllocator(IMemAllocator *pAllocator, BOOL bReadOnly);
- STDMETHODIMP GetAllocatorRequirements(ALLOCATOR_PROPERTIES *pProps);
-
- STDMETHODIMP Receive(IMediaSample *pSample);
- STDMETHODIMP ReceiveMultiple(IMediaSample **pSamples, long nSamples, long *nSamplesProcessed);
- STDMETHODIMP ReceiveCanBlock();
+ STDMETHODIMP GetAllocator(IMemAllocator **ppAllocator) override;
+ STDMETHODIMP NotifyAllocator(IMemAllocator *pAllocator, BOOL bReadOnly) override;
+ STDMETHODIMP GetAllocatorRequirements(ALLOCATOR_PROPERTIES *pProps) override;
+
+ STDMETHODIMP Receive(IMediaSample *pSample) override;
+ STDMETHODIMP ReceiveMultiple(IMediaSample **pSamples, long nSamples,
+ long *nSamplesProcessed) override;
+ STDMETHODIMP ReceiveCanBlock() override;
protected:
DirectShowInputPin(DirectShowBaseFilter *filter, const QString &name);
diff --git a/src/plugins/directshow/common/directshowpinenum.cpp b/src/plugins/directshow/common/directshowpinenum.cpp
index e0ab58d19..20fa93d6e 100644
--- a/src/plugins/directshow/common/directshowpinenum.cpp
+++ b/src/plugins/directshow/common/directshowpinenum.cpp
@@ -87,21 +87,20 @@ HRESULT DirectShowPinEnum::QueryInterface(REFIID riid, void **ppv)
HRESULT DirectShowPinEnum::Next(ULONG cPins, IPin **ppPins, ULONG *pcFetched)
{
- if (ppPins && (pcFetched || cPins == 1)) {
- ULONG count = qBound<ULONG>(0, cPins, m_pins.count() - m_index);
-
- for (ULONG i = 0; i < count; ++i, ++m_index) {
- ppPins[i] = m_pins.at(m_index);
- ppPins[i]->AddRef();
- }
+ if (!ppPins || (!pcFetched && cPins != 1))
+ return E_POINTER;
- if (pcFetched)
- *pcFetched = count;
+ ULONG count = qBound<ULONG>(0, cPins, m_pins.count() - m_index);
- return count == cPins ? S_OK : S_FALSE;
- } else {
- return E_POINTER;
+ for (ULONG i = 0; i < count; ++i, ++m_index) {
+ ppPins[i] = m_pins.at(m_index);
+ ppPins[i]->AddRef();
}
+
+ if (pcFetched)
+ *pcFetched = count;
+
+ return count == cPins ? S_OK : S_FALSE;
}
HRESULT DirectShowPinEnum::Skip(ULONG cPins)
@@ -120,16 +119,10 @@ HRESULT DirectShowPinEnum::Reset()
HRESULT DirectShowPinEnum::Clone(IEnumPins **ppEnum)
{
- if (ppEnum) {
- if (m_filter)
- *ppEnum = new DirectShowPinEnum(m_filter);
- else
- *ppEnum = new DirectShowPinEnum(m_pins);
-
- return S_OK;
- } else {
+ if (!ppEnum)
return E_POINTER;
- }
+ *ppEnum = m_filter ? new DirectShowPinEnum(m_filter) : new DirectShowPinEnum(m_pins);
+ return S_OK;
}
QT_END_NAMESPACE
diff --git a/src/plugins/directshow/common/directshowsamplegrabber.cpp b/src/plugins/directshow/common/directshowsamplegrabber.cpp
index fb95370ca..fec59b538 100644
--- a/src/plugins/directshow/common/directshowsamplegrabber.cpp
+++ b/src/plugins/directshow/common/directshowsamplegrabber.cpp
@@ -51,20 +51,21 @@ static const CLSID cLSID_SampleGrabber = { 0xC1F400A0, 0x3F08, 0x11d3, { 0x9F, 0
class SampleGrabberCallbackPrivate : public ISampleGrabberCB
{
+ Q_DISABLE_COPY(SampleGrabberCallbackPrivate)
public:
explicit SampleGrabberCallbackPrivate(DirectShowSampleGrabber *grabber)
: m_ref(1)
, m_grabber(grabber)
{ }
- virtual ~SampleGrabberCallbackPrivate() { }
+ virtual ~SampleGrabberCallbackPrivate() = default;
- STDMETHODIMP_(ULONG) AddRef()
+ STDMETHODIMP_(ULONG) AddRef() override
{
return InterlockedIncrement(&m_ref);
}
- STDMETHODIMP_(ULONG) Release()
+ STDMETHODIMP_(ULONG) Release() override
{
ULONG ref = InterlockedDecrement(&m_ref);
if (ref == 0)
@@ -72,7 +73,7 @@ public:
return ref;
}
- STDMETHODIMP QueryInterface(REFIID riid, void **ppvObject)
+ STDMETHODIMP QueryInterface(REFIID riid, void **ppvObject) override
{
if (NULL == ppvObject)
return E_POINTER;
@@ -89,7 +90,7 @@ public:
return E_NOTIMPL;
}
- STDMETHODIMP SampleCB(double time, IMediaSample *mediaSample)
+ STDMETHODIMP SampleCB(double time, IMediaSample *mediaSample) override
{
if (m_grabber)
Q_EMIT m_grabber->sampleAvailable(time, mediaSample);
@@ -97,7 +98,7 @@ public:
return S_OK;
}
- STDMETHODIMP BufferCB(double time, BYTE *buffer, long bufferLen)
+ STDMETHODIMP BufferCB(double time, BYTE *buffer, long bufferLen) override
{
if (m_grabber) {
// Deep copy, the data might be modified or freed after the callback returns
diff --git a/src/plugins/directshow/common/directshowvideobuffer.h b/src/plugins/directshow/common/directshowvideobuffer.h
index 85e02b53d..a85a3ca34 100644
--- a/src/plugins/directshow/common/directshowvideobuffer.h
+++ b/src/plugins/directshow/common/directshowvideobuffer.h
@@ -50,14 +50,14 @@ class DirectShowVideoBuffer : public QAbstractVideoBuffer
{
public:
DirectShowVideoBuffer(IMediaSample *sample, int bytesPerLine);
- ~DirectShowVideoBuffer();
+ ~DirectShowVideoBuffer() override;
IMediaSample *sample() { return m_sample; }
- uchar *map(MapMode mode, int *numBytes, int *bytesPerLine);
- void unmap();
+ uchar *map(MapMode mode, int *numBytes, int *bytesPerLine) override;
+ void unmap() override;
- MapMode mapMode() const;
+ MapMode mapMode() const override;
private:
IMediaSample *m_sample;