@@ -53,19 +53,25 @@ sub CreateVideoPlayerView()
5353 m .global .audioPlayer .control = VideoControl .STOP
5454 end if
5555
56+ currentItem = m .global .queueManager .callFunc ("getCurrentItem" )
57+
5658 ' If the user has set a preferred audio track index, use it
5759 preferredAudioTrackIndex = m .global .queueManager .callFunc ("getPreferredAudioTrackIndex" )
5860 if preferredAudioTrackIndex < 0 then preferredAudioTrackIndex = 0
5961
60- m .global .queueManager .callFunc ("setSelectedAudioStreamIndex" , preferredAudioTrackIndex )
62+ selectedAudioIndex = preferredAudioTrackIndex
63+ if isValid (currentItem .selectedAudioStreamIndex ) and currentItem .selectedAudioStreamIndex >= 0
64+ selectedAudioIndex = currentItem .selectedAudioStreamIndex
65+ end if
66+
67+ m .global .queueManager .callFunc ("setSelectedAudioStreamIndex" , selectedAudioIndex )
6168
6269 m .view = CreateObject ("roSGNode " , "VideoPlayerView" )
6370 m .view .observeField ("state" , "onStateChange" )
6471 m .view .observeField ("selectPlaybackInfoPressed" , "onSelectPlaybackInfoPressed" )
6572 m .view .observeField ("selectSubtitlePressed" , "onSelectSubtitlePressed" )
6673 m .view .observeField ("selectAudioPressed" , "onSelectAudioPressed" )
6774
68- currentItem = m .global .queueManager .callFunc ("getCurrentItem" )
6975 mediaSourceId = currentItem .mediaSourceId
7076
7177 if not isValid (mediaSourceId ) or mediaSourceId = ""
@@ -97,6 +103,14 @@ sub onSelectAudioPressed()
97103
98104 preferredAudioTrackName = m .global .queueManager .callFunc ("getPreferredAudioTrackName" )
99105
106+ currentItem = m .global .queueManager .callFunc ("getCurrentItem" )
107+ selectedAudioIndex = m .view .audioIndex
108+ if not isValid (selectedAudioIndex ) or selectedAudioIndex < 0
109+ if isValid (currentItem .selectedAudioStreamIndex )
110+ selectedAudioIndex = currentItem .selectedAudioStreamIndex
111+ end if
112+ end if
113+
100114 audioTracks = []
101115
102116 for each item in m .view .fullAudioData
@@ -108,7 +122,7 @@ sub onSelectAudioPressed()
108122 }
109123
110124 if isStringEqual (preferredAudioTrackName , string .EMPTY )
111- if m . view . audioIndex = item .Index
125+ if selectedAudioIndex = item .Index
112126 audioTrack .Selected = true
113127 end if
114128 else
0 commit comments