// Find out tizen forwarding device, and classify it as
// |DISPLAY_AUDIO_CAPTURE| device.
blink::MediaStreamDevices forward_devices;
- for (auto device = devices.begin(); device != devices.end(); device++) {
+ for (auto device = devices.begin(); device != devices.end();) {
if (is_forwarding_device(device->name)) {
device->type = blink::mojom::MediaStreamType::DISPLAY_AUDIO_CAPTURE;
forward_devices.push_back(*device);
- devices.erase(device);
+ device = devices.erase(device);
+ } else {
+ device++;
}
}
return forward_devices;
static_cast<mojom::blink::MediaDeviceType>(i);
WebMediaDeviceInfo device_info = enumeration[i][j];
String device_label = String::FromUTF8(device_info.label);
+#if BUILDFLAG(IS_TIZEN_TV)
+ // Block tizen forwarding device, refer to:
+ // https://review.tizen.org/gerrit/319068/
+ if (device_label.Find("forwarding") != kNotFound) {
+ continue;
+ }
+#endif
+
if (device_type == mojom::blink::MediaDeviceType::kMediaAudioInput ||
device_type == mojom::blink::MediaDeviceType::kMediaVideoInput) {
InputDeviceInfo* input_device_info =
#include "base/logging.h"
#include "media/audio/tizen/audio_manager_capi.h"
+#if BUILDFLAG(IS_TIZEN_TV)
+#include "wrt/src/common/privilege.h"
+#endif
+
#include <sound_manager_internal.h>
namespace media {
+#if BUILDFLAG(IS_TIZEN_TV)
+constexpr char kMediaCapturePrivilege[] =
+ "http://tizen.org/privilege/mediacapture";
+#endif
+
CapiUsbAudioInputStream::CapiUsbAudioInputStream(
AudioManagerCapi* audio_manager,
const std::string& device_name,
return false;
}
+#if BUILDFLAG(IS_TIZEN_TV)
+ // Check privilege for audio forwarding device used to capture system
+ // output audio.
+ if (device_type == SOUND_DEVICE_FORWARDING) {
+ auto has_privilege =
+ wrt::privilege::FindPrivilegeFromCynara(kMediaCapturePrivilege);
+ if (!has_privilege) {
+ LOG(ERROR) << "No system audio capture privilege.";
+ return false;
+ }
+ }
+#endif
+
stream_info_ = nullptr;
ret = sound_manager_create_stream_information(stream_type, nullptr, nullptr,