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

Side by Side Diff: media/filters/gpu_video_decoder.cc

Issue 1822983002: Support external buffer import in VDA interface and add a V4L2SVDA impl. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 4 years, 9 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 (c) 2012 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2012 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/filters/gpu_video_decoder.h" 5 #include "media/filters/gpu_video_decoder.h"
6 6
7 #include <algorithm> 7 #include <algorithm>
8 #include <utility> 8 #include <utility>
9 9
10 #include "base/bind.h" 10 #include "base/bind.h"
(...skipping 492 matching lines...) Expand 10 before | Expand all | Expand 10 after
503 visible_rect = picture.visible_rect(); 503 visible_rect = picture.visible_rect();
504 } 504 }
505 if (!gfx::Rect(pb.size()).Contains(visible_rect)) { 505 if (!gfx::Rect(pb.size()).Contains(visible_rect)) {
506 LOG(WARNING) << "Visible size " << visible_rect.ToString() 506 LOG(WARNING) << "Visible size " << visible_rect.ToString()
507 << " is larger than coded size " << pb.size().ToString(); 507 << " is larger than coded size " << pb.size().ToString();
508 visible_rect = gfx::Rect(pb.size()); 508 visible_rect = gfx::Rect(pb.size());
509 } 509 }
510 510
511 DCHECK(decoder_texture_target_); 511 DCHECK(decoder_texture_target_);
512 512
513 bool opaque = IsOpaque(config_.format());
514
515 scoped_refptr<VideoFrame> frame(VideoFrame::WrapNativeTexture( 513 scoped_refptr<VideoFrame> frame(VideoFrame::WrapNativeTexture(
516 opaque ? PIXEL_FORMAT_XRGB : PIXEL_FORMAT_ARGB, 514 vda_->GetOutputFormat(),
kcwu 2016/03/22 07:47:02 The original code will use XRGB for some cases. Bu
Pawel Osciak 2016/03/28 01:31:29 If a VDA doesn't implement GetOutputFormat(), it w
Pawel Osciak 2016/03/28 01:59:10 Sorry, I meant ARGB. As for the choice between XRG
517 gpu::MailboxHolder(pb.texture_mailbox(), gpu::SyncToken(), 515 gpu::MailboxHolder(pb.texture_mailbox(), gpu::SyncToken(),
518 decoder_texture_target_), 516 decoder_texture_target_),
519 BindToCurrentLoop(base::Bind( 517 BindToCurrentLoop(base::Bind(
520 &GpuVideoDecoder::ReleaseMailbox, weak_factory_.GetWeakPtr(), 518 &GpuVideoDecoder::ReleaseMailbox, weak_factory_.GetWeakPtr(),
521 factories_, picture.picture_buffer_id(), pb.texture_id())), 519 factories_, picture.picture_buffer_id(), pb.texture_id())),
522 pb.size(), visible_rect, natural_size, timestamp)); 520 pb.size(), visible_rect, natural_size, timestamp));
523 if (!frame) { 521 if (!frame) {
524 DLOG(ERROR) << "Create frame failed for: " << picture.picture_buffer_id(); 522 DLOG(ERROR) << "Create frame failed for: " << picture.picture_buffer_id();
525 NotifyError(VideoDecodeAccelerator::PLATFORM_FAILURE); 523 NotifyError(VideoDecodeAccelerator::PLATFORM_FAILURE);
526 return; 524 return;
(...skipping 192 matching lines...) Expand 10 before | Expand all | Expand 10 after
719 } 717 }
720 return false; 718 return false;
721 } 719 }
722 720
723 void GpuVideoDecoder::DCheckGpuVideoAcceleratorFactoriesTaskRunnerIsCurrent() 721 void GpuVideoDecoder::DCheckGpuVideoAcceleratorFactoriesTaskRunnerIsCurrent()
724 const { 722 const {
725 DCHECK(factories_->GetTaskRunner()->BelongsToCurrentThread()); 723 DCHECK(factories_->GetTaskRunner()->BelongsToCurrentThread());
726 } 724 }
727 725
728 } // namespace media 726 } // namespace media
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698