From 9425ffd8d5ef824815f690e8a225862d3d8ec16f Mon Sep 17 00:00:00 2001 From: Phil Burk Date: Thu, 9 Jul 2020 13:21:09 -0700 Subject: oboe: use oboe::flowgraph namespace to prevent AAudio from calling into the Oboe library and causing memory corruption. Pass in external namespace. Fixes #930 --- src/flowgraph/ChannelCountConverter.cpp | 2 +- src/flowgraph/ChannelCountConverter.h | 2 ++ src/flowgraph/ClipToRange.cpp | 2 +- src/flowgraph/ClipToRange.h | 2 ++ src/flowgraph/FlowGraphNode.cpp | 2 +- src/flowgraph/FlowGraphNode.h | 9 +++++++++ src/flowgraph/ManyToMultiConverter.cpp | 2 +- src/flowgraph/ManyToMultiConverter.h | 6 ++++++ src/flowgraph/MonoToMultiConverter.cpp | 2 +- src/flowgraph/MonoToMultiConverter.h | 2 ++ src/flowgraph/MultiToMonoConverter.cpp | 2 +- src/flowgraph/MultiToMonoConverter.h | 2 ++ src/flowgraph/RampLinear.cpp | 2 +- src/flowgraph/RampLinear.h | 2 ++ src/flowgraph/SampleRateConverter.cpp | 2 +- src/flowgraph/SampleRateConverter.h | 4 ++++ src/flowgraph/SinkFloat.cpp | 2 +- src/flowgraph/SinkFloat.h | 2 ++ src/flowgraph/SinkI16.cpp | 2 +- src/flowgraph/SinkI16.h | 2 ++ src/flowgraph/SinkI24.cpp | 2 +- src/flowgraph/SinkI24.h | 2 ++ src/flowgraph/SourceFloat.cpp | 2 +- src/flowgraph/SourceFloat.h | 2 ++ src/flowgraph/SourceI16.cpp | 2 +- src/flowgraph/SourceI16.h | 2 ++ src/flowgraph/SourceI24.cpp | 2 +- src/flowgraph/SourceI24.h | 2 ++ 28 files changed, 55 insertions(+), 14 deletions(-) (limited to 'src') diff --git a/src/flowgraph/ChannelCountConverter.cpp b/src/flowgraph/ChannelCountConverter.cpp index 03de262c..b56f8b27 100644 --- a/src/flowgraph/ChannelCountConverter.cpp +++ b/src/flowgraph/ChannelCountConverter.cpp @@ -18,7 +18,7 @@ #include "FlowGraphNode.h" #include "ChannelCountConverter.h" -using namespace flowgraph; +using namespace FLOWGRAPH_OUTER_NAMESPACE::flowgraph; ChannelCountConverter::ChannelCountConverter( int32_t inputChannelCount, diff --git a/src/flowgraph/ChannelCountConverter.h b/src/flowgraph/ChannelCountConverter.h index e4b6f4e6..bf90608e 100644 --- a/src/flowgraph/ChannelCountConverter.h +++ b/src/flowgraph/ChannelCountConverter.h @@ -22,6 +22,7 @@ #include "FlowGraphNode.h" +namespace FLOWGRAPH_OUTER_NAMESPACE { namespace flowgraph { /** @@ -48,5 +49,6 @@ namespace flowgraph { }; } /* namespace flowgraph */ +} /* namespace oboe */ #endif //FLOWGRAPH_CHANNEL_COUNT_CONVERTER_H diff --git a/src/flowgraph/ClipToRange.cpp b/src/flowgraph/ClipToRange.cpp index d2f8a02a..c6ad0b0f 100644 --- a/src/flowgraph/ClipToRange.cpp +++ b/src/flowgraph/ClipToRange.cpp @@ -19,7 +19,7 @@ #include "FlowGraphNode.h" #include "ClipToRange.h" -using namespace flowgraph; +using namespace FLOWGRAPH_OUTER_NAMESPACE::flowgraph; ClipToRange::ClipToRange(int32_t channelCount) : FlowGraphFilter(channelCount) { diff --git a/src/flowgraph/ClipToRange.h b/src/flowgraph/ClipToRange.h index 22b78049..cd7d1c15 100644 --- a/src/flowgraph/ClipToRange.h +++ b/src/flowgraph/ClipToRange.h @@ -23,6 +23,7 @@ #include "FlowGraphNode.h" +namespace FLOWGRAPH_OUTER_NAMESPACE { namespace flowgraph { // This is 3 dB, (10^(3/20)), to match the maximum headroom in AudioTrack for float data. @@ -64,5 +65,6 @@ private: }; } /* namespace flowgraph */ +} /* namespace oboe */ #endif //FLOWGRAPH_CLIP_TO_RANGE_H diff --git a/src/flowgraph/FlowGraphNode.cpp b/src/flowgraph/FlowGraphNode.cpp index fd267489..c7e3ff9d 100644 --- a/src/flowgraph/FlowGraphNode.cpp +++ b/src/flowgraph/FlowGraphNode.cpp @@ -19,7 +19,7 @@ #include #include "FlowGraphNode.h" -using namespace flowgraph; +using namespace FLOWGRAPH_OUTER_NAMESPACE::flowgraph; /***************************************************************************/ int32_t FlowGraphNode::pullData(int32_t numFrames, int64_t callCount) { diff --git a/src/flowgraph/FlowGraphNode.h b/src/flowgraph/FlowGraphNode.h index e31cab85..642d8391 100644 --- a/src/flowgraph/FlowGraphNode.h +++ b/src/flowgraph/FlowGraphNode.h @@ -40,8 +40,16 @@ // Set this to 1 if using it inside the Android framework. // This code is kept here so that it can be moved easily between Oboe and AAudio. +#ifndef FLOWGRAPH_ANDROID_INTERNAL #define FLOWGRAPH_ANDROID_INTERNAL 0 +#endif +// Set this to a name that will prevent AAudio from calling into Oboe. +#ifndef FLOWGRAPH_OUTER_NAMESPACE +#define FLOWGRAPH_OUTER_NAMESPACE oboe +#endif + +namespace FLOWGRAPH_OUTER_NAMESPACE { namespace flowgraph { // Default block size that can be overridden when the FlowGraphPortFloat is created. @@ -429,5 +437,6 @@ public: }; } /* namespace flowgraph */ +} /* namespace oboe */ #endif /* FLOWGRAPH_FLOW_GRAPH_NODE_H */ diff --git a/src/flowgraph/ManyToMultiConverter.cpp b/src/flowgraph/ManyToMultiConverter.cpp index 879685e8..4f973bc3 100644 --- a/src/flowgraph/ManyToMultiConverter.cpp +++ b/src/flowgraph/ManyToMultiConverter.cpp @@ -18,7 +18,7 @@ #include "ManyToMultiConverter.h" -using namespace flowgraph; +using namespace FLOWGRAPH_OUTER_NAMESPACE::flowgraph; ManyToMultiConverter::ManyToMultiConverter(int32_t channelCount) : inputs(channelCount) diff --git a/src/flowgraph/ManyToMultiConverter.h b/src/flowgraph/ManyToMultiConverter.h index eca4a8ed..b4811bf5 100644 --- a/src/flowgraph/ManyToMultiConverter.h +++ b/src/flowgraph/ManyToMultiConverter.h @@ -23,6 +23,9 @@ #include "FlowGraphNode.h" +namespace FLOWGRAPH_OUTER_NAMESPACE { +namespace flowgraph { + /** * Combine multiple mono inputs into one interleaved multi-channel output. */ @@ -46,4 +49,7 @@ public: private: }; +} /* namespace flowgraph */ +} /* namespace oboe */ + #endif //FLOWGRAPH_MANY_TO_MULTI_CONVERTER_H diff --git a/src/flowgraph/MonoToMultiConverter.cpp b/src/flowgraph/MonoToMultiConverter.cpp index 803caec8..bb471a0f 100644 --- a/src/flowgraph/MonoToMultiConverter.cpp +++ b/src/flowgraph/MonoToMultiConverter.cpp @@ -18,7 +18,7 @@ #include "FlowGraphNode.h" #include "MonoToMultiConverter.h" -using namespace flowgraph; +using namespace FLOWGRAPH_OUTER_NAMESPACE::flowgraph; MonoToMultiConverter::MonoToMultiConverter(int32_t outputChannelCount) : input(*this, 1) diff --git a/src/flowgraph/MonoToMultiConverter.h b/src/flowgraph/MonoToMultiConverter.h index 893d9cd0..4185b332 100644 --- a/src/flowgraph/MonoToMultiConverter.h +++ b/src/flowgraph/MonoToMultiConverter.h @@ -22,6 +22,7 @@ #include "FlowGraphNode.h" +namespace FLOWGRAPH_OUTER_NAMESPACE { namespace flowgraph { /** @@ -45,5 +46,6 @@ public: }; } /* namespace flowgraph */ +} /* namespace oboe */ #endif //FLOWGRAPH_MONO_TO_MULTI_CONVERTER_H diff --git a/src/flowgraph/MultiToMonoConverter.cpp b/src/flowgraph/MultiToMonoConverter.cpp index 21f61246..8e895bf6 100644 --- a/src/flowgraph/MultiToMonoConverter.cpp +++ b/src/flowgraph/MultiToMonoConverter.cpp @@ -18,7 +18,7 @@ #include "FlowGraphNode.h" #include "MultiToMonoConverter.h" -using namespace flowgraph; +using namespace FLOWGRAPH_OUTER_NAMESPACE::flowgraph; MultiToMonoConverter::MultiToMonoConverter(int32_t inputChannelCount) : input(*this, inputChannelCount) diff --git a/src/flowgraph/MultiToMonoConverter.h b/src/flowgraph/MultiToMonoConverter.h index 37c53bde..374558c1 100644 --- a/src/flowgraph/MultiToMonoConverter.h +++ b/src/flowgraph/MultiToMonoConverter.h @@ -22,6 +22,7 @@ #include "FlowGraphNode.h" +namespace FLOWGRAPH_OUTER_NAMESPACE { namespace flowgraph { /** @@ -45,5 +46,6 @@ namespace flowgraph { }; } /* namespace flowgraph */ +} /* namespace oboe */ #endif //FLOWGRAPH_MULTI_TO_MONO_CONVERTER_H diff --git a/src/flowgraph/RampLinear.cpp b/src/flowgraph/RampLinear.cpp index afef0181..33b2712c 100644 --- a/src/flowgraph/RampLinear.cpp +++ b/src/flowgraph/RampLinear.cpp @@ -19,7 +19,7 @@ #include "FlowGraphNode.h" #include "RampLinear.h" -using namespace flowgraph; +using namespace FLOWGRAPH_OUTER_NAMESPACE::flowgraph; RampLinear::RampLinear(int32_t channelCount) : FlowGraphFilter(channelCount) { diff --git a/src/flowgraph/RampLinear.h b/src/flowgraph/RampLinear.h index f285704c..cb52d21f 100644 --- a/src/flowgraph/RampLinear.h +++ b/src/flowgraph/RampLinear.h @@ -23,6 +23,7 @@ #include "FlowGraphNode.h" +namespace FLOWGRAPH_OUTER_NAMESPACE { namespace flowgraph { /** @@ -92,5 +93,6 @@ private: }; } /* namespace flowgraph */ +} /* namespace oboe */ #endif //FLOWGRAPH_RAMP_LINEAR_H diff --git a/src/flowgraph/SampleRateConverter.cpp b/src/flowgraph/SampleRateConverter.cpp index 708c684f..0c92d7fd 100644 --- a/src/flowgraph/SampleRateConverter.cpp +++ b/src/flowgraph/SampleRateConverter.cpp @@ -16,7 +16,7 @@ #include "SampleRateConverter.h" -using namespace flowgraph; +using namespace FLOWGRAPH_OUTER_NAMESPACE::flowgraph; using namespace resampler; SampleRateConverter::SampleRateConverter(int32_t channelCount, MultiChannelResampler &resampler) diff --git a/src/flowgraph/SampleRateConverter.h b/src/flowgraph/SampleRateConverter.h index d940b22b..d54bcbf5 100644 --- a/src/flowgraph/SampleRateConverter.h +++ b/src/flowgraph/SampleRateConverter.h @@ -23,6 +23,7 @@ #include "FlowGraphNode.h" #include "resampler/MultiChannelResampler.h" +namespace FLOWGRAPH_OUTER_NAMESPACE { namespace flowgraph { class SampleRateConverter : public FlowGraphFilter { @@ -52,5 +53,8 @@ private: int64_t mInputFramePosition = 0; // monotonic counter of input frames used for pullData }; + } /* namespace flowgraph */ +} /* namespace oboe */ + #endif //OBOE_SAMPLE_RATE_CONVERTER_H diff --git a/src/flowgraph/SinkFloat.cpp b/src/flowgraph/SinkFloat.cpp index 20c0ffa0..e0ac6e93 100644 --- a/src/flowgraph/SinkFloat.cpp +++ b/src/flowgraph/SinkFloat.cpp @@ -19,7 +19,7 @@ #include "FlowGraphNode.h" #include "SinkFloat.h" -using namespace flowgraph; +using namespace FLOWGRAPH_OUTER_NAMESPACE::flowgraph; SinkFloat::SinkFloat(int32_t channelCount) : FlowGraphSink(channelCount) { diff --git a/src/flowgraph/SinkFloat.h b/src/flowgraph/SinkFloat.h index 418f6d7c..eaf679f5 100644 --- a/src/flowgraph/SinkFloat.h +++ b/src/flowgraph/SinkFloat.h @@ -23,6 +23,7 @@ #include "FlowGraphNode.h" +namespace FLOWGRAPH_OUTER_NAMESPACE { namespace flowgraph { /** @@ -40,5 +41,6 @@ public: }; } /* namespace flowgraph */ +} /* namespace oboe */ #endif //FLOWGRAPH_SINK_FLOAT_H diff --git a/src/flowgraph/SinkI16.cpp b/src/flowgraph/SinkI16.cpp index da7fd6b7..690431ce 100644 --- a/src/flowgraph/SinkI16.cpp +++ b/src/flowgraph/SinkI16.cpp @@ -23,7 +23,7 @@ #include #endif -using namespace flowgraph; +using namespace FLOWGRAPH_OUTER_NAMESPACE::flowgraph; SinkI16::SinkI16(int32_t channelCount) : FlowGraphSink(channelCount) {} diff --git a/src/flowgraph/SinkI16.h b/src/flowgraph/SinkI16.h index 1e1ce3af..5e758d27 100644 --- a/src/flowgraph/SinkI16.h +++ b/src/flowgraph/SinkI16.h @@ -22,6 +22,7 @@ #include "FlowGraphNode.h" +namespace FLOWGRAPH_OUTER_NAMESPACE { namespace flowgraph { /** @@ -39,5 +40,6 @@ public: }; } /* namespace flowgraph */ +} /* namespace oboe */ #endif //FLOWGRAPH_SINK_I16_H diff --git a/src/flowgraph/SinkI24.cpp b/src/flowgraph/SinkI24.cpp index a9fb5d22..d4f68b68 100644 --- a/src/flowgraph/SinkI24.cpp +++ b/src/flowgraph/SinkI24.cpp @@ -25,7 +25,7 @@ #include #endif -using namespace flowgraph; +using namespace FLOWGRAPH_OUTER_NAMESPACE::flowgraph; SinkI24::SinkI24(int32_t channelCount) : FlowGraphSink(channelCount) {} diff --git a/src/flowgraph/SinkI24.h b/src/flowgraph/SinkI24.h index 44078a96..32691780 100644 --- a/src/flowgraph/SinkI24.h +++ b/src/flowgraph/SinkI24.h @@ -22,6 +22,7 @@ #include "FlowGraphNode.h" +namespace FLOWGRAPH_OUTER_NAMESPACE { namespace flowgraph { /** @@ -40,5 +41,6 @@ public: }; } /* namespace flowgraph */ +} /* namespace oboe */ #endif //FLOWGRAPH_SINK_I24_H diff --git a/src/flowgraph/SourceFloat.cpp b/src/flowgraph/SourceFloat.cpp index f574d842..3161ec18 100644 --- a/src/flowgraph/SourceFloat.cpp +++ b/src/flowgraph/SourceFloat.cpp @@ -20,7 +20,7 @@ #include "FlowGraphNode.h" #include "SourceFloat.h" -using namespace flowgraph; +using namespace FLOWGRAPH_OUTER_NAMESPACE::flowgraph; SourceFloat::SourceFloat(int32_t channelCount) : FlowGraphSourceBuffered(channelCount) { diff --git a/src/flowgraph/SourceFloat.h b/src/flowgraph/SourceFloat.h index 4de1b41c..6cea67ef 100644 --- a/src/flowgraph/SourceFloat.h +++ b/src/flowgraph/SourceFloat.h @@ -22,6 +22,7 @@ #include "FlowGraphNode.h" +namespace FLOWGRAPH_OUTER_NAMESPACE { namespace flowgraph { /** @@ -39,5 +40,6 @@ public: }; } /* namespace flowgraph */ +} /* namespace oboe */ #endif //FLOWGRAPH_SOURCE_FLOAT_H diff --git a/src/flowgraph/SourceI16.cpp b/src/flowgraph/SourceI16.cpp index 88130239..16cd2b3d 100644 --- a/src/flowgraph/SourceI16.cpp +++ b/src/flowgraph/SourceI16.cpp @@ -24,7 +24,7 @@ #include #endif -using namespace flowgraph; +using namespace FLOWGRAPH_OUTER_NAMESPACE::flowgraph; SourceI16::SourceI16(int32_t channelCount) : FlowGraphSourceBuffered(channelCount) { diff --git a/src/flowgraph/SourceI16.h b/src/flowgraph/SourceI16.h index fe440b20..c2cfb170 100644 --- a/src/flowgraph/SourceI16.h +++ b/src/flowgraph/SourceI16.h @@ -22,6 +22,7 @@ #include "FlowGraphNode.h" +namespace FLOWGRAPH_OUTER_NAMESPACE { namespace flowgraph { /** * AudioSource that reads a block of pre-defined 16-bit integer data. @@ -38,5 +39,6 @@ public: }; } /* namespace flowgraph */ +} /* namespace oboe */ #endif //FLOWGRAPH_SOURCE_I16_H diff --git a/src/flowgraph/SourceI24.cpp b/src/flowgraph/SourceI24.cpp index 19758787..321f732f 100644 --- a/src/flowgraph/SourceI24.cpp +++ b/src/flowgraph/SourceI24.cpp @@ -24,7 +24,7 @@ #include "FlowGraphNode.h" #include "SourceI24.h" -using namespace flowgraph; +using namespace FLOWGRAPH_OUTER_NAMESPACE::flowgraph; constexpr int kBytesPerI24Packed = 3; diff --git a/src/flowgraph/SourceI24.h b/src/flowgraph/SourceI24.h index 37795343..31a43057 100644 --- a/src/flowgraph/SourceI24.h +++ b/src/flowgraph/SourceI24.h @@ -22,6 +22,7 @@ #include "FlowGraphNode.h" +namespace FLOWGRAPH_OUTER_NAMESPACE { namespace flowgraph { /** @@ -39,5 +40,6 @@ public: }; } /* namespace flowgraph */ +} /* namespace oboe */ #endif //FLOWGRAPH_SOURCE_I24_H -- cgit v1.2.3