1c237f0ad875cde990bf9d89f41424b18809cc345henrike@webrtc.org// CrossThreadProgress.h
2c237f0ad875cde990bf9d89f41424b18809cc345henrike@webrtc.org
3c237f0ad875cde990bf9d89f41424b18809cc345henrike@webrtc.org#ifndef __CROSSTHREADPROGRESS_H
4c237f0ad875cde990bf9d89f41424b18809cc345henrike@webrtc.org#define __CROSSTHREADPROGRESS_H
5c237f0ad875cde990bf9d89f41424b18809cc345henrike@webrtc.org
6c237f0ad875cde990bf9d89f41424b18809cc345henrike@webrtc.org#include "../../ICoder.h"
7c237f0ad875cde990bf9d89f41424b18809cc345henrike@webrtc.org#include "../../../Windows/Synchronization.h"
8c237f0ad875cde990bf9d89f41424b18809cc345henrike@webrtc.org#include "../../../Common/MyCom.h"
9c237f0ad875cde990bf9d89f41424b18809cc345henrike@webrtc.org
10c237f0ad875cde990bf9d89f41424b18809cc345henrike@webrtc.orgclass CCrossThreadProgress:
11c237f0ad875cde990bf9d89f41424b18809cc345henrike@webrtc.org  public ICompressProgressInfo,
12c237f0ad875cde990bf9d89f41424b18809cc345henrike@webrtc.org  public CMyUnknownImp
13c237f0ad875cde990bf9d89f41424b18809cc345henrike@webrtc.org{
14c237f0ad875cde990bf9d89f41424b18809cc345henrike@webrtc.orgpublic:
15c237f0ad875cde990bf9d89f41424b18809cc345henrike@webrtc.org  const UInt64 *InSize;
16c237f0ad875cde990bf9d89f41424b18809cc345henrike@webrtc.org  const UInt64 *OutSize;
17c237f0ad875cde990bf9d89f41424b18809cc345henrike@webrtc.org  HRESULT Result;
18c237f0ad875cde990bf9d89f41424b18809cc345henrike@webrtc.org  NWindows::NSynchronization::CAutoResetEvent ProgressEvent;
19c237f0ad875cde990bf9d89f41424b18809cc345henrike@webrtc.org  NWindows::NSynchronization::CAutoResetEvent WaitEvent;
20c237f0ad875cde990bf9d89f41424b18809cc345henrike@webrtc.org
21c237f0ad875cde990bf9d89f41424b18809cc345henrike@webrtc.org  HRes Create()
22c237f0ad875cde990bf9d89f41424b18809cc345henrike@webrtc.org  {
23c237f0ad875cde990bf9d89f41424b18809cc345henrike@webrtc.org    RINOK(ProgressEvent.CreateIfNotCreated());
24c237f0ad875cde990bf9d89f41424b18809cc345henrike@webrtc.org    return WaitEvent.CreateIfNotCreated();
25c237f0ad875cde990bf9d89f41424b18809cc345henrike@webrtc.org  }
26c237f0ad875cde990bf9d89f41424b18809cc345henrike@webrtc.org  void Init()
27c237f0ad875cde990bf9d89f41424b18809cc345henrike@webrtc.org  {
28c237f0ad875cde990bf9d89f41424b18809cc345henrike@webrtc.org    ProgressEvent.Reset();
29c237f0ad875cde990bf9d89f41424b18809cc345henrike@webrtc.org    WaitEvent.Reset();
30c237f0ad875cde990bf9d89f41424b18809cc345henrike@webrtc.org  }
31c237f0ad875cde990bf9d89f41424b18809cc345henrike@webrtc.org
32c237f0ad875cde990bf9d89f41424b18809cc345henrike@webrtc.org  MY_UNKNOWN_IMP
33c237f0ad875cde990bf9d89f41424b18809cc345henrike@webrtc.org
34c237f0ad875cde990bf9d89f41424b18809cc345henrike@webrtc.org  STDMETHOD(SetRatioInfo)(const UInt64 *inSize, const UInt64 *outSize);
35c237f0ad875cde990bf9d89f41424b18809cc345henrike@webrtc.org};
36c237f0ad875cde990bf9d89f41424b18809cc345henrike@webrtc.org
37c237f0ad875cde990bf9d89f41424b18809cc345henrike@webrtc.org#endif
38c237f0ad875cde990bf9d89f41424b18809cc345henrike@webrtc.org