I420VideoFrame: Remove functions set_width, set_height, and ResetSize

The functions set_width, set_height, and ResetSize in I420VideoFrame are not needed and just add complexity.

R=perkj@webrtc.org, stefan@webrtc.org, tommi@webrtc.org

Review URL: https://webrtc-codereview.appspot.com/39939004

Cr-Commit-Position: refs/heads/master@{#8434}
git-svn-id: http://webrtc.googlecode.com/svn/trunk@8434 4adac7df-926f-26a2-2b94-8c16560cd09d
diff --git a/webrtc/common_video/i420_video_frame.cc b/webrtc/common_video/i420_video_frame.cc
index 8dbbe3a..4d82f1e 100644
--- a/webrtc/common_video/i420_video_frame.cc
+++ b/webrtc/common_video/i420_video_frame.cc
@@ -151,33 +151,8 @@
   return -1;
 }
 
-int I420VideoFrame::set_width(int width) {
-  if (CheckDimensions(width, height_,
-                      y_plane_.stride(), u_plane_.stride(),
-                      v_plane_.stride()) < 0)
-    return -1;
-  width_ = width;
-  return 0;
-}
-
-int I420VideoFrame::set_height(int height) {
-  if (CheckDimensions(width_, height,
-                      y_plane_.stride(), u_plane_.stride(),
-                      v_plane_.stride()) < 0)
-    return -1;
-  height_ = height;
-  return 0;
-}
-
 bool I420VideoFrame::IsZeroSize() const {
-  return (y_plane_.IsZeroSize() && u_plane_.IsZeroSize() &&
-    v_plane_.IsZeroSize());
-}
-
-void I420VideoFrame::ResetSize() {
-  y_plane_.ResetSize();
-  u_plane_.ResetSize();
-  v_plane_.ResetSize();
+  return width() == 0 || height() == 0;
 }
 
 void* I420VideoFrame::native_handle() const { return NULL; }
diff --git a/webrtc/common_video/i420_video_frame_unittest.cc b/webrtc/common_video/i420_video_frame_unittest.cc
index 83782eb..7779762 100644
--- a/webrtc/common_video/i420_video_frame_unittest.cc
+++ b/webrtc/common_video/i420_video_frame_unittest.cc
@@ -44,13 +44,8 @@
 TEST(TestI420VideoFrame, WidthHeightValues) {
   I420VideoFrame frame;
   const int valid_value = 10;
-  const int invalid_value = -1;
   EXPECT_EQ(0, frame.CreateEmptyFrame(10, 10, 10, 14, 90));
   EXPECT_EQ(valid_value, frame.width());
-  EXPECT_EQ(invalid_value, frame.set_width(invalid_value));
-  EXPECT_EQ(valid_value, frame.height());
-  EXPECT_EQ(valid_value, frame.height());
-  EXPECT_EQ(invalid_value, frame.set_height(0));
   EXPECT_EQ(valid_value, frame.height());
   frame.set_timestamp(123u);
   EXPECT_EQ(123u, frame.timestamp());
@@ -76,14 +71,6 @@
             frame.allocated_size(kVPlane));
 }
 
-TEST(TestI420VideoFrame, ResetSize) {
-  I420VideoFrame frame;
-  EXPECT_EQ(0, frame. CreateEmptyFrame(10, 10, 12, 14, 220));
-  EXPECT_FALSE(frame.IsZeroSize());
-  frame.ResetSize();
-  EXPECT_TRUE(frame.IsZeroSize());
-}
-
 TEST(TestI420VideoFrame, CopyFrame) {
   uint32_t timestamp = 1;
   int64_t ntp_time_ms = 2;
diff --git a/webrtc/common_video/interface/texture_video_frame.h b/webrtc/common_video/interface/texture_video_frame.h
index 9a1fee0..225a0ec 100644
--- a/webrtc/common_video/interface/texture_video_frame.h
+++ b/webrtc/common_video/interface/texture_video_frame.h
@@ -68,7 +68,6 @@
   virtual int allocated_size(PlaneType type) const OVERRIDE;
   virtual int stride(PlaneType type) const OVERRIDE;
   virtual bool IsZeroSize() const OVERRIDE;
-  virtual void ResetSize() OVERRIDE;
   virtual void* native_handle() const OVERRIDE;
 
  protected:
diff --git a/webrtc/common_video/texture_video_frame.cc b/webrtc/common_video/texture_video_frame.cc
index ce6a040..7772f12 100644
--- a/webrtc/common_video/texture_video_frame.cc
+++ b/webrtc/common_video/texture_video_frame.cc
@@ -20,8 +20,8 @@
                                      uint32_t timestamp,
                                      int64_t render_time_ms)
     : handle_(handle) {
-  set_width(width);
-  set_height(height);
+  width_ = width;
+  height_ = height;
   set_timestamp(timestamp);
   set_render_time_ms(render_time_ms);
 }
