namespace TeleWave.Application.Media;

/// <summary>
/// Выбор аудиодорожки при обработке по предпочитаемым языкам. Чистая логика (без ffmpeg/БД) — общая
/// точка для медиа-процессора и тестов.
/// </summary>
public static class AudioTrackSelector
{
    /// <summary>
    /// Возвращает порядковый номер аудиодорожки (0:a:N) по предпочитаемым языкам: побеждает первый
    /// язык из списка <paramref name="preferred"/>, для которого есть дорожка (среди таких — первая по
    /// порядку). Нет совпадений / нет предпочтений / меньше двух дорожек — null (дефолтная эвристика
    /// ffmpeg: пусть выбирает сам).
    /// </summary>
    public static int? Select(
        IReadOnlyList<string?> audioLanguages,
        IReadOnlyList<string> preferred
    )
    {
        if (audioLanguages.Count < 2 || preferred.Count == 0)
            return null;

        foreach (var lang in preferred)
            for (var i = 0; i < audioLanguages.Count; i++)
                if (string.Equals(audioLanguages[i], lang, StringComparison.OrdinalIgnoreCase))
                    return i;

        return null;
    }
}
