1
0
Fork 0
mirror of https://github.com/juce-framework/JUCE.git synced 2026-01-10 23:44:24 +00:00

Android: Update Oboe to 1.9.0

This commit is contained in:
reuk 2024-11-04 16:20:20 +00:00
parent 93640b63ff
commit 90fbdfeb00
No known key found for this signature in database
GPG key ID: FCB43929F012EE5C
54 changed files with 695 additions and 123 deletions

View file

@ -313,6 +313,8 @@ add_library( ${BINARY_NAME}
"../../../../../modules/juce_audio_devices/native/oboe/src/flowgraph/SampleRateConverter.h"
"../../../../../modules/juce_audio_devices/native/oboe/src/flowgraph/SinkFloat.cpp"
"../../../../../modules/juce_audio_devices/native/oboe/src/flowgraph/SinkFloat.h"
"../../../../../modules/juce_audio_devices/native/oboe/src/flowgraph/SinkI8_24.cpp"
"../../../../../modules/juce_audio_devices/native/oboe/src/flowgraph/SinkI8_24.h"
"../../../../../modules/juce_audio_devices/native/oboe/src/flowgraph/SinkI16.cpp"
"../../../../../modules/juce_audio_devices/native/oboe/src/flowgraph/SinkI16.h"
"../../../../../modules/juce_audio_devices/native/oboe/src/flowgraph/SinkI24.cpp"
@ -321,6 +323,8 @@ add_library( ${BINARY_NAME}
"../../../../../modules/juce_audio_devices/native/oboe/src/flowgraph/SinkI32.h"
"../../../../../modules/juce_audio_devices/native/oboe/src/flowgraph/SourceFloat.cpp"
"../../../../../modules/juce_audio_devices/native/oboe/src/flowgraph/SourceFloat.h"
"../../../../../modules/juce_audio_devices/native/oboe/src/flowgraph/SourceI8_24.cpp"
"../../../../../modules/juce_audio_devices/native/oboe/src/flowgraph/SourceI8_24.h"
"../../../../../modules/juce_audio_devices/native/oboe/src/flowgraph/SourceI16.cpp"
"../../../../../modules/juce_audio_devices/native/oboe/src/flowgraph/SourceI16.h"
"../../../../../modules/juce_audio_devices/native/oboe/src/flowgraph/SourceI24.cpp"
@ -2895,6 +2899,8 @@ set_source_files_properties(
"../../../../../modules/juce_audio_devices/native/oboe/src/flowgraph/SampleRateConverter.h"
"../../../../../modules/juce_audio_devices/native/oboe/src/flowgraph/SinkFloat.cpp"
"../../../../../modules/juce_audio_devices/native/oboe/src/flowgraph/SinkFloat.h"
"../../../../../modules/juce_audio_devices/native/oboe/src/flowgraph/SinkI8_24.cpp"
"../../../../../modules/juce_audio_devices/native/oboe/src/flowgraph/SinkI8_24.h"
"../../../../../modules/juce_audio_devices/native/oboe/src/flowgraph/SinkI16.cpp"
"../../../../../modules/juce_audio_devices/native/oboe/src/flowgraph/SinkI16.h"
"../../../../../modules/juce_audio_devices/native/oboe/src/flowgraph/SinkI24.cpp"
@ -2903,6 +2909,8 @@ set_source_files_properties(
"../../../../../modules/juce_audio_devices/native/oboe/src/flowgraph/SinkI32.h"
"../../../../../modules/juce_audio_devices/native/oboe/src/flowgraph/SourceFloat.cpp"
"../../../../../modules/juce_audio_devices/native/oboe/src/flowgraph/SourceFloat.h"
"../../../../../modules/juce_audio_devices/native/oboe/src/flowgraph/SourceI8_24.cpp"
"../../../../../modules/juce_audio_devices/native/oboe/src/flowgraph/SourceI8_24.h"
"../../../../../modules/juce_audio_devices/native/oboe/src/flowgraph/SourceI16.cpp"
"../../../../../modules/juce_audio_devices/native/oboe/src/flowgraph/SourceI16.h"
"../../../../../modules/juce_audio_devices/native/oboe/src/flowgraph/SourceI24.cpp"

View file

@ -473,6 +473,9 @@
<ClCompile Include="..\..\..\..\modules\juce_audio_devices\native\oboe\src\flowgraph\SinkFloat.cpp">
<ExcludedFromBuild>true</ExcludedFromBuild>
</ClCompile>
<ClCompile Include="..\..\..\..\modules\juce_audio_devices\native\oboe\src\flowgraph\SinkI8_24.cpp">
<ExcludedFromBuild>true</ExcludedFromBuild>
</ClCompile>
<ClCompile Include="..\..\..\..\modules\juce_audio_devices\native\oboe\src\flowgraph\SinkI16.cpp">
<ExcludedFromBuild>true</ExcludedFromBuild>
</ClCompile>
@ -485,6 +488,9 @@
<ClCompile Include="..\..\..\..\modules\juce_audio_devices\native\oboe\src\flowgraph\SourceFloat.cpp">
<ExcludedFromBuild>true</ExcludedFromBuild>
</ClCompile>
<ClCompile Include="..\..\..\..\modules\juce_audio_devices\native\oboe\src\flowgraph\SourceI8_24.cpp">
<ExcludedFromBuild>true</ExcludedFromBuild>
</ClCompile>
<ClCompile Include="..\..\..\..\modules\juce_audio_devices\native\oboe\src\flowgraph\SourceI16.cpp">
<ExcludedFromBuild>true</ExcludedFromBuild>
</ClCompile>
@ -3367,10 +3373,12 @@
<ClInclude Include="..\..\..\..\modules\juce_audio_devices\native\oboe\src\flowgraph\RampLinear.h"/>
<ClInclude Include="..\..\..\..\modules\juce_audio_devices\native\oboe\src\flowgraph\SampleRateConverter.h"/>
<ClInclude Include="..\..\..\..\modules\juce_audio_devices\native\oboe\src\flowgraph\SinkFloat.h"/>
<ClInclude Include="..\..\..\..\modules\juce_audio_devices\native\oboe\src\flowgraph\SinkI8_24.h"/>
<ClInclude Include="..\..\..\..\modules\juce_audio_devices\native\oboe\src\flowgraph\SinkI16.h"/>
<ClInclude Include="..\..\..\..\modules\juce_audio_devices\native\oboe\src\flowgraph\SinkI24.h"/>
<ClInclude Include="..\..\..\..\modules\juce_audio_devices\native\oboe\src\flowgraph\SinkI32.h"/>
<ClInclude Include="..\..\..\..\modules\juce_audio_devices\native\oboe\src\flowgraph\SourceFloat.h"/>
<ClInclude Include="..\..\..\..\modules\juce_audio_devices\native\oboe\src\flowgraph\SourceI8_24.h"/>
<ClInclude Include="..\..\..\..\modules\juce_audio_devices\native\oboe\src\flowgraph\SourceI16.h"/>
<ClInclude Include="..\..\..\..\modules\juce_audio_devices\native\oboe\src\flowgraph\SourceI24.h"/>
<ClInclude Include="..\..\..\..\modules\juce_audio_devices\native\oboe\src\flowgraph\SourceI32.h"/>

View file

@ -1162,6 +1162,9 @@
<ClCompile Include="..\..\..\..\modules\juce_audio_devices\native\oboe\src\flowgraph\SinkFloat.cpp">
<Filter>JUCE Modules\juce_audio_devices\native\oboe\src\flowgraph</Filter>
</ClCompile>
<ClCompile Include="..\..\..\..\modules\juce_audio_devices\native\oboe\src\flowgraph\SinkI8_24.cpp">
<Filter>JUCE Modules\juce_audio_devices\native\oboe\src\flowgraph</Filter>
</ClCompile>
<ClCompile Include="..\..\..\..\modules\juce_audio_devices\native\oboe\src\flowgraph\SinkI16.cpp">
<Filter>JUCE Modules\juce_audio_devices\native\oboe\src\flowgraph</Filter>
</ClCompile>
@ -1174,6 +1177,9 @@
<ClCompile Include="..\..\..\..\modules\juce_audio_devices\native\oboe\src\flowgraph\SourceFloat.cpp">
<Filter>JUCE Modules\juce_audio_devices\native\oboe\src\flowgraph</Filter>
</ClCompile>
<ClCompile Include="..\..\..\..\modules\juce_audio_devices\native\oboe\src\flowgraph\SourceI8_24.cpp">
<Filter>JUCE Modules\juce_audio_devices\native\oboe\src\flowgraph</Filter>
</ClCompile>
<ClCompile Include="..\..\..\..\modules\juce_audio_devices\native\oboe\src\flowgraph\SourceI16.cpp">
<Filter>JUCE Modules\juce_audio_devices\native\oboe\src\flowgraph</Filter>
</ClCompile>
@ -4554,6 +4560,9 @@
<ClInclude Include="..\..\..\..\modules\juce_audio_devices\native\oboe\src\flowgraph\SinkFloat.h">
<Filter>JUCE Modules\juce_audio_devices\native\oboe\src\flowgraph</Filter>
</ClInclude>
<ClInclude Include="..\..\..\..\modules\juce_audio_devices\native\oboe\src\flowgraph\SinkI8_24.h">
<Filter>JUCE Modules\juce_audio_devices\native\oboe\src\flowgraph</Filter>
</ClInclude>
<ClInclude Include="..\..\..\..\modules\juce_audio_devices\native\oboe\src\flowgraph\SinkI16.h">
<Filter>JUCE Modules\juce_audio_devices\native\oboe\src\flowgraph</Filter>
</ClInclude>
@ -4566,6 +4575,9 @@
<ClInclude Include="..\..\..\..\modules\juce_audio_devices\native\oboe\src\flowgraph\SourceFloat.h">
<Filter>JUCE Modules\juce_audio_devices\native\oboe\src\flowgraph</Filter>
</ClInclude>
<ClInclude Include="..\..\..\..\modules\juce_audio_devices\native\oboe\src\flowgraph\SourceI8_24.h">
<Filter>JUCE Modules\juce_audio_devices\native\oboe\src\flowgraph</Filter>
</ClInclude>
<ClInclude Include="..\..\..\..\modules\juce_audio_devices\native\oboe\src\flowgraph\SourceI16.h">
<Filter>JUCE Modules\juce_audio_devices\native\oboe\src\flowgraph</Filter>
</ClInclude>

View file

@ -473,6 +473,9 @@
<ClCompile Include="..\..\..\..\modules\juce_audio_devices\native\oboe\src\flowgraph\SinkFloat.cpp">
<ExcludedFromBuild>true</ExcludedFromBuild>
</ClCompile>
<ClCompile Include="..\..\..\..\modules\juce_audio_devices\native\oboe\src\flowgraph\SinkI8_24.cpp">
<ExcludedFromBuild>true</ExcludedFromBuild>
</ClCompile>
<ClCompile Include="..\..\..\..\modules\juce_audio_devices\native\oboe\src\flowgraph\SinkI16.cpp">
<ExcludedFromBuild>true</ExcludedFromBuild>
</ClCompile>
@ -485,6 +488,9 @@
<ClCompile Include="..\..\..\..\modules\juce_audio_devices\native\oboe\src\flowgraph\SourceFloat.cpp">
<ExcludedFromBuild>true</ExcludedFromBuild>
</ClCompile>
<ClCompile Include="..\..\..\..\modules\juce_audio_devices\native\oboe\src\flowgraph\SourceI8_24.cpp">
<ExcludedFromBuild>true</ExcludedFromBuild>
</ClCompile>
<ClCompile Include="..\..\..\..\modules\juce_audio_devices\native\oboe\src\flowgraph\SourceI16.cpp">
<ExcludedFromBuild>true</ExcludedFromBuild>
</ClCompile>
@ -3367,10 +3373,12 @@
<ClInclude Include="..\..\..\..\modules\juce_audio_devices\native\oboe\src\flowgraph\RampLinear.h"/>
<ClInclude Include="..\..\..\..\modules\juce_audio_devices\native\oboe\src\flowgraph\SampleRateConverter.h"/>
<ClInclude Include="..\..\..\..\modules\juce_audio_devices\native\oboe\src\flowgraph\SinkFloat.h"/>
<ClInclude Include="..\..\..\..\modules\juce_audio_devices\native\oboe\src\flowgraph\SinkI8_24.h"/>
<ClInclude Include="..\..\..\..\modules\juce_audio_devices\native\oboe\src\flowgraph\SinkI16.h"/>
<ClInclude Include="..\..\..\..\modules\juce_audio_devices\native\oboe\src\flowgraph\SinkI24.h"/>
<ClInclude Include="..\..\..\..\modules\juce_audio_devices\native\oboe\src\flowgraph\SinkI32.h"/>
<ClInclude Include="..\..\..\..\modules\juce_audio_devices\native\oboe\src\flowgraph\SourceFloat.h"/>
<ClInclude Include="..\..\..\..\modules\juce_audio_devices\native\oboe\src\flowgraph\SourceI8_24.h"/>
<ClInclude Include="..\..\..\..\modules\juce_audio_devices\native\oboe\src\flowgraph\SourceI16.h"/>
<ClInclude Include="..\..\..\..\modules\juce_audio_devices\native\oboe\src\flowgraph\SourceI24.h"/>
<ClInclude Include="..\..\..\..\modules\juce_audio_devices\native\oboe\src\flowgraph\SourceI32.h"/>

View file

@ -1162,6 +1162,9 @@
<ClCompile Include="..\..\..\..\modules\juce_audio_devices\native\oboe\src\flowgraph\SinkFloat.cpp">
<Filter>JUCE Modules\juce_audio_devices\native\oboe\src\flowgraph</Filter>
</ClCompile>
<ClCompile Include="..\..\..\..\modules\juce_audio_devices\native\oboe\src\flowgraph\SinkI8_24.cpp">
<Filter>JUCE Modules\juce_audio_devices\native\oboe\src\flowgraph</Filter>
</ClCompile>
<ClCompile Include="..\..\..\..\modules\juce_audio_devices\native\oboe\src\flowgraph\SinkI16.cpp">
<Filter>JUCE Modules\juce_audio_devices\native\oboe\src\flowgraph</Filter>
</ClCompile>
@ -1174,6 +1177,9 @@
<ClCompile Include="..\..\..\..\modules\juce_audio_devices\native\oboe\src\flowgraph\SourceFloat.cpp">
<Filter>JUCE Modules\juce_audio_devices\native\oboe\src\flowgraph</Filter>
</ClCompile>
<ClCompile Include="..\..\..\..\modules\juce_audio_devices\native\oboe\src\flowgraph\SourceI8_24.cpp">
<Filter>JUCE Modules\juce_audio_devices\native\oboe\src\flowgraph</Filter>
</ClCompile>
<ClCompile Include="..\..\..\..\modules\juce_audio_devices\native\oboe\src\flowgraph\SourceI16.cpp">
<Filter>JUCE Modules\juce_audio_devices\native\oboe\src\flowgraph</Filter>
</ClCompile>
@ -4554,6 +4560,9 @@
<ClInclude Include="..\..\..\..\modules\juce_audio_devices\native\oboe\src\flowgraph\SinkFloat.h">
<Filter>JUCE Modules\juce_audio_devices\native\oboe\src\flowgraph</Filter>
</ClInclude>
<ClInclude Include="..\..\..\..\modules\juce_audio_devices\native\oboe\src\flowgraph\SinkI8_24.h">
<Filter>JUCE Modules\juce_audio_devices\native\oboe\src\flowgraph</Filter>
</ClInclude>
<ClInclude Include="..\..\..\..\modules\juce_audio_devices\native\oboe\src\flowgraph\SinkI16.h">
<Filter>JUCE Modules\juce_audio_devices\native\oboe\src\flowgraph</Filter>
</ClInclude>
@ -4566,6 +4575,9 @@
<ClInclude Include="..\..\..\..\modules\juce_audio_devices\native\oboe\src\flowgraph\SourceFloat.h">
<Filter>JUCE Modules\juce_audio_devices\native\oboe\src\flowgraph</Filter>
</ClInclude>
<ClInclude Include="..\..\..\..\modules\juce_audio_devices\native\oboe\src\flowgraph\SourceI8_24.h">
<Filter>JUCE Modules\juce_audio_devices\native\oboe\src\flowgraph</Filter>
</ClInclude>
<ClInclude Include="..\..\..\..\modules\juce_audio_devices\native\oboe\src\flowgraph\SourceI16.h">
<Filter>JUCE Modules\juce_audio_devices\native\oboe\src\flowgraph</Filter>
</ClInclude>

View file

@ -268,6 +268,8 @@ add_library( ${BINARY_NAME}
"../../../../../modules/juce_audio_devices/native/oboe/src/flowgraph/SampleRateConverter.h"
"../../../../../modules/juce_audio_devices/native/oboe/src/flowgraph/SinkFloat.cpp"
"../../../../../modules/juce_audio_devices/native/oboe/src/flowgraph/SinkFloat.h"
"../../../../../modules/juce_audio_devices/native/oboe/src/flowgraph/SinkI8_24.cpp"
"../../../../../modules/juce_audio_devices/native/oboe/src/flowgraph/SinkI8_24.h"
"../../../../../modules/juce_audio_devices/native/oboe/src/flowgraph/SinkI16.cpp"
"../../../../../modules/juce_audio_devices/native/oboe/src/flowgraph/SinkI16.h"
"../../../../../modules/juce_audio_devices/native/oboe/src/flowgraph/SinkI24.cpp"
@ -276,6 +278,8 @@ add_library( ${BINARY_NAME}
"../../../../../modules/juce_audio_devices/native/oboe/src/flowgraph/SinkI32.h"
"../../../../../modules/juce_audio_devices/native/oboe/src/flowgraph/SourceFloat.cpp"
"../../../../../modules/juce_audio_devices/native/oboe/src/flowgraph/SourceFloat.h"
"../../../../../modules/juce_audio_devices/native/oboe/src/flowgraph/SourceI8_24.cpp"
"../../../../../modules/juce_audio_devices/native/oboe/src/flowgraph/SourceI8_24.h"
"../../../../../modules/juce_audio_devices/native/oboe/src/flowgraph/SourceI16.cpp"
"../../../../../modules/juce_audio_devices/native/oboe/src/flowgraph/SourceI16.h"
"../../../../../modules/juce_audio_devices/native/oboe/src/flowgraph/SourceI24.cpp"
@ -2533,6 +2537,8 @@ set_source_files_properties(
"../../../../../modules/juce_audio_devices/native/oboe/src/flowgraph/SampleRateConverter.h"
"../../../../../modules/juce_audio_devices/native/oboe/src/flowgraph/SinkFloat.cpp"
"../../../../../modules/juce_audio_devices/native/oboe/src/flowgraph/SinkFloat.h"
"../../../../../modules/juce_audio_devices/native/oboe/src/flowgraph/SinkI8_24.cpp"
"../../../../../modules/juce_audio_devices/native/oboe/src/flowgraph/SinkI8_24.h"
"../../../../../modules/juce_audio_devices/native/oboe/src/flowgraph/SinkI16.cpp"
"../../../../../modules/juce_audio_devices/native/oboe/src/flowgraph/SinkI16.h"
"../../../../../modules/juce_audio_devices/native/oboe/src/flowgraph/SinkI24.cpp"
@ -2541,6 +2547,8 @@ set_source_files_properties(
"../../../../../modules/juce_audio_devices/native/oboe/src/flowgraph/SinkI32.h"
"../../../../../modules/juce_audio_devices/native/oboe/src/flowgraph/SourceFloat.cpp"
"../../../../../modules/juce_audio_devices/native/oboe/src/flowgraph/SourceFloat.h"
"../../../../../modules/juce_audio_devices/native/oboe/src/flowgraph/SourceI8_24.cpp"
"../../../../../modules/juce_audio_devices/native/oboe/src/flowgraph/SourceI8_24.h"
"../../../../../modules/juce_audio_devices/native/oboe/src/flowgraph/SourceI16.cpp"
"../../../../../modules/juce_audio_devices/native/oboe/src/flowgraph/SourceI16.h"
"../../../../../modules/juce_audio_devices/native/oboe/src/flowgraph/SourceI24.cpp"

View file

@ -433,6 +433,9 @@
<ClCompile Include="..\..\..\..\modules\juce_audio_devices\native\oboe\src\flowgraph\SinkFloat.cpp">
<ExcludedFromBuild>true</ExcludedFromBuild>
</ClCompile>
<ClCompile Include="..\..\..\..\modules\juce_audio_devices\native\oboe\src\flowgraph\SinkI8_24.cpp">
<ExcludedFromBuild>true</ExcludedFromBuild>
</ClCompile>
<ClCompile Include="..\..\..\..\modules\juce_audio_devices\native\oboe\src\flowgraph\SinkI16.cpp">
<ExcludedFromBuild>true</ExcludedFromBuild>
</ClCompile>
@ -445,6 +448,9 @@
<ClCompile Include="..\..\..\..\modules\juce_audio_devices\native\oboe\src\flowgraph\SourceFloat.cpp">
<ExcludedFromBuild>true</ExcludedFromBuild>
</ClCompile>
<ClCompile Include="..\..\..\..\modules\juce_audio_devices\native\oboe\src\flowgraph\SourceI8_24.cpp">
<ExcludedFromBuild>true</ExcludedFromBuild>
</ClCompile>
<ClCompile Include="..\..\..\..\modules\juce_audio_devices\native\oboe\src\flowgraph\SourceI16.cpp">
<ExcludedFromBuild>true</ExcludedFromBuild>
</ClCompile>
@ -2939,10 +2945,12 @@
<ClInclude Include="..\..\..\..\modules\juce_audio_devices\native\oboe\src\flowgraph\RampLinear.h"/>
<ClInclude Include="..\..\..\..\modules\juce_audio_devices\native\oboe\src\flowgraph\SampleRateConverter.h"/>
<ClInclude Include="..\..\..\..\modules\juce_audio_devices\native\oboe\src\flowgraph\SinkFloat.h"/>
<ClInclude Include="..\..\..\..\modules\juce_audio_devices\native\oboe\src\flowgraph\SinkI8_24.h"/>
<ClInclude Include="..\..\..\..\modules\juce_audio_devices\native\oboe\src\flowgraph\SinkI16.h"/>
<ClInclude Include="..\..\..\..\modules\juce_audio_devices\native\oboe\src\flowgraph\SinkI24.h"/>
<ClInclude Include="..\..\..\..\modules\juce_audio_devices\native\oboe\src\flowgraph\SinkI32.h"/>
<ClInclude Include="..\..\..\..\modules\juce_audio_devices\native\oboe\src\flowgraph\SourceFloat.h"/>
<ClInclude Include="..\..\..\..\modules\juce_audio_devices\native\oboe\src\flowgraph\SourceI8_24.h"/>
<ClInclude Include="..\..\..\..\modules\juce_audio_devices\native\oboe\src\flowgraph\SourceI16.h"/>
<ClInclude Include="..\..\..\..\modules\juce_audio_devices\native\oboe\src\flowgraph\SourceI24.h"/>
<ClInclude Include="..\..\..\..\modules\juce_audio_devices\native\oboe\src\flowgraph\SourceI32.h"/>

View file

@ -979,6 +979,9 @@
<ClCompile Include="..\..\..\..\modules\juce_audio_devices\native\oboe\src\flowgraph\SinkFloat.cpp">
<Filter>JUCE Modules\juce_audio_devices\native\oboe\src\flowgraph</Filter>
</ClCompile>
<ClCompile Include="..\..\..\..\modules\juce_audio_devices\native\oboe\src\flowgraph\SinkI8_24.cpp">
<Filter>JUCE Modules\juce_audio_devices\native\oboe\src\flowgraph</Filter>
</ClCompile>
<ClCompile Include="..\..\..\..\modules\juce_audio_devices\native\oboe\src\flowgraph\SinkI16.cpp">
<Filter>JUCE Modules\juce_audio_devices\native\oboe\src\flowgraph</Filter>
</ClCompile>
@ -991,6 +994,9 @@
<ClCompile Include="..\..\..\..\modules\juce_audio_devices\native\oboe\src\flowgraph\SourceFloat.cpp">
<Filter>JUCE Modules\juce_audio_devices\native\oboe\src\flowgraph</Filter>
</ClCompile>
<ClCompile Include="..\..\..\..\modules\juce_audio_devices\native\oboe\src\flowgraph\SourceI8_24.cpp">
<Filter>JUCE Modules\juce_audio_devices\native\oboe\src\flowgraph</Filter>
</ClCompile>
<ClCompile Include="..\..\..\..\modules\juce_audio_devices\native\oboe\src\flowgraph\SourceI16.cpp">
<Filter>JUCE Modules\juce_audio_devices\native\oboe\src\flowgraph</Filter>
</ClCompile>
@ -3912,6 +3918,9 @@
<ClInclude Include="..\..\..\..\modules\juce_audio_devices\native\oboe\src\flowgraph\SinkFloat.h">
<Filter>JUCE Modules\juce_audio_devices\native\oboe\src\flowgraph</Filter>
</ClInclude>
<ClInclude Include="..\..\..\..\modules\juce_audio_devices\native\oboe\src\flowgraph\SinkI8_24.h">
<Filter>JUCE Modules\juce_audio_devices\native\oboe\src\flowgraph</Filter>
</ClInclude>
<ClInclude Include="..\..\..\..\modules\juce_audio_devices\native\oboe\src\flowgraph\SinkI16.h">
<Filter>JUCE Modules\juce_audio_devices\native\oboe\src\flowgraph</Filter>
</ClInclude>
@ -3924,6 +3933,9 @@
<ClInclude Include="..\..\..\..\modules\juce_audio_devices\native\oboe\src\flowgraph\SourceFloat.h">
<Filter>JUCE Modules\juce_audio_devices\native\oboe\src\flowgraph</Filter>
</ClInclude>
<ClInclude Include="..\..\..\..\modules\juce_audio_devices\native\oboe\src\flowgraph\SourceI8_24.h">
<Filter>JUCE Modules\juce_audio_devices\native\oboe\src\flowgraph</Filter>
</ClInclude>
<ClInclude Include="..\..\..\..\modules\juce_audio_devices\native\oboe\src\flowgraph\SourceI16.h">
<Filter>JUCE Modules\juce_audio_devices\native\oboe\src\flowgraph</Filter>
</ClInclude>

View file

@ -301,6 +301,8 @@ add_library( ${BINARY_NAME}
"../../../../../modules/juce_audio_devices/native/oboe/src/flowgraph/SampleRateConverter.h"
"../../../../../modules/juce_audio_devices/native/oboe/src/flowgraph/SinkFloat.cpp"
"../../../../../modules/juce_audio_devices/native/oboe/src/flowgraph/SinkFloat.h"
"../../../../../modules/juce_audio_devices/native/oboe/src/flowgraph/SinkI8_24.cpp"
"../../../../../modules/juce_audio_devices/native/oboe/src/flowgraph/SinkI8_24.h"
"../../../../../modules/juce_audio_devices/native/oboe/src/flowgraph/SinkI16.cpp"
"../../../../../modules/juce_audio_devices/native/oboe/src/flowgraph/SinkI16.h"
"../../../../../modules/juce_audio_devices/native/oboe/src/flowgraph/SinkI24.cpp"
@ -309,6 +311,8 @@ add_library( ${BINARY_NAME}
"../../../../../modules/juce_audio_devices/native/oboe/src/flowgraph/SinkI32.h"
"../../../../../modules/juce_audio_devices/native/oboe/src/flowgraph/SourceFloat.cpp"
"../../../../../modules/juce_audio_devices/native/oboe/src/flowgraph/SourceFloat.h"
"../../../../../modules/juce_audio_devices/native/oboe/src/flowgraph/SourceI8_24.cpp"
"../../../../../modules/juce_audio_devices/native/oboe/src/flowgraph/SourceI8_24.h"
"../../../../../modules/juce_audio_devices/native/oboe/src/flowgraph/SourceI16.cpp"
"../../../../../modules/juce_audio_devices/native/oboe/src/flowgraph/SourceI16.h"
"../../../../../modules/juce_audio_devices/native/oboe/src/flowgraph/SourceI24.cpp"
@ -2719,6 +2723,8 @@ set_source_files_properties(
"../../../../../modules/juce_audio_devices/native/oboe/src/flowgraph/SampleRateConverter.h"
"../../../../../modules/juce_audio_devices/native/oboe/src/flowgraph/SinkFloat.cpp"
"../../../../../modules/juce_audio_devices/native/oboe/src/flowgraph/SinkFloat.h"
"../../../../../modules/juce_audio_devices/native/oboe/src/flowgraph/SinkI8_24.cpp"
"../../../../../modules/juce_audio_devices/native/oboe/src/flowgraph/SinkI8_24.h"
"../../../../../modules/juce_audio_devices/native/oboe/src/flowgraph/SinkI16.cpp"
"../../../../../modules/juce_audio_devices/native/oboe/src/flowgraph/SinkI16.h"
"../../../../../modules/juce_audio_devices/native/oboe/src/flowgraph/SinkI24.cpp"
@ -2727,6 +2733,8 @@ set_source_files_properties(
"../../../../../modules/juce_audio_devices/native/oboe/src/flowgraph/SinkI32.h"
"../../../../../modules/juce_audio_devices/native/oboe/src/flowgraph/SourceFloat.cpp"
"../../../../../modules/juce_audio_devices/native/oboe/src/flowgraph/SourceFloat.h"
"../../../../../modules/juce_audio_devices/native/oboe/src/flowgraph/SourceI8_24.cpp"
"../../../../../modules/juce_audio_devices/native/oboe/src/flowgraph/SourceI8_24.h"
"../../../../../modules/juce_audio_devices/native/oboe/src/flowgraph/SourceI16.cpp"
"../../../../../modules/juce_audio_devices/native/oboe/src/flowgraph/SourceI16.h"
"../../../../../modules/juce_audio_devices/native/oboe/src/flowgraph/SourceI24.cpp"

View file

@ -441,6 +441,9 @@
<ClCompile Include="..\..\..\..\modules\juce_audio_devices\native\oboe\src\flowgraph\SinkFloat.cpp">
<ExcludedFromBuild>true</ExcludedFromBuild>
</ClCompile>
<ClCompile Include="..\..\..\..\modules\juce_audio_devices\native\oboe\src\flowgraph\SinkI8_24.cpp">
<ExcludedFromBuild>true</ExcludedFromBuild>
</ClCompile>
<ClCompile Include="..\..\..\..\modules\juce_audio_devices\native\oboe\src\flowgraph\SinkI16.cpp">
<ExcludedFromBuild>true</ExcludedFromBuild>
</ClCompile>
@ -453,6 +456,9 @@
<ClCompile Include="..\..\..\..\modules\juce_audio_devices\native\oboe\src\flowgraph\SourceFloat.cpp">
<ExcludedFromBuild>true</ExcludedFromBuild>
</ClCompile>
<ClCompile Include="..\..\..\..\modules\juce_audio_devices\native\oboe\src\flowgraph\SourceI8_24.cpp">
<ExcludedFromBuild>true</ExcludedFromBuild>
</ClCompile>
<ClCompile Include="..\..\..\..\modules\juce_audio_devices\native\oboe\src\flowgraph\SourceI16.cpp">
<ExcludedFromBuild>true</ExcludedFromBuild>
</ClCompile>
@ -3119,10 +3125,12 @@
<ClInclude Include="..\..\..\..\modules\juce_audio_devices\native\oboe\src\flowgraph\RampLinear.h"/>
<ClInclude Include="..\..\..\..\modules\juce_audio_devices\native\oboe\src\flowgraph\SampleRateConverter.h"/>
<ClInclude Include="..\..\..\..\modules\juce_audio_devices\native\oboe\src\flowgraph\SinkFloat.h"/>
<ClInclude Include="..\..\..\..\modules\juce_audio_devices\native\oboe\src\flowgraph\SinkI8_24.h"/>
<ClInclude Include="..\..\..\..\modules\juce_audio_devices\native\oboe\src\flowgraph\SinkI16.h"/>
<ClInclude Include="..\..\..\..\modules\juce_audio_devices\native\oboe\src\flowgraph\SinkI24.h"/>
<ClInclude Include="..\..\..\..\modules\juce_audio_devices\native\oboe\src\flowgraph\SinkI32.h"/>
<ClInclude Include="..\..\..\..\modules\juce_audio_devices\native\oboe\src\flowgraph\SourceFloat.h"/>
<ClInclude Include="..\..\..\..\modules\juce_audio_devices\native\oboe\src\flowgraph\SourceI8_24.h"/>
<ClInclude Include="..\..\..\..\modules\juce_audio_devices\native\oboe\src\flowgraph\SourceI16.h"/>
<ClInclude Include="..\..\..\..\modules\juce_audio_devices\native\oboe\src\flowgraph\SourceI24.h"/>
<ClInclude Include="..\..\..\..\modules\juce_audio_devices\native\oboe\src\flowgraph\SourceI32.h"/>

View file

@ -1054,6 +1054,9 @@
<ClCompile Include="..\..\..\..\modules\juce_audio_devices\native\oboe\src\flowgraph\SinkFloat.cpp">
<Filter>JUCE Modules\juce_audio_devices\native\oboe\src\flowgraph</Filter>
</ClCompile>
<ClCompile Include="..\..\..\..\modules\juce_audio_devices\native\oboe\src\flowgraph\SinkI8_24.cpp">
<Filter>JUCE Modules\juce_audio_devices\native\oboe\src\flowgraph</Filter>
</ClCompile>
<ClCompile Include="..\..\..\..\modules\juce_audio_devices\native\oboe\src\flowgraph\SinkI16.cpp">
<Filter>JUCE Modules\juce_audio_devices\native\oboe\src\flowgraph</Filter>
</ClCompile>
@ -1066,6 +1069,9 @@
<ClCompile Include="..\..\..\..\modules\juce_audio_devices\native\oboe\src\flowgraph\SourceFloat.cpp">
<Filter>JUCE Modules\juce_audio_devices\native\oboe\src\flowgraph</Filter>
</ClCompile>
<ClCompile Include="..\..\..\..\modules\juce_audio_devices\native\oboe\src\flowgraph\SourceI8_24.cpp">
<Filter>JUCE Modules\juce_audio_devices\native\oboe\src\flowgraph</Filter>
</ClCompile>
<ClCompile Include="..\..\..\..\modules\juce_audio_devices\native\oboe\src\flowgraph\SourceI16.cpp">
<Filter>JUCE Modules\juce_audio_devices\native\oboe\src\flowgraph</Filter>
</ClCompile>
@ -4188,6 +4194,9 @@
<ClInclude Include="..\..\..\..\modules\juce_audio_devices\native\oboe\src\flowgraph\SinkFloat.h">
<Filter>JUCE Modules\juce_audio_devices\native\oboe\src\flowgraph</Filter>
</ClInclude>
<ClInclude Include="..\..\..\..\modules\juce_audio_devices\native\oboe\src\flowgraph\SinkI8_24.h">
<Filter>JUCE Modules\juce_audio_devices\native\oboe\src\flowgraph</Filter>
</ClInclude>
<ClInclude Include="..\..\..\..\modules\juce_audio_devices\native\oboe\src\flowgraph\SinkI16.h">
<Filter>JUCE Modules\juce_audio_devices\native\oboe\src\flowgraph</Filter>
</ClInclude>
@ -4200,6 +4209,9 @@
<ClInclude Include="..\..\..\..\modules\juce_audio_devices\native\oboe\src\flowgraph\SourceFloat.h">
<Filter>JUCE Modules\juce_audio_devices\native\oboe\src\flowgraph</Filter>
</ClInclude>
<ClInclude Include="..\..\..\..\modules\juce_audio_devices\native\oboe\src\flowgraph\SourceI8_24.h">
<Filter>JUCE Modules\juce_audio_devices\native\oboe\src\flowgraph</Filter>
</ClInclude>
<ClInclude Include="..\..\..\..\modules\juce_audio_devices\native\oboe\src\flowgraph\SourceI16.h">
<Filter>JUCE Modules\juce_audio_devices\native\oboe\src\flowgraph</Filter>
</ClInclude>

View file

@ -441,6 +441,9 @@
<ClCompile Include="..\..\..\..\modules\juce_audio_devices\native\oboe\src\flowgraph\SinkFloat.cpp">
<ExcludedFromBuild>true</ExcludedFromBuild>
</ClCompile>
<ClCompile Include="..\..\..\..\modules\juce_audio_devices\native\oboe\src\flowgraph\SinkI8_24.cpp">
<ExcludedFromBuild>true</ExcludedFromBuild>
</ClCompile>
<ClCompile Include="..\..\..\..\modules\juce_audio_devices\native\oboe\src\flowgraph\SinkI16.cpp">
<ExcludedFromBuild>true</ExcludedFromBuild>
</ClCompile>
@ -453,6 +456,9 @@
<ClCompile Include="..\..\..\..\modules\juce_audio_devices\native\oboe\src\flowgraph\SourceFloat.cpp">
<ExcludedFromBuild>true</ExcludedFromBuild>
</ClCompile>
<ClCompile Include="..\..\..\..\modules\juce_audio_devices\native\oboe\src\flowgraph\SourceI8_24.cpp">
<ExcludedFromBuild>true</ExcludedFromBuild>
</ClCompile>
<ClCompile Include="..\..\..\..\modules\juce_audio_devices\native\oboe\src\flowgraph\SourceI16.cpp">
<ExcludedFromBuild>true</ExcludedFromBuild>
</ClCompile>
@ -3119,10 +3125,12 @@
<ClInclude Include="..\..\..\..\modules\juce_audio_devices\native\oboe\src\flowgraph\RampLinear.h"/>
<ClInclude Include="..\..\..\..\modules\juce_audio_devices\native\oboe\src\flowgraph\SampleRateConverter.h"/>
<ClInclude Include="..\..\..\..\modules\juce_audio_devices\native\oboe\src\flowgraph\SinkFloat.h"/>
<ClInclude Include="..\..\..\..\modules\juce_audio_devices\native\oboe\src\flowgraph\SinkI8_24.h"/>
<ClInclude Include="..\..\..\..\modules\juce_audio_devices\native\oboe\src\flowgraph\SinkI16.h"/>
<ClInclude Include="..\..\..\..\modules\juce_audio_devices\native\oboe\src\flowgraph\SinkI24.h"/>
<ClInclude Include="..\..\..\..\modules\juce_audio_devices\native\oboe\src\flowgraph\SinkI32.h"/>
<ClInclude Include="..\..\..\..\modules\juce_audio_devices\native\oboe\src\flowgraph\SourceFloat.h"/>
<ClInclude Include="..\..\..\..\modules\juce_audio_devices\native\oboe\src\flowgraph\SourceI8_24.h"/>
<ClInclude Include="..\..\..\..\modules\juce_audio_devices\native\oboe\src\flowgraph\SourceI16.h"/>
<ClInclude Include="..\..\..\..\modules\juce_audio_devices\native\oboe\src\flowgraph\SourceI24.h"/>
<ClInclude Include="..\..\..\..\modules\juce_audio_devices\native\oboe\src\flowgraph\SourceI32.h"/>

View file

@ -1054,6 +1054,9 @@
<ClCompile Include="..\..\..\..\modules\juce_audio_devices\native\oboe\src\flowgraph\SinkFloat.cpp">
<Filter>JUCE Modules\juce_audio_devices\native\oboe\src\flowgraph</Filter>
</ClCompile>
<ClCompile Include="..\..\..\..\modules\juce_audio_devices\native\oboe\src\flowgraph\SinkI8_24.cpp">
<Filter>JUCE Modules\juce_audio_devices\native\oboe\src\flowgraph</Filter>
</ClCompile>
<ClCompile Include="..\..\..\..\modules\juce_audio_devices\native\oboe\src\flowgraph\SinkI16.cpp">
<Filter>JUCE Modules\juce_audio_devices\native\oboe\src\flowgraph</Filter>
</ClCompile>
@ -1066,6 +1069,9 @@
<ClCompile Include="..\..\..\..\modules\juce_audio_devices\native\oboe\src\flowgraph\SourceFloat.cpp">
<Filter>JUCE Modules\juce_audio_devices\native\oboe\src\flowgraph</Filter>
</ClCompile>
<ClCompile Include="..\..\..\..\modules\juce_audio_devices\native\oboe\src\flowgraph\SourceI8_24.cpp">
<Filter>JUCE Modules\juce_audio_devices\native\oboe\src\flowgraph</Filter>
</ClCompile>
<ClCompile Include="..\..\..\..\modules\juce_audio_devices\native\oboe\src\flowgraph\SourceI16.cpp">
<Filter>JUCE Modules\juce_audio_devices\native\oboe\src\flowgraph</Filter>
</ClCompile>
@ -4188,6 +4194,9 @@
<ClInclude Include="..\..\..\..\modules\juce_audio_devices\native\oboe\src\flowgraph\SinkFloat.h">
<Filter>JUCE Modules\juce_audio_devices\native\oboe\src\flowgraph</Filter>
</ClInclude>
<ClInclude Include="..\..\..\..\modules\juce_audio_devices\native\oboe\src\flowgraph\SinkI8_24.h">
<Filter>JUCE Modules\juce_audio_devices\native\oboe\src\flowgraph</Filter>
</ClInclude>
<ClInclude Include="..\..\..\..\modules\juce_audio_devices\native\oboe\src\flowgraph\SinkI16.h">
<Filter>JUCE Modules\juce_audio_devices\native\oboe\src\flowgraph</Filter>
</ClInclude>
@ -4200,6 +4209,9 @@
<ClInclude Include="..\..\..\..\modules\juce_audio_devices\native\oboe\src\flowgraph\SourceFloat.h">
<Filter>JUCE Modules\juce_audio_devices\native\oboe\src\flowgraph</Filter>
</ClInclude>
<ClInclude Include="..\..\..\..\modules\juce_audio_devices\native\oboe\src\flowgraph\SourceI8_24.h">
<Filter>JUCE Modules\juce_audio_devices\native\oboe\src\flowgraph</Filter>
</ClInclude>
<ClInclude Include="..\..\..\..\modules\juce_audio_devices\native\oboe\src\flowgraph\SourceI16.h">
<Filter>JUCE Modules\juce_audio_devices\native\oboe\src\flowgraph</Filter>
</ClInclude>

View file

@ -272,6 +272,8 @@ add_library( ${BINARY_NAME}
"../../../../../modules/juce_audio_devices/native/oboe/src/flowgraph/SampleRateConverter.h"
"../../../../../modules/juce_audio_devices/native/oboe/src/flowgraph/SinkFloat.cpp"
"../../../../../modules/juce_audio_devices/native/oboe/src/flowgraph/SinkFloat.h"
"../../../../../modules/juce_audio_devices/native/oboe/src/flowgraph/SinkI8_24.cpp"
"../../../../../modules/juce_audio_devices/native/oboe/src/flowgraph/SinkI8_24.h"
"../../../../../modules/juce_audio_devices/native/oboe/src/flowgraph/SinkI16.cpp"
"../../../../../modules/juce_audio_devices/native/oboe/src/flowgraph/SinkI16.h"
"../../../../../modules/juce_audio_devices/native/oboe/src/flowgraph/SinkI24.cpp"
@ -280,6 +282,8 @@ add_library( ${BINARY_NAME}
"../../../../../modules/juce_audio_devices/native/oboe/src/flowgraph/SinkI32.h"
"../../../../../modules/juce_audio_devices/native/oboe/src/flowgraph/SourceFloat.cpp"
"../../../../../modules/juce_audio_devices/native/oboe/src/flowgraph/SourceFloat.h"
"../../../../../modules/juce_audio_devices/native/oboe/src/flowgraph/SourceI8_24.cpp"
"../../../../../modules/juce_audio_devices/native/oboe/src/flowgraph/SourceI8_24.h"
"../../../../../modules/juce_audio_devices/native/oboe/src/flowgraph/SourceI16.cpp"
"../../../../../modules/juce_audio_devices/native/oboe/src/flowgraph/SourceI16.h"
"../../../../../modules/juce_audio_devices/native/oboe/src/flowgraph/SourceI24.cpp"
@ -2617,6 +2621,8 @@ set_source_files_properties(
"../../../../../modules/juce_audio_devices/native/oboe/src/flowgraph/SampleRateConverter.h"
"../../../../../modules/juce_audio_devices/native/oboe/src/flowgraph/SinkFloat.cpp"
"../../../../../modules/juce_audio_devices/native/oboe/src/flowgraph/SinkFloat.h"
"../../../../../modules/juce_audio_devices/native/oboe/src/flowgraph/SinkI8_24.cpp"
"../../../../../modules/juce_audio_devices/native/oboe/src/flowgraph/SinkI8_24.h"
"../../../../../modules/juce_audio_devices/native/oboe/src/flowgraph/SinkI16.cpp"
"../../../../../modules/juce_audio_devices/native/oboe/src/flowgraph/SinkI16.h"
"../../../../../modules/juce_audio_devices/native/oboe/src/flowgraph/SinkI24.cpp"
@ -2625,6 +2631,8 @@ set_source_files_properties(
"../../../../../modules/juce_audio_devices/native/oboe/src/flowgraph/SinkI32.h"
"../../../../../modules/juce_audio_devices/native/oboe/src/flowgraph/SourceFloat.cpp"
"../../../../../modules/juce_audio_devices/native/oboe/src/flowgraph/SourceFloat.h"
"../../../../../modules/juce_audio_devices/native/oboe/src/flowgraph/SourceI8_24.cpp"
"../../../../../modules/juce_audio_devices/native/oboe/src/flowgraph/SourceI8_24.h"
"../../../../../modules/juce_audio_devices/native/oboe/src/flowgraph/SourceI16.cpp"
"../../../../../modules/juce_audio_devices/native/oboe/src/flowgraph/SourceI16.h"
"../../../../../modules/juce_audio_devices/native/oboe/src/flowgraph/SourceI24.cpp"

View file

@ -433,6 +433,9 @@
<ClCompile Include="..\..\..\..\modules\juce_audio_devices\native\oboe\src\flowgraph\SinkFloat.cpp">
<ExcludedFromBuild>true</ExcludedFromBuild>
</ClCompile>
<ClCompile Include="..\..\..\..\modules\juce_audio_devices\native\oboe\src\flowgraph\SinkI8_24.cpp">
<ExcludedFromBuild>true</ExcludedFromBuild>
</ClCompile>
<ClCompile Include="..\..\..\..\modules\juce_audio_devices\native\oboe\src\flowgraph\SinkI16.cpp">
<ExcludedFromBuild>true</ExcludedFromBuild>
</ClCompile>
@ -445,6 +448,9 @@
<ClCompile Include="..\..\..\..\modules\juce_audio_devices\native\oboe\src\flowgraph\SourceFloat.cpp">
<ExcludedFromBuild>true</ExcludedFromBuild>
</ClCompile>
<ClCompile Include="..\..\..\..\modules\juce_audio_devices\native\oboe\src\flowgraph\SourceI8_24.cpp">
<ExcludedFromBuild>true</ExcludedFromBuild>
</ClCompile>
<ClCompile Include="..\..\..\..\modules\juce_audio_devices\native\oboe\src\flowgraph\SourceI16.cpp">
<ExcludedFromBuild>true</ExcludedFromBuild>
</ClCompile>
@ -3030,10 +3036,12 @@
<ClInclude Include="..\..\..\..\modules\juce_audio_devices\native\oboe\src\flowgraph\RampLinear.h"/>
<ClInclude Include="..\..\..\..\modules\juce_audio_devices\native\oboe\src\flowgraph\SampleRateConverter.h"/>
<ClInclude Include="..\..\..\..\modules\juce_audio_devices\native\oboe\src\flowgraph\SinkFloat.h"/>
<ClInclude Include="..\..\..\..\modules\juce_audio_devices\native\oboe\src\flowgraph\SinkI8_24.h"/>
<ClInclude Include="..\..\..\..\modules\juce_audio_devices\native\oboe\src\flowgraph\SinkI16.h"/>
<ClInclude Include="..\..\..\..\modules\juce_audio_devices\native\oboe\src\flowgraph\SinkI24.h"/>
<ClInclude Include="..\..\..\..\modules\juce_audio_devices\native\oboe\src\flowgraph\SinkI32.h"/>
<ClInclude Include="..\..\..\..\modules\juce_audio_devices\native\oboe\src\flowgraph\SourceFloat.h"/>
<ClInclude Include="..\..\..\..\modules\juce_audio_devices\native\oboe\src\flowgraph\SourceI8_24.h"/>
<ClInclude Include="..\..\..\..\modules\juce_audio_devices\native\oboe\src\flowgraph\SourceI16.h"/>
<ClInclude Include="..\..\..\..\modules\juce_audio_devices\native\oboe\src\flowgraph\SourceI24.h"/>
<ClInclude Include="..\..\..\..\modules\juce_audio_devices\native\oboe\src\flowgraph\SourceI32.h"/>

View file

@ -1009,6 +1009,9 @@
<ClCompile Include="..\..\..\..\modules\juce_audio_devices\native\oboe\src\flowgraph\SinkFloat.cpp">
<Filter>JUCE Modules\juce_audio_devices\native\oboe\src\flowgraph</Filter>
</ClCompile>
<ClCompile Include="..\..\..\..\modules\juce_audio_devices\native\oboe\src\flowgraph\SinkI8_24.cpp">
<Filter>JUCE Modules\juce_audio_devices\native\oboe\src\flowgraph</Filter>
</ClCompile>
<ClCompile Include="..\..\..\..\modules\juce_audio_devices\native\oboe\src\flowgraph\SinkI16.cpp">
<Filter>JUCE Modules\juce_audio_devices\native\oboe\src\flowgraph</Filter>
</ClCompile>
@ -1021,6 +1024,9 @@
<ClCompile Include="..\..\..\..\modules\juce_audio_devices\native\oboe\src\flowgraph\SourceFloat.cpp">
<Filter>JUCE Modules\juce_audio_devices\native\oboe\src\flowgraph</Filter>
</ClCompile>
<ClCompile Include="..\..\..\..\modules\juce_audio_devices\native\oboe\src\flowgraph\SourceI8_24.cpp">
<Filter>JUCE Modules\juce_audio_devices\native\oboe\src\flowgraph</Filter>
</ClCompile>
<ClCompile Include="..\..\..\..\modules\juce_audio_devices\native\oboe\src\flowgraph\SourceI16.cpp">
<Filter>JUCE Modules\juce_audio_devices\native\oboe\src\flowgraph</Filter>
</ClCompile>
@ -4053,6 +4059,9 @@
<ClInclude Include="..\..\..\..\modules\juce_audio_devices\native\oboe\src\flowgraph\SinkFloat.h">
<Filter>JUCE Modules\juce_audio_devices\native\oboe\src\flowgraph</Filter>
</ClInclude>
<ClInclude Include="..\..\..\..\modules\juce_audio_devices\native\oboe\src\flowgraph\SinkI8_24.h">
<Filter>JUCE Modules\juce_audio_devices\native\oboe\src\flowgraph</Filter>
</ClInclude>
<ClInclude Include="..\..\..\..\modules\juce_audio_devices\native\oboe\src\flowgraph\SinkI16.h">
<Filter>JUCE Modules\juce_audio_devices\native\oboe\src\flowgraph</Filter>
</ClInclude>
@ -4065,6 +4074,9 @@
<ClInclude Include="..\..\..\..\modules\juce_audio_devices\native\oboe\src\flowgraph\SourceFloat.h">
<Filter>JUCE Modules\juce_audio_devices\native\oboe\src\flowgraph</Filter>
</ClInclude>
<ClInclude Include="..\..\..\..\modules\juce_audio_devices\native\oboe\src\flowgraph\SourceI8_24.h">
<Filter>JUCE Modules\juce_audio_devices\native\oboe\src\flowgraph</Filter>
</ClInclude>
<ClInclude Include="..\..\..\..\modules\juce_audio_devices\native\oboe\src\flowgraph\SourceI16.h">
<Filter>JUCE Modules\juce_audio_devices\native\oboe\src\flowgraph</Filter>
</ClInclude>

View file

@ -449,6 +449,9 @@
<ClCompile Include="..\..\..\..\modules\juce_audio_devices\native\oboe\src\flowgraph\SinkFloat.cpp">
<ExcludedFromBuild>true</ExcludedFromBuild>
</ClCompile>
<ClCompile Include="..\..\..\..\modules\juce_audio_devices\native\oboe\src\flowgraph\SinkI8_24.cpp">
<ExcludedFromBuild>true</ExcludedFromBuild>
</ClCompile>
<ClCompile Include="..\..\..\..\modules\juce_audio_devices\native\oboe\src\flowgraph\SinkI16.cpp">
<ExcludedFromBuild>true</ExcludedFromBuild>
</ClCompile>
@ -461,6 +464,9 @@
<ClCompile Include="..\..\..\..\modules\juce_audio_devices\native\oboe\src\flowgraph\SourceFloat.cpp">
<ExcludedFromBuild>true</ExcludedFromBuild>
</ClCompile>
<ClCompile Include="..\..\..\..\modules\juce_audio_devices\native\oboe\src\flowgraph\SourceI8_24.cpp">
<ExcludedFromBuild>true</ExcludedFromBuild>
</ClCompile>
<ClCompile Include="..\..\..\..\modules\juce_audio_devices\native\oboe\src\flowgraph\SourceI16.cpp">
<ExcludedFromBuild>true</ExcludedFromBuild>
</ClCompile>
@ -3215,10 +3221,12 @@
<ClInclude Include="..\..\..\..\modules\juce_audio_devices\native\oboe\src\flowgraph\RampLinear.h"/>
<ClInclude Include="..\..\..\..\modules\juce_audio_devices\native\oboe\src\flowgraph\SampleRateConverter.h"/>
<ClInclude Include="..\..\..\..\modules\juce_audio_devices\native\oboe\src\flowgraph\SinkFloat.h"/>
<ClInclude Include="..\..\..\..\modules\juce_audio_devices\native\oboe\src\flowgraph\SinkI8_24.h"/>
<ClInclude Include="..\..\..\..\modules\juce_audio_devices\native\oboe\src\flowgraph\SinkI16.h"/>
<ClInclude Include="..\..\..\..\modules\juce_audio_devices\native\oboe\src\flowgraph\SinkI24.h"/>
<ClInclude Include="..\..\..\..\modules\juce_audio_devices\native\oboe\src\flowgraph\SinkI32.h"/>
<ClInclude Include="..\..\..\..\modules\juce_audio_devices\native\oboe\src\flowgraph\SourceFloat.h"/>
<ClInclude Include="..\..\..\..\modules\juce_audio_devices\native\oboe\src\flowgraph\SourceI8_24.h"/>
<ClInclude Include="..\..\..\..\modules\juce_audio_devices\native\oboe\src\flowgraph\SourceI16.h"/>
<ClInclude Include="..\..\..\..\modules\juce_audio_devices\native\oboe\src\flowgraph\SourceI24.h"/>
<ClInclude Include="..\..\..\..\modules\juce_audio_devices\native\oboe\src\flowgraph\SourceI32.h"/>

View file

@ -1075,6 +1075,9 @@
<ClCompile Include="..\..\..\..\modules\juce_audio_devices\native\oboe\src\flowgraph\SinkFloat.cpp">
<Filter>JUCE Modules\juce_audio_devices\native\oboe\src\flowgraph</Filter>
</ClCompile>
<ClCompile Include="..\..\..\..\modules\juce_audio_devices\native\oboe\src\flowgraph\SinkI8_24.cpp">
<Filter>JUCE Modules\juce_audio_devices\native\oboe\src\flowgraph</Filter>
</ClCompile>
<ClCompile Include="..\..\..\..\modules\juce_audio_devices\native\oboe\src\flowgraph\SinkI16.cpp">
<Filter>JUCE Modules\juce_audio_devices\native\oboe\src\flowgraph</Filter>
</ClCompile>
@ -1087,6 +1090,9 @@
<ClCompile Include="..\..\..\..\modules\juce_audio_devices\native\oboe\src\flowgraph\SourceFloat.cpp">
<Filter>JUCE Modules\juce_audio_devices\native\oboe\src\flowgraph</Filter>
</ClCompile>
<ClCompile Include="..\..\..\..\modules\juce_audio_devices\native\oboe\src\flowgraph\SourceI8_24.cpp">
<Filter>JUCE Modules\juce_audio_devices\native\oboe\src\flowgraph</Filter>
</ClCompile>
<ClCompile Include="..\..\..\..\modules\juce_audio_devices\native\oboe\src\flowgraph\SourceI16.cpp">
<Filter>JUCE Modules\juce_audio_devices\native\oboe\src\flowgraph</Filter>
</ClCompile>
@ -4302,6 +4308,9 @@
<ClInclude Include="..\..\..\..\modules\juce_audio_devices\native\oboe\src\flowgraph\SinkFloat.h">
<Filter>JUCE Modules\juce_audio_devices\native\oboe\src\flowgraph</Filter>
</ClInclude>
<ClInclude Include="..\..\..\..\modules\juce_audio_devices\native\oboe\src\flowgraph\SinkI8_24.h">
<Filter>JUCE Modules\juce_audio_devices\native\oboe\src\flowgraph</Filter>
</ClInclude>
<ClInclude Include="..\..\..\..\modules\juce_audio_devices\native\oboe\src\flowgraph\SinkI16.h">
<Filter>JUCE Modules\juce_audio_devices\native\oboe\src\flowgraph</Filter>
</ClInclude>
@ -4314,6 +4323,9 @@
<ClInclude Include="..\..\..\..\modules\juce_audio_devices\native\oboe\src\flowgraph\SourceFloat.h">
<Filter>JUCE Modules\juce_audio_devices\native\oboe\src\flowgraph</Filter>
</ClInclude>
<ClInclude Include="..\..\..\..\modules\juce_audio_devices\native\oboe\src\flowgraph\SourceI8_24.h">
<Filter>JUCE Modules\juce_audio_devices\native\oboe\src\flowgraph</Filter>
</ClInclude>
<ClInclude Include="..\..\..\..\modules\juce_audio_devices\native\oboe\src\flowgraph\SourceI16.h">
<Filter>JUCE Modules\juce_audio_devices\native\oboe\src\flowgraph</Filter>
</ClInclude>

View file

@ -449,6 +449,9 @@
<ClCompile Include="..\..\..\..\modules\juce_audio_devices\native\oboe\src\flowgraph\SinkFloat.cpp">
<ExcludedFromBuild>true</ExcludedFromBuild>
</ClCompile>
<ClCompile Include="..\..\..\..\modules\juce_audio_devices\native\oboe\src\flowgraph\SinkI8_24.cpp">
<ExcludedFromBuild>true</ExcludedFromBuild>
</ClCompile>
<ClCompile Include="..\..\..\..\modules\juce_audio_devices\native\oboe\src\flowgraph\SinkI16.cpp">
<ExcludedFromBuild>true</ExcludedFromBuild>
</ClCompile>
@ -461,6 +464,9 @@
<ClCompile Include="..\..\..\..\modules\juce_audio_devices\native\oboe\src\flowgraph\SourceFloat.cpp">
<ExcludedFromBuild>true</ExcludedFromBuild>
</ClCompile>
<ClCompile Include="..\..\..\..\modules\juce_audio_devices\native\oboe\src\flowgraph\SourceI8_24.cpp">
<ExcludedFromBuild>true</ExcludedFromBuild>
</ClCompile>
<ClCompile Include="..\..\..\..\modules\juce_audio_devices\native\oboe\src\flowgraph\SourceI16.cpp">
<ExcludedFromBuild>true</ExcludedFromBuild>
</ClCompile>
@ -3215,10 +3221,12 @@
<ClInclude Include="..\..\..\..\modules\juce_audio_devices\native\oboe\src\flowgraph\RampLinear.h"/>
<ClInclude Include="..\..\..\..\modules\juce_audio_devices\native\oboe\src\flowgraph\SampleRateConverter.h"/>
<ClInclude Include="..\..\..\..\modules\juce_audio_devices\native\oboe\src\flowgraph\SinkFloat.h"/>
<ClInclude Include="..\..\..\..\modules\juce_audio_devices\native\oboe\src\flowgraph\SinkI8_24.h"/>
<ClInclude Include="..\..\..\..\modules\juce_audio_devices\native\oboe\src\flowgraph\SinkI16.h"/>
<ClInclude Include="..\..\..\..\modules\juce_audio_devices\native\oboe\src\flowgraph\SinkI24.h"/>
<ClInclude Include="..\..\..\..\modules\juce_audio_devices\native\oboe\src\flowgraph\SinkI32.h"/>
<ClInclude Include="..\..\..\..\modules\juce_audio_devices\native\oboe\src\flowgraph\SourceFloat.h"/>
<ClInclude Include="..\..\..\..\modules\juce_audio_devices\native\oboe\src\flowgraph\SourceI8_24.h"/>
<ClInclude Include="..\..\..\..\modules\juce_audio_devices\native\oboe\src\flowgraph\SourceI16.h"/>
<ClInclude Include="..\..\..\..\modules\juce_audio_devices\native\oboe\src\flowgraph\SourceI24.h"/>
<ClInclude Include="..\..\..\..\modules\juce_audio_devices\native\oboe\src\flowgraph\SourceI32.h"/>

View file

@ -1075,6 +1075,9 @@
<ClCompile Include="..\..\..\..\modules\juce_audio_devices\native\oboe\src\flowgraph\SinkFloat.cpp">
<Filter>JUCE Modules\juce_audio_devices\native\oboe\src\flowgraph</Filter>
</ClCompile>
<ClCompile Include="..\..\..\..\modules\juce_audio_devices\native\oboe\src\flowgraph\SinkI8_24.cpp">
<Filter>JUCE Modules\juce_audio_devices\native\oboe\src\flowgraph</Filter>
</ClCompile>
<ClCompile Include="..\..\..\..\modules\juce_audio_devices\native\oboe\src\flowgraph\SinkI16.cpp">
<Filter>JUCE Modules\juce_audio_devices\native\oboe\src\flowgraph</Filter>
</ClCompile>
@ -1087,6 +1090,9 @@
<ClCompile Include="..\..\..\..\modules\juce_audio_devices\native\oboe\src\flowgraph\SourceFloat.cpp">
<Filter>JUCE Modules\juce_audio_devices\native\oboe\src\flowgraph</Filter>
</ClCompile>
<ClCompile Include="..\..\..\..\modules\juce_audio_devices\native\oboe\src\flowgraph\SourceI8_24.cpp">
<Filter>JUCE Modules\juce_audio_devices\native\oboe\src\flowgraph</Filter>
</ClCompile>
<ClCompile Include="..\..\..\..\modules\juce_audio_devices\native\oboe\src\flowgraph\SourceI16.cpp">
<Filter>JUCE Modules\juce_audio_devices\native\oboe\src\flowgraph</Filter>
</ClCompile>
@ -4302,6 +4308,9 @@
<ClInclude Include="..\..\..\..\modules\juce_audio_devices\native\oboe\src\flowgraph\SinkFloat.h">
<Filter>JUCE Modules\juce_audio_devices\native\oboe\src\flowgraph</Filter>
</ClInclude>
<ClInclude Include="..\..\..\..\modules\juce_audio_devices\native\oboe\src\flowgraph\SinkI8_24.h">
<Filter>JUCE Modules\juce_audio_devices\native\oboe\src\flowgraph</Filter>
</ClInclude>
<ClInclude Include="..\..\..\..\modules\juce_audio_devices\native\oboe\src\flowgraph\SinkI16.h">
<Filter>JUCE Modules\juce_audio_devices\native\oboe\src\flowgraph</Filter>
</ClInclude>
@ -4314,6 +4323,9 @@
<ClInclude Include="..\..\..\..\modules\juce_audio_devices\native\oboe\src\flowgraph\SourceFloat.h">
<Filter>JUCE Modules\juce_audio_devices\native\oboe\src\flowgraph</Filter>
</ClInclude>
<ClInclude Include="..\..\..\..\modules\juce_audio_devices\native\oboe\src\flowgraph\SourceI8_24.h">
<Filter>JUCE Modules\juce_audio_devices\native\oboe\src\flowgraph</Filter>
</ClInclude>
<ClInclude Include="..\..\..\..\modules\juce_audio_devices\native\oboe\src\flowgraph\SourceI16.h">
<Filter>JUCE Modules\juce_audio_devices\native\oboe\src\flowgraph</Filter>
</ClInclude>

View file

@ -432,6 +432,9 @@
<ClCompile Include="..\..\..\..\modules\juce_audio_devices\native\oboe\src\flowgraph\SinkFloat.cpp">
<ExcludedFromBuild>true</ExcludedFromBuild>
</ClCompile>
<ClCompile Include="..\..\..\..\modules\juce_audio_devices\native\oboe\src\flowgraph\SinkI8_24.cpp">
<ExcludedFromBuild>true</ExcludedFromBuild>
</ClCompile>
<ClCompile Include="..\..\..\..\modules\juce_audio_devices\native\oboe\src\flowgraph\SinkI16.cpp">
<ExcludedFromBuild>true</ExcludedFromBuild>
</ClCompile>
@ -444,6 +447,9 @@
<ClCompile Include="..\..\..\..\modules\juce_audio_devices\native\oboe\src\flowgraph\SourceFloat.cpp">
<ExcludedFromBuild>true</ExcludedFromBuild>
</ClCompile>
<ClCompile Include="..\..\..\..\modules\juce_audio_devices\native\oboe\src\flowgraph\SourceI8_24.cpp">
<ExcludedFromBuild>true</ExcludedFromBuild>
</ClCompile>
<ClCompile Include="..\..\..\..\modules\juce_audio_devices\native\oboe\src\flowgraph\SourceI16.cpp">
<ExcludedFromBuild>true</ExcludedFromBuild>
</ClCompile>
@ -3006,10 +3012,12 @@
<ClInclude Include="..\..\..\..\modules\juce_audio_devices\native\oboe\src\flowgraph\RampLinear.h"/>
<ClInclude Include="..\..\..\..\modules\juce_audio_devices\native\oboe\src\flowgraph\SampleRateConverter.h"/>
<ClInclude Include="..\..\..\..\modules\juce_audio_devices\native\oboe\src\flowgraph\SinkFloat.h"/>
<ClInclude Include="..\..\..\..\modules\juce_audio_devices\native\oboe\src\flowgraph\SinkI8_24.h"/>
<ClInclude Include="..\..\..\..\modules\juce_audio_devices\native\oboe\src\flowgraph\SinkI16.h"/>
<ClInclude Include="..\..\..\..\modules\juce_audio_devices\native\oboe\src\flowgraph\SinkI24.h"/>
<ClInclude Include="..\..\..\..\modules\juce_audio_devices\native\oboe\src\flowgraph\SinkI32.h"/>
<ClInclude Include="..\..\..\..\modules\juce_audio_devices\native\oboe\src\flowgraph\SourceFloat.h"/>
<ClInclude Include="..\..\..\..\modules\juce_audio_devices\native\oboe\src\flowgraph\SourceI8_24.h"/>
<ClInclude Include="..\..\..\..\modules\juce_audio_devices\native\oboe\src\flowgraph\SourceI16.h"/>
<ClInclude Include="..\..\..\..\modules\juce_audio_devices\native\oboe\src\flowgraph\SourceI24.h"/>
<ClInclude Include="..\..\..\..\modules\juce_audio_devices\native\oboe\src\flowgraph\SourceI32.h"/>

View file

@ -1006,6 +1006,9 @@
<ClCompile Include="..\..\..\..\modules\juce_audio_devices\native\oboe\src\flowgraph\SinkFloat.cpp">
<Filter>JUCE Modules\juce_audio_devices\native\oboe\src\flowgraph</Filter>
</ClCompile>
<ClCompile Include="..\..\..\..\modules\juce_audio_devices\native\oboe\src\flowgraph\SinkI8_24.cpp">
<Filter>JUCE Modules\juce_audio_devices\native\oboe\src\flowgraph</Filter>
</ClCompile>
<ClCompile Include="..\..\..\..\modules\juce_audio_devices\native\oboe\src\flowgraph\SinkI16.cpp">
<Filter>JUCE Modules\juce_audio_devices\native\oboe\src\flowgraph</Filter>
</ClCompile>
@ -1018,6 +1021,9 @@
<ClCompile Include="..\..\..\..\modules\juce_audio_devices\native\oboe\src\flowgraph\SourceFloat.cpp">
<Filter>JUCE Modules\juce_audio_devices\native\oboe\src\flowgraph</Filter>
</ClCompile>
<ClCompile Include="..\..\..\..\modules\juce_audio_devices\native\oboe\src\flowgraph\SourceI8_24.cpp">
<Filter>JUCE Modules\juce_audio_devices\native\oboe\src\flowgraph</Filter>
</ClCompile>
<ClCompile Include="..\..\..\..\modules\juce_audio_devices\native\oboe\src\flowgraph\SourceI16.cpp">
<Filter>JUCE Modules\juce_audio_devices\native\oboe\src\flowgraph</Filter>
</ClCompile>
@ -4020,6 +4026,9 @@
<ClInclude Include="..\..\..\..\modules\juce_audio_devices\native\oboe\src\flowgraph\SinkFloat.h">
<Filter>JUCE Modules\juce_audio_devices\native\oboe\src\flowgraph</Filter>
</ClInclude>
<ClInclude Include="..\..\..\..\modules\juce_audio_devices\native\oboe\src\flowgraph\SinkI8_24.h">
<Filter>JUCE Modules\juce_audio_devices\native\oboe\src\flowgraph</Filter>
</ClInclude>
<ClInclude Include="..\..\..\..\modules\juce_audio_devices\native\oboe\src\flowgraph\SinkI16.h">
<Filter>JUCE Modules\juce_audio_devices\native\oboe\src\flowgraph</Filter>
</ClInclude>
@ -4032,6 +4041,9 @@
<ClInclude Include="..\..\..\..\modules\juce_audio_devices\native\oboe\src\flowgraph\SourceFloat.h">
<Filter>JUCE Modules\juce_audio_devices\native\oboe\src\flowgraph</Filter>
</ClInclude>
<ClInclude Include="..\..\..\..\modules\juce_audio_devices\native\oboe\src\flowgraph\SourceI8_24.h">
<Filter>JUCE Modules\juce_audio_devices\native\oboe\src\flowgraph</Filter>
</ClInclude>
<ClInclude Include="..\..\..\..\modules\juce_audio_devices\native\oboe\src\flowgraph\SourceI16.h">
<Filter>JUCE Modules\juce_audio_devices\native\oboe\src\flowgraph</Filter>
</ClInclude>

View file

@ -45,10 +45,12 @@ set (oboe_sources
src/flowgraph/SinkI16.cpp
src/flowgraph/SinkI24.cpp
src/flowgraph/SinkI32.cpp
src/flowgraph/SinkI8_24.cpp
src/flowgraph/SourceFloat.cpp
src/flowgraph/SourceI16.cpp
src/flowgraph/SourceI24.cpp
src/flowgraph/SourceI32.cpp
src/flowgraph/SourceI8_24.cpp
src/flowgraph/resampler/IntegerRatio.cpp
src/flowgraph/resampler/LinearResampler.cpp
src/flowgraph/resampler/MultiChannelResampler.cpp
@ -76,20 +78,19 @@ target_include_directories(oboe
PRIVATE src
PUBLIC include)
# JUCE CHANGE STARTS HERE
# This comment provided for Apache License compliance. We've removed the extra warnings flags and
# the `-Werror` option, to avoid cases where compilers produce unexpected errors and fail the build.
# We've also removed the explicit `-std=c++17` compile option, and replaced it with a more
# cmake-friendly way of specifying the language standard.
# Compile Flags:
# Enable -Werror when building debug config
# Enable -Ofast
target_compile_options(oboe
PRIVATE
-std=c++17
-Wall
-Wextra-semi
-Wshadow
-Wshadow-field
"$<$<CONFIG:RELEASE>:-Ofast>"
"$<$<CONFIG:DEBUG>:-O3>")
target_compile_features(oboe PRIVATE cxx_std_17)
# JUCE CHANGE ENDS HERE
"$<$<CONFIG:DEBUG>:-O3>"
"$<$<CONFIG:DEBUG>:-Werror>")
# Enable logging of D,V for debug builds
target_compile_definitions(oboe PUBLIC $<$<CONFIG:DEBUG>:OBOE_ENABLE_LOGGING=1>)

View file

@ -1,7 +1,7 @@
The files in this directory are reproduced from the official Oboe repository, which can be found at
github.com/google/oboe.
These files are from tag 1.8.0 (987538b).
These files are from tag 1.9.0 (03242e9ef9495e418e6ae83954d239dc9193ec5c).
We've included only those parts of the original repository which are required to build the Oboe
library. Documentation, samples, tests, and other non-library items have been omitted.

View file

@ -54,7 +54,7 @@ public:
*/
explicit AudioStream(const AudioStreamBuilder &builder);
virtual ~AudioStream() = default;
virtual ~AudioStream();
/**
* Open a stream based on the current settings.
@ -194,6 +194,13 @@ public:
*
* This cannot be set higher than getBufferCapacity().
*
* This should only be used with Output streams. It will
* be ignored for Input streams because they are generally kept as empty as possible.
*
* For OpenSL ES, this method only has an effect on output stream that do NOT
* use a callback. The blocking writes goes into a buffer in Oboe and the size of that
* buffer is controlled by this method.
*
* @param requestedFrames requested number of frames that can be filled without blocking
* @return the resulting buffer size in frames (obtained using value()) or an error (obtained
* using error())
@ -622,7 +629,7 @@ protected:
* This may be called internally at the end of a callback.
* @param numFrames passed to the callback
*/
virtual void endPerformanceHintInCallback(int32_t numFrames) {}
virtual void endPerformanceHintInCallback(int32_t /*numFrames*/) {}
/**
* This will be called when the stream is closed just in case performance hints were enabled.

View file

@ -307,7 +307,7 @@ protected:
// Control whether Oboe can convert data formats to achieve optimal results.
bool mFormatConversionAllowed = false;
// Control whether and how Oboe can convert sample rates to achieve optimal results.
SampleRateConversionQuality mSampleRateConversionQuality = SampleRateConversionQuality::None;
SampleRateConversionQuality mSampleRateConversionQuality = SampleRateConversionQuality::Medium;
/** Validate stream parameters that might not be checked in lower layers */
virtual Result isValidConfig() {

View file

@ -466,6 +466,10 @@ public:
* It can also occur if the audio service fails or if an exclusive stream is stolen by
* another stream.
*
* Note that error callbacks will only be called when a data callback has been specified
* and the stream is started. If you are not using a data callback then the read(), write()
* and requestStart() methods will return errors if the stream is disconnected.
*
* <strong>Important: See AudioStreamCallback for restrictions on what may be called
* from the callback methods.</strong>
*
@ -556,7 +560,7 @@ public:
*
* If you do the conversion in Oboe then you might still get a low latency stream.
*
* Default is SampleRateConversionQuality::None
* Default is SampleRateConversionQuality::Medium
*/
AudioStreamBuilder *setSampleRateConversionQuality(SampleRateConversionQuality quality) {
mSampleRateConversionQuality = quality;
@ -647,6 +651,14 @@ public:
private:
/**
* Use this internally to implement opening with a shared_ptr.
*
* @param stream pointer to a variable to receive the stream address
* @return OBOE_OK if successful or a negative error code.
*/
Result openStreamInternal(AudioStream **streamPP);
/**
* @param other
* @return true if channels, format and sample rate match

View file

@ -48,7 +48,8 @@ public:
* write() on the stream that is making the callback.
*
* Note that numFrames can vary unless AudioStreamBuilder::setFramesPerCallback()
* is called.
* is called. If AudioStreamBuilder::setFramesPerCallback() is NOT called then
* numFrames should always be <= AudioStream::getFramesPerBurst().
*
* Also note that this callback function should be considered a "real-time" function.
* It must not do anything that could cause an unbounded delay because that can cause the

View file

@ -177,7 +177,7 @@ public:
*
*/
DataCallbackResult onAudioReady(
AudioStream *audioStream,
AudioStream * /*audioStream*/,
void *audioData,
int numFrames) {
DataCallbackResult callbackResult = DataCallbackResult::Continue;

View file

@ -34,7 +34,7 @@
#define OBOE_VERSION_MAJOR 1
// Type: 8-bit unsigned int. Min value: 0 Max value: 255. See below for description.
#define OBOE_VERSION_MINOR 8
#define OBOE_VERSION_MINOR 9
// Type: 16-bit unsigned int. Min value: 0 Max value: 65535. See below for description.
#define OBOE_VERSION_PATCH 0

View file

@ -89,7 +89,7 @@ public:
if (loadSymbols()) return false;
if (mAAudio_getMMapPolicy == nullptr) return false;
int32_t policy = mAAudio_getMMapPolicy();
return isPolicyEnabled(policy);
return (policy == Unspecified) ? mMMapSupported : isPolicyEnabled(policy);
}
bool isMMapSupported() {

View file

@ -60,9 +60,13 @@ static aaudio_data_callback_result_t oboe_aaudio_data_callback_proc(
// This runs in its own thread.
// Only one of these threads will be launched from internalErrorCallback().
// It calls app error callbacks from a static function in case the stream gets deleted.
static void oboe_aaudio_error_thread_proc(AudioStreamAAudio *oboeStream,
static void oboe_aaudio_error_thread_proc_common(AudioStreamAAudio *oboeStream,
Result error) {
LOGD("%s(,%d) - entering >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>", __func__, error);
#if 0
LOGE("%s() sleep for 5 seconds", __func__);
usleep(5*1000*1000);
LOGD("%s() - woke up -------------------------", __func__);
#endif
AudioStreamErrorCallback *errorCallback = oboeStream->getErrorCallback();
if (errorCallback == nullptr) return; // should be impossible
bool isErrorHandled = errorCallback->onError(oboeStream, error);
@ -74,16 +78,24 @@ static void oboe_aaudio_error_thread_proc(AudioStreamAAudio *oboeStream,
// Warning, oboeStream may get deleted by this callback.
errorCallback->onErrorAfterClose(oboeStream, error);
}
}
// Callback thread for raw pointers.
static void oboe_aaudio_error_thread_proc(AudioStreamAAudio *oboeStream,
Result error) {
LOGD("%s(,%d) - entering >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>", __func__, error);
oboe_aaudio_error_thread_proc_common(oboeStream, error);
LOGD("%s() - exiting <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<", __func__);
}
// This runs in its own thread.
// Only one of these threads will be launched from internalErrorCallback().
// Prevents deletion of the stream if the app is using AudioStreamBuilder::openSharedStream()
// Callback thread for shared pointers.
static void oboe_aaudio_error_thread_proc_shared(std::shared_ptr<AudioStream> sharedStream,
Result error) {
LOGD("%s(,%d) - entering >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>", __func__, error);
// Hold the shared pointer while we use the raw pointer.
AudioStreamAAudio *oboeStream = reinterpret_cast<AudioStreamAAudio*>(sharedStream.get());
oboe_aaudio_error_thread_proc(oboeStream, error);
oboe_aaudio_error_thread_proc_common(oboeStream, error);
LOGD("%s() - exiting <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<", __func__);
}
namespace oboe {
@ -528,7 +540,7 @@ DataCallbackResult AudioStreamAAudio::callOnAudioReady(AAudioStream * /*stream*/
if (result == DataCallbackResult::Stop) {
LOGD("Oboe callback returned DataCallbackResult::Stop");
} else {
LOGE("Oboe callback returned unexpected value = %d", result);
LOGE("Oboe callback returned unexpected value. Error: %d", static_cast<int>(result));
}
// Returning Stop caused various problems before S. See #1230

View file

@ -30,6 +30,12 @@ namespace oboe {
*/
AudioStream::AudioStream(const AudioStreamBuilder &builder)
: AudioStreamBase(builder) {
LOGD("Constructor for AudioStream at %p", this);
}
AudioStream::~AudioStream() {
// This is to help debug use after free bugs.
LOGD("Destructor for AudioStream at %p", this);
}
Result AudioStream::close() {
@ -113,8 +119,12 @@ Result AudioStream::start(int64_t timeoutNanoseconds)
Result result = requestStart();
if (result != Result::OK) return result;
if (timeoutNanoseconds <= 0) return result;
return waitForStateTransition(StreamState::Starting,
result = waitForStateTransition(StreamState::Starting,
StreamState::Started, timeoutNanoseconds);
if (result != Result::OK) {
LOGE("AudioStream::%s() timed out before moving from STARTING to STARTED", __func__);
}
return result;
}
Result AudioStream::pause(int64_t timeoutNanoseconds)

View file

@ -89,9 +89,14 @@ bool AudioStreamBuilder::isCompatible(AudioStreamBase &other) {
}
Result AudioStreamBuilder::openStream(AudioStream **streamPP) {
LOGW("Passing AudioStream pointer deprecated, Use openStream(std::shared_ptr<oboe::AudioStream> &stream) instead.");
return openStreamInternal(streamPP);
}
Result AudioStreamBuilder::openStreamInternal(AudioStream **streamPP) {
auto result = isValidConfig();
if (result != Result::OK) {
LOGW("%s() invalid config %d", __func__, result);
LOGW("%s() invalid config. Error %s", __func__, oboe::convertToText(result));
return result;
}
@ -112,7 +117,7 @@ Result AudioStreamBuilder::openStream(AudioStream **streamPP) {
// Do we need to make a child stream and convert.
if (conversionNeeded) {
AudioStream *tempStream;
result = childBuilder.openStream(&tempStream);
result = childBuilder.openStreamInternal(&tempStream);
if (result != Result::OK) {
return result;
}
@ -139,7 +144,9 @@ Result AudioStreamBuilder::openStream(AudioStream **streamPP) {
// Use childStream in a FilterAudioStream.
LOGI("%s() create a FilterAudioStream for data conversion.", __func__);
FilterAudioStream *filterStream = new FilterAudioStream(parentBuilder, tempStream);
std::shared_ptr<AudioStream> childStream(tempStream);
FilterAudioStream *filterStream = new FilterAudioStream(parentBuilder, childStream);
childStream->setWeakThis(childStream);
result = filterStream->configureFlowGraph();
if (result != Result::OK) {
filterStream->close();
@ -202,6 +209,7 @@ Result AudioStreamBuilder::openStream(AudioStream **streamPP) {
}
Result AudioStreamBuilder::openManagedStream(oboe::ManagedStream &stream) {
LOGW("`openManagedStream` is deprecated. Use openStream(std::shared_ptr<oboe::AudioStream> &stream) instead.");
stream.reset();
AudioStream *streamptr;
auto result = openStream(&streamptr);
@ -212,7 +220,7 @@ Result AudioStreamBuilder::openManagedStream(oboe::ManagedStream &stream) {
Result AudioStreamBuilder::openStream(std::shared_ptr<AudioStream> &sharedStream) {
sharedStream.reset();
AudioStream *streamptr;
auto result = openStream(&streamptr);
auto result = openStreamInternal(&streamptr);
if (result == Result::OK) {
sharedStream.reset(streamptr);
// Save a weak_ptr in the stream for use with callbacks.

View file

@ -92,14 +92,14 @@ Result DataConversionFlowGraph::configure(AudioStream *sourceStream, AudioStream
int32_t sinkSampleRate = sinkStream->getSampleRate();
int32_t sinkFramesPerCallback = sinkStream->getFramesPerDataCallback();
LOGI("%s() flowgraph converts channels: %d to %d, format: %d to %d"
", rate: %d to %d, cbsize: %d to %d, qual = %d",
LOGI("%s() flowgraph converts channels: %d to %d, format: %s to %s"
", rate: %d to %d, cbsize: %d to %d, qual = %s",
__func__,
sourceChannelCount, sinkChannelCount,
sourceFormat, sinkFormat,
oboe::convertToText(sourceFormat), oboe::convertToText(sinkFormat),
sourceSampleRate, sinkSampleRate,
sourceFramesPerCallback, sinkFramesPerCallback,
sourceStream->getSampleRateConversionQuality());
oboe::convertToText(sourceStream->getSampleRateConversionQuality()));
// Source
// IF OUTPUT and using a callback then call back to the app using a SourceCaller.
@ -128,7 +128,7 @@ Result DataConversionFlowGraph::configure(AudioStream *sourceStream, AudioStream
actualSourceFramesPerCallback);
break;
default:
LOGE("%s() Unsupported source caller format = %d", __func__, sourceFormat);
LOGE("%s() Unsupported source caller format = %d", __func__, static_cast<int>(sourceFormat));
return Result::ErrorIllegalArgument;
}
mSourceCaller->setStream(sourceStream);
@ -150,7 +150,7 @@ Result DataConversionFlowGraph::configure(AudioStream *sourceStream, AudioStream
mSource = std::make_unique<SourceI32>(sourceChannelCount);
break;
default:
LOGE("%s() Unsupported source format = %d", __func__, sourceFormat);
LOGE("%s() Unsupported source format = %d", __func__, static_cast<int>(sourceFormat));
return Result::ErrorIllegalArgument;
}
if (isInput) {
@ -226,7 +226,7 @@ Result DataConversionFlowGraph::configure(AudioStream *sourceStream, AudioStream
mSink = std::make_unique<SinkI32>(sinkChannelCount);
break;
default:
LOGE("%s() Unsupported sink format = %d", __func__, sinkFormat);
LOGE("%s() Unsupported sink format = %d", __func__, static_cast<int>(sinkFormat));
return Result::ErrorIllegalArgument;;
}
lastOutput->connect(&mSink->input);

View file

@ -38,7 +38,7 @@ public:
*
* @param builder containing all the stream's attributes
*/
FilterAudioStream(const AudioStreamBuilder &builder, AudioStream *childStream)
FilterAudioStream(const AudioStreamBuilder &builder, std::shared_ptr<AudioStream> childStream)
: AudioStream(builder)
, mChildStream(childStream) {
// Intercept the callback if used.
@ -66,10 +66,6 @@ public:
virtual ~FilterAudioStream() = default;
AudioStream *getChildStream() const {
return mChildStream.get();
}
Result configureFlowGraph();
// Close child and parent.
@ -216,7 +212,7 @@ public:
private:
std::unique_ptr<AudioStream> mChildStream; // this stream wraps the child stream
std::shared_ptr<AudioStream> mChildStream; // this stream wraps the child stream
std::unique_ptr<DataConversionFlowGraph> mFlowGraph; // for converting data
std::unique_ptr<uint8_t[]> mBlockingBuffer; // temp buffer for write()
double mRateScaler = 1.0; // ratio parent/child sample rates

View file

@ -278,6 +278,20 @@ const char *convertToText<ChannelCount>(ChannelCount channelCount) {
}
}
template<>
const char *convertToText<SampleRateConversionQuality>(SampleRateConversionQuality sampleRateConversionQuality) {
switch (sampleRateConversionQuality) {
case SampleRateConversionQuality::None: return "None";
case SampleRateConversionQuality::Fastest: return "Fastest";
case SampleRateConversionQuality::Low: return "Low";
case SampleRateConversionQuality::Medium: return "Medium";
case SampleRateConversionQuality::High: return "High";
case SampleRateConversionQuality::Best: return "Best";
default: return "Unrecognized sample rate conversion quality";
}
}
std::string getPropertyString(const char * name) {
std::string result;
#ifdef __ANDROID__

View file

@ -17,6 +17,7 @@
#ifndef FLOWGRAPH_UTILITIES_H
#define FLOWGRAPH_UTILITIES_H
#include <math.h>
#include <unistd.h>
using namespace FLOWGRAPH_OUTER_NAMESPACE::flowgraph;
@ -50,6 +51,20 @@ static int32_t clamp32FromFloat(float f)
return f > 0 ? f + 0.5 : f - 0.5;
}
/**
* Convert a single-precision floating point value to a Q0.23 integer value, stored in a
* 32 bit signed integer (technically stored as Q8.23, but clamped to Q0.23).
*
* Values outside the range [-1.0, 1.0) are properly clamped to -8388608 and 8388607,
* including -Inf and +Inf. NaN values are considered undefined, and behavior may change
* depending on hardware and future implementation of this function.
*/
static int32_t clamp24FromFloat(float f)
{
static const float scale = 1 << 23;
return (int32_t) lroundf(fmaxf(fminf(f * scale, scale - 1.f), -scale));
}
};
#endif // FLOWGRAPH_UTILITIES_H

View file

@ -28,7 +28,8 @@ SampleRateConverter::SampleRateConverter(int32_t channelCount,
void SampleRateConverter::reset() {
FlowGraphNode::reset();
mInputCursor = kInitialCallCount;
mInputCallCount = kInitialCallCount;
mInputCursor = 0;
}
// Return true if there is a sample available.

View file

@ -54,7 +54,7 @@ private:
int32_t mNumValidInputFrames = 0; // number of valid frames currently in the input port buffer
// We need our own callCount for upstream calls because calls occur at a different rate.
// This means we cannot have cyclic graphs or merges that contain an SRC.
int64_t mInputCallCount = 0;
int64_t mInputCallCount = kInitialCallCount;
};

View file

@ -0,0 +1,55 @@
/*
* Copyright 2023 The Android Open Source Project
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
#include "FlowGraphNode.h"
#include "FlowgraphUtilities.h"
#include "SinkI8_24.h"
#if FLOWGRAPH_ANDROID_INTERNAL
#include <audio_utils/primitives.h>
#endif
using namespace FLOWGRAPH_OUTER_NAMESPACE::flowgraph;
SinkI8_24::SinkI8_24(int32_t channelCount)
: FlowGraphSink(channelCount) {}
int32_t SinkI8_24::read(void *data, int32_t numFrames) {
int32_t *intData = (int32_t *) data;
const int32_t channelCount = input.getSamplesPerFrame();
int32_t framesLeft = numFrames;
while (framesLeft > 0) {
// Run the graph and pull data through the input port.
int32_t framesRead = pullData(framesLeft);
if (framesRead <= 0) {
break;
}
const float *signal = input.getBuffer();
int32_t numSamples = framesRead * channelCount;
#if FLOWGRAPH_ANDROID_INTERNAL
memcpy_to_q8_23_from_float_with_clamp(intData, signal, numSamples);
intData += numSamples;
signal += numSamples;
#else
for (int i = 0; i < numSamples; i++) {
*intData++ = FlowgraphUtilities::clamp24FromFloat(*signal++);
}
#endif
framesLeft -= framesRead;
}
return numFrames - framesLeft;
}

View file

@ -0,0 +1,40 @@
/*
* Copyright 2023 The Android Open Source Project
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
#ifndef FLOWGRAPH_SINK_I8_24_H
#define FLOWGRAPH_SINK_I8_24_H
#include <stdint.h>
#include "FlowGraphNode.h"
namespace FLOWGRAPH_OUTER_NAMESPACE::flowgraph {
class SinkI8_24 : public FlowGraphSink {
public:
explicit SinkI8_24(int32_t channelCount);
~SinkI8_24() override = default;
int32_t read(void *data, int32_t numFrames) override;
const char *getName() override {
return "SinkI8_24";
}
};
} /* namespace FLOWGRAPH_OUTER_NAMESPACE::flowgraph */
#endif //FLOWGRAPH_SINK_I8_24_H

View file

@ -0,0 +1,54 @@
/*
* Copyright 2023 The Android Open Source Project
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
#include <algorithm>
#include <unistd.h>
#include "FlowGraphNode.h"
#include "SourceI8_24.h"
#if FLOWGRAPH_ANDROID_INTERNAL
#include <audio_utils/primitives.h>
#endif
using namespace FLOWGRAPH_OUTER_NAMESPACE::flowgraph;
SourceI8_24::SourceI8_24(int32_t channelCount)
: FlowGraphSourceBuffered(channelCount) {
}
int32_t SourceI8_24::onProcess(int32_t numFrames) {
float *floatData = output.getBuffer();
const int32_t channelCount = output.getSamplesPerFrame();
const int32_t framesLeft = mSizeInFrames - mFrameIndex;
const int32_t framesToProcess = std::min(numFrames, framesLeft);
const int32_t numSamples = framesToProcess * channelCount;
const int32_t *intBase = static_cast<const int32_t *>(mData);
const int32_t *intData = &intBase[mFrameIndex * channelCount];
#if FLOWGRAPH_ANDROID_INTERNAL
memcpy_to_float_from_q8_23(floatData, intData, numSamples);
#else
for (int i = 0; i < numSamples; i++) {
*floatData++ = *intData++ * kScale;
}
#endif
mFrameIndex += framesToProcess;
return framesToProcess;
}

View file

@ -0,0 +1,42 @@
/*
* Copyright 2023 The Android Open Source Project
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
#ifndef FLOWGRAPH_SOURCE_I8_24_H
#define FLOWGRAPH_SOURCE_I8_24_H
#include <stdint.h>
#include "FlowGraphNode.h"
namespace FLOWGRAPH_OUTER_NAMESPACE::flowgraph {
class SourceI8_24 : public FlowGraphSourceBuffered {
public:
explicit SourceI8_24(int32_t channelCount);
~SourceI8_24() override = default;
int32_t onProcess(int32_t numFrames) override;
const char *getName() override {
return "SourceI8_24";
}
private:
static constexpr float kScale = 1.0 / (1UL << 23);
};
} /* namespace FLOWGRAPH_OUTER_NAMESPACE::flowgraph */
#endif //FLOWGRAPH_SOURCE_I8_24_H

View file

@ -120,7 +120,7 @@ void MultiChannelResampler::writeFrame(const float *frame) {
}
float MultiChannelResampler::sinc(float radians) {
if (abs(radians) < 1.0e-9) return 1.0f; // avoid divide by zero
if (fabsf(radians) < 1.0e-9f) return 1.0f; // avoid divide by zero
return sinf(radians) / radians; // Sinc function
}

View file

@ -16,9 +16,6 @@
#include <cassert>
#include <SLES/OpenSLES.h>
#include <SLES/OpenSLES_Android.h>
#include "common/OboeDebug.h"
#include "oboe/AudioStreamBuilder.h"
#include "AudioInputStreamOpenSLES.h"
@ -151,7 +148,7 @@ Result AudioInputStreamOpenSLES::open() {
// Configure the stream.
result = (*mObjectInterface)->GetInterface(mObjectInterface,
SL_IID_ANDROIDCONFIGURATION,
EngineOpenSLES::getInstance().getIidAndroidConfiguration(),
&configItf);
if (SL_RESULT_SUCCESS != result) {
@ -190,7 +187,9 @@ Result AudioInputStreamOpenSLES::open() {
goto error;
}
result = (*mObjectInterface)->GetInterface(mObjectInterface, SL_IID_RECORD, &mRecordInterface);
result = (*mObjectInterface)->GetInterface(mObjectInterface,
EngineOpenSLES::getInstance().getIidRecord(),
&mRecordInterface);
if (SL_RESULT_SUCCESS != result) {
LOGE("GetInterface RECORD result:%s", getSLErrStr(result));
goto error;

View file

@ -18,10 +18,8 @@
#define AUDIO_INPUT_STREAM_OPENSL_ES_H_
#include <SLES/OpenSLES.h>
#include <SLES/OpenSLES_Android.h>
#include "oboe/Oboe.h"
#include "EngineOpenSLES.h"
#include "AudioStreamOpenSLES.h"
namespace oboe {

View file

@ -16,8 +16,6 @@
#include <cassert>
#include <SLES/OpenSLES.h>
#include <SLES/OpenSLES_Android.h>
#include <common/AudioClock.h>
#include "common/OboeDebug.h"
@ -30,9 +28,10 @@
using namespace oboe;
static SLuint32 OpenSLES_convertOutputUsage(Usage oboeUsage) {
SLuint32 openslStream = SL_ANDROID_STREAM_MEDIA;
SLuint32 openslStream;
switch(oboeUsage) {
case Usage::Media:
case Usage::Game:
openslStream = SL_ANDROID_STREAM_MEDIA;
break;
case Usage::VoiceCommunication:
@ -43,18 +42,15 @@ static SLuint32 OpenSLES_convertOutputUsage(Usage oboeUsage) {
openslStream = SL_ANDROID_STREAM_ALARM;
break;
case Usage::Notification:
case Usage::NotificationRingtone:
case Usage::NotificationEvent:
openslStream = SL_ANDROID_STREAM_NOTIFICATION;
break;
case Usage::NotificationRingtone:
openslStream = SL_ANDROID_STREAM_RING;
break;
case Usage::AssistanceAccessibility:
case Usage::AssistanceNavigationGuidance:
case Usage::AssistanceSonification:
openslStream = SL_ANDROID_STREAM_SYSTEM;
break;
case Usage::Game:
openslStream = SL_ANDROID_STREAM_MEDIA;
break;
case Usage::Assistant:
default:
openslStream = SL_ANDROID_STREAM_SYSTEM;
@ -182,7 +178,7 @@ Result AudioOutputStreamOpenSLES::open() {
// Configure the stream.
result = (*mObjectInterface)->GetInterface(mObjectInterface,
SL_IID_ANDROIDCONFIGURATION,
EngineOpenSLES::getInstance().getIidAndroidConfiguration(),
(void *)&configItf);
if (SL_RESULT_SUCCESS != result) {
LOGW("%s() GetInterface(SL_IID_ANDROIDCONFIGURATION) failed with %s",
@ -209,7 +205,9 @@ Result AudioOutputStreamOpenSLES::open() {
goto error;
}
result = (*mObjectInterface)->GetInterface(mObjectInterface, SL_IID_PLAY, &mPlayInterface);
result = (*mObjectInterface)->GetInterface(mObjectInterface,
EngineOpenSLES::getInstance().getIidPlay(),
&mPlayInterface);
if (SL_RESULT_SUCCESS != result) {
LOGE("GetInterface PLAY result:%s", getSLErrStr(result));
goto error;
@ -374,7 +372,7 @@ Result AudioOutputStreamOpenSLES::requestFlush_l() {
} else {
SLresult slResult = (*mSimpleBufferQueueInterface)->Clear(mSimpleBufferQueueInterface);
if (slResult != SL_RESULT_SUCCESS){
LOGW("Failed to clear buffer queue. OpenSLES error: %d", result);
LOGW("Failed to clear buffer queue. OpenSLES error: %s", getSLErrStr(slResult));
result = Result::ErrorInternal;
}
}

View file

@ -18,10 +18,8 @@
#define AUDIO_OUTPUT_STREAM_OPENSL_ES_H_
#include <SLES/OpenSLES.h>
#include <SLES/OpenSLES_Android.h>
#include "oboe/Oboe.h"
#include "EngineOpenSLES.h"
#include "AudioStreamOpenSLES.h"
namespace oboe {

View file

@ -16,13 +16,12 @@
#include <cassert>
#include <android/log.h>
#include <SLES/OpenSLES.h>
#include <SLES/OpenSLES_Android.h>
#include <oboe/AudioStream.h>
#include <common/AudioClock.h>
#include "common/OboeDebug.h"
#include "oboe/AudioStreamBuilder.h"
#include "EngineOpenSLES.h"
#include "AudioStreamOpenSLES.h"
#include "OpenSLESUtilities.h"
@ -72,8 +71,8 @@ Result AudioStreamOpenSLES::open() {
// OpenSL ES only supports I16 and Float
if (mFormat != AudioFormat::I16 && mFormat != AudioFormat::Float) {
LOGW("%s() Android's OpenSL ES implementation only supports I16 and Float. Format: %d",
__func__, mFormat);
LOGW("%s() Android's OpenSL ES implementation only supports I16 and Float. Format: %s",
__func__, oboe::convertToText(mFormat));
return Result::ErrorInvalidFormat;
}
@ -422,7 +421,7 @@ bool AudioStreamOpenSLES::processBufferCallback(SLAndroidSimpleBufferQueueItf bq
LOGD("Oboe callback returned Stop");
shouldStopStream = true;
} else {
LOGW("Oboe callback returned unexpected value = %d", result);
LOGW("Oboe callback returned unexpected value = %d", static_cast<int>(result));
shouldStopStream = true;
}
if (shouldStopStream) {
@ -442,7 +441,8 @@ static void bqCallbackGlue(SLAndroidSimpleBufferQueueItf bq, void *context) {
SLresult AudioStreamOpenSLES::registerBufferQueueCallback() {
// The BufferQueue
SLresult result = (*mObjectInterface)->GetInterface(mObjectInterface, SL_IID_ANDROIDSIMPLEBUFFERQUEUE,
SLresult result = (*mObjectInterface)->GetInterface(mObjectInterface,
EngineOpenSLES::getInstance().getIidAndroidSimpleBufferQueue(),
&mSimpleBufferQueueInterface);
if (SL_RESULT_SUCCESS != result) {
LOGE("get buffer queue interface:%p result:%s",

View file

@ -19,9 +19,6 @@
#include <memory>
#include <SLES/OpenSLES.h>
#include <SLES/OpenSLES_Android.h>
#include "oboe/Oboe.h"
#include "common/MonotonicCounter.h"
#include "opensles/AudioStreamBuffered.h"

View file

@ -15,6 +15,7 @@
*/
#include <dlfcn.h>
#include "common/OboeDebug.h"
#include "EngineOpenSLES.h"
#include "OpenSLESUtilities.h"
@ -24,42 +25,94 @@ using namespace oboe;
// OpenSL ES is deprecated in SDK 30.
// So we use custom dynamic linking to access the library.
#define LIB_OPENSLES_NAME "libOpenSLES.so"
typedef SLresult (*prototype_slCreateEngine)(
SLObjectItf *pEngine,
SLuint32 numOptions,
const SLEngineOption *pEngineOptions,
SLuint32 numInterfaces,
const SLInterfaceID *pInterfaceIds,
const SLboolean *pInterfaceRequired
);
static prototype_slCreateEngine gFunction_slCreateEngine = nullptr;
static void *gLibOpenSlesLibraryHandle = nullptr;
// Load the OpenSL ES library and the one primary entry point.
// @return true if linked OK
static bool linkOpenSLES() {
if (gLibOpenSlesLibraryHandle == nullptr && gFunction_slCreateEngine == nullptr) {
// Use RTLD_NOW to avoid the unpredictable behavior that RTLD_LAZY can cause.
// Also resolving all the links now will prevent a run-time penalty later.
gLibOpenSlesLibraryHandle = dlopen(LIB_OPENSLES_NAME, RTLD_NOW);
if (gLibOpenSlesLibraryHandle == nullptr) {
LOGE("linkOpenSLES() could not find " LIB_OPENSLES_NAME);
} else {
gFunction_slCreateEngine = (prototype_slCreateEngine) dlsym(
gLibOpenSlesLibraryHandle,
"slCreateEngine");
LOGD("linkOpenSLES(): dlsym(%s) returned %p", "slCreateEngine",
gFunction_slCreateEngine);
}
}
return gFunction_slCreateEngine != nullptr;
}
EngineOpenSLES &EngineOpenSLES::getInstance() {
static EngineOpenSLES sInstance;
return sInstance;
}
// Satisfy extern in OpenSLES.h
// These are required because of b/337360630, which was causing
// Oboe to have link failures if libOpenSLES.so was not available.
SL_API const SLInterfaceID SL_IID_ENGINE = nullptr;
SL_API const SLInterfaceID SL_IID_ANDROIDSIMPLEBUFFERQUEUE = nullptr;
SL_API const SLInterfaceID SL_IID_ANDROIDCONFIGURATION = nullptr;
SL_API const SLInterfaceID SL_IID_RECORD = nullptr;
SL_API const SLInterfaceID SL_IID_BUFFERQUEUE = nullptr;
SL_API const SLInterfaceID SL_IID_VOLUME = nullptr;
SL_API const SLInterfaceID SL_IID_PLAY = nullptr;
static const char *getSafeDlerror() {
static const char *defaultMessage = "not found?";
char *errorMessage = dlerror();
return (errorMessage == nullptr) ? defaultMessage : errorMessage;
}
// Load the OpenSL ES library and the one primary entry point.
// @return true if linked OK
bool EngineOpenSLES::linkOpenSLES() {
if (mDynamicLinkState == kLinkStateBad) {
LOGE("%s(), OpenSL ES not available, based on previous link failure.", __func__);
} else if (mDynamicLinkState == kLinkStateUninitialized) {
// Set to BAD now in case we return because of an error.
// This is safe form race conditions because this function is always called
// under mLock amd the state is only accessed from this function.
mDynamicLinkState = kLinkStateBad;
// Use RTLD_NOW to avoid the unpredictable behavior that RTLD_LAZY can cause.
// Also resolving all the links now will prevent a run-time penalty later.
mLibOpenSlesLibraryHandle = dlopen(LIB_OPENSLES_NAME, RTLD_NOW);
if (mLibOpenSlesLibraryHandle == nullptr) {
LOGE("%s() could not dlopen(%s), %s", __func__, LIB_OPENSLES_NAME, getSafeDlerror());
return false;
} else {
mFunction_slCreateEngine = (prototype_slCreateEngine) dlsym(
mLibOpenSlesLibraryHandle,
"slCreateEngine");
LOGD("%s(): dlsym(%s) returned %p", __func__,
"slCreateEngine", mFunction_slCreateEngine);
if (mFunction_slCreateEngine == nullptr) {
LOGE("%s(): dlsym(slCreateEngine) returned null, %s", __func__, getSafeDlerror());
return false;
}
// Load IID interfaces.
LOCAL_SL_IID_ENGINE = getIidPointer("SL_IID_ENGINE");
if (LOCAL_SL_IID_ENGINE == nullptr) return false;
LOCAL_SL_IID_ANDROIDSIMPLEBUFFERQUEUE = getIidPointer(
"SL_IID_ANDROIDSIMPLEBUFFERQUEUE");
if (LOCAL_SL_IID_ANDROIDSIMPLEBUFFERQUEUE == nullptr) return false;
LOCAL_SL_IID_ANDROIDCONFIGURATION = getIidPointer(
"SL_IID_ANDROIDCONFIGURATION");
if (LOCAL_SL_IID_ANDROIDCONFIGURATION == nullptr) return false;
LOCAL_SL_IID_RECORD = getIidPointer("SL_IID_RECORD");
if (LOCAL_SL_IID_RECORD == nullptr) return false;
LOCAL_SL_IID_BUFFERQUEUE = getIidPointer("SL_IID_BUFFERQUEUE");
if (LOCAL_SL_IID_BUFFERQUEUE == nullptr) return false;
LOCAL_SL_IID_VOLUME = getIidPointer("SL_IID_VOLUME");
if (LOCAL_SL_IID_VOLUME == nullptr) return false;
LOCAL_SL_IID_PLAY = getIidPointer("SL_IID_PLAY");
if (LOCAL_SL_IID_PLAY == nullptr) return false;
mDynamicLinkState = kLinkStateGood;
}
}
return (mDynamicLinkState == kLinkStateGood);
}
// A symbol like SL_IID_PLAY is a pointer to a structure.
// The dlsym() function returns the address of the pointer, not the structure.
// To get the address of the structure we have to dereference the pointer.
SLInterfaceID EngineOpenSLES::getIidPointer(const char *symbolName) {
SLInterfaceID *iid_address = (SLInterfaceID *) dlsym(
mLibOpenSlesLibraryHandle,
symbolName);
if (iid_address == nullptr) {
LOGE("%s(): dlsym(%s) returned null, %s", __func__, symbolName, getSafeDlerror());
return (SLInterfaceID) nullptr;
}
return *iid_address; // Get address of the structure.
}
SLresult EngineOpenSLES::open() {
std::lock_guard<std::mutex> lock(mLock);
@ -72,7 +125,7 @@ SLresult EngineOpenSLES::open() {
};
// create engine
result = (*gFunction_slCreateEngine)(&mEngineObject, 0, NULL, 0, NULL, NULL);
result = (*mFunction_slCreateEngine)(&mEngineObject, 0, NULL, 0, NULL, NULL);
if (SL_RESULT_SUCCESS != result) {
LOGE("EngineOpenSLES - slCreateEngine() result:%s", getSLErrStr(result));
goto error;
@ -86,7 +139,9 @@ SLresult EngineOpenSLES::open() {
}
// get the engine interface, which is needed in order to create other objects
result = (*mEngineObject)->GetInterface(mEngineObject, SL_IID_ENGINE, &mEngineInterface);
result = (*mEngineObject)->GetInterface(mEngineObject,
EngineOpenSLES::getInstance().getIidEngine(),
&mEngineInterface);
if (SL_RESULT_SUCCESS != result) {
LOGE("EngineOpenSLES - GetInterface() engine result:%s", getSLErrStr(result));
goto error;
@ -96,12 +151,17 @@ SLresult EngineOpenSLES::open() {
return result;
error:
close();
close_l();
return result;
}
void EngineOpenSLES::close() {
std::lock_guard<std::mutex> lock(mLock);
close_l();
}
// This must be called under mLock
void EngineOpenSLES::close_l() {
if (--mOpenCount == 0) {
if (mEngineObject != nullptr) {
(*mEngineObject)->Destroy(mEngineObject);
@ -119,8 +179,8 @@ SLresult EngineOpenSLES::createAudioPlayer(SLObjectItf *objectItf,
SLDataSource *audioSource,
SLDataSink *audioSink) {
const SLInterfaceID ids[] = {SL_IID_BUFFERQUEUE, SL_IID_ANDROIDCONFIGURATION};
const SLboolean reqs[] = {SL_BOOLEAN_TRUE, SL_BOOLEAN_TRUE};
SLInterfaceID ids[] = {LOCAL_SL_IID_BUFFERQUEUE, LOCAL_SL_IID_ANDROIDCONFIGURATION};
SLboolean reqs[] = {SL_BOOLEAN_TRUE, SL_BOOLEAN_TRUE};
return (*mEngineInterface)->CreateAudioPlayer(mEngineInterface, objectItf, audioSource,
audioSink,
@ -131,8 +191,9 @@ SLresult EngineOpenSLES::createAudioRecorder(SLObjectItf *objectItf,
SLDataSource *audioSource,
SLDataSink *audioSink) {
const SLInterfaceID ids[] = {SL_IID_ANDROIDSIMPLEBUFFERQUEUE, SL_IID_ANDROIDCONFIGURATION };
const SLboolean reqs[] = {SL_BOOLEAN_TRUE, SL_BOOLEAN_TRUE};
SLInterfaceID ids[] = {LOCAL_SL_IID_ANDROIDSIMPLEBUFFERQUEUE,
LOCAL_SL_IID_ANDROIDCONFIGURATION };
SLboolean reqs[] = {SL_BOOLEAN_TRUE, SL_BOOLEAN_TRUE};
return (*mEngineInterface)->CreateAudioRecorder(mEngineInterface, objectItf, audioSource,
audioSink,

View file

@ -25,6 +25,15 @@
namespace oboe {
typedef SLresult (*prototype_slCreateEngine)(
SLObjectItf *pEngine,
SLuint32 numOptions,
const SLEngineOption *pEngineOptions,
SLuint32 numInterfaces,
const SLInterfaceID *pInterfaceIds,
const SLboolean *pInterfaceRequired
);
/**
* INTERNAL USE ONLY
*/
@ -32,6 +41,8 @@ class EngineOpenSLES {
public:
static EngineOpenSLES &getInstance();
bool linkOpenSLES();
SLresult open();
void close();
@ -45,6 +56,14 @@ public:
SLDataSource *audioSource,
SLDataSink *audioSink);
SLInterfaceID getIidEngine() { return LOCAL_SL_IID_ENGINE; }
SLInterfaceID getIidAndroidSimpleBufferQueue() { return LOCAL_SL_IID_ANDROIDSIMPLEBUFFERQUEUE; }
SLInterfaceID getIidAndroidConfiguration() { return LOCAL_SL_IID_ANDROIDCONFIGURATION; }
SLInterfaceID getIidRecord() { return LOCAL_SL_IID_RECORD; }
SLInterfaceID getIidBufferQueue() { return LOCAL_SL_IID_BUFFERQUEUE; }
SLInterfaceID getIidVolume() { return LOCAL_SL_IID_VOLUME; }
SLInterfaceID getIidPlay() { return LOCAL_SL_IID_PLAY; }
private:
// Make this a safe Singleton
EngineOpenSLES()= default;
@ -52,11 +71,34 @@ private:
EngineOpenSLES(const EngineOpenSLES&)= delete;
EngineOpenSLES& operator=(const EngineOpenSLES&)= delete;
SLInterfaceID getIidPointer(const char *symbolName);
/**
* Close the OpenSL ES engine.
* This must be called under mLock
*/
void close_l();
std::mutex mLock;
int32_t mOpenCount = 0;
static constexpr int32_t kLinkStateUninitialized = 0;
static constexpr int32_t kLinkStateGood = 1;
static constexpr int32_t kLinkStateBad = 2;
int32_t mDynamicLinkState = kLinkStateUninitialized;
SLObjectItf mEngineObject = nullptr;
SLEngineItf mEngineInterface = nullptr;
// These symbols are loaded using dlsym().
prototype_slCreateEngine mFunction_slCreateEngine = nullptr;
void *mLibOpenSlesLibraryHandle = nullptr;
SLInterfaceID LOCAL_SL_IID_ENGINE = nullptr;
SLInterfaceID LOCAL_SL_IID_ANDROIDSIMPLEBUFFERQUEUE = nullptr;
SLInterfaceID LOCAL_SL_IID_ANDROIDCONFIGURATION = nullptr;
SLInterfaceID LOCAL_SL_IID_RECORD = nullptr;
SLInterfaceID LOCAL_SL_IID_BUFFERQUEUE = nullptr;
SLInterfaceID LOCAL_SL_IID_VOLUME = nullptr;
SLInterfaceID LOCAL_SL_IID_PLAY = nullptr;
};
} // namespace oboe

View file

@ -20,8 +20,7 @@
#include <atomic>
#include <mutex>
#include <SLES/OpenSLES.h>
#include <SLES/OpenSLES_Android.h>
#include "EngineOpenSLES.h"
namespace oboe {