muxer_file.h 1.0 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859
  1. #pragma once
  2. #include <functional>
  3. #include <atomic>
  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)> cb_yuv_data;
  11. class muxer_file
  12. {
  13. public:
  14. muxer_file();
  15. virtual ~muxer_file();
  16. virtual int init(
  17. 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) {
  28. _on_yuv_data = on_yuv_data;
  29. }
  30. inline void set_preview_enabled(bool enable) {
  31. _preview_enabled = enable;
  32. }
  33. protected:
  34. cb_yuv_data _on_yuv_data;
  35. std::atomic_bool _inited;
  36. std::atomic_bool _running;
  37. std::atomic_bool _paused;
  38. std::atomic_bool _preview_enabled;
  39. bool _have_v, _have_a;
  40. std::string _output_file;
  41. };
  42. }