diff --git a/LameXP_VS2013.vcxproj.filters b/LameXP_VS2013.vcxproj.filters index f0af7481..711b88eb 100644 --- a/LameXP_VS2013.vcxproj.filters +++ b/LameXP_VS2013.vcxproj.filters @@ -1040,21 +1040,21 @@ Resources + + Resources + + + Resources + + + Resources + Miscellaneous - - Resources - - - Resources - - - Resources - diff --git a/LameXP_VS2015.vcxproj.filters b/LameXP_VS2015.vcxproj.filters index f0af7481..711b88eb 100644 --- a/LameXP_VS2015.vcxproj.filters +++ b/LameXP_VS2015.vcxproj.filters @@ -1040,21 +1040,21 @@ Resources + + Resources + + + Resources + + + Resources + Miscellaneous - - Resources - - - Resources - - - Resources - diff --git a/etc/Translation/Blank.ts b/etc/Translation/Blank.ts index f5524173..7ba3ce65 100644 --- a/etc/Translation/Blank.ts +++ b/etc/Translation/Blank.ts @@ -2980,143 +2980,143 @@ ProcessThread - + Starting... - + Skipped. - + Not found! - + WARNING: Decoded file size exceeds 4 GB, problems might occur! - + The format of this file is NOT supported: - + Container Format: - + Audio Format: - + Unsupported! - + Aborted! - + Done. - + Failed! - + Encoding - + Analyzing - + Filtering - + Decoding - + The source audio file could not be found: - + The source audio file could not be opened for reading: - + The target output directory doesn't exist and could NOT be created: - + The target output directory is NOT writable: - + Unknown File Name - + Unknown Title - + Unknown Artist - + Unknown Album - + Unknown Comment - + Target output file already exists, going to skip this file: - + If you don't want existing files to be skipped, please change the overwrite mode! - + Target output file already exists, going to delete existing file: - + Failed to delete existing target file, will save to another file name! @@ -3392,12 +3392,12 @@ ShellIntegration - + Audio File supported by LameXP - + Convert this file with LameXP v%1 diff --git a/etc/Translation/LameXP_DE.ts b/etc/Translation/LameXP_DE.ts index c384de52..66661d11 100644 --- a/etc/Translation/LameXP_DE.ts +++ b/etc/Translation/LameXP_DE.ts @@ -2989,143 +2989,143 @@ ProcessThread - + Starting... Starte... - + Not found! Nicht gefunden! - + The format of this file is NOT supported: Das Format dieser Datei wird nicht unterstützt: - + Container Format: - + Audio Format: Audioformat: - + Unsupported! Nicht unterstützt! - + Done. Fertig. - + Aborted! Abgebrochen! - + Failed! Fehler! - + Encoding Kodiere - + Filtering Filtere - + Decoding Dekodiere - + The source audio file could not be found: Die Quell-Audiodatei konnte nicht gefunden werden: - + The source audio file could not be opened for reading: Die Quell-Audiodatei konnte nicht zum Lesen geöffnet werden: - + The target output directory doesn't exist and could NOT be created: Das Zielverzeichnis existiert nicht und konnte nicht erstellt werden: - + The target output directory is NOT writable: In das Zielverzeichnis kann nicht geschrieben werden: - + Unknown File Name Unbekannter Dateiname - + Unknown Title Unbekannter Titel - + Unknown Artist Unbekannter Künstler - + Unknown Album Unbekanntes Album - + Unknown Comment Unbekannter Kommentar - + Analyzing Prüfe - + WARNING: Decoded file size exceeds 4 GB, problems might occur! WARNUNG: Dekodierte Dateigröße übersteigt 4 GB, Probleme sind vorprogrammiert! - + Skipped. Übersprungen. - + Target output file already exists, going to skip this file: Zieldatei existiert bereits, die Datei wird übersprungen: - + If you don't want existing files to be skipped, please change the overwrite mode! Wenn existierende Dateien nicht übersprungen werden sollen, ändern Sie bitte den Überschreiben-Modus! - + Target output file already exists, going to delete existing file: Zieldatei existiert bereits, die Datei wird gelöscht und überschrieben: - + Failed to delete existing target file, will save to another file name! Die existierende Datei konnte nicht gelöscht werden, ein anderer Dateiname wird gewählt! @@ -3411,12 +3411,12 @@ ShellIntegration - + Audio File supported by LameXP LameXP Audiodatei - + Convert this file with LameXP v%1 Datei mit LameXP v%1 umwandeln diff --git a/etc/Translation/LameXP_ES.ts b/etc/Translation/LameXP_ES.ts index 26705c66..5d7e41f5 100644 --- a/etc/Translation/LameXP_ES.ts +++ b/etc/Translation/LameXP_ES.ts @@ -2989,143 +2989,143 @@ ProcessThread - + Starting... Iniciando... - + Not found! ¡No encontrado! - + The format of this file is NOT supported: El formato de este archivo NO está soportado: - + Container Format: Formato del contenedor: - + Audio Format: Formato de audio: - + Unsupported! ¡No soportado! - + Done. Finalizado. - + Aborted! ¡Abortado! - + Failed! ¡Error! - + Encoding Codificando - + Filtering Filtrando - + Decoding Decodificando - + The source audio file could not be found: No se encuentra el archivo de entrada: - + The source audio file could not be opened for reading: No se puede abrir el archivo de entrada para su lectura: - + The target output directory doesn't exist and could NOT be created: La carpeta de salida no existe y NO puede ser creada: - + The target output directory is NOT writable: NO se puede escribir en la carpeta de salida: - + Unknown File Name Nombre de archivo desconocido - + Unknown Title Título desconocido - + Unknown Artist Artista desconocido - + Unknown Album Álbum desconocido - + Unknown Comment Comentario desconocido - + Analyzing Analizando - + WARNING: Decoded file size exceeds 4 GB, problems might occur! ADVERTENCIA: ¡El tamaño del archivo decodificado supera los 4 GB, pueden producirse problemas! - + Skipped. Omitidos. - + Target output file already exists, going to skip this file: El archivo de destino ya existe, se omitirá este archivo: - + If you don't want existing files to be skipped, please change the overwrite mode! ¡Si no quiere sobreescribir los archivos existentes, cambie el modo sobreescritura por favor! - + Target output file already exists, going to delete existing file: El archivo de destino ya existe, se eliminará este archivo: - + Failed to delete existing target file, will save to another file name! ¡Error al eliminar el archivo de destino existente, se guardará con otro nombre! @@ -3411,12 +3411,12 @@ ShellIntegration - + Audio File supported by LameXP Archivo de audio soportado por LameXP - + Convert this file with LameXP v%1 Convertir este archivo con LameXP v%1 diff --git a/etc/Translation/LameXP_FR.ts b/etc/Translation/LameXP_FR.ts index c5bf0df0..c5d6958c 100644 --- a/etc/Translation/LameXP_FR.ts +++ b/etc/Translation/LameXP_FR.ts @@ -2996,144 +2996,144 @@ Sélection automatique (par défaut) ProcessThread - + Starting... Démarrage... - + Not found! Non trouvé! - + The format of this file is NOT supported: Le format de ce fichier N'EST PAS supporté: - + Container Format: Format du conteneur: - + Audio Format: Format audio: - + Unsupported! Non supporté! - + Done. Terminé. - + Aborted! Arrêté! - + Failed! Échec! - + Encoding Encodage - + Filtering Filtrage - + Decoding Décodage - + The source audio file could not be found: Le fichier audio source n'a pas pu être trouvé: - + The source audio file could not be opened for reading: Le fichier audio source n'a pas pu être ouvert pour la lecture: - + The target output directory doesn't exist and could NOT be created: Le répertoire de sortie cible n'existe pas et ne peut PAS être créé: - + The target output directory is NOT writable: Le répertoire de sortie cible n'est pas accessible en écriture: - + Unknown File Name Nom de fichier inconnu - + Unknown Title Titre inconnu - + Unknown Artist Artiste inconnu - + Unknown Album Album inconnu - + Unknown Comment Commentaire inconnu - + Analyzing Analyse - + WARNING: Decoded file size exceeds 4 GB, problems might occur! AVERTISSEMENT : La taille du fichier décodé dépasse 4Go, des problèmes peuvent survenir! - + Skipped. Ignoré. - + Target output file already exists, going to skip this file: Le fichier de sortie existe déjà, il sera ignoré : - + If you don't want existing files to be skipped, please change the overwrite mode! Si vous ne voulez pas ignorer les fichiers existants, veuillez changer le mode de remplacement ! - + Target output file already exists, going to delete existing file: Le fichier de sortie existe déjà, il sera supprimé : - + Failed to delete existing target file, will save to another file name! Impossible de supprimer le fichier cible existant, il sera enregistré sous un autre nom ! @@ -3420,12 +3420,12 @@ Sélection automatique (par défaut) ShellIntegration - + Audio File supported by LameXP Fichier audio pris en charge par LameXP - + Convert this file with LameXP v%1 Convertir ce fichier avec LameXP v%1 diff --git a/etc/Translation/LameXP_HU.ts b/etc/Translation/LameXP_HU.ts index 90ed48a3..d0f3c6c5 100644 --- a/etc/Translation/LameXP_HU.ts +++ b/etc/Translation/LameXP_HU.ts @@ -2980,143 +2980,143 @@ ProcessThread - + Starting... Indítás... - + Skipped. Kihagyva. - + Not found! Nem található! - + WARNING: Decoded file size exceeds 4 GB, problems might occur! FIGYELEM: A dekódolt fájl mérete meghaladja a 4 GB-ot. Ez problémákat okozhat! - + The format of this file is NOT supported: A fájl formátuma NEM támogatott: - + Container Format: Tárolási formátum: - + Audio Format: Hangformátum: - + Unsupported! Nem támogatott! - + Aborted! Megszakítva! - + Done. Kész. - + Failed! Sikertelen! - + Encoding Kódolás - + Analyzing Elemzés - + Filtering Szűrés - + Decoding Dekódolás - + The source audio file could not be found: A forrás hangfájl nem található: - + The source audio file could not be opened for reading: A forrás hangfájl nem nyitható meg olvasásra: - + The target output directory doesn't exist and could NOT be created: A cél kimeneti könyvtár nem létezik, és NEM hozható létre: - + The target output directory is NOT writable: A cél kimeneti könyvtár NEM írható: - + Unknown File Name Ismeretlen fájlnév - + Unknown Title Ismeretlen cím - + Unknown Artist Ismeretlen előadó - + Unknown Album Ismeretlen album - + Unknown Comment Ismeretlen hozzászólás - + Target output file already exists, going to skip this file: A cél kimeneti fájl már létezik, ez a fájl ki lesz hagyva: - + If you don't want existing files to be skipped, please change the overwrite mode! Ha nem szeretné a meglévő fájlokat kihagyni, kérjük, változtassa meg a felülírási módot! - + Target output file already exists, going to delete existing file: A cél kimeneti fájl már létezik, a meglévő fájl törlésre kerül: - + Failed to delete existing target file, will save to another file name! Nem sikerült törölni a meglévő cél fájlt. Az állomány másik fájlnéven lesz elmentve! @@ -3392,12 +3392,12 @@ ShellIntegration - + Audio File supported by LameXP LameXP által támogatott hangfájl - + Convert this file with LameXP v%1 A fájl konvertálása a LameXP v%1 változatával diff --git a/etc/Translation/LameXP_IT.ts b/etc/Translation/LameXP_IT.ts index 61c68abf..dfcb62cf 100644 --- a/etc/Translation/LameXP_IT.ts +++ b/etc/Translation/LameXP_IT.ts @@ -3055,144 +3055,144 @@ ProcessThread - + Starting... Avvio in corso... - + Not found! Non trovato! - + The format of this file is NOT supported: Il formato di questo file NON è supportato: - + Container Format: Formato Contenitore: - + Audio Format: Formato Audio: - + Unsupported! Non Supportato! - + Done. Fatto. - + Aborted! Processo Annullato! - + Failed! Fallito! - + Encoding Codifica in corso - + Filtering Filtraggio in corso - + Decoding Decodifica in corso - + The source audio file could not be found: Il file audio sorgente non può essere trovato: - + The source audio file could not be opened for reading: Il file audio sorgente non può essere aperto per la lettura: - + The target output directory doesn't exist and could NOT be created: La cartella di destinazione assegnata non esiste e NON può essere creata: - + The target output directory is NOT writable: La directory di destinazione assegnata è di SOLA LETTURA: La directory di destinazione assegnata NON è scrivibile: - + Unknown File Name Nome File Sconosciuto - + Unknown Title Titolo Sconosciuto - + Unknown Artist Artista Sconosciuto - + Unknown Album Album Sconosciuto - + Unknown Comment Commento Sconosciuto - + Analyzing Analisi in corso - + WARNING: Decoded file size exceeds 4 GB, problems might occur! ATTENZIONE: Il file decodificato eccede i 4 GB, potrebbero verificarsi problemi! - + Skipped. Saltato. - + Target output file already exists, going to skip this file: Il file di destinazione esiste già, questo file verrà saltato: - + If you don't want existing files to be skipped, please change the overwrite mode! Se non vuoi saltare i file esistenti, cambia la modalità di sovrascrittura! - + Target output file already exists, going to delete existing file: Il file di destinazione esiste già, il file esistente verrà eliminato: - + Failed to delete existing target file, will save to another file name! Impossibile eliminare il file di destinazione esistente, il file verrà salvato con un altro nome! @@ -3479,12 +3479,12 @@ ShellIntegration - + Audio File supported by LameXP File Audio supportato da LameXP - + Convert this file with LameXP v%1 Converti il file con LameXP v%1 diff --git a/etc/Translation/LameXP_KR.ts b/etc/Translation/LameXP_KR.ts index 5aa0b95f..fcf42799 100644 --- a/etc/Translation/LameXP_KR.ts +++ b/etc/Translation/LameXP_KR.ts @@ -2980,143 +2980,143 @@ ProcessThread - + Starting... 시작 중... - + Not found! 찾을 수 없음! - + The format of this file is NOT supported: 이 파일은 지원되지 않는 파일 형식입니다: - + Container Format: 컨테이너 형식: - + Audio Format: 오디오 형식: - + Unsupported! 지원하지 않습니다! - + Done. 완료. - + Aborted! 취소됨! - + Failed! 실패됨! - + Encoding 인코딩 - + Filtering 필터링 - + Decoding 디코딩 - + The source audio file could not be found: 원본 오디오 파일을 찾을 수 없음: - + The source audio file could not be opened for reading: 원본 오디오 파일을 열 수 없음: - + The target output directory doesn't exist and could NOT be created: 대상 출력 디렉터리가 존재하지 않으며, 만들 수 없습니다: - + The target output directory is NOT writable: 대상 출력 디렉터리에 쓰기 불가: - + Unknown File Name 알수 없는 파일명 - + Unknown Title 알수 없는 제목 - + Unknown Artist 알수 없는 가수 - + Unknown Album 알수 없는 앨범 - + Unknown Comment 알수 없는 설명 - + Analyzing 검토 중 - + WARNING: Decoded file size exceeds 4 GB, problems might occur! 알림: 디코드 파일 크기가 4GB 초과, 문제가 발생할 수 있습니다! - + Skipped. 건너뜀. - + Target output file already exists, going to skip this file: 대상 출력 파일이 이미 존재합니다. 건너뛰기할 파일: - + If you don't want existing files to be skipped, please change the overwrite mode! 기존 파일을 건너뛰기하지 않으려면, 덮어쓰기 방식을 변경하시기 바랍니다! - + Target output file already exists, going to delete existing file: 대상 출력 파일이 이미 존재합니다. 건너뛰기할 파일: - + Failed to delete existing target file, will save to another file name! 기존 대상 파일 삭제 실패. 다른 파일명으로 저장됩니다! @@ -3392,12 +3392,12 @@ ShellIntegration - + Audio File supported by LameXP LameXP에서 지원되는 오디오 파일 - + Convert this file with LameXP v%1 이 파일을 LameXP v%1(으)로 변환 diff --git a/etc/Translation/LameXP_PL.ts b/etc/Translation/LameXP_PL.ts index 14d6dc5f..2a47665e 100644 --- a/etc/Translation/LameXP_PL.ts +++ b/etc/Translation/LameXP_PL.ts @@ -2997,143 +2997,143 @@ ProcessThread - + Starting... Rozpoczynanie... - + Skipped. Pominięto. - + Not found! Nie znaleziono! - + WARNING: Decoded file size exceeds 4 GB, problems might occur! UWAGA: Plik po zdekodowaniu przekracza 4 GB, mogą wystąpić problemy! - + The format of this file is NOT supported: Format tego pliku NIE jest obsługiwany: - + Container Format: Format kontenera: - + Audio Format: Format dźwięku: - + Unsupported! Nieobsługiwany! - + Done. Zrobione. - + Aborted! Przerwano! - + Failed! Niepowodzenie! - + Encoding Kompresowanie - + Analyzing Analizowanie - + Filtering Filtrowanie - + Decoding Dekodowanie - + The source audio file could not be found: Źródłowy plik dźwiękowy nie został odnaleziony: - + The source audio file could not be opened for reading: Źródłowy plik dźwiękowy nie mógł zostać otworzony: - + The target output directory doesn't exist and could NOT be created: Lokalizacja docelowa nie istnieje lu NIE mogła zostać utworzona: - + The target output directory is NOT writable: Nie można zapisać do lokalizacji docelowej: - + Unknown File Name Nieznana nazwa pliku - + Unknown Title Nieznany Tytuł - + Unknown Artist Nieznany Artysta - + Unknown Album Nieznany Album - + Unknown Comment Nieznany Komentarz - + Target output file already exists, going to skip this file: Plik wynikowy już istnieje, zostanie pominięty plik: - + If you don't want existing files to be skipped, please change the overwrite mode! Jeśli nie chcesz aby istniejące pliki były pomijane, zmień tryb nadpisywania! - + Target output file already exists, going to delete existing file: Plik wynikowy już istnieje, zostanie usunięty plik: - + Failed to delete existing target file, will save to another file name! Usuwanie istniejącego pliku zakończone niepowodzeniem, nowy plik zostanie zapisany pod inną nazwą! @@ -3429,12 +3429,12 @@ ShellIntegration - + Audio File supported by LameXP Pliki dźwiękowe wspierane przez LameXP - + Convert this file with LameXP v%1 Kompresuj ten plik z LameXP v%1 diff --git a/etc/Translation/LameXP_RU.ts b/etc/Translation/LameXP_RU.ts index 82f35db2..1e8b93b9 100644 --- a/etc/Translation/LameXP_RU.ts +++ b/etc/Translation/LameXP_RU.ts @@ -3004,143 +3004,143 @@ ProcessThread - + Starting... Начинаю... - + Not found! Не найдено! - + The format of this file is NOT supported: Этот тип файлов не поддерживается: - + Container Format: Формат Контейнера: - + Audio Format: Формат Аудио: - + Unsupported! Неподдерживается! - + Done. Готово. - + Aborted! Прервано! - + Failed! Ошибка! - + Encoding Кодирование - + Filtering Фильтрация - + Decoding Декодирование - + The source audio file could not be found: Исходный аудио файл не найден: - + The source audio file could not be opened for reading: Исходный аудио файл не может быть открыт: - + The target output directory doesn't exist and could NOT be created: Папка для выходных файлов не существует и не может быть создана: - + The target output directory is NOT writable: Папка для выходных файлов недоступна для записи: - + Unknown File Name Неизвестное имя файла - + Unknown Title Неизвестное Название - + Unknown Artist Неизвестный Артист - + Unknown Album Неизвестный Альбом - + Unknown Comment Неизвестный Комментарий - + Analyzing Анализ - + WARNING: Decoded file size exceeds 4 GB, problems might occur! ВНИМАНИЕ: декодированный файл больше 4 ГБ, возможны проблемы! - + Skipped. Пропущен. - + Target output file already exists, going to skip this file: Файл уже существует, будет пропущен: - + If you don't want existing files to be skipped, please change the overwrite mode! Если Вы не хотите пропускать уже существующие файлы, пожалуйста, измените режим перезаписи! - + Target output file already exists, going to delete existing file: Файл уже существует, будет удалён: - + Failed to delete existing target file, will save to another file name! Ошибка удаления существующего файла, будет сохранение с другим именем! @@ -3436,12 +3436,12 @@ ShellIntegration - + Audio File supported by LameXP Аудио файл, поддерживаемый LameXP - + Convert this file with LameXP v%1 Конвертировать этот файл, используя LameXP v%1 diff --git a/etc/Translation/LameXP_SV.ts b/etc/Translation/LameXP_SV.ts index a065457b..ed02bd09 100644 --- a/etc/Translation/LameXP_SV.ts +++ b/etc/Translation/LameXP_SV.ts @@ -2989,144 +2989,144 @@ ProcessThread - + Starting... Startar... - + Skipped. Överhoppad. - + Not found! Hittas ej! - + WARNING: Decoded file size exceeds 4 GB, problems might occur! VARNING! Omkodad filstorlek överstiger 4 GB. Problem kan uppstå! - + The format of this file is NOT supported: Det här filformatet saknar stöd i LameXP: - + Container Format: Behållarformat: - + Audio Format: Ljudformat: - + Unsupported! Stöd saknas! - + Aborted! Avbruten! - + Done. Klar. - + Failed! Misslyckades! - + Encoding Kodar - + Analyzing Analyserar - + Filtering Filtrerar - + Decoding Avkodar - + The source audio file could not be found: Källfilen kan inte hittas: - + The source audio file could not be opened for reading: Källfilen kan inte öppnas för läsning: - + The target output directory doesn't exist and could NOT be created: Målmappen finns inte och kan inte skapas: - + The target output directory is NOT writable: Målmappen är INTE skrivbar: - + Unknown File Name Okänt filnamn - + Unknown Title Okänd titel - + Unknown Artist Okänd artist - + Unknown Album Okänt album - + Unknown Comment Okänd kommentar - + Target output file already exists, going to skip this file: Målfilen finns redan! Den här filen hoppas över: - + If you don't want existing files to be skipped, please change the overwrite mode! Om du inte vill att befintliga filer hoppas över, måste du ändra överskrivningsläge! - + Target output file already exists, going to delete existing file: Målfilen finns redan! Befintlig fil kommer att tas bort: - + Failed to delete existing target file, will save to another file name! Kunde inte ta bort befintlig målfil. Sparar med annat filnamn! @@ -3412,12 +3412,12 @@ ShellIntegration - + Audio File supported by LameXP Ljudfilen stöds av LameXP - + Convert this file with LameXP v%1 Konvertera denna fil med LameXP v%1 diff --git a/etc/Translation/LameXP_TW.ts b/etc/Translation/LameXP_TW.ts index e6d67c09..94f714d4 100644 --- a/etc/Translation/LameXP_TW.ts +++ b/etc/Translation/LameXP_TW.ts @@ -2980,143 +2980,143 @@ ProcessThread - + Starting... 正在啟動... - + Not found! 找不到! - + The format of this file is NOT supported: 此文件的格式不受支持: - + Container Format: 容器格式: - + Audio Format: 音頻格式: - + Unsupported! 不受支持! - + Done. 完成. - + Aborted! 中止! - + Failed! 失敗! - + Encoding 編碼 - + Filtering 過濾 - + Decoding 解碼 - + The source audio file could not be found: 找不到源音頻文件: - + The source audio file could not be opened for reading: 無法打開源音頻文件進行讀取: - + The target output directory doesn't exist and could NOT be created: 目標輸出目錄不存在,無法創建: - + The target output directory is NOT writable: 目標輸出目錄不是可寫: - + Unknown File Name 未知文件名稱 - + Unknown Title 未知標題 - + Unknown Artist 未知藝術家 - + Unknown Album 未知專輯 - + Unknown Comment 未知評論 - + Analyzing 分析 - + WARNING: Decoded file size exceeds 4 GB, problems might occur! 警告: 解碼文件大小超過4GB, 可能會出現問題! - + Skipped. 跳過. - + Target output file already exists, going to skip this file: 目標輸出文件已經存在, 將跳過此文件: - + If you don't want existing files to be skipped, please change the overwrite mode! 如果你不希望被跳過已存在的文件, 請更改覆蓋模式! - + Target output file already exists, going to delete existing file: 目標輸出文件已經存在, 要刪除現有的文件: - + Failed to delete existing target file, will save to another file name! 無法刪除現有目標文件, 將保存到另一個文件名! @@ -3392,12 +3392,12 @@ ShellIntegration - + Audio File supported by LameXP LameXP支持的音頻文件 - + Convert this file with LameXP v%1 轉換此文件與LameXP v%1 diff --git a/etc/Translation/LameXP_UK.ts b/etc/Translation/LameXP_UK.ts index a9363f62..da25417a 100644 --- a/etc/Translation/LameXP_UK.ts +++ b/etc/Translation/LameXP_UK.ts @@ -2997,143 +2997,143 @@ ProcessThread - + Starting... Починається обробка... - + Not found! Не знайдено! - + The format of this file is NOT supported: Формат даного файла НЕ підтримуєтья: - + Container Format: Формат контейнера: - + Audio Format: Формат аудіо: - + Unsupported! Не підтримується! - + Done. Виконано. - + Aborted! Перервано! - + Failed! Збій! - + Encoding Кодування - + Filtering Фільтрування - + Decoding Декодування - + The source audio file could not be found: Неможливо знайти вхідний файл аудіо: - + The source audio file could not be opened for reading: Неможливо відкрити для читання вхідний файл аудіо: - + The target output directory doesn't exist and could NOT be created: Вихідної теки не існує і її неможливо створити: - + The target output directory is NOT writable: До вихідної теки неможливо проводити запис: - + Unknown File Name Невідома назва файла - + Unknown Title Невідомий заголовок - + Unknown Artist Невідомий виконавець - + Unknown Album Невідомий альбом - + Unknown Comment Невідомий коментар - + Analyzing Аналізування - + WARNING: Decoded file size exceeds 4 GB, problems might occur! ПОПЕРЕДЖЕННЯ: Розмір декодованного файла перевищує 4 ГБ, можуть виникнути проблеми! - + Skipped. Пропущено. - + Target output file already exists, going to skip this file: Вихідний цільовий файл вже існує, спроба пропустити цей файл: - + If you don't want existing files to be skipped, please change the overwrite mode! Якщо ви не хочете, щоб існуючі файли були пропущені, будь ласка, змініть режим перезапису! - + Target output file already exists, going to delete existing file: Вихідний цільовий файл вже існує, спроба видалити існуючий файл: - + Failed to delete existing target file, will save to another file name! Неможливо видалити існуючий файл, збереження буде проведено до файла з іншою назвою! @@ -3429,12 +3429,12 @@ ShellIntegration - + Audio File supported by LameXP Аудіофайл, що підтримується LameXP - + Convert this file with LameXP v%1 Конвертувати файл за допомогою LameXP v%1 diff --git a/etc/Translation/LameXP_ZH.ts b/etc/Translation/LameXP_ZH.ts index 80eba518..246c1915 100644 --- a/etc/Translation/LameXP_ZH.ts +++ b/etc/Translation/LameXP_ZH.ts @@ -2980,143 +2980,143 @@ ProcessThread - + Starting... 正在启动... - + Not found! 未找到! - + The format of this file is NOT supported: 此文件的格式不受支持: - + Container Format: 容器格式: - + Audio Format: 音频格式: - + Unsupported! 不支持! - + Done. 完成。 - + Aborted! 中止! - + Failed! 失败! - + Encoding 编码 - + Filtering 过滤 - + Decoding 解码 - + The source audio file could not be found: 找不到源音频文件: - + The source audio file could not be opened for reading: 无法打开源音频文件进行读取: - + The target output directory doesn't exist and could NOT be created: 目标输出目录不存在且无法创建: - + The target output directory is NOT writable: 目标输出目录不可写: - + Unknown File Name 未知文件名称 - + Unknown Title 未知标题 - + Unknown Artist 未知艺术家 - + Unknown Album 未知专辑 - + Unknown Comment 未知注释 - + Analyzing 分析 - + WARNING: Decoded file size exceeds 4 GB, problems might occur! 警告: 解码文件大小超过4GB, 可能会出现问题! - + Skipped. 跳过。 - + Target output file already exists, going to skip this file: 目标输出文件已经存在, 将跳过此文件: - + If you don't want existing files to be skipped, please change the overwrite mode! 如果你不希望跳过已存在的文件, 请更改覆盖模式! - + Target output file already exists, going to delete existing file: 目标输出文件已经存在, 将删除现有的文件: - + Failed to delete existing target file, will save to another file name! 无法删除现有目标文件, 将保存为另一个文件名! @@ -3392,12 +3392,12 @@ ShellIntegration - + Audio File supported by LameXP LameXP支持的音频文件 - + Convert this file with LameXP v%1 用LameXP v%1转换此文件 diff --git a/res/tools/sox.avx.exe b/res/tools/sox.avx.exe index 8f47f629..9cf7c8a1 100644 Binary files a/res/tools/sox.avx.exe and b/res/tools/sox.avx.exe differ diff --git a/res/tools/sox.i386.exe b/res/tools/sox.i386.exe index 4e721306..cda3c0b4 100644 Binary files a/res/tools/sox.i386.exe and b/res/tools/sox.i386.exe differ diff --git a/res/tools/sox.sse2.exe b/res/tools/sox.sse2.exe index 968829dd..f0e75a6a 100644 Binary files a/res/tools/sox.sse2.exe and b/res/tools/sox.sse2.exe differ diff --git a/src/Config.h b/src/Config.h index a63819c1..b2f695b3 100644 --- a/src/Config.h +++ b/src/Config.h @@ -35,7 +35,7 @@ #define VER_LAMEXP_MINOR_LO 5 #define VER_LAMEXP_TYPE Beta #define VER_LAMEXP_PATCH 4 -#define VER_LAMEXP_BUILD 1982 +#define VER_LAMEXP_BUILD 1984 #define VER_LAMEXP_CONFG 1934 /////////////////////////////////////////////////////////////////////////////// diff --git a/src/Dialog_SplashScreen.cpp b/src/Dialog_SplashScreen.cpp index 9f30ba51..22445fa4 100644 --- a/src/Dialog_SplashScreen.cpp +++ b/src/Dialog_SplashScreen.cpp @@ -45,12 +45,10 @@ //Setup taskbar indicator #define SET_TASKBAR_STATE(WIDGET,FLAG) do \ { \ - if((WIDGET)->m_taskBarFlag != (FLAG)) \ + const int _oldFlag = (WIDGET)->m_taskBarFlag.fetchAndStoreOrdered((FLAG) ? 1 : 0); \ + if(_oldFlag != ((FLAG) ? 1 : 0)) \ { \ - if((WIDGET)->m_taskbar->setTaskbarState((FLAG) ? MUtils::Taskbar7::TASKBAR_STATE_INTERMEDIATE : MUtils::Taskbar7::TASKBAR_STATE_NONE)) \ - { \ - (WIDGET)->m_taskBarFlag = (FLAG); \ - } \ + (WIDGET)->m_taskbar->setTaskbarState((FLAG) ? MUtils::Taskbar7::TASKBAR_STATE_INTERMEDIATE : MUtils::Taskbar7::TASKBAR_STATE_NONE); \ } \ } \ while(0) @@ -96,10 +94,8 @@ SplashScreen::SplashScreen(QWidget *parent) m_working->start(); //Init status - m_canClose = false; m_status = STATUS_FADE_IN; m_fadeValue = 0; - m_taskBarFlag = false; } //////////////////////////////////////////////////////////// @@ -165,7 +161,7 @@ void SplashScreen::showSplash(QThread *thread) QApplication::restoreOverrideCursor(); //Hide splash - splashScreen->m_canClose = true; + splashScreen->m_canClose.ref(); splashScreen->close(); } diff --git a/src/Dialog_SplashScreen.h b/src/Dialog_SplashScreen.h index 70e85557..a425642d 100644 --- a/src/Dialog_SplashScreen.h +++ b/src/Dialog_SplashScreen.h @@ -72,8 +72,8 @@ private: unsigned int m_status; unsigned int m_fadeValue; - volatile bool m_canClose; - volatile bool m_taskBarFlag; + QAtomicInt m_canClose; + QAtomicInt m_taskBarFlag; private slots: void updateHandler(void); diff --git a/src/ShellIntegration.cpp b/src/ShellIntegration.cpp index cf6a5bfd..6b256c85 100644 --- a/src/ShellIntegration.cpp +++ b/src/ShellIntegration.cpp @@ -46,16 +46,13 @@ static const char *g_lamexpShellAction = "ConvertWithLameXP"; static const char *g_lamexpFileType = "LameXP.SupportedAudioFile"; -//Mutex -QMutex ShellIntegration::m_mutex; - //State values static const int STATE_ENABLED = 1; static const int STATE_UNKNOWN = 0; static const int STATE_DISABLD = -1; //State -volatile int ShellIntegration::m_state = STATE_UNKNOWN; +QAtomicInt ShellIntegration::m_state(STATE_UNKNOWN); //Macros #define REG_WRITE_STRING(KEY, STR) RegSetValueEx(key, NULL, NULL, REG_SZ, reinterpret_cast(STR.utf16()), (STR.size() + 1) * sizeof(wchar_t)) @@ -81,12 +78,10 @@ void ShellIntegration::install(bool async) QFuture(QtConcurrent::run(install, false)); return; } - - //Serialize - QMutexLocker lock(&m_mutex); - + //Checking - if(m_state == STATE_ENABLED) + const int originalState = m_state.fetchAndStoreOrdered(STATE_ENABLED); + if(originalState == STATE_ENABLED) { return; /*already enabled, don't enable again!*/ } @@ -106,6 +101,7 @@ void ShellIntegration::install(bool async) ok[3] = MUtils::Registry::reg_value_write(MUtils::Registry::root_user, QString("Software\\Classes\\%1\\shell\\%2\\command").arg(lamexpFileType, lamexpShellAction), QString(), lamexpShellCommand); if(!(ok[0] && ok[1] && ok[2] && ok[3])) { + m_state.fetchAndStoreOrdered(originalState); qWarning("Failed to register the LameXP file type!"); return; } @@ -123,7 +119,6 @@ void ShellIntegration::install(bool async) //Shell notification MUtils::OS::shell_change_notification(); - m_state = STATE_ENABLED; } void ShellIntegration::remove(bool async) @@ -134,12 +129,10 @@ void ShellIntegration::remove(bool async) QFuture(QtConcurrent::run(remove, false)); return; } - - //Serialize - QMutexLocker lock(&m_mutex); //Checking - if(m_state == STATE_DISABLD) + const int originalState = m_state.fetchAndStoreOrdered(STATE_DISABLD); + if(originalState == STATE_DISABLD) { return; /*already enabled, don't enable again!*/ } @@ -154,6 +147,7 @@ void ShellIntegration::remove(bool async) //Find all registered file types if(!MUtils::Registry::reg_enum_subkeys(MUtils::Registry::root_user, "Software\\Classes", fileTypes)) { + m_state.fetchAndStoreOrdered(originalState); qWarning("Failed to enumerate file types!"); return; } @@ -195,7 +189,6 @@ void ShellIntegration::remove(bool async) //Shell notification MUtils::OS::shell_change_notification(); - m_state = STATE_DISABLD; } //////////////////////////////////////////////////////////// diff --git a/src/ShellIntegration.h b/src/ShellIntegration.h index 578d03ab..2e77c21a 100644 --- a/src/ShellIntegration.h +++ b/src/ShellIntegration.h @@ -34,12 +34,11 @@ class ShellIntegration : public QObject public: static void install(bool async = true); - static void remove(bool async = true); + static void remove (bool async = true); private: ShellIntegration(void); static void initializeTypes(const QString &lamexpFileType, const QString &lamexpShellAction, QStringList &nativeTypes); - static QMutex m_mutex; - static volatile int m_state; + static QAtomicInt m_state; }; diff --git a/src/Thread_CueSplitter.cpp b/src/Thread_CueSplitter.cpp index 8c3cf9f7..b3497289 100644 --- a/src/Thread_CueSplitter.cpp +++ b/src/Thread_CueSplitter.cpp @@ -47,9 +47,6 @@ #include #include -//Utils -#define IS_ABORTED (!(!m_abortFlag)) - //////////////////////////////////////////////////////////// // Constructor //////////////////////////////////////////////////////////// @@ -156,7 +153,7 @@ void CueSplitter::run() m_decompressedFiles.insert(inputFileList.at(i), inputFileList.at(i)); } - if(IS_ABORTED) + if(MUTILS_BOOLIFY(m_abortFlag)) { m_bAborted = true; qWarning("The user has requested to abort the process!"); @@ -221,7 +218,7 @@ void CueSplitter::run() splitFile(outputFile, trackNo, trackFile, trackOffset, trackLength, trackMetaInfo, nTracksComplete); emit progressValChanged(nTracksComplete += 10); - if(IS_ABORTED) + if(MUTILS_BOOLIFY(m_abortFlag)) { m_bAborted = true; qWarning("The user has requested to abort the process!"); @@ -322,7 +319,7 @@ void CueSplitter::splitFile(const QString &output, const int trackNo, const QStr while(process.state() != QProcess::NotRunning) { - if(IS_ABORTED) + if(MUTILS_BOOLIFY(m_abortFlag)) { process.kill(); qWarning("Process was aborted on user request!"); diff --git a/src/Thread_FileAnalyzer.cpp b/src/Thread_FileAnalyzer.cpp index 97a4e8e0..2bc4ed45 100644 --- a/src/Thread_FileAnalyzer.cpp +++ b/src/Thread_FileAnalyzer.cpp @@ -56,9 +56,6 @@ static inline void SAFE_APPEND_STRING(QStringList &list, const QString &str) } } -//Utils -#define IS_ABORTED (!(!m_bAborted)) - //////////////////////////////////////////////////////////// // Constructor //////////////////////////////////////////////////////////// @@ -207,7 +204,7 @@ void FileAnalyzer::run() m_pool->waitForDone(); //Was opertaion aborted? - if(IS_ABORTED) + if(MUTILS_BOOLIFY(m_bAborted)) { qWarning("Operation cancelled by user!"); return; @@ -238,7 +235,7 @@ void FileAnalyzer::run() bool FileAnalyzer::analyzeNextFile(void) { - if(!(m_inputFiles.isEmpty() || IS_ABORTED)) + if(!(m_inputFiles.isEmpty() || MUTILS_BOOLIFY(m_bAborted))) { const unsigned int taskId = m_tasksCounterNext++; const QString currentFile = QDir::fromNativeSeparators(m_inputFiles.takeFirst()); diff --git a/src/Thread_FileAnalyzer.h b/src/Thread_FileAnalyzer.h index 652a0cfc..40884810 100644 --- a/src/Thread_FileAnalyzer.h +++ b/src/Thread_FileAnalyzer.h @@ -22,7 +22,7 @@ #pragma once -//#include "Model_AudioFile.h" +#include #include #include @@ -49,7 +49,7 @@ public: FileAnalyzer(const QStringList &inputFiles); ~FileAnalyzer(void); void run(); - bool getSuccess(void) { return (!isRunning()) && (!m_bAborted) && (!(!m_bSuccess)); } + bool getSuccess(void) { return (!isRunning()) && (!m_bAborted) && MUTILS_BOOLIFY(m_bSuccess); } unsigned int filesAccepted(void); unsigned int filesRejected(void); diff --git a/src/Thread_FileAnalyzer_Task.cpp b/src/Thread_FileAnalyzer_Task.cpp index 82b39975..c9aca4c7 100644 --- a/src/Thread_FileAnalyzer_Task.cpp +++ b/src/Thread_FileAnalyzer_Task.cpp @@ -54,7 +54,6 @@ #define IS_KEY(KEY) (key.compare(KEY, Qt::CaseInsensitive) == 0) #define IS_SEC(SEC) (key.startsWith((SEC "_"), Qt::CaseInsensitive)) #define FIRST_TOK(STR) (STR.split(" ", QString::SkipEmptyParts).first()) -#define IS_ABORTED (!(!m_abortFlag)) //////////////////////////////////////////////////////////// // Constructor @@ -110,7 +109,7 @@ void AnalyzeTask::run_ex(void) AudioFileModel file = analyzeFile(currentFile, &fileType); - if(IS_ABORTED) + if(MUTILS_BOOLIFY(m_abortFlag)) { qWarning("Operation cancelled by user!"); return; @@ -204,7 +203,7 @@ const AudioFileModel AnalyzeTask::analyzeFile(const QString &filePath, int *type while(process.state() != QProcess::NotRunning) { - if(IS_ABORTED) + if(MUTILS_BOOLIFY(m_abortFlag)) { process.kill(); qWarning("Process was aborted on user request!"); @@ -531,7 +530,7 @@ bool AnalyzeTask::analyzeAvisynthFile(const QString &filePath, AudioFileModel &i while(process.state() != QProcess::NotRunning) { - if(IS_ABORTED) + if(MUTILS_BOOLIFY(m_abortFlag)) { process.kill(); qWarning("Process was aborted on user request!"); diff --git a/src/Thread_Initialization.cpp b/src/Thread_Initialization.cpp index a3dd6abd..841457e6 100644 --- a/src/Thread_Initialization.cpp +++ b/src/Thread_Initialization.cpp @@ -104,23 +104,19 @@ public: { } - static void clearFlags(QMutexLocker &lock = QMutexLocker(&s_mutex)) + static void clearFlags(void) { - s_bExcept = false; + s_exception.fetchAndStoreOrdered(0); s_errMsg[0] = char(0); } static bool getExcept(void) { - bool ret; - QMutexLocker lock(&s_mutex); - ret = s_bExcept; - return ret; + return MUTILS_BOOLIFY(s_exception); } static bool getErrMsg(char *buffer, const size_t buffSize) { - QMutexLocker lock(&s_mutex); if(s_errMsg[0]) { strncpy_s(buffer, BUFF_SIZE, s_errMsg, _TRUNCATE); @@ -140,36 +136,28 @@ protected: } catch(const std::exception &e) { - QMutexLocker lock(&s_mutex); - if(!s_bExcept) + if(!s_exception.fetchAndAddOrdered(1)) { - s_bExcept = true; strncpy_s(s_errMsg, BUFF_SIZE, e.what(), _TRUNCATE); } - lock.unlock(); qWarning("OptionalInitTask exception error:\n%s\n\n", e.what()); } catch(...) { - QMutexLocker lock(&s_mutex); - if(!s_bExcept) + if (!s_exception.fetchAndAddOrdered(1)) { - s_bExcept = true; strncpy_s(s_errMsg, BUFF_SIZE, "Unknown exception error!", _TRUNCATE); } - lock.unlock(); qWarning("OptionalInitTask encountered an unknown exception!"); } } - static volatile bool s_bExcept; - static QMutex s_mutex; + static QAtomicInt s_exception; static char s_errMsg[BUFF_SIZE]; }; -QMutex BaseTask::s_mutex; char BaseTask::s_errMsg[BUFF_SIZE] = {'\0'}; -volatile bool BaseTask::s_bExcept = false; +QAtomicInt BaseTask::s_exception(0); //////////////////////////////////////////////////////////// // ExtractorTask class @@ -197,17 +185,13 @@ public: static bool getCustom(void) { - bool ret; - QMutexLocker lock(&s_mutex); - ret = s_bCustom; - return ret; + return MUTILS_BOOLIFY(s_custom); } static void clearFlags(void) { - QMutexLocker lock(&s_mutex); - s_bCustom = false; - BaseTask::clearFlags(lock); + BaseTask::clearFlags(); + s_custom.fetchAndStoreOrdered(0); } protected: @@ -229,7 +213,7 @@ protected: try { lockedFile.reset(new LockedFile(customTool.canonicalFilePath())); - version = UINT_MAX; s_bCustom = true; + version = UINT_MAX; s_custom.ref(); } catch(std::runtime_error&) { @@ -268,7 +252,7 @@ protected: } private: - static volatile bool s_bCustom; + static QAtomicInt s_custom; QScopedPointer m_toolResource; const QDir m_appDir; const QString m_tempPath; @@ -278,7 +262,7 @@ private: const QString m_toolTag; }; -volatile bool ExtractorTask::s_bCustom = false; +QAtomicInt ExtractorTask::s_custom = false; //////////////////////////////////////////////////////////// // InitAacEncTask class diff --git a/src/Thread_MessageHandler.cpp b/src/Thread_MessageHandler.cpp index 16b00a4d..0088435e 100644 --- a/src/Thread_MessageHandler.cpp +++ b/src/Thread_MessageHandler.cpp @@ -47,7 +47,6 @@ MessageHandlerThread::MessageHandlerThread(MUtils::IPCChannel *const ipcChannel) : m_ipcChannel(ipcChannel) { - m_aborted = false; } MessageHandlerThread::~MessageHandlerThread(void) @@ -56,7 +55,6 @@ MessageHandlerThread::~MessageHandlerThread(void) void MessageHandlerThread::run() { - m_aborted = false; setTerminationEnabled(true); QStringList params; quint32 command = 0, flags = 0; @@ -109,7 +107,7 @@ void MessageHandlerThread::stop(void) { if(!m_aborted) { - m_aborted = true; + m_aborted.ref(); m_ipcChannel->send(0, 0, QStringList()); } } diff --git a/src/Thread_MessageHandler.h b/src/Thread_MessageHandler.h index 7e8fe8e2..81dbc8a1 100644 --- a/src/Thread_MessageHandler.h +++ b/src/Thread_MessageHandler.h @@ -43,7 +43,7 @@ protected: MUtils::IPCChannel *const m_ipcChannel; private: - volatile bool m_aborted; + QAtomicInt m_aborted; signals: void otherInstanceDetected(void); diff --git a/src/Thread_Process.cpp b/src/Thread_Process.cpp index 10e2b57d..10ca521d 100644 --- a/src/Thread_Process.cpp +++ b/src/Thread_Process.cpp @@ -56,7 +56,6 @@ #define DIFF(X,Y) ((X > Y) ? (X-Y) : (Y-X)) #define IS_WAVE(X) ((X.containerType().compare("Wave", Qt::CaseInsensitive) == 0) && (X.audioType().compare("PCM", Qt::CaseInsensitive) == 0)) -#define IS_ABORTED (!(!m_aborted)) #define STRDEF(STR,DEF) ((!STR.isEmpty()) ? STR : DEF) //////////////////////////////////////////////////////////// @@ -324,7 +323,7 @@ void ProcessThread::processFile() } //Clean-up - if((!bSuccess) || IS_ABORTED) + if((!bSuccess) || MUTILS_BOOLIFY(m_aborted)) { QFileInfo fileInfo(m_outFileName); if(fileInfo.exists() && (fileInfo.size() < 1024)) @@ -352,7 +351,7 @@ void ProcessThread::processFile() MUtils::OS::sleep_ms(12); //Report result - emit processStateChanged(m_jobId, (IS_ABORTED ? tr("Aborted!") : (bSuccess ? tr("Done.") : tr("Failed!"))), ((bSuccess && (!m_aborted)) ? ProgressModel::JobComplete : ProgressModel::JobFailed)); + emit processStateChanged(m_jobId, (MUTILS_BOOLIFY(m_aborted) ? tr("Aborted!") : (bSuccess ? tr("Done.") : tr("Failed!"))), ((bSuccess && (!m_aborted)) ? ProgressModel::JobComplete : ProgressModel::JobFailed)); emit processStateFinished(m_jobId, m_outFileName, (bSuccess ? 1 : 0)); qDebug("Process thread is done."); diff --git a/src/Tool_Abstract.h b/src/Tool_Abstract.h index da6dab27..1b8650f3 100644 --- a/src/Tool_Abstract.h +++ b/src/Tool_Abstract.h @@ -22,6 +22,7 @@ #pragma once +#include #include class QMutex; @@ -53,7 +54,7 @@ protected: static __forceinline bool checkFlag(QAtomicInt &flag) { - return (!(!flag)); + return MUTILS_BOOLIFY(flag); } private: diff --git a/src/Tools.h b/src/Tools.h index 7b4fd751..667b0d51 100644 --- a/src/Tools.h +++ b/src/Tools.h @@ -106,9 +106,9 @@ g_lamexp_tools[] = {"37745174e146fedbc62671ab86ffddd3edfc9aa0ebfcfd4bff3331a95b6dda50621478c63f7a0ddf9a365e916758b6d4", CPU_TYPE_X86_ALL, "refalac.i386.exe", 161, ""}, {"b368f0490cefb80b6ff7eaaf8d6e29f253442375caf11a9405b5b21580ee3a9739fa3f406f69de5ef344fa038b1cbe72", CPU_TYPE_X64_ALL, "refalac.x64.exe", 161, ""}, {"d041b60de6c5c6e77cbad84440db57bbeb021af59dd0f7bebd3ede047d9e2ddc2a0c14179472687ba91063743d23e337", CPU_TYPE_ALL_ALL, "shorten.exe", 361, ""}, - {"2074242cde223a43f86a1efc0f1d2d3dc0a7ecc0de2e8be547f4cd35f574aaf06086eec00b8822264f71f041f6f59c58", CPU_TYPE_ALL_GEN, "sox.i386.exe", 1442, ""}, - {"644ef3a3faf572ef6ddabd67e133c45961083919a9f4933b2980d27b25f9c0b6e4ad2b5c7d518fb60e082c48cb45791f", CPU_TYPE_ALL_SSE, "sox.sse2.exe", 1442, "" }, - {"d4bfa9b155735569ece1b229a1b04d93cb76a4e0dd91d5a50b84ebdad20a4bd72926b84a5d15533137feecce606492e3", CPU_TYPE_ALL_AVX, "sox.avx.exe", 1442, "" }, + {"3206ebd1b1c6e5db422d7a84117a7ba8256208fc7104a6668d8856c1b6407882f25f1f39e37c8e33affb343300937d2e", CPU_TYPE_ALL_GEN, "sox.i386.exe", 1442, ""}, + {"16a71940aa5e9b393e83cdfb2a4dda4291ea01858f8ba338510013f25f4d7c53b9b5cffb86404ea49ef28e6795182fd5", CPU_TYPE_ALL_SSE, "sox.sse2.exe", 1442, "" }, + {"25585ca9e2e025d82d93341a9db8527eb0b4ce451dade607f9784a79ed30e050ced0824835d5467aa0bf0c6b8fe08612", CPU_TYPE_ALL_AVX, "sox.avx.exe", 1442, "" }, {"5a4261e1b41a59d1a5bc92e1d2766422a67454d77e06ea29af392811b7b4704e0f3e494ab9cb6375ce9e39257867c5ed", CPU_TYPE_ALL_ALL, "speexdec.exe", 12, ""}, {"75d4c18dbb74e2dbf7342698428248d45cc4070d5f95da8831ef755e63dcd7ff9c3a760f289e8ef8b5c06b82548edbd8", CPU_TYPE_ALL_ALL, "tag.exe", 100, ""}, {"a83628880da0b7519ec368a74a92da5a5099d8d46aa0583131f92d7321f47c9e16a1841b2a3fb8ffcca7205ef4b1bb0a", CPU_TYPE_ALL_ALL, "tta.exe", 21, ""},