encoder_video_x264.h 762 B

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