remuxer_ffmpeg.h 1006 B

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556
  1. #ifndef REMUXER_FFMPEG
  2. #define REMUXER_FFMPEG
  3. #include <map>
  4. #include <atomic>
  5. #include <functional>
  6. #include <thread>
  7. #include <string>
  8. namespace am {
  9. typedef void(*cb_remux_progress)(const char *, int, int);
  10. typedef void(*cb_remux_state)(const char *, int, int);
  11. typedef struct _REMUXER_PARAM {
  12. char src[260];
  13. char dst[260];
  14. int64_t src_size;
  15. std::atomic_bool running;
  16. cb_remux_progress cb_progress;
  17. cb_remux_state cb_state;
  18. }REMUXER_PARAM;
  19. typedef std::function<void(REMUXER_PARAM*)> thread_remuxing;
  20. typedef struct _REMUXER_HANDLE {
  21. REMUXER_PARAM param;
  22. std::thread fn;
  23. }REMUXER_HANDLE;
  24. class remuxer_ffmpeg
  25. {
  26. private:
  27. remuxer_ffmpeg(){}
  28. ~remuxer_ffmpeg() { destroy_remux(); }
  29. public:
  30. static remuxer_ffmpeg *instance();
  31. static void release();
  32. int create_remux(const REMUXER_PARAM & param);
  33. void remove_remux(std::string src);
  34. void destroy_remux();
  35. private:
  36. std::map<std::string, REMUXER_HANDLE*> _handlers;
  37. };
  38. }
  39. #endif // !REMUXER_FFMPEG