blob: 56351f4786d6aca1bef116bfb9671f317df85312 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
|
#pragma once
#include "stdafx.h"
class SimpleMediaSource;
class SimpleMediaStream : public RuntimeClass<
RuntimeClassFlags<ClassicCom>,
IMFMediaEventGenerator,
IMFMediaStream,
IMFMediaStream2>
{
friend class SimpleMediaSource;
public:
// IMFMediaEventGenerator
IFACEMETHOD(BeginGetEvent)(IMFAsyncCallback *pCallback, IUnknown *punkState);
IFACEMETHOD(EndGetEvent)(IMFAsyncResult *pResult, IMFMediaEvent **ppEvent);
IFACEMETHOD(GetEvent)(DWORD dwFlags, IMFMediaEvent **ppEvent);
IFACEMETHOD(QueueEvent)(MediaEventType met, REFGUID guidExtendedType, HRESULT hrStatus, const PROPVARIANT *pvValue);
// IMFMediaStream
IFACEMETHOD(GetMediaSource)(IMFMediaSource **ppMediaSource);
IFACEMETHOD(GetStreamDescriptor)(IMFStreamDescriptor **ppStreamDescriptor);
IFACEMETHOD(RequestSample)(IUnknown *pToken);
// IMFMediaStream2
IFACEMETHOD(SetStreamState)(MF_STREAM_STATE state);
IFACEMETHOD(GetStreamState)(_Out_ MF_STREAM_STATE *pState);
// Non-interface methods.
HRESULT RuntimeClassInitialize(_In_ SimpleMediaSource* pSource);
HRESULT Shutdown();
protected:
HRESULT _CheckShutdownRequiresLock();
HRESULT _SetStreamAttributes(IMFAttributes* pAttributeStore);
HRESULT _SetStreamDescriptorAttributes(IMFAttributes* pAttributeStore);
CriticalSection _critSec;
ComPtr<IMFMediaSource> _parent;
ComPtr<IMFMediaEventQueue> _spEventQueue;
ComPtr<IMFAttributes> _spAttributes;
ComPtr<IMFMediaType> _spMediaType;
ComPtr<IMFStreamDescriptor> _spStreamDesc;
bool _isShutdown = false;
bool _isSelected = false;
const DWORD STREAMINDEX = 0; // since there is only one stream
};
|