muxer_file.h 1.1 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152
  1. #pragma once
  2. #include <atomic>
  3. #include <functional>
  4. #include <string>
  5. namespace am {
  6. class record_audio;
  7. class record_desktop;
  8. struct MUX_STREAM_T;
  9. struct MUX_SETTING_T;
  10. typedef std::function<void(const uint8_t *data, int size, int width, int height, int type)>
  11. cb_yuv_data;
  12. class muxer_file
  13. {
  14. public:
  15. muxer_file();
  16. virtual ~muxer_file();
  17. virtual int init(const char *output_file,
  18. record_desktop *source_desktop,
  19. record_audio **source_audios,
  20. const int source_audios_nb,
  21. const MUX_SETTING_T &setting)
  22. = 0;
  23. virtual int start() = 0;
  24. virtual int stop() = 0;
  25. virtual int pause() = 0;
  26. virtual int resume() = 0;
  27. inline void registe_yuv_data(cb_yuv_data on_yuv_data) { _on_yuv_data = on_yuv_data; }
  28. inline void set_preview_enabled(bool enable) { _preview_enabled = enable; }
  29. protected:
  30. cb_yuv_data _on_yuv_data;
  31. std::atomic_bool _inited;
  32. std::atomic_bool _running;
  33. std::atomic_bool _paused;
  34. std::atomic_bool _preview_enabled;
  35. bool _have_v, _have_a;
  36. std::string _output_file;
  37. };
  38. } // namespace am