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

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: Created 5 years 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 9
10 #include <algorithm> 10 #include <algorithm>
(...skipping 562 matching lines...) Expand 10 before | Expand all | Expand 10 after
573 // Create the VideoFrame backed by native textures. 573 // Create the VideoFrame backed by native textures.
574 gfx::Size visible_size = video_frame->visible_rect().size(); 574 gfx::Size visible_size = video_frame->visible_rect().size();
575 switch (output_format_) { 575 switch (output_format_) {
576 case PIXEL_FORMAT_I420: 576 case PIXEL_FORMAT_I420:
577 frame = VideoFrame::WrapYUV420NativeTextures( 577 frame = VideoFrame::WrapYUV420NativeTextures(
578 mailbox_holders[VideoFrame::kYPlane], 578 mailbox_holders[VideoFrame::kYPlane],
579 mailbox_holders[VideoFrame::kUPlane], 579 mailbox_holders[VideoFrame::kUPlane],
580 mailbox_holders[VideoFrame::kVPlane], release_mailbox_callback, 580 mailbox_holders[VideoFrame::kVPlane], release_mailbox_callback,
581 coded_size, gfx::Rect(visible_size), video_frame->natural_size(), 581 coded_size, gfx::Rect(visible_size), video_frame->natural_size(),
582 video_frame->timestamp()); 582 video_frame->timestamp());
583 if (video_frame->metadata()->IsTrue(VideoFrameMetadata::ALLOW_OVERLAY)) 583 if (frame &&
584 video_frame->metadata()->IsTrue(VideoFrameMetadata::ALLOW_OVERLAY))
Pawel Osciak 2015/11/26 01:19:03 I'm wondering why this check, I don't think WrapYU
emircan 2015/12/04 04:20:09 It is checking the |video_frame| metadata rather t
584 frame->metadata()->SetBoolean(VideoFrameMetadata::ALLOW_OVERLAY, true); 585 frame->metadata()->SetBoolean(VideoFrameMetadata::ALLOW_OVERLAY, true);
585 break; 586 break;
586 case PIXEL_FORMAT_NV12: 587 case PIXEL_FORMAT_NV12:
587 case PIXEL_FORMAT_UYVY: 588 case PIXEL_FORMAT_UYVY:
588 frame = VideoFrame::WrapNativeTexture( 589 frame = VideoFrame::WrapNativeTexture(
589 output_format_, mailbox_holders[VideoFrame::kYPlane], 590 output_format_, mailbox_holders[VideoFrame::kYPlane],
590 release_mailbox_callback, coded_size, gfx::Rect(visible_size), 591 release_mailbox_callback, coded_size, gfx::Rect(visible_size),
591 video_frame->natural_size(), video_frame->timestamp()); 592 video_frame->natural_size(), video_frame->timestamp());
592 frame->metadata()->SetBoolean(VideoFrameMetadata::ALLOW_OVERLAY, true); 593 if (frame)
594 frame->metadata()->SetBoolean(VideoFrameMetadata::ALLOW_OVERLAY, true);
593 break; 595 break;
594 default: 596 default:
595 NOTREACHED(); 597 NOTREACHED();
596 } 598 }
597 599
600 if (!frame) {
601 release_mailbox_callback.Run(gpu::SyncToken());
602 frame_ready_cb.Run(video_frame);
603 return;
604 }
605
598 base::TimeTicks render_time; 606 base::TimeTicks render_time;
599 if (video_frame->metadata()->GetTimeTicks(VideoFrameMetadata::REFERENCE_TIME, 607 if (video_frame->metadata()->GetTimeTicks(VideoFrameMetadata::REFERENCE_TIME,
600 &render_time)) { 608 &render_time)) {
601 frame->metadata()->SetTimeTicks(VideoFrameMetadata::REFERENCE_TIME, 609 frame->metadata()->SetTimeTicks(VideoFrameMetadata::REFERENCE_TIME,
602 render_time); 610 render_time);
603 } 611 }
604 612
605 frame_ready_cb.Run(frame); 613 frame_ready_cb.Run(frame);
606 } 614 }
607 615
(...skipping 130 matching lines...) Expand 10 before | Expand all | Expand 10 after
738 } 746 }
739 747
740 void GpuMemoryBufferVideoFramePool::MaybeCreateHardwareFrame( 748 void GpuMemoryBufferVideoFramePool::MaybeCreateHardwareFrame(
741 const scoped_refptr<VideoFrame>& video_frame, 749 const scoped_refptr<VideoFrame>& video_frame,
742 const FrameReadyCB& frame_ready_cb) { 750 const FrameReadyCB& frame_ready_cb) {
743 DCHECK(video_frame); 751 DCHECK(video_frame);
744 pool_impl_->CreateHardwareFrame(video_frame, frame_ready_cb); 752 pool_impl_->CreateHardwareFrame(video_frame, frame_ready_cb);
745 } 753 }
746 754
747 } // namespace media 755 } // namespace media
OLDNEW
« media/filters/vpx_video_decoder.cc ('K') | « media/filters/vpx_video_decoder.cc ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698