Twitch SDK (Internal)
audioconvertoptions.h
Go to the documentation of this file.
1 /********************************************************************************************
2  * Twitch Broadcasting SDK
3  *
4  * This software is supplied under the terms of a license agreement with Twitch Interactive, Inc. and
5  * may not be copied or used except in accordance with the terms of that agreement
6  * Copyright (c) 2012-2017 Twitch Interactive, Inc.
7  *
8  *********************************************************************************************/
9 
10 #pragma once
11 
15 
16 namespace ttv
17 {
51  enum class FilterTypeEnum
52  {
56  Kaiser
57  };
58 
59 
64  {
66  static constexpr double FilterCutoff = 0.45;
67  static constexpr FilterTypeEnum FilterType = FilterTypeEnum::Kaiser;
68  static constexpr double KaiserBeta = 9.0;
69  static constexpr size_t FilterTapCount = 16;
70  };
71 
75  template <typename PassedOptions>
77  {
78  template <typename Options, typename Enable = void>
80  {
82  };
83 
84  template <typename Options>
85  struct DithererOption<Options, VoidType<typename Options::Ditherer>>
86  {
87  using Type = typename Options::Ditherer;
88  };
89 
91 
92  template <typename Options, typename Enable = void>
94  {
95  static constexpr double Value = DefaultAudioConvertOptions::FilterCutoff;
96  };
97 
98  template <typename Options>
99  struct FilterCutoffOption<Options, std::enable_if_t<(Options::FilterCutoff > 0.0)>>
100  {
101  static constexpr double Value = Options::FilterCutoff;
102  };
103 
104  static constexpr double FilterCutoff = FilterCutoffOption<PassedOptions>::Value;
105 
106  template <typename Options, typename Enable = void>
108  {
110  };
111 
112  template <typename Options>
113  struct FilterTypeOption<Options, std::enable_if_t<(Options::FilterType != -1)>>
114  {
115  static constexpr FilterTypeEnum Value = Options::FilterType;
116  };
117 
119 
120  template <typename Options, typename Enable = void>
122  {
123  static constexpr double Value = DefaultAudioConvertOptions::KaiserBeta;
124  };
125 
126  template <typename Options>
127  struct KaiserBetaOption<Options, std::enable_if_t<(Options::KaiserBeta > 0.0)>>
128  {
129  static constexpr double Value = Options::KaiserBeta;
130  };
131 
132  static constexpr double KaiserBeta = KaiserBetaOption<PassedOptions>::Value;
133 
134  template <typename Options, typename Enable = void>
136  {
137  static constexpr size_t Value = DefaultAudioConvertOptions::FilterTapCount;
138  };
139 
140  template <typename Options>
141  struct TapCountOption<Options, std::enable_if_t<(Options::FilterTapCount > 0)>>
142  {
143  static constexpr size_t Value = Options::FilterTapCount;
144  };
145 
146  static constexpr size_t FilterTapCount = TapCountOption<PassedOptions>::Value;
147  };
148 }
Definition: audioconvertoptions.h:121
Definition: ditherers.h:101
Definition: audioconvertoptions.h:79
Definition: audioconvertoptions.h:76
Definition: audioconvertoptions.h:93
static constexpr double FilterCutoff
Definition: audioconvertoptions.h:66
Definition: cpp11transition.h:22
static constexpr double KaiserBeta
Definition: audioconvertoptions.h:68
Definition: audioconvertoptions.h:135
JSON (JavaScript Object Notation).
Definition: adsapi.h:16
static constexpr FilterTypeEnum FilterType
Definition: audioconvertoptions.h:67
Definition: audioconvertoptions.h:63
static constexpr size_t FilterTapCount
Definition: audioconvertoptions.h:69
typename DithererOption< PassedOptions >::Type Ditherer
Definition: audioconvertoptions.h:90
typename MakeVoid< Arg >::Type VoidType
Definition: coreutilities.h:175
FilterTypeEnum
Definition: audioconvertoptions.h:51
Definition: audioconvertoptions.h:107
TriangularDitherer Ditherer
Definition: audioconvertoptions.h:65
typename DefaultAudioConvertOptions::Ditherer Type
Definition: audioconvertoptions.h:81