From: angiebird Date: Wed, 11 Dec 2019 23:43:48 +0000 (-0800) Subject: Add GetFramePixelCount to SimpleEncode X-Git-Tag: v1.9.0-rc1~125 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=a53b7e53e8eaf121c16a7f93117f85f38e5bd591;p=libvpx Add GetFramePixelCount to SimpleEncode Gets the total number of pixels of YUV planes per frame. Change-Id: Ifdf35190cdde1378de6d7e93ab4428868a5795fa --- diff --git a/test/simple_encode_test.cc b/test/simple_encode_test.cc index cc5012efd..33a66ed15 100644 --- a/test/simple_encode_test.cc +++ b/test/simple_encode_test.cc @@ -168,5 +168,12 @@ TEST(SimpleEncode, GetEncodeFrameInfo) { simple_encode.EndEncode(); } +TEST(SimpleEncode, GetFramePixelCount) { + SimpleEncode simple_encode(w, h, frame_rate_num, frame_rate_den, + target_bitrate, num_frames, infile_path); + EXPECT_EQ(simple_encode.GetFramePixelCount(), + static_cast(w * h * 3 / 2)); +} + } // namespace } // namespace vp9 diff --git a/vp9/simple_encode.cc b/vp9/simple_encode.cc index fc5bb4a6c..f756a8882 100644 --- a/vp9/simple_encode.cc +++ b/vp9/simple_encode.cc @@ -377,6 +377,22 @@ int SimpleEncode::GetCodingFrameNum() const { multi_layer_arf, allow_alt_ref); } +uint64_t SimpleEncode::GetFramePixelCount() const { + assert(frame_width_ % 2 == 0); + assert(frame_heigh_ % 2 == 0); + switch (impl_ptr_->img_fmt) { + case VPX_IMG_FMT_I420: return frame_width_ * frame_height_ * 3 / 2; + case VPX_IMG_FMT_I422: return frame_width_ * frame_height_ * 2; + case VPX_IMG_FMT_I444: return frame_width_ * frame_height_ * 3; + case VPX_IMG_FMT_I440: return frame_width_ * frame_height_ * 2; + case VPX_IMG_FMT_I42016: return frame_width_ * frame_height_ * 3 / 2; + case VPX_IMG_FMT_I42216: return frame_width_ * frame_height_ * 2; + case VPX_IMG_FMT_I44416: return frame_width_ * frame_height_ * 3; + case VPX_IMG_FMT_I44016: return frame_width_ * frame_height_ * 2; + default: return 0; + } +} + SimpleEncode::~SimpleEncode() { if (this->file_ != NULL) { fclose(this->file_); diff --git a/vp9/simple_encode.h b/vp9/simple_encode.h index b8085298b..33f6138e7 100644 --- a/vp9/simple_encode.h +++ b/vp9/simple_encode.h @@ -104,6 +104,9 @@ class SimpleEncode { // This function should be called after ComputeFirstPassStats(). int GetCodingFrameNum() const; + // Gets the total number of pixels of YUV planes per frame. + uint64_t GetFramePixelCount() const; + private: class EncodeImpl;