Fix out_write frame count to match return code.

When we return that we have consumed bytes we must update
our frame counter properly.

Bug: 31546611
Change-Id: I3285c96a6b51baf84a57c0f70afe82269c44c4cd
diff --git a/hal/audio_hw.c b/hal/audio_hw.c
index 35b726e..e68535f 100644
--- a/hal/audio_hw.c
+++ b/hal/audio_hw.c
@@ -2063,14 +2063,16 @@
             else
                 ret = pcm_write(out->pcm, (void *)buffer, bytes);
 
-            if (ret == 0)
-                out->written += bytes / (out->config.channels * sizeof(short));
-
             release_out_focus(out, ns);
         }
     }
 
 exit:
+    // For PCM we always consume the buffer and return #bytes regardless of ret.
+    if (out->usecase != USECASE_AUDIO_PLAYBACK_OFFLOAD) {
+        out->written += bytes / (out->config.channels * sizeof(short));
+    }
+
     pthread_mutex_unlock(&out->lock);
 
     if (ret != 0) {