AtmoExternalCaptureInput.h
上传用户:kjfoods
上传日期:2020-07-06
资源大小:29949k
文件大小:2k
源码类别:

midi

开发平台:

Unix_Linux

  1. #ifndef _AtmoExternalCaptureInput_h_
  2. #define _AtmoExternalCaptureInput_h_
  3. #include "AtmoDefs.h"
  4. #if defined(WIN32)
  5. #   include <windows.h>
  6. # else
  7. #   if defined(_ATMO_VLC_PLUGIN_)
  8.        // need bitmap info header
  9. #      include <vlc_codecs.h>
  10. #   endif
  11. #endif
  12. #if !defined(_ATMO_VLC_PLUGIN_)
  13. #  include <comdef.h>
  14. #  include "AtmoWin_h.h"
  15. #endif
  16. #include "AtmoInput.h"
  17. #include "AtmoThread.h"
  18. #include "AtmoConfig.h"
  19. #include "AtmoDynData.h"
  20. #include "AtmoCalculations.h"
  21. class CAtmoExternalCaptureInput :
  22.       public CAtmoInput,
  23.       public CThread
  24. {
  25. protected:
  26. #if defined(_ATMO_VLC_PLUGIN_)
  27.     vlc_cond_t   m_WakeupCond;
  28.     vlc_mutex_t  m_WakeupLock;
  29. #else
  30.     HANDLE m_hWakeupEvent;
  31. #endif
  32.     BITMAPINFOHEADER m_CurrentFrameHeader;
  33.     void *m_pCurrentFramePixels;
  34.     virtual DWORD Execute(void);
  35.     void CalcColors();
  36. public:
  37.     /*
  38.        this method is called from the com server AtmoLiveViewControlImpl!
  39.        or inside videolan from the filter method to start a new processing
  40.     */
  41.     void DeliverNewSourceDataPaket(BITMAPINFOHEADER *bmpInfoHeader,void *pixelData);
  42. public:
  43.     CAtmoExternalCaptureInput(CAtmoDynData *pAtmoDynData);
  44.     virtual ~CAtmoExternalCaptureInput(void);
  45.     /*
  46.        Opens the input-device. Parameters (e.g. the device-name)
  47.        Returns true if the input-device was opened successfully.
  48.        input-device can be the GDI surface of screen (windows only)
  49.        or the videolan filter
  50.     */
  51.     virtual ATMO_BOOL Open(void);
  52.     /*
  53.      Closes the input-device.
  54.      Returns true if the input-device was closed successfully.
  55.     */
  56.     virtual ATMO_BOOL Close(void);
  57.     /*
  58.       this method is called from the AtmoLiveView thread - to get the
  59.       new color packet (a packet is an RGB triple for each channel)
  60.     */
  61.     virtual tColorPacket GetColorPacket(void);
  62.     /*
  63.       this method is also called from the AtmoLiveView thread - to
  64.       resync on a frame
  65.     */
  66.     virtual void WaitForNextFrame(DWORD timeout);
  67. };
  68. #endif