123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119 |
- // Copyright (c) 2011 The Chromium Authors. All rights reserved.
- // Use of this source code is governed by a BSD-style license that can be
- // found in the LICENSE file.
- #include "media/video/picture.h"
- #include "base/check_op.h"
- #include "base/logging.h"
- namespace media {
- PictureBuffer::PictureBuffer(int32_t id, const gfx::Size& size)
- : id_(id), size_(size) {}
- PictureBuffer::PictureBuffer(int32_t id,
- const gfx::Size& size,
- const TextureIds& client_texture_ids)
- : id_(id), size_(size), client_texture_ids_(client_texture_ids) {
- DCHECK(!client_texture_ids_.empty());
- }
- PictureBuffer::PictureBuffer(int32_t id,
- const gfx::Size& size,
- const TextureIds& client_texture_ids,
- const TextureIds& service_texture_ids,
- uint32_t texture_target,
- VideoPixelFormat pixel_format)
- : id_(id),
- size_(size),
- client_texture_ids_(client_texture_ids),
- service_texture_ids_(service_texture_ids),
- texture_target_(texture_target),
- pixel_format_(pixel_format) {
- // We either not have client texture ids at all, or if we do, then their
- // number must be the same as the number of service texture ids.
- DCHECK(client_texture_ids_.empty() ||
- client_texture_ids_.size() == service_texture_ids_.size());
- }
- PictureBuffer::PictureBuffer(int32_t id,
- const gfx::Size& size,
- const TextureIds& client_texture_ids,
- const std::vector<gpu::Mailbox>& texture_mailboxes,
- uint32_t texture_target,
- VideoPixelFormat pixel_format)
- : id_(id),
- size_(size),
- client_texture_ids_(client_texture_ids),
- texture_mailboxes_(texture_mailboxes),
- texture_target_(texture_target),
- pixel_format_(pixel_format) {
- DCHECK_EQ(client_texture_ids.size(), texture_mailboxes.size());
- }
- PictureBuffer::PictureBuffer(int32_t id,
- const gfx::Size& size,
- const TextureSizes& texture_sizes,
- const TextureIds& client_texture_ids,
- const TextureIds& service_texture_ids,
- uint32_t texture_target,
- VideoPixelFormat pixel_format)
- : id_(id),
- size_(size),
- texture_sizes_(texture_sizes),
- client_texture_ids_(client_texture_ids),
- service_texture_ids_(service_texture_ids),
- texture_target_(texture_target),
- pixel_format_(pixel_format) {
- // We either not have client texture ids at all, or if we do, then their
- // number must be the same as the number of service texture ids.
- DCHECK(client_texture_ids_.empty() ||
- client_texture_ids_.size() == service_texture_ids_.size());
- }
- PictureBuffer::PictureBuffer(const PictureBuffer& other) = default;
- PictureBuffer::~PictureBuffer() = default;
- gfx::Size PictureBuffer::texture_size(size_t plane) const {
- if (plane >= texture_sizes_.size()) {
- LOG(ERROR) << "Missing texture size for plane " << plane;
- return gfx::Size();
- }
- return texture_sizes_[plane];
- }
- Picture::Picture(int32_t picture_buffer_id,
- int32_t bitstream_buffer_id,
- const gfx::Rect& visible_rect,
- const gfx::ColorSpace& color_space,
- bool allow_overlay)
- : picture_buffer_id_(picture_buffer_id),
- bitstream_buffer_id_(bitstream_buffer_id),
- visible_rect_(visible_rect),
- color_space_(color_space),
- allow_overlay_(allow_overlay),
- read_lock_fences_enabled_(false),
- size_changed_(false),
- texture_owner_(false),
- wants_promotion_hint_(false),
- is_webgpu_compatible_(false) {}
- Picture::Picture(const Picture& other) = default;
- Picture::~Picture() = default;
- Picture::ScopedSharedImage::ScopedSharedImage(
- gpu::Mailbox mailbox,
- uint32_t texture_target,
- base::OnceClosure destruction_closure)
- : destruction_closure_(std::move(destruction_closure)),
- mailbox_holder_(mailbox, gpu::SyncToken(), texture_target) {}
- Picture::ScopedSharedImage::~ScopedSharedImage() {
- std::move(destruction_closure_).Run();
- }
- } // namespace media
|