return;
}
- int ret = player_select_track_ex(player_, PLAYER_STREAM_TYPE_AUDIO,
- prefer_audio_adaptionset_idx_, -1);
- if (ret != PLAYER_ERROR_NONE) {
- LOG(ERROR) << "player_select_track_ex fail";
+ if (!SelectAudioTrack(prefer_audio_adaptionset_idx_)) {
return;
}
- active_audio_track_id_ = prefer_audio_adaptionset_idx_;
+
last_prefer_audio_adaptionset_idx_ = prefer_audio_adaptionset_idx_;
}
+bool MediaPlayerBridgeCapiTV::SelectAudioTrack(int audio_track_id) {
+ constexpr int kAdapationSetNotCare{-1};
+
+ int active_audio_track = 0;
+ int active_alternative_set = 0;
+
+ auto ret = player_get_current_track_ex(player_, PLAYER_STREAM_TYPE_AUDIO,
+ &active_audio_track, &active_alternative_set);
+
+ if (ret != PLAYER_ERROR_NONE) {
+ LOG(ERROR) << "player_get_current_track_ex fail, ret val = " << ret;
+ return false;
+ }
+
+ if (active_audio_track == audio_track_id) {
+ return true;
+ }
+
+ LOG(INFO) << "Updating active_audio_track_id_=" << active_audio_track_id_
+ << " to new value active_audio_track=" << active_audio_track;
+
+ ret = player_select_track_ex(player_, PLAYER_STREAM_TYPE_AUDIO,
+ active_audio_track_id_, kAdapationSetNotCare);
+
+ if (ret != PLAYER_ERROR_NONE) {
+ LOG(ERROR) << "player_select_track_ex fail, ret val = " << ret;
+ return false;
+ }
+
+ active_audio_track_id_ = active_audio_track;
+
+ return true;
+}
+
bool MediaPlayerBridgeCapiTV::GetUserPreferAudioLanguage() {
prefer_audio_lang_.clear();
int retval;
if (active_audio_track_id_ == index)
return;
- active_audio_track_id_ = index;
- int ret = player_select_track_ex(player_, PLAYER_STREAM_TYPE_AUDIO,
- active_audio_track_id_, -1);
- if (ret != PLAYER_ERROR_NONE)
- LOG(WARNING) << "player_select_track_ex fail,ret:" << ret;
+ SelectAudioTrack(index);
}
void MediaPlayerBridgeCapiTV::SetActiveVideoTrack(int index) {