xbmc
GameClientStreamAudio.h
1 /*
2  * Copyright (C) 2018 Team Kodi
3  * This file is part of Kodi - https://kodi.tv
4  *
5  * SPDX-License-Identifier: GPL-2.0-or-later
6  * See LICENSES/README.md for more information.
7  */
8 
9 #pragma once
10 
11 #include "IGameClientStream.h"
12 #include "addons/kodi-dev-kit/include/kodi/addon-instance/Game.h"
13 
14 #include <vector>
15 
16 namespace KODI
17 {
18 namespace RETRO
19 {
20 class IRetroPlayerStream;
21 struct AudioStreamProperties;
22 } // namespace RETRO
23 
24 namespace GAME
25 {
26 
28 {
29 public:
30  CGameClientStreamAudio(double sampleRate);
31  ~CGameClientStreamAudio() override { CloseStream(); }
32 
33  // Implementation of IGameClientStream
34  bool OpenStream(RETRO::IRetroPlayerStream* stream,
35  const game_stream_properties& properties) override;
36  void CloseStream() override;
37  void AddData(const game_stream_packet& packet) override;
38 
39 private:
40  // Utility functions
41  static RETRO::AudioStreamProperties* TranslateProperties(
42  const game_stream_audio_properties& properties, double sampleRate);
43 
44  // Construction parameters
45  const double m_sampleRate;
46 
47  // Stream parameters
48  RETRO::IRetroPlayerStream* m_stream = nullptr;
49 };
50 
51 } // namespace GAME
52 } // namespace KODI
Definition: GameClientStreamAudio.h:27
Definition: IGameClientStream.h:25
Definition: RetroPlayerAudio.h:24
Stream packet and ephemeral metadata
Definition: game.h:528
Controller configuration window.
Definition: AudioDecoder.h:18
Immutable stream metadata
Definition: game.h:482
Game audio stream properties
Definition: game.h:162
Definition: IRetroPlayerStream.h:30