record_audio_dshow.h 752 B

12345678910111213141516171819202122232425262728293031323334353637383940
  1. #pragma once
  2. #include <string>
  3. #include "record_audio.h"
  4. namespace am {
  5. class record_audio_dshow : public record_audio
  6. {
  7. public:
  8. record_audio_dshow();
  9. ~record_audio_dshow();
  10. virtual int init(const std::string &device_name, const std::string &device_id, bool is_input);
  11. virtual int start();
  12. virtual int pause();
  13. virtual int resume();
  14. virtual int stop();
  15. virtual const AVRational get_time_base();
  16. virtual int64_t get_start_time();
  17. private:
  18. int decode(AVFrame *frame, AVPacket *packet);
  19. void record_loop();
  20. void cleanup();
  21. private:
  22. AVFormatContext *_fmt_ctx;
  23. FFmpegInputFormat *_input_fmt;
  24. AVCodecContext *_codec_ctx;
  25. AVCodec *_codec;
  26. int _stream_index;
  27. };
  28. } // namespace am