anchor.diff:  
   procedure TKMVideoPlayer.PlayNext;
   var
  +  i: Integer;
     path: string;
     media: libvlc_media_t_ptr;
  -  info: libvlc_media_track_info_t_ptr;
  +
  +  trackCount: Cardinal;
  +  tracks: libvlc_media_track_list_t;
  +  track: libvlc_media_track_t_ptr;
   begin
     InitMediaPlayer;
     if (FInstance = nil) or (FMediaPlayer = nil) then
  
positive.code:     FMediaPlayer: libvlc_media_player_t_ptr;
      FEvents: libvlc_event_manager_t_ptr;
  
      FVideoList: TStringList;
      FEndVideo: TKMVideoPlayerEvent;
  
  
negative.code:     FTexture.V := 1;
      FCriticalSection.Leave;
  
      libvlc_media_tracks_release(tracks, trackCount);
  
      libvlc_video_set_format(FMediaPlayer, 'RV24', FWidth, FHeight, FWidth * 3);
      libvlc_media_player_set_media(FMediaPlayer, media);
      libvlc_media_player_play(FMediaPlayer);
      SetTrackByLocale;
    end;
  
    libvlc_media_release(media);
  end;
  
  procedure TKMVideoPlayer.SetTrackByLocale;
  const
    TIME_STEP = 50;
  var
    id, index: Integer;
    timeElapsed : Cardinal;
  begin
    if (FTrackList.Count = 0) or not FTrackList.Find(gGameApp.GameSettings.Locale, index) then
      Exit;
  
    id := Integer(FTrackList.Objects[index]);
  
    Sleep(TIME_STEP);
    timeElapsed := TIME_STEP;
    while (FMediaPlayer <> nil) and (timeElapsed < 1000) and (libvlc_audio_set_track(FMediaPlayer, id) < 0) do
    begin
      Sleep(TIME_STEP);
      Inc(timeElapsed, TIME_STEP);
    end;
  end;
  
  function TKMVideoPlayer.GetState: TVlcPlayerState;
  