1 /* Webcamoid, webcam capture application.
2  * Copyright (C) 2018  Gonzalo Exequiel Pedone
3  *
4  * Webcamoid is free software: you can redistribute it and/or modify
5  * it under the terms of the GNU General Public License as published by
6  * the Free Software Foundation, either version 3 of the License, or
7  * (at your option) any later version.
8  *
9  * Webcamoid is distributed in the hope that it will be useful,
10  * but WITHOUT ANY WARRANTY; without even the implied warranty of
11  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
12  * GNU General Public License for more details.
13  *
14  * You should have received a copy of the GNU General Public License
15  * along with Webcamoid. If not, see <http://www.gnu.org/licenses/>.
16  *
17  * Web-Site: http://webcamoid.github.io/
18  */
19 
20 #ifndef REFERENCECLOCK_H
21 #define REFERENCECLOCK_H
22 
23 #include <strmif.h>
24 
25 #include "cunknown.h"
26 
27 #define TIME_BASE 1.0e7
28 
29 namespace AkVCam
30 {
31     class ReferenceClockPrivate;
32 
33     class ReferenceClock:
34             public IReferenceClock,
35             public CUnknown
36     {
37         public:
38             ReferenceClock();
39             virtual ~ReferenceClock();
40 
41             DECLARE_IUNKNOWN(IID_IReferenceClock)
42 
43             HRESULT STDMETHODCALLTYPE GetTime(REFERENCE_TIME *pTime);
44             HRESULT STDMETHODCALLTYPE AdviseTime(REFERENCE_TIME baseTime,
45                                                  REFERENCE_TIME streamTime,
46                                                  HEVENT hEvent,
47                                                  DWORD_PTR *pdwAdviseCookie);
48             HRESULT STDMETHODCALLTYPE AdvisePeriodic(REFERENCE_TIME startTime,
49                                                      REFERENCE_TIME periodTime,
50                                                      HSEMAPHORE hSemaphore,
51                                                      DWORD_PTR *pdwAdviseCookie);
52             HRESULT STDMETHODCALLTYPE Unadvise(DWORD_PTR dwAdviseCookie);
53 
54         private:
55             ReferenceClockPrivate *d;
56     };
57 }
58 
59 #endif // REFERENCECLOCK_H
60