Make FrameGeneratorCapturer own frame_generator.
Fixes memleaks where test::FrameGenerator::Create() was used to create
frame_generator, but it was never freed. Since the frame generator
shouldn't be used concurrently it's easiest if FrameGeneratorCapturer
take ownership of the instance.
BUG=
R=stefan@webrtc.org
Review URL: https://webrtc-codereview.appspot.com/2047005
git-svn-id: http://webrtc.googlecode.com/svn/trunk/webrtc@4580 4adac7df-926f-26a2-2b94-8c16560cd09d
diff --git a/video_engine/test/common/frame_generator_capturer.h b/video_engine/test/common/frame_generator_capturer.h
index 40ad47e..3c2ec23 100644
--- a/video_engine/test/common/frame_generator_capturer.h
+++ b/video_engine/test/common/frame_generator_capturer.h
@@ -26,6 +26,8 @@
class FrameGeneratorCapturer : public VideoCapturer {
public:
+ // The FrameGeneratorCapturer takes ownership of the FrameGenerator, which
+ // will be freed when the FrameGeneratorCapturer is deleted.
static FrameGeneratorCapturer* Create(newapi::VideoSendStreamInput* input,
FrameGenerator* frame_generator,
int target_fps);
@@ -47,7 +49,7 @@
scoped_ptr<EventWrapper> tick_;
scoped_ptr<CriticalSectionWrapper> lock_;
scoped_ptr<ThreadWrapper> thread_;
- FrameGenerator* frame_generator_;
+ scoped_ptr<FrameGenerator> frame_generator_;
int target_fps_;
};
diff --git a/video_engine/test/full_stack.cc b/video_engine/test/full_stack.cc
index ba830c3..382e89a 100644
--- a/video_engine/test/full_stack.cc
+++ b/video_engine/test/full_stack.cc
@@ -304,18 +304,15 @@
Clock* test_clock = Clock::GetRealTimeClock();
- scoped_ptr<test::YuvFileFrameGenerator> file_frame_generator(
- test::YuvFileFrameGenerator::Create(
- test::ResourcePath(params.clip.name, "yuv").c_str(),
- params.clip.width,
- params.clip.height,
- test_clock));
- ASSERT_TRUE(file_frame_generator.get() != NULL);
-
scoped_ptr<test::FrameGeneratorCapturer> file_capturer(
test::FrameGeneratorCapturer::Create(
- &analyzer, file_frame_generator.get(), params.clip.fps));
- ASSERT_TRUE(file_capturer.get() != NULL);
+ &analyzer,
+ test::YuvFileFrameGenerator::Create(
+ test::ResourcePath(params.clip.name, "yuv").c_str(),
+ params.clip.width,
+ params.clip.height,
+ test_clock),
+ params.clip.fps));
newapi::VideoReceiveStream::Config receive_config =
call->GetDefaultReceiveConfig();