From 04f50db953df5b8f48d1b928c93d2492b46e8b95 Mon Sep 17 00:00:00 2001 From: angiebird Date: Fri, 8 Nov 2019 20:31:10 -0800 Subject: [PATCH] Add simple_encode.cc/h Change-Id: I6dff1bda4bea760a32c2f8e38773e5913c830204 --- vp9/simple_encode.cc | 27 +++++++++++++++++++++++++++ vp9/simple_encode.h | 13 +++++++++++++ vp9/vp9cx.mk | 3 +++ 3 files changed, 43 insertions(+) create mode 100644 vp9/simple_encode.cc create mode 100644 vp9/simple_encode.h diff --git a/vp9/simple_encode.cc b/vp9/simple_encode.cc new file mode 100644 index 000000000..1c6c80813 --- /dev/null +++ b/vp9/simple_encode.cc @@ -0,0 +1,27 @@ +#include "vp9/common/vp9_onyxc_int.h" +#include "vp9/encoder/vp9_encoder.h" +#include "vp9/simple_encode.h" +#include "vp9/vp9_cx_iface.h" + +class SimpleEncode::impl { + public: + VP9_COMP *cpi; + BufferPool *buffer_pool; +}; + +SimpleEncode::SimpleEncode(int frame_width, int frame_height, + vpx_rational_t frame_rate, int target_bitrate) + : pimpl{ std::unique_ptr(new impl()) } { + VP9EncoderConfig oxcf = vp9_get_encoder_config( + frame_width, frame_height, frame_rate, target_bitrate, VPX_RC_LAST_PASS); + pimpl->buffer_pool = (BufferPool *)vpx_calloc(1, sizeof(*pimpl->buffer_pool)); + vp9_initialize_enc(); + pimpl->cpi = vp9_create_compressor(&oxcf, pimpl->buffer_pool); + vp9_update_compressor_with_img_fmt(pimpl->cpi, VPX_IMG_FMT_I420); +} + +SimpleEncode::~SimpleEncode() { + vpx_free(pimpl->buffer_pool); + vp9_remove_compressor(pimpl->cpi); + pimpl->cpi = nullptr; +} diff --git a/vp9/simple_encode.h b/vp9/simple_encode.h new file mode 100644 index 000000000..42785a095 --- /dev/null +++ b/vp9/simple_encode.h @@ -0,0 +1,13 @@ +#include +class SimpleEncode { + public: + SimpleEncode(int frame_width, int frame_height, vpx_rational_t frame_rate, + int target_bitrate); + ~SimpleEncode(); + SimpleEncode(SimpleEncode &&) = delete; + SimpleEncode &operator=(SimpleEncode &&) = delete; + + private: + class impl; + std::unique_ptr pimpl; +}; diff --git a/vp9/vp9cx.mk b/vp9/vp9cx.mk index 666f22882..ad774505c 100644 --- a/vp9/vp9cx.mk +++ b/vp9/vp9cx.mk @@ -18,6 +18,9 @@ VP9_CX_SRCS_REMOVE-no += $(VP9_COMMON_SRCS_REMOVE-no) VP9_CX_SRCS-yes += vp9_cx_iface.c VP9_CX_SRCS-yes += vp9_cx_iface.h +VP9_CX_SRCS-$(CONFIG_RATE_CTRL) += simple_encode.cc +VP9_CX_SRCS-$(CONFIG_RATE_CTRL) += simple_encode.h + VP9_CX_SRCS-yes += encoder/vp9_bitstream.c VP9_CX_SRCS-yes += encoder/vp9_context_tree.c VP9_CX_SRCS-yes += encoder/vp9_context_tree.h -- 2.40.0