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

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: Rebase. 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 565 matching lines...) Expand 10 before | Expand all | Expand 10 after
576 // Create the VideoFrame backed by native textures. 576 // Create the VideoFrame backed by native textures.
577 gfx::Size visible_size = video_frame->visible_rect().size(); 577 gfx::Size visible_size = video_frame->visible_rect().size();
578 switch (output_format_) { 578 switch (output_format_) {
579 case PIXEL_FORMAT_I420: 579 case PIXEL_FORMAT_I420:
580 frame = VideoFrame::WrapYUV420NativeTextures( 580 frame = VideoFrame::WrapYUV420NativeTextures(
581 mailbox_holders[VideoFrame::kYPlane], 581 mailbox_holders[VideoFrame::kYPlane],
582 mailbox_holders[VideoFrame::kUPlane], 582 mailbox_holders[VideoFrame::kUPlane],
583 mailbox_holders[VideoFrame::kVPlane], release_mailbox_callback, 583 mailbox_holders[VideoFrame::kVPlane], release_mailbox_callback,
584 coded_size, gfx::Rect(visible_size), video_frame->natural_size(), 584 coded_size, gfx::Rect(visible_size), video_frame->natural_size(),
585 video_frame->timestamp()); 585 video_frame->timestamp());
586 if (video_frame->metadata()->IsTrue(VideoFrameMetadata::ALLOW_OVERLAY)) 586 if (frame &&
587 video_frame->metadata()->IsTrue(VideoFrameMetadata::ALLOW_OVERLAY))
587 frame->metadata()->SetBoolean(VideoFrameMetadata::ALLOW_OVERLAY, true); 588 frame->metadata()->SetBoolean(VideoFrameMetadata::ALLOW_OVERLAY, true);
588 break; 589 break;
589 case PIXEL_FORMAT_NV12: 590 case PIXEL_FORMAT_NV12:
590 case PIXEL_FORMAT_UYVY: 591 case PIXEL_FORMAT_UYVY:
591 frame = VideoFrame::WrapNativeTexture( 592 frame = VideoFrame::WrapNativeTexture(
592 output_format_, mailbox_holders[VideoFrame::kYPlane], 593 output_format_, mailbox_holders[VideoFrame::kYPlane],
593 release_mailbox_callback, coded_size, gfx::Rect(visible_size), 594 release_mailbox_callback, coded_size, gfx::Rect(visible_size),
594 video_frame->natural_size(), video_frame->timestamp()); 595 video_frame->natural_size(), video_frame->timestamp());
595 frame->metadata()->SetBoolean(VideoFrameMetadata::ALLOW_OVERLAY, true); 596 if (frame)
597 frame->metadata()->SetBoolean(VideoFrameMetadata::ALLOW_OVERLAY, true);
596 break; 598 break;
597 default: 599 default:
598 NOTREACHED(); 600 NOTREACHED();
599 } 601 }
600 602
603 if (!frame) {
604 release_mailbox_callback.Run(gpu::SyncToken());
605 frame_ready_cb.Run(video_frame);
606 return;
607 }
608
601 base::TimeTicks render_time; 609 base::TimeTicks render_time;
602 if (video_frame->metadata()->GetTimeTicks(VideoFrameMetadata::REFERENCE_TIME, 610 if (video_frame->metadata()->GetTimeTicks(VideoFrameMetadata::REFERENCE_TIME,
603 &render_time)) { 611 &render_time)) {
604 frame->metadata()->SetTimeTicks(VideoFrameMetadata::REFERENCE_TIME, 612 frame->metadata()->SetTimeTicks(VideoFrameMetadata::REFERENCE_TIME,
605 render_time); 613 render_time);
606 } 614 }
607 615
608 frame_ready_cb.Run(frame); 616 frame_ready_cb.Run(frame);
609 } 617 }
610 618
(...skipping 130 matching lines...) Expand 10 before | Expand all | Expand 10 after
741 } 749 }
742 750
743 void GpuMemoryBufferVideoFramePool::MaybeCreateHardwareFrame( 751 void GpuMemoryBufferVideoFramePool::MaybeCreateHardwareFrame(
744 const scoped_refptr<VideoFrame>& video_frame, 752 const scoped_refptr<VideoFrame>& video_frame,
745 const FrameReadyCB& frame_ready_cb) { 753 const FrameReadyCB& frame_ready_cb) {
746 DCHECK(video_frame); 754 DCHECK(video_frame);
747 pool_impl_->CreateHardwareFrame(video_frame, frame_ready_cb); 755 pool_impl_->CreateHardwareFrame(video_frame, frame_ready_cb);
748 } 756 }
749 757
750 } // namespace media 758 } // namespace media
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698