diff --git a/talk/libjingle.gyp b/talk/libjingle.gyp index 0c9135cd38..562f16a10b 100755 --- a/talk/libjingle.gyp +++ b/talk/libjingle.gyp @@ -463,8 +463,6 @@ 'media/webrtc/webrtcmediaengine.cc', 'media/webrtc/webrtcpassthroughrender.cc', 'media/webrtc/webrtcpassthroughrender.h', - 'media/webrtc/webrtctexturevideoframe.cc', - 'media/webrtc/webrtctexturevideoframe.h', 'media/webrtc/webrtcvideocapturer.cc', 'media/webrtc/webrtcvideocapturerfactory.h', 'media/webrtc/webrtcvideocapturerfactory.cc', diff --git a/talk/media/webrtc/webrtctexturevideoframe.cc b/talk/media/webrtc/webrtctexturevideoframe.cc deleted file mode 100644 index a23def5376..0000000000 --- a/talk/media/webrtc/webrtctexturevideoframe.cc +++ /dev/null @@ -1,46 +0,0 @@ -/* - * libjingle - * Copyright 2013 Google Inc. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are met: - * - * 1. Redistributions of source code must retain the above copyright notice, - * this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright notice, - * this list of conditions and the following disclaimer in the documentation - * and/or other materials provided with the distribution. - * 3. The name of the author may not be used to endorse or promote products - * derived from this software without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR IMPLIED - * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF - * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO - * EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, - * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, - * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; - * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, - * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR - * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF - * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - */ - -#include "talk/media/webrtc/webrtctexturevideoframe.h" - -#include "webrtc/base/refcount.h" - -namespace cricket { - -WebRtcTextureVideoFrame::WebRtcTextureVideoFrame(webrtc::NativeHandle* handle, - int width, - int height, - int64_t elapsed_time, - int64_t time_stamp) - : WebRtcVideoFrame(new rtc::RefCountedObject(handle, - width, - height), - elapsed_time, - time_stamp) { -} - -} // namespace cricket diff --git a/talk/media/webrtc/webrtctexturevideoframe.h b/talk/media/webrtc/webrtctexturevideoframe.h index bc1e52ed07..ebdfd53f2e 100644 --- a/talk/media/webrtc/webrtctexturevideoframe.h +++ b/talk/media/webrtc/webrtctexturevideoframe.h @@ -30,14 +30,10 @@ #include "talk/media/webrtc/webrtcvideoframe.h" +// TODO(magjed): Remove this when all external dependencies are updated. namespace cricket { -// A video frame backed by the texture via a native handle. -class WebRtcTextureVideoFrame : public WebRtcVideoFrame { - public: - WebRtcTextureVideoFrame(webrtc::NativeHandle* handle, int width, int height, - int64_t elapsed_time, int64_t time_stamp); -}; +typedef WebRtcVideoFrame WebRtcTextureVideoFrame; } // namespace cricket diff --git a/talk/media/webrtc/webrtctexturevideoframe_unittest.cc b/talk/media/webrtc/webrtctexturevideoframe_unittest.cc deleted file mode 100644 index 2aa481845c..0000000000 --- a/talk/media/webrtc/webrtctexturevideoframe_unittest.cc +++ /dev/null @@ -1,84 +0,0 @@ -/* - * libjingle - * Copyright 2013 Google Inc. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are met: - * - * 1. Redistributions of source code must retain the above copyright notice, - * this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright notice, - * this list of conditions and the following disclaimer in the documentation - * and/or other materials provided with the distribution. - * 3. The name of the author may not be used to endorse or promote products - * derived from this software without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR IMPLIED - * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF - * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO - * EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, - * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, - * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; - * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, - * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR - * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF - * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - */ - -#include "talk/media/webrtc/webrtctexturevideoframe.h" - -#include "talk/media/base/videocommon.h" -#include "webrtc/base/gunit.h" - -class NativeHandleImpl : public webrtc::NativeHandle { - public: - NativeHandleImpl() : ref_count_(0) {} - virtual ~NativeHandleImpl() {} - virtual int32_t AddRef() { return ++ref_count_; } - virtual int32_t Release() { return --ref_count_; } - virtual void* GetHandle() { return NULL; } - - int32_t ref_count() { return ref_count_; } - private: - int32_t ref_count_; -}; - -TEST(WebRtcTextureVideoFrameTest, InitialValues) { - NativeHandleImpl handle; - cricket::WebRtcTextureVideoFrame frame(&handle, 640, 480, 100, 200); - EXPECT_EQ(&handle, frame.GetNativeHandle()); - EXPECT_EQ(640u, frame.GetWidth()); - EXPECT_EQ(480u, frame.GetHeight()); - EXPECT_EQ(100, frame.GetElapsedTime()); - EXPECT_EQ(200, frame.GetTimeStamp()); - frame.SetElapsedTime(300); - EXPECT_EQ(300, frame.GetElapsedTime()); - frame.SetTimeStamp(400); - EXPECT_EQ(400, frame.GetTimeStamp()); -} - -TEST(WebRtcTextureVideoFrameTest, CopyFrame) { - NativeHandleImpl handle; - cricket::WebRtcTextureVideoFrame frame1(&handle, 640, 480, 100, 200); - cricket::VideoFrame* frame2 = frame1.Copy(); - EXPECT_EQ(frame1.GetNativeHandle(), frame2->GetNativeHandle()); - EXPECT_EQ(frame1.GetWidth(), frame2->GetWidth()); - EXPECT_EQ(frame1.GetHeight(), frame2->GetHeight()); - EXPECT_EQ(frame1.GetElapsedTime(), frame2->GetElapsedTime()); - EXPECT_EQ(frame1.GetTimeStamp(), frame2->GetTimeStamp()); - delete frame2; -} - -TEST(WebRtcTextureVideoFrameTest, RefCount) { - NativeHandleImpl handle; - EXPECT_EQ(0, handle.ref_count()); - cricket::WebRtcTextureVideoFrame* frame1 = - new cricket::WebRtcTextureVideoFrame(&handle, 640, 480, 100, 200); - EXPECT_EQ(1, handle.ref_count()); - cricket::VideoFrame* frame2 = frame1->Copy(); - EXPECT_EQ(2, handle.ref_count()); - delete frame2; - EXPECT_EQ(1, handle.ref_count()); - delete frame1; - EXPECT_EQ(0, handle.ref_count()); -} diff --git a/talk/media/webrtc/webrtcvideoengine.cc b/talk/media/webrtc/webrtcvideoengine.cc index 2f1acc1754..cb949c5ad9 100644 --- a/talk/media/webrtc/webrtcvideoengine.cc +++ b/talk/media/webrtc/webrtcvideoengine.cc @@ -46,7 +46,6 @@ #include "talk/media/webrtc/constants.h" #include "talk/media/webrtc/simulcast.h" #include "talk/media/webrtc/webrtcpassthroughrender.h" -#include "talk/media/webrtc/webrtctexturevideoframe.h" #include "talk/media/webrtc/webrtcvideocapturer.h" #include "talk/media/webrtc/webrtcvideodecoderfactory.h" #include "talk/media/webrtc/webrtcvideoencoderfactory.h" diff --git a/talk/media/webrtc/webrtcvideoframe.cc b/talk/media/webrtc/webrtcvideoframe.cc index 4c518ca830..052e6f29e2 100644 --- a/talk/media/webrtc/webrtcvideoframe.cc +++ b/talk/media/webrtc/webrtcvideoframe.cc @@ -53,6 +53,22 @@ WebRtcVideoFrame::WebRtcVideoFrame( rotation_(webrtc::kVideoRotation_0) { } +WebRtcVideoFrame::WebRtcVideoFrame(webrtc::NativeHandle* handle, + int width, + int height, + int64_t elapsed_time_ns, + int64_t time_stamp_ns) + : video_frame_buffer_( + new rtc::RefCountedObject(handle, + width, + height)), + pixel_width_(1), + pixel_height_(1), + elapsed_time_ns_(elapsed_time_ns), + time_stamp_ns_(time_stamp_ns), + rotation_(webrtc::kVideoRotation_0) { +} + WebRtcVideoFrame::~WebRtcVideoFrame() {} bool WebRtcVideoFrame::Init(uint32 format, diff --git a/talk/media/webrtc/webrtcvideoframe.h b/talk/media/webrtc/webrtcvideoframe.h index ec43af11fd..8aa28ae59a 100644 --- a/talk/media/webrtc/webrtcvideoframe.h +++ b/talk/media/webrtc/webrtcvideoframe.h @@ -45,6 +45,11 @@ class WebRtcVideoFrame : public VideoFrame { WebRtcVideoFrame(const rtc::scoped_refptr& buffer, int64_t elapsed_time_ns, int64_t time_stamp_ns); + WebRtcVideoFrame(webrtc::NativeHandle* handle, + int width, + int height, + int64_t elapsed_time_ns, + int64_t time_stamp_ns); ~WebRtcVideoFrame(); // Creates a frame from a raw sample with FourCC "format" and size "w" x "h". diff --git a/talk/media/webrtc/webrtcvideoframe_unittest.cc b/talk/media/webrtc/webrtcvideoframe_unittest.cc index dbdde92030..ff9a675f87 100644 --- a/talk/media/webrtc/webrtcvideoframe_unittest.cc +++ b/talk/media/webrtc/webrtcvideoframe_unittest.cc @@ -30,6 +30,19 @@ #include "talk/media/base/videoframe_unittest.h" #include "talk/media/webrtc/webrtcvideoframe.h" +class NativeHandleImpl : public webrtc::NativeHandle { + public: + NativeHandleImpl() : ref_count_(0) {} + virtual ~NativeHandleImpl() {} + virtual int32_t AddRef() { return ++ref_count_; } + virtual int32_t Release() { return --ref_count_; } + virtual void* GetHandle() { return NULL; } + + int32_t ref_count() { return ref_count_; } + private: + int32_t ref_count_; +}; + class WebRtcVideoFrameTest : public VideoFrameTest { public: WebRtcVideoFrameTest() { @@ -304,3 +317,29 @@ TEST_F(WebRtcVideoFrameTest, InitRotated90ApplyRotation) { TEST_F(WebRtcVideoFrameTest, InitRotated90DontApplyRotation) { TestInit(640, 360, webrtc::kVideoRotation_90, false); } + +TEST_F(WebRtcVideoFrameTest, TextureInitialValues) { + NativeHandleImpl handle; + cricket::WebRtcVideoFrame frame(&handle, 640, 480, 100, 200); + EXPECT_EQ(&handle, frame.GetNativeHandle()); + EXPECT_EQ(640u, frame.GetWidth()); + EXPECT_EQ(480u, frame.GetHeight()); + EXPECT_EQ(100, frame.GetElapsedTime()); + EXPECT_EQ(200, frame.GetTimeStamp()); + frame.SetElapsedTime(300); + EXPECT_EQ(300, frame.GetElapsedTime()); + frame.SetTimeStamp(400); + EXPECT_EQ(400, frame.GetTimeStamp()); +} + +TEST_F(WebRtcVideoFrameTest, CopyTextureFrame) { + NativeHandleImpl handle; + cricket::WebRtcVideoFrame frame1(&handle, 640, 480, 100, 200); + cricket::VideoFrame* frame2 = frame1.Copy(); + EXPECT_EQ(frame1.GetNativeHandle(), frame2->GetNativeHandle()); + EXPECT_EQ(frame1.GetWidth(), frame2->GetWidth()); + EXPECT_EQ(frame1.GetHeight(), frame2->GetHeight()); + EXPECT_EQ(frame1.GetElapsedTime(), frame2->GetElapsedTime()); + EXPECT_EQ(frame1.GetTimeStamp(), frame2->GetTimeStamp()); + delete frame2; +}