Index: content/renderer/media/video_source_handler.cc |
=================================================================== |
--- content/renderer/media/video_source_handler.cc (revision 252031) |
+++ content/renderer/media/video_source_handler.cc (working copy) |
@@ -36,9 +36,11 @@ |
virtual bool RenderFrame(const cricket::VideoFrame* frame) OVERRIDE { |
base::AutoLock auto_lock(lock_); |
if (reader_) { |
- // Make a shallow copy of the frame as the |reader_| may need to queue it. |
- // Both frames will share a single reference-counted frame buffer. |
- reader_->GotFrame(frame->Copy()); |
+ // |frame| will be invalid after this function is returned. So keep a copy |
+ // before return. |
+ cricket::VideoFrame* copied_frame = frame->Copy(); |
+ copied_frame->MakeExclusive(); |
+ reader_->GotFrame(copied_frame); |
} |
return true; |
} |