1234567891011121314151617181920212223242526272829303132333435363738394041424344 |
- // Copyright 2019 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/gpu/vp9_reference_frame_vector.h"
- #include <bitset>
- #include "media/gpu/vp9_picture.h"
- namespace media {
- Vp9ReferenceFrameVector::Vp9ReferenceFrameVector() {
- DETACH_FROM_SEQUENCE(sequence_checker_);
- }
- Vp9ReferenceFrameVector::~Vp9ReferenceFrameVector() = default;
- // Refreshes |reference_frames_| slots with the current |pic|s frame header.
- void Vp9ReferenceFrameVector::Refresh(scoped_refptr<VP9Picture> pic) {
- DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_);
- DCHECK(pic);
- const std::bitset<kVp9NumRefFrames> refresh_frame_flags(
- pic->frame_hdr->refresh_frame_flags);
- for (size_t i = 0; i < kVp9NumRefFrames; ++i) {
- if (refresh_frame_flags[i])
- reference_frames_[i] = pic;
- }
- }
- void Vp9ReferenceFrameVector::Clear() {
- DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_);
- reference_frames_.fill(nullptr);
- }
- scoped_refptr<VP9Picture> Vp9ReferenceFrameVector::GetFrame(
- size_t index) const {
- DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_);
- return reference_frames_[index];
- }
- } // namespace media
|