Index: media/filters/vpx_video_decoder.cc |
diff --git a/media/filters/vpx_video_decoder.cc b/media/filters/vpx_video_decoder.cc |
index 40814bb273ad5a3f5cc18e96ea9172f9fd4e929b..343c65842c0d7277f98ae51e6a492311189332e3 100644 |
--- a/media/filters/vpx_video_decoder.cc |
+++ b/media/filters/vpx_video_decoder.cc |
@@ -592,8 +592,10 @@ bool VpxVideoDecoder::CopyVpxImageToVideoFrame( |
vpx_image->planes[VPX_PLANE_U], |
vpx_image->planes[VPX_PLANE_V], |
kNoTimestamp()); |
- video_frame->get()->AddDestructionObserver( |
- memory_pool_->CreateFrameCallback(vpx_image->fb_priv)); |
+ if (*video_frame) { |
+ video_frame->get()->AddDestructionObserver( |
+ memory_pool_->CreateFrameCallback(vpx_image->fb_priv)); |
+ } |
UMA_HISTOGRAM_COUNTS("Media.Vpx.VideoDecoderBuffersInUseByDecoder", |
memory_pool_->NumberOfFrameBuffersInUseByDecoder()); |
@@ -610,6 +612,8 @@ bool VpxVideoDecoder::CopyVpxImageToVideoFrame( |
*video_frame = frame_pool_.CreateFrame( |
codec_format, visible_size, gfx::Rect(visible_size), |
config_.natural_size(), kNoTimestamp()); |
+ if (!(*video_frame)) |
+ return false; |
libyuv::I420Copy( |
vpx_image->planes[VPX_PLANE_Y], vpx_image->stride[VPX_PLANE_Y], |