Index: extensions/renderer/api/display_source/wifi_display/wifi_display_media_manager.cc |
diff --git a/extensions/renderer/api/display_source/wifi_display/wifi_display_media_manager.cc b/extensions/renderer/api/display_source/wifi_display/wifi_display_media_manager.cc |
index 0724c61e0db1dacc215e3863d2a10b844abdc7d2..2cb0de4d28d0ffdf8197dd471dfe0aee2ecf74b4 100644 |
--- a/extensions/renderer/api/display_source/wifi_display/wifi_display_media_manager.cc |
+++ b/extensions/renderer/api/display_source/wifi_display/wifi_display_media_manager.cc |
@@ -16,7 +16,8 @@ const char kErrorNoVideoFormatData[] = |
"Failed to get video format data from the given MediaStreamTrack object"; |
const char kErrorSinkCannotPlayVideo[] = |
"The sink cannot play video from the given MediaStreamTrack object"; |
- |
+const char kErrorSinkCannotPlayAudio[] = |
+ "The sink cannot play audio from the given MediaStreamTrack object"; |
} // namespace |
WiFiDisplayMediaManager::WiFiDisplayMediaManager( |
@@ -221,13 +222,26 @@ bool WiFiDisplayMediaManager::InitOptimalVideoFormat( |
bool WiFiDisplayMediaManager::InitOptimalAudioFormat( |
const std::vector<wds::AudioCodec>& sink_codecs) { |
- NOTIMPLEMENTED(); |
+ for (const wds::AudioCodec& codec : sink_codecs) { |
+ // MediaStreamTrack contains LPCM audio. |
+ if (codec.format == wds::LPCM) { |
+ optimal_audio_codec_ = codec; |
+ // Picking a single mode. |
+ wds::AudioModes optimal_mode; |
+ if (codec.modes.test(wds::LPCM_44_1K_16B_2CH)) |
+ optimal_mode.set(wds::LPCM_44_1K_16B_2CH); |
+ else |
+ optimal_mode.set(wds::LPCM_48K_16B_2CH); |
+ optimal_audio_codec_.modes = optimal_mode; |
+ return true; |
+ } |
+ } |
+ error_callback_.Run(kErrorSinkCannotPlayAudio); |
return false; |
} |
wds::AudioCodec WiFiDisplayMediaManager::GetOptimalAudioFormat() const { |
- NOTIMPLEMENTED(); |
- return wds::AudioCodec(); |
+ return optimal_audio_codec_; |
} |
} // namespace extensions |