record_audio_dshow.h 709 B

12345678910111213141516171819202122232425262728293031323334353637383940414243
  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,
  11. const std::string &device_id,
  12. bool is_input);
  13. virtual int start();
  14. virtual int pause();
  15. virtual int resume();
  16. virtual int stop();
  17. virtual const AVRational get_time_base();
  18. virtual int64_t get_start_time();
  19. private:
  20. int decode(AVFrame *frame, AVPacket *packet);
  21. void record_loop();
  22. void cleanup();
  23. private:
  24. AVFormatContext *_fmt_ctx;
  25. AVInputFormat *_input_fmt;
  26. AVCodecContext *_codec_ctx;
  27. AVCodec *_codec;
  28. int _stream_index;
  29. };
  30. }