kodi
DVDAudioCodecPassthrough.h
1 /*
2  * Copyright (C) 2010-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 "DVDAudioCodec.h"
12 #include "cores/AudioEngine/Utils/AEAudioFormat.h"
13 #include "cores/AudioEngine/Utils/AEBitstreamPacker.h"
14 #include "cores/AudioEngine/Utils/AEStreamInfo.h"
15 
16 #include <list>
17 #include <vector>
18 
19 class CProcessInfo;
20 
22 {
23 public:
24  CDVDAudioCodecPassthrough(CProcessInfo &processInfo, CAEStreamInfo::DataType streamType);
25  ~CDVDAudioCodecPassthrough() override;
26 
27  bool Open(CDVDStreamInfo &hints, CDVDCodecOptions &options) override;
28  void Dispose() override;
29  bool AddData(const DemuxPacket &packet) override;
30  void GetData(DVDAudioFrame &frame) override;
31  void Reset() override;
32  AEAudioFormat GetFormat() override { return m_format; }
33  bool NeedPassthrough() override { return true; }
34  std::string GetName() override { return m_codecName; }
35  int GetBufferSize() override;
36 
37 private:
38  int GetData(uint8_t** dst);
39  CAEStreamParser m_parser;
40  uint8_t* m_buffer = nullptr;
41  unsigned int m_bufferSize = 0;
42  unsigned int m_dataSize = 0;
43  AEAudioFormat m_format;
44  uint8_t *m_backlogBuffer = nullptr;
45  unsigned int m_backlogBufferSize = 0;
46  unsigned int m_backlogSize = 0;
47  double m_currentPts = DVD_NOPTS_VALUE;
48  double m_nextPts = DVD_NOPTS_VALUE;
49  std::string m_codecName;
50 
51  // TrueHD specifics
52  std::vector<uint8_t> m_trueHDBuffer;
53  unsigned int m_trueHDoffset = 0;
54  unsigned int m_trueHDframes = 0;
55  bool m_deviceIsRAW{false};
56 };
Definition: DVDStreamInfo.h:25
Definition: AEStreamInfo.h:51
Definition: DVDCodecs.h:23
Definition: DVDAudioCodecPassthrough.h:21
The audio format structure that fully defines a stream&#39;s audio information.
Definition: AEAudioFormat.h:19
Definition: ProcessInfo.h:26
Definition: DVDAudioCodec.h:27
Definition: DemuxPacket.h:22
Definition: DVDAudioCodec.h:48