Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(102)

Side by Side Diff: webrtc/video/video_send_stream_tests.cc

Issue 1158273010: Re-land "Convert native handles to buffers before encoding." (Closed) Base URL: https://chromium.googlesource.com/external/webrtc.git@master
Patch Set: Created 5 years, 6 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
« no previous file with comments | « webrtc/video/video_encoder_unittest.cc ('k') | webrtc/video_encoder.h » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 /* 1 /*
2 * Copyright (c) 2013 The WebRTC project authors. All Rights Reserved. 2 * Copyright (c) 2013 The WebRTC project authors. All Rights Reserved.
3 * 3 *
4 * Use of this source code is governed by a BSD-style license 4 * Use of this source code is governed by a BSD-style license
5 * that can be found in the LICENSE file in the root of the source 5 * that can be found in the LICENSE file in the root of the source
6 * tree. An additional intellectual property rights grant can be found 6 * tree. An additional intellectual property rights grant can be found
7 * in the file PATENTS. All contributing project authors may 7 * in the file PATENTS. All contributing project authors may
8 * be found in the AUTHORS file in the root of the source tree. 8 * be found in the AUTHORS file in the root of the source tree.
9 */ 9 */
10 #include <algorithm> // max 10 #include <algorithm> // max
(...skipping 12 matching lines...) Expand all
23 #include "webrtc/modules/rtp_rtcp/source/rtcp_sender.h" 23 #include "webrtc/modules/rtp_rtcp/source/rtcp_sender.h"
24 #include "webrtc/modules/rtp_rtcp/source/rtcp_utility.h" 24 #include "webrtc/modules/rtp_rtcp/source/rtcp_utility.h"
25 #include "webrtc/system_wrappers/interface/critical_section_wrapper.h" 25 #include "webrtc/system_wrappers/interface/critical_section_wrapper.h"
26 #include "webrtc/system_wrappers/interface/event_wrapper.h" 26 #include "webrtc/system_wrappers/interface/event_wrapper.h"
27 #include "webrtc/system_wrappers/interface/logging.h" 27 #include "webrtc/system_wrappers/interface/logging.h"
28 #include "webrtc/system_wrappers/interface/ref_count.h" 28 #include "webrtc/system_wrappers/interface/ref_count.h"
29 #include "webrtc/system_wrappers/interface/sleep.h" 29 #include "webrtc/system_wrappers/interface/sleep.h"
30 #include "webrtc/system_wrappers/interface/thread_wrapper.h" 30 #include "webrtc/system_wrappers/interface/thread_wrapper.h"
31 #include "webrtc/test/call_test.h" 31 #include "webrtc/test/call_test.h"
32 #include "webrtc/test/configurable_frame_size_encoder.h" 32 #include "webrtc/test/configurable_frame_size_encoder.h"
33 #include "webrtc/test/fake_texture_frame.h"
33 #include "webrtc/test/null_transport.h" 34 #include "webrtc/test/null_transport.h"
34 #include "webrtc/test/testsupport/perf_test.h" 35 #include "webrtc/test/testsupport/perf_test.h"
35 #include "webrtc/video/send_statistics_proxy.h" 36 #include "webrtc/video/send_statistics_proxy.h"
36 #include "webrtc/video/transport_adapter.h" 37 #include "webrtc/video/transport_adapter.h"
37 #include "webrtc/video_frame.h" 38 #include "webrtc/video_frame.h"
38 #include "webrtc/video_send_stream.h" 39 #include "webrtc/video_send_stream.h"
39 40
40 namespace webrtc { 41 namespace webrtc {
41 42
42 enum VideoFormat { kGeneric, kVP8, }; 43 enum VideoFormat { kGeneric, kVP8, };
43 44
44 void ExpectEqualFrames(const VideoFrame& frame1, const VideoFrame& frame2); 45 void ExpectEqualFrames(const VideoFrame& frame1, const VideoFrame& frame2);
45 void ExpectEqualTextureFrames(const VideoFrame& frame1, 46 void ExpectEqualTextureFrames(const VideoFrame& frame1,
46 const VideoFrame& frame2); 47 const VideoFrame& frame2);
47 void ExpectEqualBufferFrames(const VideoFrame& frame1, 48 void ExpectEqualBufferFrames(const VideoFrame& frame1,
48 const VideoFrame& frame2); 49 const VideoFrame& frame2);
49 void ExpectEqualFramesVector(const std::vector<VideoFrame>& frames1, 50 void ExpectEqualFramesVector(const std::vector<VideoFrame>& frames1,
50 const std::vector<VideoFrame>& frames2); 51 const std::vector<VideoFrame>& frames2);
51 VideoFrame CreateVideoFrame(int width, int height, uint8_t data); 52 VideoFrame CreateVideoFrame(int width, int height, uint8_t data);
52 53
53 class FakeNativeHandle {
54 public:
55 FakeNativeHandle() {}
56 ~FakeNativeHandle() {}
57 };
58
59 void DeleteNativeHandle(FakeNativeHandle* handle) {
60 delete handle;
61 }
62
63 class VideoSendStreamTest : public test::CallTest { 54 class VideoSendStreamTest : public test::CallTest {
64 protected: 55 protected:
65 void TestNackRetransmission(uint32_t retransmit_ssrc, 56 void TestNackRetransmission(uint32_t retransmit_ssrc,
66 uint8_t retransmit_payload_type); 57 uint8_t retransmit_payload_type);
67 void TestPacketFragmentationSize(VideoFormat format, bool with_fec); 58 void TestPacketFragmentationSize(VideoFormat format, bool with_fec);
68 }; 59 };
69 60
70 TEST_F(VideoSendStreamTest, CanStartStartedStream) { 61 TEST_F(VideoSendStreamTest, CanStartStartedStream) {
71 test::NullTransport transport; 62 test::NullTransport transport;
72 Call::Config call_config(&transport); 63 Call::Config call_config(&transport);
(...skipping 1004 matching lines...) Expand 10 before | Expand all | Expand 10 after
1077 CreateSendConfig(1); 1068 CreateSendConfig(1);
1078 FrameObserver observer; 1069 FrameObserver observer;
1079 send_config_.pre_encode_callback = &observer; 1070 send_config_.pre_encode_callback = &observer;
1080 CreateStreams(); 1071 CreateStreams();
1081 1072
1082 // Prepare five input frames. Send ordinary VideoFrame and texture frames 1073 // Prepare five input frames. Send ordinary VideoFrame and texture frames
1083 // alternatively. 1074 // alternatively.
1084 std::vector<VideoFrame> input_frames; 1075 std::vector<VideoFrame> input_frames;
1085 int width = static_cast<int>(encoder_config_.streams[0].width); 1076 int width = static_cast<int>(encoder_config_.streams[0].width);
1086 int height = static_cast<int>(encoder_config_.streams[0].height); 1077 int height = static_cast<int>(encoder_config_.streams[0].height);
1087 FakeNativeHandle* handle1 = new FakeNativeHandle(); 1078 test::FakeNativeHandle* handle1 = new test::FakeNativeHandle();
1088 FakeNativeHandle* handle2 = new FakeNativeHandle(); 1079 test::FakeNativeHandle* handle2 = new test::FakeNativeHandle();
1089 FakeNativeHandle* handle3 = new FakeNativeHandle(); 1080 test::FakeNativeHandle* handle3 = new test::FakeNativeHandle();
1090 input_frames.push_back(VideoFrame(handle1, width, height, 1, 1, 1081 input_frames.push_back(test::CreateFakeNativeHandleFrame(
1091 kVideoRotation_0, 1082 handle1, width, height, 1, 1, kVideoRotation_0));
1092 rtc::Bind(&DeleteNativeHandle, handle1))); 1083 input_frames.push_back(test::CreateFakeNativeHandleFrame(
1093 input_frames.push_back(VideoFrame(handle2, width, height, 2, 2, 1084 handle2, width, height, 2, 2, kVideoRotation_0));
1094 kVideoRotation_0,
1095 rtc::Bind(&DeleteNativeHandle, handle2)));
1096 input_frames.push_back(CreateVideoFrame(width, height, 3)); 1085 input_frames.push_back(CreateVideoFrame(width, height, 3));
1097 input_frames.push_back(CreateVideoFrame(width, height, 4)); 1086 input_frames.push_back(CreateVideoFrame(width, height, 4));
1098 input_frames.push_back(VideoFrame(handle3, width, height, 5, 5, 1087 input_frames.push_back(test::CreateFakeNativeHandleFrame(
1099 kVideoRotation_0, 1088 handle3, width, height, 5, 5, kVideoRotation_0));
1100 rtc::Bind(&DeleteNativeHandle, handle3)));
1101 1089
1102 send_stream_->Start(); 1090 send_stream_->Start();
1103 for (size_t i = 0; i < input_frames.size(); i++) { 1091 for (size_t i = 0; i < input_frames.size(); i++) {
1104 send_stream_->Input()->IncomingCapturedFrame(input_frames[i]); 1092 send_stream_->Input()->IncomingCapturedFrame(input_frames[i]);
1105 // Do not send the next frame too fast, so the frame dropper won't drop it. 1093 // Do not send the next frame too fast, so the frame dropper won't drop it.
1106 if (i < input_frames.size() - 1) 1094 if (i < input_frames.size() - 1)
1107 SleepMs(1000 / encoder_config_.streams[0].max_framerate); 1095 SleepMs(1000 / encoder_config_.streams[0].max_framerate);
1108 // Wait until the output frame is received before sending the next input 1096 // Wait until the output frame is received before sending the next input
1109 // frame. Or the previous input frame may be replaced without delivering. 1097 // frame. Or the previous input frame may be replaced without delivering.
1110 observer.WaitOutputFrame(); 1098 observer.WaitOutputFrame();
(...skipping 648 matching lines...) Expand 10 before | Expand all | Expand 10 after
1759 const std::vector<VideoReceiveStream*>& receive_streams) override { 1747 const std::vector<VideoReceiveStream*>& receive_streams) override {
1760 send_stream_ = send_stream; 1748 send_stream_ = send_stream;
1761 } 1749 }
1762 1750
1763 VideoSendStream* send_stream_; 1751 VideoSendStream* send_stream_;
1764 } test; 1752 } test;
1765 1753
1766 RunBaseTest(&test); 1754 RunBaseTest(&test);
1767 } 1755 }
1768 } // namespace webrtc 1756 } // namespace webrtc
OLDNEW
« no previous file with comments | « webrtc/video/video_encoder_unittest.cc ('k') | webrtc/video_encoder.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698