]> granicus.if.org Git - libvpx/commitdiff
Add simple_encode.cc/h
authorangiebird <angiebird@google.com>
Sat, 9 Nov 2019 04:31:10 +0000 (20:31 -0800)
committerangiebird <angiebird@google.com>
Fri, 15 Nov 2019 23:10:50 +0000 (15:10 -0800)
Change-Id: I6dff1bda4bea760a32c2f8e38773e5913c830204

vp9/simple_encode.cc [new file with mode: 0644]
vp9/simple_encode.h [new file with mode: 0644]
vp9/vp9cx.mk

diff --git a/vp9/simple_encode.cc b/vp9/simple_encode.cc
new file mode 100644 (file)
index 0000000..1c6c808
--- /dev/null
@@ -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<impl>(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 (file)
index 0000000..42785a0
--- /dev/null
@@ -0,0 +1,13 @@
+#include <memory>
+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<impl> pimpl;
+};
index 666f228827fa34807cd3440488f036a450b84217..ad774505c60756b17d47accb731dea857401c6a3 100644 (file)
@@ -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