1 // Copyright 2019 The Chromium Authors. All rights reserved. 2 // Use of this source code is governed by a BSD-style license that can be 3 // found in the LICENSE file. 4 5 #include "cast/standalone_receiver/dummy_player.h" 6 7 #include <chrono> 8 9 #include "absl/types/span.h" 10 #include "cast/streaming/encoded_frame.h" 11 #include "util/chrono_helpers.h" 12 #include "util/osp_logging.h" 13 14 namespace openscreen { 15 namespace cast { 16 DummyPlayer(Receiver * receiver)17DummyPlayer::DummyPlayer(Receiver* receiver) : receiver_(receiver) { 18 OSP_DCHECK(receiver_); 19 receiver_->SetConsumer(this); 20 } 21 ~DummyPlayer()22DummyPlayer::~DummyPlayer() { 23 receiver_->SetConsumer(nullptr); 24 } 25 OnFramesReady(int buffer_size)26void DummyPlayer::OnFramesReady(int buffer_size) { 27 // Consume the next frame. 28 buffer_.resize(buffer_size); 29 const EncodedFrame frame = 30 receiver_->ConsumeNextFrame(absl::Span<uint8_t>(buffer_)); 31 32 // Convert the RTP timestamp to a human-readable timestamp (in µs) and log 33 // some short information about the frame. 34 const auto media_timestamp = 35 frame.rtp_timestamp.ToTimeSinceOrigin<microseconds>( 36 receiver_->rtp_timebase()); 37 OSP_LOG_INFO << "[SSRC " << receiver_->ssrc() << "] " 38 << (frame.dependency == EncodedFrame::KEY_FRAME ? "KEY " : "") 39 << frame.frame_id << " at " << media_timestamp.count() << "µs, " 40 << buffer_size << " bytes"; 41 } 42 43 } // namespace cast 44 } // namespace openscreen 45