content: 
  
  sub init()
      m.buttons = m.top.findNode("buttons")
      m.buttons.buttons = [
          tr("Video")
          tr("Audio")
      ]
      m.buttons.selectedIndex = 0
      m.buttons.setFocus(true)
      m.selectedItem = 0
      m.selectedAudioIndex = 0
      m.selectedVideoIndex = 0
      m.menus = [
          m.top.findNode("videoMenu")
          m.top.findNode("audioMenu")
      ]
      m.videoNames = []
      m.audioNames = []
  
      m.top.findNode("videoMenu").focusBitmapBlendColor = m.global.constants.colors.button
      m.top.findNode("audioMenu").focusBitmapBlendColor = m.global.constants.colors.button
  
      m.fadeAnim = m.top.findNode("fadeAnim")
      m.fadeOutAnimOpacity = m.top.findNode("outOpacity")
      m.fadeInAnimOpacity = m.top.findNode("inOpacity")
      m.buttons.observeField("focusedIndex", "buttonFocusChanged")
      m.buttons.focusedIndex = m.selectedItem
  end sub
  
  sub optionsSet()
  
      if isValid(m.top.options.videos)
          viewContent = CreateObject("roSGNode", "ContentNode")
          index = 0
          selectedViewIndex = 0
          for each view in m.top.options.videos
              entry = viewContent.CreateChild("VideoTrackListData")
              entry.title = view.Title
              entry.description = view.Description
              entry.streamId = view.streamId
              entry.video_codec = view.video_codec
              m.videoNames.push(view.Name)
              if isValid(view.Selected) and view.Selected
                  selectedViewIndex = index
                  entry.selected = true
                  m.top.videoStreamId = view.streamId
              end if
              index = index + 1
          end for
          m.menus[0].content = viewContent
          m.menus[0].jumpToItem = selectedViewIndex
          m.menus[0].checkedItem = selectedViewIndex
          m.selectedVideoIndex = selectedViewIndex
      end if
  
      if isValid(m.top.options.audios)
          audioContent = CreateObject("roSGNode", "ContentNode")
          index = 0
          selectedAudioIndex = 0
          for each audio in m.top.options.audios
              entry = audioContent.CreateChild("AudioTrackListData")
              entry.title = audio.Title
              entry.description = audio.Description
              entry.streamIndex = audio.StreamIndex
              m.audioNames.push(audio.Name)
              if isValid(audio.Selected) and audio.Selected
                  selectedAudioIndex = index
                  entry.selected = true
                  m.top.audioStreamIndex = audio.streamIndex
              end if
              index = index + 1
          end for
          m.menus[1].content = audioContent
          m.menus[1].jumpToItem = selectedAudioIndex
          m.menus[1].checkedItem = selectedAudioIndex
          m.selectedAudioIndex = selectedAudioIndex
      end if
  end sub
  
  
  sub buttonFocusChanged()
      if m.buttons.focusedIndex = m.selectedItem then
          return
      end if
      m.fadeOutAnimOpacity.fieldToInterp = m.menus[m.selectedItem].id + ".opacity"
      m.fadeInAnimOpacity.fieldToInterp = m.menus[m.buttons.focusedIndex].id + ".opacity"
      m.fadeAnim.control = "start"
      m.selectedItem = m.buttons.focusedIndex
  end sub
  
  function onKeyEvent(key as string, press as boolean) as boolean
      if key = "down" or (key = "OK" and m.top.findNode("buttons").hasFocus())
          m.top.findNode("buttons").setFocus(false)
          m.menus[m.selectedItem].setFocus(true)
          m.menus[m.selectedItem].drawFocusFeedback = true
  
          if key = "down"
              m.menus[m.selectedItem].jumpToItem = 0
          else
              m.menus[m.selectedItem].jumpToItem = m.menus[m.selectedItem].itemSelected
          end if
          return true
      else if key = "OK"
          if m.menus[m.selectedItem].isInFocusChain()
              selMenu = m.menus[m.selectedItem]
              selIndex = selMenu.itemSelected
  
              if m.selectedItem = 0
                  if m.selectedVideoIndex <> selIndex
                      selMenu.content.GetChild(m.selectedVideoIndex).selected = false
                      newSelection = selMenu.content.GetChild(selIndex)
                      newSelection.selected = true
                      m.selectedVideoIndex = selIndex
                      m.top.videoStreamId = newSelection.streamId
                  end if
  
              else if m.selectedItem = 1
                  if m.selectedAudioIndex <> selIndex
                      selMenu.content.GetChild(m.selectedAudioIndex).selected = false
                      newSelection = selMenu.content.GetChild(selIndex)
                      newSelection.selected = true
                      m.selectedAudioIndex = selIndex
                      m.top.audioStreamIndex = newSelection.streamIndex
                  end if
              end if
          end if
          return true
      else if key = "back" or key = "up"
          if m.menus[m.selectedItem].isInFocusChain()
              m.buttons.setFocus(true)
              m.menus[m.selectedItem].drawFocusFeedback = false
              return true
          end if
      else if key = "options"
          m.menus[m.selectedItem].drawFocusFeedback = false
          return false
      end if
      return false
  end function