xbmc
ActiveAEResampleFFMPEG.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 "cores/AudioEngine/Utils/AEChannelInfo.h"
12 #include "cores/AudioEngine/Interfaces/AE.h"
13 #include "cores/AudioEngine/Interfaces/AEResample.h"
14 
15 extern "C" {
16 #include <libavutil/samplefmt.h>
17 }
18 
19 struct SwrContext;
20 
21 namespace ActiveAE
22 {
23 
25 {
26 public:
27  const char *GetName() override { return "ActiveAEResampleFFMPEG"; }
29  ~CActiveAEResampleFFMPEG() override;
30  bool Init(SampleConfig dstConfig, SampleConfig srcConfig, bool upmix, bool normalize, double centerMix,
31  CAEChannelInfo *remapLayout, AEQuality quality, bool force_resample) override;
32  int Resample(uint8_t **dst_buffer, int dst_samples, uint8_t **src_buffer, int src_samples, double ratio) override;
33  int64_t GetDelay(int64_t base) override;
34  int GetBufferedSamples() override;
35  bool WantsNewSamples(int samples) override { return GetBufferedSamples() <= samples * 2; }
36  int CalcDstSampleCount(int src_samples, int dst_rate, int src_rate) override;
37  int GetSrcBufferSize(int samples) override;
38  int GetDstBufferSize(int samples) override;
39 
40 protected:
41  bool m_loaded;
42  bool m_doesResample;
43  uint64_t m_src_chan_layout, m_dst_chan_layout;
44  int m_src_rate, m_dst_rate;
45  int m_src_channels, m_dst_channels;
46  AVSampleFormat m_src_fmt, m_dst_fmt;
47  int m_src_bits, m_dst_bits;
48  int m_src_dither_bits, m_dst_dither_bits;
49  SwrContext *m_pContext;
50  double m_rematrix[AE_CH_MAX][AE_CH_MAX];
51 };
52 
53 }
int Resample(uint8_t **dst_buffer, int dst_samples, uint8_t **src_buffer, int src_samples, double ratio) override
Definition: ActiveAEResampleFFMPEG.cpp:191
Definition: Application.h:69
Definition: AE.h:68
Definition: ActiveAEResampleFFMPEG.h:24
Definition: AEChannelInfo.h:19
Definition: AEResample.h:16