encoder_video_factory.cpp 716 B

12345678910111213141516171819202122232425262728293031323334353637383940414243
  1. #include "encoder_video_factory.h"
  2. #include "encoder_video.h"
  3. #include "encoder_video_x264.h"
  4. #include "encoder_video_nvenc.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. {
  13. case EID_VIDEO_X264:
  14. *encoder = (encoder_video*)new encoder_video_x264();
  15. break;
  16. case EID_VIDEO_NVENC:
  17. *encoder = (encoder_video*)new encoder_video_nvenc();
  18. break;
  19. default:
  20. err = AE_UNSUPPORT;
  21. break;
  22. }
  23. return err;
  24. }
  25. void encoder_video_destroy(encoder_video ** encoder)
  26. {
  27. if (*encoder != nullptr) {
  28. (*encoder)->stop();
  29. delete *encoder;
  30. }
  31. *encoder = nullptr;
  32. }
  33. }