// Copyright 2020 The Chromium Authors // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. #ifndef COMPONENTS_CAST_STREAMING_BROWSER_FRAME_STREAM_CONSUMER_H_ #define COMPONENTS_CAST_STREAMING_BROWSER_FRAME_STREAM_CONSUMER_H_ #include "base/functional/callback.h" #include "base/memory/raw_ptr.h" #include "base/time/time.h" #include "components/cast_streaming/browser/common/decoder_buffer_factory.h" #include "media/mojo/mojom/media_types.mojom.h" #include "mojo/public/cpp/system/data_pipe.h" #include "mojo/public/cpp/system/simple_watcher.h" #include "third_party/openscreen/src/cast/streaming/receiver.h" #include "third_party/openscreen/src/cast/streaming/receiver_session.h" namespace cast_streaming { // Attaches to an Open Screen Receiver to receive buffers of encoded data and // invokes |frame_received_cb_| with each buffer. // // Internally, this class writes buffers of encoded data directly to // |data_pipe_| rather than using a helper class like MojoDecoderBufferWriter. // This allows us to use |data_pipe_| as an end-to-end buffer to cap memory // usage. Receiving new buffers is delayed until the pipe has free memory again. // The Open Screen library takes care of discarding buffers that are too old and // requesting new key frames as needed. class StreamConsumer final : public openscreen::cast::Receiver::Consumer { … }; } // namespace cast_streaming #endif // COMPONENTS_CAST_STREAMING_BROWSER_FRAME_STREAM_CONSUMER_H_