diff --git a/libeplayer3-sh4/player.cpp b/libeplayer3-sh4/player.cpp index 3fad845..9444afb 100644 --- a/libeplayer3-sh4/player.cpp +++ b/libeplayer3-sh4/player.cpp @@ -349,7 +349,7 @@ bool Player::SwitchVideo(int pid) bool Player::SwitchAudio(int pid) { Track *track = manager.getAudioTrack(pid); - return input.SwitchAudio(track); + return track ? input.SwitchAudio(track) : false; } bool Player::SwitchSubtitle(int pid) diff --git a/libspark/playback_libeplayer3.cpp b/libspark/playback_libeplayer3.cpp index 644da57..9451381 100644 --- a/libspark/playback_libeplayer3.cpp +++ b/libspark/playback_libeplayer3.cpp @@ -141,7 +141,7 @@ bool cPlayback::Stop(void) bool cPlayback::SetAPid(int pid, bool /* ac3 */) { - hal_info("%s\n", __func__); + hal_info("%s:(%d)\n", __func__, pid); return player->SwitchAudio(pid); } @@ -308,12 +308,14 @@ void cPlayback::FindAllPids(int *pids, unsigned int *ac3flags, unsigned int *num hal_info("%s\n", __func__); unsigned int i = 0; - std::vector tracks = player->manager.getAudioTracks(); - for (std::vector::iterator it = tracks.begin(); it != tracks.end() && i < *numpids; ++it) { - pids[i] = it->pid; - ac3flags[i] = (it->ac3flags > 2) ? 1 : 0; - language[i] = it->title; - i++; + if (IsPlaying()) { + std::vector tracks = player->manager.getAudioTracks(); + for (std::vector::iterator it = tracks.begin(); it != tracks.end() && i < *numpids; ++it) { + pids[i] = it->pid; + ac3flags[i] = it->ac3flags; + language[i] = it->title; + i++; + } } *numpids = i; }