Abstract away access to audio streams HAL in AudioFlinger

In this CL all direct access to audio_stream_t, audio_stream_out_t, and
audio_stream_in_t their functions is encapsulated within the new
hierarchy of Stream[In|Out]HalLocal classes.  AudioFlinger uses
interface classes Stream[In|Out]HalInterface to access these functions.

Note that NBAIO still receives raw HAL stream handles and needs to be
converted separately.

Bug: 30222631
Test: manual with Loopback app

Change-Id: I6388cfa2006791c9c0aa7bb186719209726a2d48
diff --git a/services/audioflinger/BufferProviders.cpp b/services/audioflinger/BufferProviders.cpp
index c1ff1af..204fa17 100644
--- a/services/audioflinger/BufferProviders.cpp
+++ b/services/audioflinger/BufferProviders.cpp
@@ -151,7 +151,7 @@
         return;
     }
     mEffectsFactory = EffectsFactoryHalInterface::create();
-    if (mEffectsFactory.get() == NULL) {
+    if (mEffectsFactory == 0) {
         ALOGE("DownmixerBufferProvider() error: could not obtain the effects factory");
         return;
     }
@@ -257,7 +257,7 @@
 {
     // find multichannel downmix effect if we have to play multichannel content
     sp<EffectsFactoryHalInterface> effectsFactory = EffectsFactoryHalInterface::create();
-    if (effectsFactory.get() == NULL) {
+    if (effectsFactory == 0) {
         ALOGE("AudioMixer() error: could not obtain the effects factory");
         return NO_INIT;
     }