@@ -107,10 +107,6 @@
   return true;
 }
 
-void TextureVideoFrame::ResetSize() {
-  assert(false);  // Should not be called.
-}
-
 void* TextureVideoFrame::native_handle() const { return handle_.get(); }
 
 int TextureVideoFrame::CheckDimensions(
diff --git a/webrtc/common_video/texture_video_frame_unittest.cc b/webrtc/common_video/texture_video_frame_unittest.cc
index 408f5f6..632521e 100644
--- a/webrtc/common_video/texture_video_frame_unittest.cc
+++ b/webrtc/common_video/texture_video_frame_unittest.cc
@@ -40,10 +40,6 @@
   EXPECT_EQ(10, frame.render_time_ms());
   EXPECT_EQ(&handle, frame.native_handle());
 
-  EXPECT_EQ(0, frame.set_width(320));
-  EXPECT_EQ(320, frame.width());
-  EXPECT_EQ(0, frame.set_height(240));
-  EXPECT_EQ(240, frame.height());
   frame.set_timestamp(200);
   EXPECT_EQ(200u, frame.timestamp());
   frame.set_render_time_ms(20);
diff --git a/webrtc/modules/utility/source/file_player_impl.cc b/webrtc/modules/utility/source/file_player_impl.cc
index 5d935fb..dc30d0a 100644
--- a/webrtc/modules/utility/source/file_player_impl.cc
+++ b/webrtc/modules/utility/source/file_player_impl.cc
@@ -511,7 +511,6 @@
     // No new video data read from file.
     if(_encodedData.payloadSize == 0)
     {
-        videoFrame.ResetSize();
         return -1;
     }
     int32_t retVal = 0;
diff --git a/webrtc/modules/utility/source/video_coder.cc b/webrtc/modules/utility/source/video_coder.cc
index 5471e80..2aff128 100644
--- a/webrtc/modules/utility/source/video_coder.cc
+++ b/webrtc/modules/utility/source/video_coder.cc
@@ -63,7 +63,6 @@
 int32_t VideoCoder::Decode(I420VideoFrame& decodedVideo,
                            const EncodedVideoData& encodedData)
 {
-    decodedVideo.ResetSize();
     if(encodedData.payloadSize <= 0)
     {
         return -1;
diff --git a/webrtc/modules/utility/source/video_frames_queue.cc b/webrtc/modules/utility/source/video_frames_queue.cc
index 9ade8b5..d5077d8 100644
--- a/webrtc/modules/utility/source/video_frames_queue.cc
+++ b/webrtc/modules/utility/source/video_frames_queue.cc
@@ -93,10 +93,7 @@
   // No need to reuse texture frames because they do not allocate memory.
   if (ptrOldFrame->native_handle() == NULL) {
     ptrOldFrame->set_timestamp(0);
-    ptrOldFrame->set_width(0);
-    ptrOldFrame->set_height(0);
     ptrOldFrame->set_render_time_ms(0);
-    ptrOldFrame->ResetSize();
     _emptyFrames.push_back(ptrOldFrame);
   } else {
     delete ptrOldFrame;
diff --git a/webrtc/modules/video_coding/main/source/video_sender_unittest.cc b/webrtc/modules/video_coding/main/source/video_sender_unittest.cc
index ee387a0..c9d6648 100644
--- a/webrtc/modules/video_coding/main/source/video_sender_unittest.cc
+++ b/webrtc/modules/video_coding/main/source/video_sender_unittest.cc
@@ -71,12 +71,12 @@
 class EmptyFrameGenerator : public FrameGenerator {
  public:
   virtual I420VideoFrame* NextFrame() OVERRIDE {
-    frame_.ResetSize();
-    return &frame_;
+    frame_.reset(new I420VideoFrame());
+    return frame_.get();
   }
 
  private:
-  I420VideoFrame frame_;
+  scoped_ptr<I420VideoFrame> frame_;
 };
 
 class PacketizationCallback : public VCMPacketizationCallback {
diff --git a/webrtc/modules/video_processing/main/test/unit_test/video_processing_unittest.cc b/webrtc/modules/video_processing/main/test/unit_test/video_processing_unittest.cc
index cbe939b..dcf1842 100644
--- a/webrtc/modules/video_processing/main/test/unit_test/video_processing_unittest.cc
+++ b/webrtc/modules/video_processing/main/test/unit_test/video_processing_unittest.cc
@@ -91,8 +91,6 @@
   VideoProcessingModule::FrameStats stats;
   // Video frame with unallocated buffer.
   I420VideoFrame videoFrame;
-  videoFrame.set_width(width_);
-  videoFrame.set_height(height_);
 
   EXPECT_EQ(-3, vpm_->GetFrameStats(&stats, videoFrame));
 
@@ -120,21 +118,21 @@
 TEST_F(VideoProcessingModuleTest, HandleBadSize) {
   VideoProcessingModule::FrameStats stats;
 
-  video_frame_.ResetSize();
-  video_frame_.set_width(width_);
-  video_frame_.set_height(0);
-  EXPECT_EQ(-3, vpm_->GetFrameStats(&stats, video_frame_));
+  I420VideoFrame bad_frame;
+  bad_frame.CreateEmptyFrame(width_, 0, width_, (width_ + 1) / 2,
+                             (width_ + 1) / 2);
+  EXPECT_EQ(-3, vpm_->GetFrameStats(&stats, bad_frame));
 
-  EXPECT_EQ(-1, vpm_->ColorEnhancement(&video_frame_));
+  EXPECT_EQ(-1, vpm_->ColorEnhancement(&bad_frame));
 
-  EXPECT_EQ(-1, vpm_->Deflickering(&video_frame_, &stats));
+  EXPECT_EQ(-1, vpm_->Deflickering(&bad_frame, &stats));
 
-  EXPECT_EQ(-3, vpm_->BrightnessDetection(video_frame_, stats));
+  EXPECT_EQ(-3, vpm_->BrightnessDetection(bad_frame, stats));
 
   EXPECT_EQ(VPM_PARAMETER_ERROR, vpm_->SetTargetResolution(0,0,0));
 
   I420VideoFrame *out_frame = NULL;
-  EXPECT_EQ(VPM_PARAMETER_ERROR, vpm_->PreprocessFrame(video_frame_,
+  EXPECT_EQ(VPM_PARAMETER_ERROR, vpm_->PreprocessFrame(bad_frame,
                                                        &out_frame));
 }
 
@@ -335,8 +333,10 @@
                int cropped_width,
                int cropped_height,
                I420VideoFrame* cropped_frame) {
-  cropped_frame->set_width(cropped_width);
-  cropped_frame->set_height(cropped_height);
+  cropped_frame->CreateEmptyFrame(cropped_width, cropped_height,
+                                  cropped_width,
+                                  (cropped_width + 1) / 2,
+                                  (cropped_width + 1) / 2);
   EXPECT_EQ(0,
             ConvertToI420(kI420, source_data, offset_x, offset_y, source_width,
                           source_height, 0, kRotateNone, cropped_frame));
diff --git a/webrtc/modules/video_render/video_render_frames.cc b/webrtc/modules/video_render/video_render_frames.cc
index d790877..3df4ea4 100644
--- a/webrtc/modules/video_render/video_render_frames.cc
+++ b/webrtc/modules/video_render/video_render_frames.cc
@@ -125,7 +125,6 @@
 int32_t VideoRenderFrames::ReturnFrame(I420VideoFrame* old_frame) {
   // No need to reuse texture frames because they do not allocate memory.
   if (old_frame->native_handle() == NULL) {
-    old_frame->ResetSize();
     old_frame->set_timestamp(0);
     old_frame->set_render_time_ms(0);
     empty_frames_.push_back(old_frame);
diff --git a/webrtc/video_engine/vie_capturer.cc b/webrtc/video_engine/vie_capturer.cc
index 76aef1f..f9e42e6 100644
--- a/webrtc/video_engine/vie_capturer.cc
+++ b/webrtc/video_engine/vie_capturer.cc
@@ -599,7 +599,6 @@
   if (deliver_frame_ == NULL)
     deliver_frame_.reset(new I420VideoFrame());
   deliver_frame_->SwapFrame(captured_frame_.get());
-  captured_frame_->ResetSize();
   return true;
 }
 
diff --git a/webrtc/video_frame.h b/webrtc/video_frame.h
index 2dd7c61..80b1582 100644
--- a/webrtc/video_frame.h
+++ b/webrtc/video_frame.h
@@ -111,12 +111,6 @@
   // Get allocated stride per plane.
   virtual int stride(PlaneType type) const;
 
-  // Set frame width.
-  virtual int set_width(int width);
-
-  // Set frame height.
-  virtual int set_height(int height);
-
   // Get frame width.
   virtual int width() const { return width_; }
 
@@ -163,10 +157,6 @@
   // Return true if underlying plane buffers are of zero size, false if not.
   virtual bool IsZeroSize() const;
 
-  // Reset underlying plane buffers sizes to 0. This function doesn't
-  // clear memory.
-  virtual void ResetSize();
-
   // Return the handle of the underlying video frame. This is used when the
   // frame is backed by a texture. The object should be destroyed when it is no
   // longer in use, so the underlying resource can be freed.
@@ -180,6 +170,8 @@
                               int stride_y,
                               int stride_u,
                               int stride_v);
+  int width_;
+  int height_;
 
  private:
   // Get the pointer to a specific plane.
@@ -190,8 +182,6 @@
   Plane y_plane_;
   Plane u_plane_;
   Plane v_plane_;
-  int width_;
-  int height_;
   uint32_t timestamp_;
   int64_t ntp_time_ms_;
   int64_t render_time_ms_;