encoder_video_factory.cpp 785 B

12345678910111213141516171819202122232425262728293031323334353637383940
  1. #include "encoder_video_factory.h"
  2. #include "encoder_video.h"
  3. #include "encoder_video_nvenc.h"
  4. #include "encoder_video_x264.h"
  5. #include "error_define.h"
  6. #include "log_helper.h"
  7. namespace am {
  8. int encoder_video_new(ENCODER_VIDEO_ID id, encoder_video **encoder)
  9. {
  10. int err = AE_NO;
  11. switch (id) {
  12. case EID_VIDEO_X264:
  13. *encoder = (encoder_video *) new encoder_video_x264();
  14. break;
  15. case EID_VIDEO_NVENC:
  16. *encoder = (encoder_video *) new encoder_video_nvenc();
  17. break;
  18. default:
  19. err = AE_UNSUPPORT;
  20. break;
  21. }
  22. return err;
  23. }
  24. void encoder_video_destroy(encoder_video **encoder)
  25. {
  26. if (*encoder != nullptr) {
  27. (*encoder)->stop();
  28. delete *encoder;
  29. }
  30. *encoder = nullptr;
  31. }
  32. } // namespace am