From e6e3a171261d81ec8605ee8c0e129e7fa96703ef Mon Sep 17 00:00:00 2001 From: Andy Hung Date: Fri, 30 Apr 2021 15:29:47 -0700 Subject: [PATCH] StreamOut: Fix STREAM_EVENT_CBK_TYPE_CODEC_FORMAT_CHANGED Use audio_metadata_byte_string_len method in asyncEventCallback. Test: atest metadata_tests Bug: 186894288 Change-Id: I04914bc5b2c778002b53b8f8da5bf29fff5c80f8 --- audio/core/all-versions/default/Android.bp | 1 + audio/core/all-versions/default/StreamOut.cpp | 7 ++++++- 2 files changed, 7 insertions(+), 1 deletion(-) diff --git a/audio/core/all-versions/default/Android.bp b/audio/core/all-versions/default/Android.bp index f61964eda7..615655d505 100644 --- a/audio/core/all-versions/default/Android.bp +++ b/audio/core/all-versions/default/Android.bp @@ -56,6 +56,7 @@ cc_defaults { "android.hardware.audio-impl_headers", "android.hardware.audio.common.util@all-versions", "libaudioclient_headers", + "libaudioutils_headers", "libaudio_system_headers", "libhardware_headers", "libmedia_headers", diff --git a/audio/core/all-versions/default/StreamOut.cpp b/audio/core/all-versions/default/StreamOut.cpp index a089f6baf9..4fe6601cd2 100644 --- a/audio/core/all-versions/default/StreamOut.cpp +++ b/audio/core/all-versions/default/StreamOut.cpp @@ -28,6 +28,7 @@ #include #include +#include #include #include #include @@ -742,7 +743,11 @@ int StreamOut::asyncEventCallback(stream_event_callback_type_t event, void* para switch (event) { case STREAM_EVENT_CBK_TYPE_CODEC_FORMAT_CHANGED: { hidl_vec audioMetadata; - audioMetadata.setToExternal((uint8_t*)param, strlen((char*)param)); + // void* param is the byte string buffer from byte_string_from_audio_metadata(). + // As the byte string buffer may have embedded zeroes, we cannot use strlen() + // but instead use audio_utils::metadata::dataByteStringLen(). + audioMetadata.setToExternal((uint8_t*)param, audio_utils::metadata::dataByteStringLen( + (const uint8_t*)param)); result = eventCallback->onCodecFormatChanged(audioMetadata); } break; default: