captions-mssapi.hpp 984 B

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647
  1. #pragma once
  2. #include "captions-handler.hpp"
  3. #include "captions-mssapi-stream.hpp"
  4. #include <util/windows/HRError.hpp>
  5. #include <util/windows/ComPtr.hpp>
  6. #include <util/windows/WinHandle.hpp>
  7. #include <util/windows/CoTaskMemPtr.hpp>
  8. #include <util/threading.h>
  9. #include <util/platform.h>
  10. #ifdef _MSC_VER
  11. #pragma warning(push)
  12. #pragma warning(disable : 4996)
  13. #endif
  14. #include <sphelper.h>
  15. #ifdef _MSC_VER
  16. #pragma warning(pop)
  17. #endif
  18. #include <obs.hpp>
  19. #include <thread>
  20. class mssapi_captions : public captions_handler {
  21. friend class CaptionStream;
  22. ComPtr<CaptionStream> audio;
  23. ComPtr<ISpObjectToken> token;
  24. ComPtr<ISpRecoGrammar> grammar;
  25. ComPtr<ISpRecognizer> recognizer;
  26. ComPtr<ISpRecoContext> context;
  27. HANDLE notify;
  28. WinHandle stop;
  29. std::thread t;
  30. bool started = false;
  31. void main_thread();
  32. public:
  33. mssapi_captions(captions_cb callback, const std::string &lang);
  34. virtual ~mssapi_captions();
  35. virtual void pcm_data(const void *data, size_t frames) override;
  36. };