encoder_video_x264.h 666 B

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