Add unittest to check that ViECapturer does not hold on to frames after they have been delivered
This should have been part of the CL "Remove the need for scoped_ptr<I420VideoFrame> in VieCapturer" https://webrtc-codereview.appspot.com/43669004. TBR=pbos,mflodman BUG=1128 Review URL: https://webrtc-codereview.appspot.com/44629005 Cr-Commit-Position: refs/heads/master@{#8680} git-svn-id: http://webrtc.googlecode.com/svn/trunk@8680 4adac7df-926f-26a2-2b94-8c16560cd09d
This commit is contained in:
parent
e77c9c8df5
commit
4dccdff885
@ -97,8 +97,7 @@ class ViECapturerTest : public ::testing::Test {
|
||||
void AddOutputFrame(const I420VideoFrame* frame) {
|
||||
if (frame->native_handle() == NULL)
|
||||
output_frame_ybuffers_.push_back(frame->buffer(kYPlane));
|
||||
// Clone the frames because ViECapturer owns the frames.
|
||||
output_frames_.push_back(frame->CloneFrame());
|
||||
output_frames_.push_back(new I420VideoFrame(*frame));
|
||||
output_frame_event_->Set();
|
||||
}
|
||||
|
||||
@ -129,6 +128,33 @@ class ViECapturerTest : public ::testing::Test {
|
||||
std::vector<const uint8_t*> output_frame_ybuffers_;
|
||||
};
|
||||
|
||||
TEST_F(ViECapturerTest, DoesNotRetainHandleNorCopyBuffer) {
|
||||
// Indicate an output frame has arrived.
|
||||
rtc::scoped_ptr<EventWrapper> frame_destroyed_event(EventWrapper::Create());
|
||||
class TestBuffer : public webrtc::I420Buffer {
|
||||
public:
|
||||
TestBuffer(EventWrapper* event) : I420Buffer(5, 5), event_(event) {}
|
||||
|
||||
private:
|
||||
friend class rtc::RefCountedObject<TestBuffer>;
|
||||
~TestBuffer() override { event_->Set(); }
|
||||
EventWrapper* event_;
|
||||
};
|
||||
|
||||
I420VideoFrame frame(
|
||||
new rtc::RefCountedObject<TestBuffer>(frame_destroyed_event.get()), 1, 1,
|
||||
kVideoRotation_0);
|
||||
|
||||
AddInputFrame(&frame);
|
||||
WaitOutputFrame();
|
||||
|
||||
EXPECT_EQ(output_frames_[0]->video_frame_buffer().get(),
|
||||
frame.video_frame_buffer().get());
|
||||
output_frames_.clear();
|
||||
frame.Reset();
|
||||
EXPECT_EQ(kEventSignaled, frame_destroyed_event->Wait(FRAME_TIMEOUT_MS));
|
||||
}
|
||||
|
||||
TEST_F(ViECapturerTest, TestTextureFrames) {
|
||||
const int kNumFrame = 3;
|
||||
for (int i = 0 ; i < kNumFrame; ++i) {
|
||||
|
Loading…
x
Reference in New Issue
Block a user