encoder_video_nvenc.h 718 B

12345678910111213141516171819202122232425262728293031323334353637383940414243444546
  1. #ifndef ENCODER_VIDEO_NVENC
  2. #define ENCODER_VIDEO_NVENC
  3. #include "encoder_video.h"
  4. namespace am {
  5. class encoder_video_nvenc :
  6. public encoder_video
  7. {
  8. public:
  9. encoder_video_nvenc();
  10. ~encoder_video_nvenc();
  11. int init(int pic_width,
  12. int pic_height,
  13. int frame_rate,
  14. int bit_rate,
  15. int qb,
  16. int key_pic_sec = 2
  17. );
  18. int get_extradata_size();
  19. const uint8_t* get_extradata();
  20. AVCodecID get_codec_id();
  21. protected:
  22. void cleanup();
  23. void encode_loop();
  24. private:
  25. int encode(AVFrame *frame, AVPacket *packet);
  26. private:
  27. AVCodec *_encoder;
  28. AVCodecContext *_encoder_ctx;
  29. AVFrame *_frame;
  30. uint8_t *_buff;
  31. int _buff_size;
  32. int _y_size;
  33. };
  34. }
  35. #endif // !ENCODER_VIDEO_NVENC