#include "media/cast/sender/openscreen_frame_sender.h"
#include <memory>
#include <numeric>
#include <optional>
#include <utility>
#include "base/functional/bind.h"
#include "components/openscreen_platform/task_runner.h"
#include "media/base/audio_codecs.h"
#include "media/base/fake_single_thread_task_runner.h"
#include "media/base/video_codecs.h"
#include "media/cast/cast_config.h"
#include "media/cast/cast_environment.h"
#include "media/cast/common/openscreen_conversion_helpers.h"
#include "testing/gmock/include/gmock/gmock.h"
#include "testing/gtest/include/gtest/gtest.h"
#include "third_party/openscreen/src/cast/streaming/environment.h"
#include "third_party/openscreen/src/cast/streaming/sender.h"
#include "third_party/openscreen/src/cast/streaming/sender_packet_router.h"
#include "third_party/openscreen/src/platform/api/time.h"
#include "third_party/openscreen/src/platform/base/trivial_clock_traits.h"
namespace media::cast {
namespace {
constexpr uint32_t kFirstSsrc = …;
constexpr int kRtpTimebase = …;
constexpr char kAesSecretKey[] = …;
constexpr char kAesIvMask[] = …;
constexpr int kAudioBitrate = …;
static const FrameSenderConfig kAudioConfig{ … };
static const openscreen::cast::SessionConfig kOpenscreenAudioConfig = …;
static const FrameSenderConfig kVideoConfig{ … };
static const openscreen::cast::SessionConfig kOpenscreenVideoConfig = …;
}
class OpenscreenFrameSenderTest : public ::testing::Test,
public FrameSender::Client { … };
TEST_F(OpenscreenFrameSenderTest, RespectsTargetPlayoutDelay) { … }
TEST_F(OpenscreenFrameSenderTest, CanEnqueueFirstFrame) { … }
TEST_F(OpenscreenFrameSenderTest, RecordsRtpTimestamps) { … }
TEST_F(OpenscreenFrameSenderTest, HandlesReferencingUnknownFrameIds) { … }
TEST_F(OpenscreenFrameSenderTest, HandlesSuggestedBitratesCorrectly) { … }
}