• 周五. 5月 2nd, 2025

RK3399 HDMI 和 rk809 codec 音频同时输出

3月 25, 2022

RK3399 HDMI 和 rk809 codec 音频同时输出,部分应用场景需要同时让hdmi和codec都有声音。可以按以下的方法进行修改:

diff --git a/tinyalsa_hal/audio_hw.c b/tinyalsa_hal/audio_hw.c
index 3e183e0..2e0b765 100644
--- a/tinyalsa_hal/audio_hw.c
+++ b/tinyalsa_hal/audio_hw.c
@@ -987,8 +987,8 @@ static int start_output_stream(struct stream_out *out)
 #endif
     route_pcm_card_open(adev->dev_out[SND_OUT_SOUND_CARD_SPEAKER].card, getRouteFromDevice(out->device));

-    if (out->device & AUDIO_DEVICE_OUT_AUX_DIGITAL) {
-        if (true) {
+    //if (out->device & AUDIO_DEVICE_OUT_AUX_DIGITAL) {
+    //    if (true) {
 #ifdef BOX_HAL
 #ifdef USE_DRM
             int ret = 0;
@@ -1014,15 +1014,15 @@ static int start_output_stream(struct stream_out *out)
             } else {
                 ALOGD("%s: the number of HDMI is invalid,please check",__FUNCTION__);
             }
-        } else {
-            ALOGD("The current HDMI is DVI mode");
-            out->device |= AUDIO_DEVICE_OUT_SPEAKER;
-        }
-    }
-
-    if (out->device & (AUDIO_DEVICE_OUT_SPEAKER |
-                       AUDIO_DEVICE_OUT_WIRED_HEADSET |
-                       AUDIO_DEVICE_OUT_WIRED_HEADPHONE)) {
+    //    } else {
+    //        ALOGD("The current HDMI is DVI mode");
+    //        out->device |= AUDIO_DEVICE_OUT_SPEAKER;
+    //    }
+    //}
+
+    //if (out->device & (AUDIO_DEVICE_OUT_SPEAKER |
+    //                   AUDIO_DEVICE_OUT_WIRED_HEADSET |
+    //                   AUDIO_DEVICE_OUT_WIRED_HEADPHONE)) {
         card = adev->dev_out[SND_OUT_SOUND_CARD_SPEAKER].card;
         device = adev->dev_out[SND_OUT_SOUND_CARD_SPEAKER].device;
         if(card != (int)SND_OUT_SOUND_CARD_UNKNOWN) {
@@ -1036,7 +1036,7 @@ static int start_output_stream(struct stream_out *out)
             }
         }

-    }
+    //}

     if (out->device & AUDIO_DEVICE_OUT_SPDIF) {
             card = adev->dev_out[SND_OUT_SOUND_CARD_SPDIF].card;