audio: Reject offload open_output_stream when sound card is offline

Reject offload open_output_stream when sound card is offline.
This allows fallback to s/w paths

Bug: 30075678
Change-Id: I5fd2af8f0e7ca0077e2207b1b7d254ee7eef94ea
diff --git a/hal/audio_hw.c b/hal/audio_hw.c
index e4cd2b9..77dfc7a 100644
--- a/hal/audio_hw.c
+++ b/hal/audio_hw.c
@@ -2626,6 +2626,17 @@
         out->config.channels = audio_channel_count_from_out_mask(out->channel_mask);
         out->config.period_size = HDMI_MULTI_PERIOD_BYTES / (out->config.channels * 2);
     } else if (out->flags & AUDIO_OUTPUT_FLAG_COMPRESS_OFFLOAD) {
+        pthread_mutex_lock(&adev->lock);
+        bool offline = (adev->card_status == CARD_STATUS_OFFLINE);
+        pthread_mutex_unlock(&adev->lock);
+
+        // reject offload during card offline to allow
+        // fallback to s/w paths
+        if (offline) {
+            ret = -ENODEV;
+            goto error_open;
+        }
+
         if (config->offload_info.version != AUDIO_INFO_INITIALIZER.version ||
             config->offload_info.size != AUDIO_INFO_INITIALIZER.size) {
             ALOGE("%s: Unsupported Offload information", __func__);