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

Side by Side Diff: media/video/gpu_memory_buffer_video_frame_pool.cc

Issue 1476523005: Verify returned frames from media::VideoFrame::Wrap*() methods (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: mcasas@ comments. Created 4 years, 11 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
OLDNEW
1 // Copyright 2015 The Chromium Authors. All rights reserved. 1 // Copyright 2015 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "media/video/gpu_memory_buffer_video_frame_pool.h" 5 #include "media/video/gpu_memory_buffer_video_frame_pool.h"
6 6
7 #include <GLES2/gl2.h> 7 #include <GLES2/gl2.h>
8 #include <GLES2/gl2ext.h> 8 #include <GLES2/gl2ext.h>
9 #include <stddef.h> 9 #include <stddef.h>
10 #include <stdint.h> 10 #include <stdint.h>
(...skipping 580 matching lines...) Expand 10 before | Expand all | Expand 10 after
591 // Create the VideoFrame backed by native textures. 591 // Create the VideoFrame backed by native textures.
592 gfx::Size visible_size = video_frame->visible_rect().size(); 592 gfx::Size visible_size = video_frame->visible_rect().size();
593 switch (output_format_) { 593 switch (output_format_) {
594 case PIXEL_FORMAT_I420: 594 case PIXEL_FORMAT_I420:
595 frame = VideoFrame::WrapYUV420NativeTextures( 595 frame = VideoFrame::WrapYUV420NativeTextures(
596 mailbox_holders[VideoFrame::kYPlane], 596 mailbox_holders[VideoFrame::kYPlane],
597 mailbox_holders[VideoFrame::kUPlane], 597 mailbox_holders[VideoFrame::kUPlane],
598 mailbox_holders[VideoFrame::kVPlane], release_mailbox_callback, 598 mailbox_holders[VideoFrame::kVPlane], release_mailbox_callback,
599 coded_size, gfx::Rect(visible_size), video_frame->natural_size(), 599 coded_size, gfx::Rect(visible_size), video_frame->natural_size(),
600 video_frame->timestamp()); 600 video_frame->timestamp());
601 if (video_frame->metadata()->IsTrue(VideoFrameMetadata::ALLOW_OVERLAY)) 601 if (frame &&
602 video_frame->metadata()->IsTrue(VideoFrameMetadata::ALLOW_OVERLAY))
602 frame->metadata()->SetBoolean(VideoFrameMetadata::ALLOW_OVERLAY, true); 603 frame->metadata()->SetBoolean(VideoFrameMetadata::ALLOW_OVERLAY, true);
603 break; 604 break;
604 case PIXEL_FORMAT_NV12: 605 case PIXEL_FORMAT_NV12:
605 case PIXEL_FORMAT_UYVY: 606 case PIXEL_FORMAT_UYVY:
606 frame = VideoFrame::WrapNativeTexture( 607 frame = VideoFrame::WrapNativeTexture(
607 output_format_, mailbox_holders[VideoFrame::kYPlane], 608 output_format_, mailbox_holders[VideoFrame::kYPlane],
608 release_mailbox_callback, coded_size, gfx::Rect(visible_size), 609 release_mailbox_callback, coded_size, gfx::Rect(visible_size),
609 video_frame->natural_size(), video_frame->timestamp()); 610 video_frame->natural_size(), video_frame->timestamp());
610 frame->metadata()->SetBoolean(VideoFrameMetadata::ALLOW_OVERLAY, true); 611 if (frame)
612 frame->metadata()->SetBoolean(VideoFrameMetadata::ALLOW_OVERLAY, true);
611 break; 613 break;
612 default: 614 default:
613 NOTREACHED(); 615 NOTREACHED();
614 } 616 }
615 617
618 if (!frame) {
619 release_mailbox_callback.Run(gpu::SyncToken());
620 frame_ready_cb.Run(video_frame);
621 return;
622 }
623
616 base::TimeTicks render_time; 624 base::TimeTicks render_time;
617 if (video_frame->metadata()->GetTimeTicks(VideoFrameMetadata::REFERENCE_TIME, 625 if (video_frame->metadata()->GetTimeTicks(VideoFrameMetadata::REFERENCE_TIME,
618 &render_time)) { 626 &render_time)) {
619 frame->metadata()->SetTimeTicks(VideoFrameMetadata::REFERENCE_TIME, 627 frame->metadata()->SetTimeTicks(VideoFrameMetadata::REFERENCE_TIME,
620 render_time); 628 render_time);
621 } 629 }
622 630
623 frame_ready_cb.Run(frame); 631 frame_ready_cb.Run(frame);
624 } 632 }
625 633
(...skipping 130 matching lines...) Expand 10 before | Expand all | Expand 10 after
756 } 764 }
757 765
758 void GpuMemoryBufferVideoFramePool::MaybeCreateHardwareFrame( 766 void GpuMemoryBufferVideoFramePool::MaybeCreateHardwareFrame(
759 const scoped_refptr<VideoFrame>& video_frame, 767 const scoped_refptr<VideoFrame>& video_frame,
760 const FrameReadyCB& frame_ready_cb) { 768 const FrameReadyCB& frame_ready_cb) {
761 DCHECK(video_frame); 769 DCHECK(video_frame);
762 pool_impl_->CreateHardwareFrame(video_frame, frame_ready_cb); 770 pool_impl_->CreateHardwareFrame(video_frame, frame_ready_cb);
763 } 771 }
764 772
765 } // namespace media 773 } // namespace media
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698