// Enables multiplayers feature for web app
const char kEnableMultiPlayerForWebapp[] = "enable-multiplayer-for-webapp";
const char kDefaultAudioInputDeviceId[] = "default-audio-input-device-id";
+const char kEnableUseSwDecoder[] = "enable-use-sw-decoder";
+const char kEnableWebAudioUseVoiceStream[] = "enable-webaudio-use-voicestream";
#endif
#if defined(ENABLE_IPC_FUZZER)
CONTENT_EXPORT extern const char kEnableMediaSubtitleNotification[];
CONTENT_EXPORT extern const char kEnableMultiPlayerForWebapp[];
CONTENT_EXPORT extern const char kDefaultAudioInputDeviceId[];
+CONTENT_EXPORT extern const char kEnableUseSwDecoder[];
+CONTENT_EXPORT extern const char kEnableWebAudioUseVoiceStream[];
#endif
#if defined(ENABLE_IPC_FUZZER)
#include "media/audio/audio_manager_base.h"
#include "media/base/audio_parameters.h"
+#if BUILDFLAG(IS_TIZEN_TV)
+#include "base/command_line.h"
+#include "content/public/common/content_switches.h"
+#include "ewk/efl_integration/common/content_switches_efl.h"
+#include "tizen_src/ewk/efl_integration/ewk_privilege_checker.h"
+#endif
+
namespace {
#define ENUM_CASE(x) \
state_ = media::kIsOpened;
+#if BUILDFLAG(IS_TIZEN_TV)
+ if (IsWebaudioVoiceStreamEnabled()) {
+ LOG(INFO) << __func__ << " Webaudio use voice stream privilege set.";
+ sound_stream_info_h stream_info;
+ int ret = sound_manager_create_stream_information(
+ SOUND_STREAM_TYPE_VOICE_INFORMATION, focusStateChangedCallback, this,
+ &stream_info);
+ if (SOUND_MANAGER_ERROR_NONE != ret || stream_info == nullptr) {
+ LOG(ERROR) << __func__ << " Fail to create stream info. ret : " << ret;
+ stream_info = nullptr;
+ return false;
+ }
+ ret = audio_out_set_sound_stream_info(audio_out_, stream_info);
+ if (AUDIO_IO_ERROR_NONE != ret) {
+ LOG(ERROR) << __func__ << " Fail to set stream info. ret : " << ret;
+ return false;
+ }
+ }
+#endif
+
return true;
}
+#if BUILDFLAG(IS_TIZEN_TV)
+bool CapiAudioOutputStream::IsWebaudioVoiceStreamEnabled() const {
+ const base::CommandLine* cmd_line = base::CommandLine::ForCurrentProcess();
+ return cmd_line->HasSwitch(switches::kEnableWebAudioUseVoiceStream);
+}
+void CapiAudioOutputStream::focusStateChangedCallback(
+ sound_stream_info_h stream_info,
+ sound_stream_focus_mask_e focus_mask,
+ sound_stream_focus_state_e focus_state,
+ sound_stream_focus_change_reason_e reason_for_change,
+ int sound_behavior,
+ const char* extra_info,
+ void* user_data) {
+ LOG(INFO) << __func__ << " focus state changed to " << (int)focus_state
+ << " with reason " << (int)reason_for_change << " and extra info "
+ << extra_info;
+}
+#endif
+
void CapiAudioOutputStream::Start(AudioSourceCallback* callback) {
DCHECK(manager_->GetTaskRunner()->BelongsToCurrentThread());
DCHECK(state_ == media::kIsOpened);
}
void CapiAudioOutputStream::Flush() {
+ LOG(INFO) << __func__ << " : state_ : " << static_cast<InternalState>(state_);
DCHECK(manager_->GetTaskRunner()->BelongsToCurrentThread());
if (state_ != media::kIsStarted)
return;
size_t nbytes,
void* user_data);
void WriteAudioData(size_t nbytes);
+#if BUILDFLAG(IS_TIZEN_TV)
+ bool IsWebaudioVoiceStreamEnabled() const;
+ static void focusStateChangedCallback(
+ sound_stream_info_h stream_info,
+ sound_stream_focus_mask_e focus_mask,
+ sound_stream_focus_state_e focus_state,
+ sound_stream_focus_change_reason_e reason_for_change,
+ int sound_behavior,
+ const char* extra_info,
+ void* user_data);
+#endif
const AudioParameters params_;
AudioManagerBase* manager_;
return cmd_line->HasSwitch(switches::kEnableMultiPlayerForWebapp);
}
+bool IsSwDecoderUsed() {
+ const base::CommandLine* cmd_line = base::CommandLine::ForCurrentProcess();
+ return cmd_line->HasSwitch(switches::kEnableUseSwDecoder);
+}
+
int GetMaxCodecFramerate(esplusplayer_video_mime_type mime_type) {
LOG(INFO) << "GetMaxCodecFramerate for mime_type:" << mime_type;
int max_framerate = media::kMaxFramerate;
bool IsMultiviewMode();
int GetMaxCodecFramerate(esplusplayer_video_mime_type mime_type);
bool IsMultiPlayerSupported();
+bool IsSwDecoderUsed();
bool SetAppInfo(esplusplayer_handle player, const char* type);
#endif
const auto chipset = GetTVChipset();
count = (chipset == "OSCARP") ? 4 : 2;
}
+
+ if (media::IsSwDecoderUsed()) {
+ count = 1000;
+ }
#endif // BUILDFLAG(IS_TIZEN_TV)
LOG(INFO) << "Return " << count << " as max count.";
return;
}
}
+
+ // Set Audio SW decoder for webapp which set
+ // "http://developer.samsung.com/metadata/use.sw.decoder"
+ if (media::IsSwDecoderUsed()) {
+ LOG_ID(INFO, player_id_)
+ << "(" << static_cast<void*>(this) << ") "
+ << "Set Audio SW decoder when use.sw.decoder metadata set";
+ SetSwAudioDecoder();
+ }
#endif
if (GetMediaPlayerClient())
const char* kMultiPlayerSupport =
"http://samsung.com/tv/metadata/multiplayer.support";
+const char* kUseSwDecoder =
+ "http://developer.samsung.com/metadata/use.sw.decoder";
+const char* kWebAudioUseVoiceStream =
+ "http://developer.samsung.com/metadata/webaudio.use.voice.stream";
const int kPannelToGraphicSize = 2;
const int kRotationDelayMS = 500;
current_command_line->AppendSwitch(switches::kEnableMultiPlayerForWebapp);
}
+ if (meta_data_info.GetValue(kUseSwDecoder) == "true") {
+ auto current_command_line = base::CommandLine::ForCurrentProcess();
+ current_command_line->AppendSwitch(switches::kEnableUseSwDecoder);
+ }
+ if (meta_data_info.GetValue(kWebAudioUseVoiceStream) == "true") {
+ auto current_command_line = base::CommandLine::ForCurrentProcess();
+ current_command_line->AppendSwitch(switches::kEnableWebAudioUseVoiceStream);
+ }
+
const bool enable_game_mode = (meta_data_info.GetValue(kGameMode) == "true");
const bool enable_upstream_architecture =
(meta_data_info.GetValue(kUpstreamArchitecture) == "true");