blob: c47e143bede6c7bc3f43a613c3685ed14eaf4a43 [file] [log] [blame]
// Copyright 2018 The Fuchsia Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
#ifndef GARNET_DRIVERS_VIDEO_AMLOGIC_DECODER_STREAM_BUFFER_H_
#define GARNET_DRIVERS_VIDEO_AMLOGIC_DECODER_STREAM_BUFFER_H_
#include <ddk/io-buffer.h>
#include "internal_buffer.h"
// The stream buffer is a fifo between parser and decoder.
class StreamBuffer {
public:
// For now, this is how calling code populates buffer_.
std::optional<InternalBuffer>& optional_buffer() { return buffer_; }
InternalBuffer& buffer() {
ZX_DEBUG_ASSERT(buffer_);
return *buffer_;
}
void set_data_size(uint32_t data_size) { data_size_ = data_size; }
uint32_t data_size() const { return data_size_; }
void set_padding_size(uint32_t padding_size) { padding_size_ = padding_size; }
uint32_t padding_size() const { return padding_size_; }
private:
std::optional<InternalBuffer> buffer_;
// Amount of data written to this buffer, in bytes.
uint32_t data_size_ = 0;
uint32_t padding_size_ = 0;
};
#endif // GARNET_DRIVERS_VIDEO_AMLOGIC_DECODER_STREAM_BUFFER_H_