diff --git a/tsMuxerGUI/images.qrc b/tsMuxerGUI/images.qrc
index a2247b6..bb537e4 100644
--- a/tsMuxerGUI/images.qrc
+++ b/tsMuxerGUI/images.qrc
@@ -7,5 +7,6 @@
sounds/fail.wav
images/icon.png
images/btn_donate.png
+ translations/about_en.html
diff --git a/tsMuxerGUI/translations/about_en.html b/tsMuxerGUI/translations/about_en.html
new file mode 100644
index 0000000..9cd2541
--- /dev/null
+++ b/tsMuxerGUI/translations/about_en.html
@@ -0,0 +1,64 @@
+
+
+
tsMuxeR
+tsMuxeR – the software utility to create TS and M2TS files for IP broadcasting as well as for viewing at hardware video players (i.e., Dune HD Ultra, Sony Playstation3, Samsung Smart TV and others).
+tsMuxeR is open source.
+Supported incoming formats:
+
+TS;
+M2TS;
+SIFF;
+MOV;
+MP4;
+MKV;
+Blu-ray;
+Demux option.
+Supported videocodecs:
+
+H.264/MVC
+H.265/HEVC;
+Microsoft VC-1;
+MPEG-2.
+Supported audiocodecs:
+
+AAC;
+AC3 / E-AC3(DD+);
+Dolby True HD (for streams with AC3 core only);
+DTS/ DTS-HD;
+LPCM.
+Supported subtitle types:
+
+M2TS Presentation graphic stream.
+SRT text subtitles
+Supported containers and formats:
+
+Elementary stream;
+Transport stream TS and M2TS;
+Program stream EVO/VOB/MPG;
+Matroska MKV/MKA.
+MP4/MOV.
+Main features:
+
+3D Blu-ray support;
+UHD, HDR10, HDR10+ and Dolby Vision support;
+Automatic or manual fps adjustment while mixing;
+Level changing as well as SEI, SPS/PPS elements and NAL unit delimiter cycle insertion while mixing H.264;
+Audio tracks and subtitles time shifting;
+Ability to extract DTS core from DTS-HD;
+Ability to extract AC3 core from True-HD;
+Ability to join files;
+Ability to adjust fps for subtitles;
+Ability to convert LPCM streams into WAVE and vice versa;
+Track language information injection into blu-ray structure and TS header;
+Ability to cut source files;
+Ability to split output file;
+Ability to detect audio delay for TS/M2TS/MPG/VOB/EVO sources;
+Ability to remove pulldown info from stream;
+Ability to open Blu-ray playlist (MPLS) files;
+Ability to convert SRT subtitles to PGS;
+Tags for SRT subtitles support - tags for changing font, color, size, etc.; tag's syntax is similar to HTML;
+United cross-platform GUI - Windows, Linux, MacOS.
diff --git a/tsMuxerGUI/translations/tsmuxergui_en.ts b/tsMuxerGUI/translations/tsmuxergui_en.ts
index 5abaed8..0212ff9 100644
--- a/tsMuxerGUI/translations/tsmuxergui_en.ts
+++ b/tsMuxerGUI/translations/tsmuxergui_en.ts
@@ -106,6 +106,7 @@
+
General track options
@@ -196,6 +197,7 @@
+
Demux options
@@ -326,625 +328,650 @@
-
+
Options
-
+
Add blank playlist for cropped video
-
+
Blank playlist
-
+
Force BD-ROM V3 format
-
+
First MPLS file
-
+
First M2TS file
-
+
Start mux time
-
+
45 Khz clock:
-
+
3D settings
-
+
Use base video stream for right eye
-
+
PIP settings
-
+
Corner
-
+
Top Left
-
+
Top Right
-
+
Bottom Right
-
+
Bottom Left
-
+
Horizontal offset
-
+
Size
-
+
Not scaled
-
+
Half (x 1/2)
-
+
Quarter (x 1/4)
-
+
One and a Half (x 1.5)
-
+
Full Screen
-
+
Vertical offset
-
+
Default tracks
-
+
Subtitle
-
+
When checked, only subtitles marked as "forced" in the subtitle stream will appear.
-
+
Forced only
-
+
Audio
-
+
Split && cut
-
+
Splitting
-
+
No split
-
+
Split by duration every
-
+
sec
-
+
Split by size every
-
+
KB
-
+
KiB
-
+
MB
-
+
MiB
-
+
GB
-
+
GiB
-
+
Cutting
-
+
Enable cutting
-
+
Start
-
+
End
-
+
Subtitles
-
+
Default text based subtitles font:
-
-
-
-
-
+
+
+
+
+
New Row
-
-
+
+
New Column
-
+
Name:
-
+
Size:
-
+
65
-
+
Color:
-
+
0xffffffff
-
+
Charset:
-
+
Default
-
+
Options:
-
+
Font
-
+
Color
-
+
Additional border, pixels:
-
+
line spacing:
-
+
Fade in/out animation:
-
+
None
-
+
Fast
-
+
Medium
-
+
Slow
-
+
Very slow
-
+
Vertical position:
-
+
Top of screen
-
+
top offset, pixels:
-
-
+
+
Screen center
-
+
Bottom of screen
-
+
bottom offset, pixels:
-
+
Horizontal position:
-
+
Left of screen
-
+
left offset, pixels:
-
+
Right of screen
-
+
right offset, pixels:
-
+
About
-
+
Output
-
+
TS muxing
-
+
M2TS muxing
-
+
Blu-ray ISO
-
+
Blu-ray folder
-
+
AVCHD folder
-
-
+
+
Demux
-
+
Disk label
-
-
+
+
File name
-
+
Browse
-
+
Meta file
-
-
+
+
Sta&rt muxing
-
+
Save meta file
-
+
+ All supported media files (*.aac *.mpv *.mpa *.avc *.mvc *.264 *.h264 *.ac3 *.dts *.ts *.m2ts *.mts *.ssif *.mpg *.mpeg *.vob *.evo *.mkv *.mka *.mks *.mp4 *.m4a *.m4v *.mov *.sup *.wav *.w64 *.pcm *.m1v *.m2v *.vc1 *.hevc *.hvc *.265 *.h265 *.mpls *.mpl *.srt);;AC3/E-AC3 (*.ac3 *.ddp);;AAC (advanced audio coding) (*.aac);;AVC/MVC/H.264 elementary stream (*.avc *.mvc *.264 *.h264);;HEVC (High Efficiency Video Codec) (*.hevc *.hvc *.265 *.h265);;Digital Theater System (*.dts);;Mpeg video elementary stream (*.mpv *.m1v *.m2v);;Mpeg audio elementary stream (*.mpa);;Transport Stream (*.ts);;BDAV Transport Stream (*.m2ts *.mts *.ssif);;Program Stream (*.mpg *.mpeg *.vob *.evo);;Matroska audio/video files (*.mkv *.mka *.mks);;MP4 audio/video files (*.mp4 *.m4a *.m4v);;Quick time audio/video files (*.mov);;Blu-ray play list (*.mpls *.mpl);;Blu-ray PGS subtitles (*.sup);;Text subtitles (*.srt);;WAVE - Uncompressed PCM audio (*.wav *.w64);;RAW LPCM Stream (*.pcm);;All files (*.*)
+
+
+
+
+ tsMuxeR project file (*.meta);;All files (*.*)
+
+
+
+
+ Transport stream (*.ts);;all files (*.*)
+
+
+
+
+ BDAV Transport Stream (*.m2ts);;all files (*.*)
+
+
+
+
+ Disk image (*.iso);;all files (*.*)
+
+
+
+
Not supported
-
-
+
+
Unsupported format
-
+
Can't detect stream type. File name: "%1"
-
+
Add media file
-
+
File already exists
-
+
File "%1" already exists
-
+
Unsupported format or all tracks are not recognized. File name: "%1"
-
+
Some tracks not recognized. This tracks was ignored. File name: "%1"
-
+
Mux
-
+
tsMuxeR error
-
+
tsMuxeR not found!
-
+
Can't execute tsMuxeR!
-
-
+
+
No track selected
-
+
Append media file
-
+
Invalid file extension
-
+
Appended file must have same file extension.
-
+
Sta&rt demuxing
-
+
Folder
-
+
Select file for muxing
-
-
+
+
Invalid file name
-
+
The output file "%1" has invalid extension. Please, change file extension to ".m2ts"
-
+
The output file "%1" has invalid extension. Please, change file extension to ".iso"
-
+
file
Used in expressions "Overwrite existing %1" and "The output %1 already exists".
-
+
directory
-
+
Overwrite existing %1?
-
+
The output %1 "%2" already exists. Do you want to overwrite it?
-
+
Muxing in progress
-
+
Demuxing in progress
-
+
Can't create temporary meta file
-
+
Can't create temporary meta file "%1"
diff --git a/tsMuxerGUI/translations/tsmuxergui_ru.ts b/tsMuxerGUI/translations/tsmuxergui_ru.ts
index 0a8f88d..b25d039 100644
--- a/tsMuxerGUI/translations/tsmuxergui_ru.ts
+++ b/tsMuxerGUI/translations/tsmuxergui_ru.ts
@@ -106,6 +106,7 @@
+
General track options
Общие параметры дорожки
@@ -196,6 +197,7 @@
+
Demux options
Параметры записи дорожек
@@ -326,626 +328,651 @@
Главы:
-
+
Options
Параметры
-
+
Add blank playlist for cropped video
Добавить пустой плэйлист
-
+
Blank playlist
Пустой плэйлист
-
+
Force BD-ROM V3 format
Задать 3 версию формата BD-ROM
-
+
First MPLS file
Первый файл MPLS
-
+
First M2TS file
Первый файл M2TS
-
+
Start mux time
Время начала записи
-
+
45 Khz clock:
1/45 милисекунды:
-
+
3D settings
Настройки 3D
-
+
Use base video stream for right eye
Использовать основной видеопоток для правого глаза
-
+
PIP settings
Настройки PIP
-
+
Corner
Угол
-
+
Top Left
Верхний Левый
-
+
Top Right
Верхний Правый
-
+
Bottom Right
Нижний Правый
-
+
Bottom Left
Нижний Левый
-
+
Horizontal offset
Смещение по горизонтали
-
+
Size
Размер
-
+
Not scaled
Не маштабировать
-
+
Half (x 1/2)
Половина (x 1/2)
-
+
Quarter (x 1/4)
Четверть (x 1/4)
-
+
One and a Half (x 1.5)
Полтора (x 1.5)
-
+
Full Screen
На весь экран
-
+
Vertical offset
Смещение по вертикали
-
+
Default tracks
Дорожки по умолчанию
-
+
Subtitle
Субтитры
-
+
When checked, only subtitles marked as "forced" in the subtitle stream will appear.
Если установлен будут отображаться только субтитры, помеченные как "принудительные".
-
+
Forced only
Только принудительные
-
+
Audio
Звук
-
+
Split && cut
Нарезка && обрезка
-
+
Splitting
Нарезка
-
+
No split
Не нарезать
-
+
Split by duration every
Нарезать через каждые
-
+
sec
сек
-
+
Split by size every
Нарезать по размеру каждые
-
+
KB
Килобайт
-
+
KiB
Кибибайт
-
+
MB
Мегабайт
-
+
MiB
Мебибайт
-
+
GB
Гигабайт
-
+
GiB
Гибибайт
-
+
Cutting
Обрезка
-
+
Enable cutting
Разрешить обрезку
-
+
Start
Начало
-
+
End
Конец
-
+
Subtitles
Субтитры
-
+
Default text based subtitles font:
Шрифт текстовых субтитров по умолчанию:
-
-
-
-
-
+
+
+
+
+
New Row
Новая Строка
-
-
+
+
New Column
Новый Столбец
-
+
Name:
Имя:
-
+
Size:
Размер:
-
+
65
65
-
+
Color:
Цвет:
-
+
0xffffffff
0xffffffff
-
+
Charset:
Набор символов:
-
+
Default
По умолчанию
-
+
Options:
Параметры:
-
+
Font
Шрифт
-
+
Color
Цвет
-
+
Additional border, pixels:
Дополнительная рамка, пикселей:
-
+
line spacing:
Междустрочное расстояние:
-
+
Fade in/out animation:
Анимация появления/исчезания:
-
+
None
Отсутствует
-
+
Fast
Быстрое
-
+
Medium
Среднее
-
+
Slow
Медленное
-
+
Very slow
Очень медленное
-
+
Vertical position:
Позиция по вертикали:
-
+
Top of screen
Верх экрана
-
+
top offset, pixels:
отступ от верха, пикселей:
-
-
+
+
Screen center
Центр экрана
-
+
Bottom of screen
Низ экрана
-
+
bottom offset, pixels:
отступ от низа, пикселей:
-
+
Horizontal position:
Позиция по горизонтали:
-
+
Left of screen
слева экрана
-
+
left offset, pixels:
отступ слева, пикселей:
-
+
Right of screen
справа экрана
-
+
right offset, pixels:
отступ справа, пикселей:
-
+
About
О программе
-
+
Output
Результат
-
+
TS muxing
Запись в TS
-
+
M2TS muxing
Запись в M2TS
-
+
Blu-ray ISO
Запись блюрея в файл ISO
-
+
Blu-ray folder
Запись блюрея в папку
-
+
AVCHD folder
Запись AVCHD в папку
-
-
+
+
Demux
Демукс
-
+
Disk label
Имя диска
-
-
+
+
File name
Имя Файла
-
+
Browse
Выбрать
-
+
Meta file
Файл проекта tsMuxeR
-
-
+
+
Sta&rt muxing
Ста&рт муксинга
-
+
Save meta file
Сохранить проект
-
+
+ All supported media files (*.aac *.mpv *.mpa *.avc *.mvc *.264 *.h264 *.ac3 *.dts *.ts *.m2ts *.mts *.ssif *.mpg *.mpeg *.vob *.evo *.mkv *.mka *.mks *.mp4 *.m4a *.m4v *.mov *.sup *.wav *.w64 *.pcm *.m1v *.m2v *.vc1 *.hevc *.hvc *.265 *.h265 *.mpls *.mpl *.srt);;AC3/E-AC3 (*.ac3 *.ddp);;AAC (advanced audio coding) (*.aac);;AVC/MVC/H.264 elementary stream (*.avc *.mvc *.264 *.h264);;HEVC (High Efficiency Video Codec) (*.hevc *.hvc *.265 *.h265);;Digital Theater System (*.dts);;Mpeg video elementary stream (*.mpv *.m1v *.m2v);;Mpeg audio elementary stream (*.mpa);;Transport Stream (*.ts);;BDAV Transport Stream (*.m2ts *.mts *.ssif);;Program Stream (*.mpg *.mpeg *.vob *.evo);;Matroska audio/video files (*.mkv *.mka *.mks);;MP4 audio/video files (*.mp4 *.m4a *.m4v);;Quick time audio/video files (*.mov);;Blu-ray play list (*.mpls *.mpl);;Blu-ray PGS subtitles (*.sup);;Text subtitles (*.srt);;WAVE - Uncompressed PCM audio (*.wav *.w64);;RAW LPCM Stream (*.pcm);;All files (*.*)
+
+
+
+
+ tsMuxeR project file (*.meta);;All files (*.*)
+
+
+
+
+ Transport stream (*.ts);;all files (*.*)
+
+
+
+
+ BDAV Transport Stream (*.m2ts);;all files (*.*)
+
+
+
+
+ Disk image (*.iso);;all files (*.*)
+
+
+
+
Not supported
Не поддерживается
-
-
+
+
Unsupported format
Неподдерживаемый формат
-
+
Can't detect stream type. File name: "%1"
Не определён тип потока. Имя файла: "%1"
-
+
Add media file
Добавить медиафайл
-
+
File already exists
Файл уже есть
-
+
File "%1" already exists
Файл "%1" уже есть
-
+
Unsupported format or all tracks are not recognized. File name: "%1"
Неподдерживаемый формат или все дорожки не распознаны. Имя файла: "%1"
-
+
Some tracks not recognized. This tracks was ignored. File name: "%1"
Некоторые дорожки не распознаны. Эта дорожка была проигнорирована. Имя файла: "%1"
-
+
Mux
Создать
-
+
tsMuxeR error
Ошибка tsMuxeR
-
+
tsMuxeR not found!
tsMuxeR не найден!
-
+
Can't execute tsMuxeR!
Не возможно запустить tsMuxeR!
-
-
+
+
No track selected
Не выбрана дорожка
-
+
Append media file
Присоединить медиафайл
-
+
Invalid file extension
Неверное расширение файла
-
+
Appended file must have same file extension.
Присоединяемый файл должен иметь тоже самое расширение файла.
-
+
Sta&rt demuxing
Ста&rт демуксинга
-
+
Folder
Папка
-
+
Select file for muxing
Выберите файл для муксинга
-
-
+
+
Invalid file name
Неверное имя файла
-
+
The output file "%1" has invalid extension. Please, change file extension to ".m2ts"
Выходной файл "%1" имеет недопустимое расширение. Пожалуйста, измените расширение файла на ".m2ts"
-
+
The output file "%1" has invalid extension. Please, change file extension to ".iso"
Выходной файл "%1" имеет недопустимое расширение. Пожалуйста, измените расширение файла на ".iso"
-
+
file
Used in expressions "Overwrite existing %1" and "The output %1 already exists".
Используется в фразах "Переписать существующий %1" и "Файл %1 уже существует".
файл
-
+
directory
каталог
-
+
Overwrite existing %1?
Переписать существующий %1?
-
+
The output %1 "%2" already exists. Do you want to overwrite it?
Результат %1 "%2" уже есть. Хотите его перезаписать?
-
+
Muxing in progress
Выполняется муксинг
-
+
Demuxing in progress
Выполняется демуксинг
-
+
Can't create temporary meta file
Не возможно создать временный файл проекта
-
+
Can't create temporary meta file "%1"
Не возможно создать временный файл проекта "%1"
diff --git a/tsMuxerGUI/tsmuxerwindow.cpp b/tsMuxerGUI/tsmuxerwindow.cpp
index e7d3aa6..8f7075c 100644
--- a/tsMuxerGUI/tsmuxerwindow.cpp
+++ b/tsMuxerGUI/tsmuxerwindow.cpp
@@ -20,8 +20,10 @@
#include "muxForm.h"
#include "ui_tsmuxerwindow.h"
-const char fileDialogFilter[] =
- "All supported media files (*.aac *.mpv *.mpa *.avc *.mvc *.264 *.h264 *.ac3 *.dts *.ts *.m2ts *.mts *.ssif *.mpg *.mpeg *.vob *.evo *.mkv *.mka *.mks *.mp4 *.m4a *.m4v *.mov *.sup *.wav *.w64 *.pcm *.m1v *.m2v *.vc1 *.hevc *.hvc *.265 *.h265 *.mpls *.mpl *.srt);;\
+QString fileDialogFilter()
+{
+ return TsMuxerWindow::tr(
+ "All supported media files (*.aac *.mpv *.mpa *.avc *.mvc *.264 *.h264 *.ac3 *.dts *.ts *.m2ts *.mts *.ssif *.mpg *.mpeg *.vob *.evo *.mkv *.mka *.mks *.mp4 *.m4a *.m4v *.mov *.sup *.wav *.w64 *.pcm *.m1v *.m2v *.vc1 *.hevc *.hvc *.265 *.h265 *.mpls *.mpl *.srt);;\
AC3/E-AC3 (*.ac3 *.ddp);;\
AAC (advanced audio coding) (*.aac);;\
AVC/MVC/H.264 elementary stream (*.avc *.mvc *.264 *.h264);;\
@@ -40,14 +42,20 @@ Blu-ray PGS subtitles (*.sup);;\
Text subtitles (*.srt);;\
WAVE - Uncompressed PCM audio (*.wav *.w64);;\
RAW LPCM Stream (*.pcm);;\
-All files (*.*)";
-const char saveMetaFilter[] = "tsMuxeR project file (*.meta);;All files (*.*)";
+All files (*.*)");
+}
-const char TI_DEFAULT_TAB_NAME[] = "General track options";
-const char TI_DEMUX_TAB_NAME[] = "Demux options";
-const char TS_SAVE_DIALOG_FILTER[] = "Transport stream (*.ts);;all files (*.*)";
-const char M2TS_SAVE_DIALOG_FILTER[] = "BDAV Transport Stream (*.m2ts);;all files (*.*)";
-const char ISO_SAVE_DIALOG_FILTER[] = "Disk image (*.iso);;all files (*.*)";
+QString saveMetaFilter() { return TsMuxerWindow::tr("tsMuxeR project file (*.meta);;All files (*.*)"); }
+
+QString TI_DEFAULT_TAB_NAME() { return TsMuxerWindow::tr("General track options"); }
+
+QString TI_DEMUX_TAB_NAME() { return TsMuxerWindow::tr("Demux options"); }
+
+QString TS_SAVE_DIALOG_FILTER() { return TsMuxerWindow::tr("Transport stream (*.ts);;all files (*.*)"); }
+
+QString M2TS_SAVE_DIALOG_FILTER() { return TsMuxerWindow::tr("BDAV Transport Stream (*.m2ts);;all files (*.*)"); }
+
+QString ISO_SAVE_DIALOG_FILTER() { return TsMuxerWindow::tr("Disk image (*.iso);;all files (*.*)"); }
QSettings *settings = nullptr;
@@ -229,6 +237,13 @@ QString getComboBoxTrackText(int idx, const QtvCodecInfo &codecInfo)
return text;
}
+void initLanguageComboBox(QComboBox *comboBox)
+{
+ comboBox->addItem("English", "en");
+ comboBox->addItem(QString::fromUtf8("Русский"), "ru");
+ comboBox->setCurrentIndex(-1); // makes sure currentIndexChanged() is emitted when reading settings.
+}
+
} // namespace
// ----------------------- TsMuxerWindow -------------------------------------
@@ -269,6 +284,7 @@ TsMuxerWindow::TsMuxerWindow()
ui->setupUi(this);
qApp->installTranslator(&qtCoreTranslator);
qApp->installTranslator(&tsMuxerTranslator);
+ initLanguageComboBox(ui->languageSelectComboBox);
setWindowTitle("tsMuxeR GUI " TSMUXER_VERSION);
lastInputDir = QDir::homePath();
lastOutputDir = QDir::homePath();
@@ -293,11 +309,6 @@ TsMuxerWindow::TsMuxerWindow()
ui->outFileName->setText(getDefaultOutputFileName());
- // next properties supported by Designer in version 4.5 only.
- ui->listViewFont->horizontalHeader()->setVisible(false);
- ui->listViewFont->verticalHeader()->setVisible(false);
- ui->listViewFont->horizontalHeader()->setStretchLastSection(true);
-
m_header = new QnCheckBoxedHeaderView(this);
ui->trackLV->setHorizontalHeader(m_header);
ui->trackLV->horizontalHeader()->setStretchLastSection(true);
@@ -310,7 +321,7 @@ TsMuxerWindow::TsMuxerWindow()
/////////////////////////////////////////////////////////////
for (int i = 0; i <= 3600; i += 5 * 60) ui->memoChapters->insertPlainText(floatToTime(i, '.') + '\n');
- saveDialogFilter = tr(TS_SAVE_DIALOG_FILTER);
+ mSaveDialogFilter = TS_SAVE_DIALOG_FILTER();
const static int colWidths[] = {28, 200, 62, 38, 10};
for (unsigned i = 0u; i < sizeof(colWidths) / sizeof(int); ++i)
ui->trackLV->horizontalHeader()->resizeSection(i, colWidths[i]);
@@ -369,8 +380,6 @@ TsMuxerWindow::TsMuxerWindow()
connect(ui->checkBoxCrop, &QCheckBox::stateChanged, this, &TsMuxerWindow::onSavedParamChanged);
connect(ui->checkBoxRVBR, &QAbstractButton::clicked, this, &TsMuxerWindow::onGeneralCheckboxClicked);
connect(ui->checkBoxCBR, &QAbstractButton::clicked, this, &TsMuxerWindow::onGeneralCheckboxClicked);
- // connect(ui->checkBoxuseAsynIO, SIGNAL(stateChanged(int)), this,
- // SLOT(onSavedParamChanged()));
connect(ui->radioButtonStoreOutput, &QAbstractButton::clicked, this, &TsMuxerWindow::onSavedParamChanged);
connect(ui->radioButtonOutoutInInput, &QAbstractButton::clicked, this, &TsMuxerWindow::onSavedParamChanged);
connect(ui->editVBVLen, spinBoxValueChanged, this, &TsMuxerWindow::onGeneralSpinboxValueChanged);
@@ -382,7 +391,7 @@ TsMuxerWindow::TsMuxerWindow()
connect(ui->radioButtonNoChapters, &QAbstractButton::clicked, this, &TsMuxerWindow::onChapterParamsChanged);
connect(ui->radioButtonCustomChapters, &QAbstractButton::clicked, this, &TsMuxerWindow::onChapterParamsChanged);
connect(ui->spinEditChapterLen, spinBoxValueChanged, this, &TsMuxerWindow::onChapterParamsChanged);
- connect(ui->memoChapters, &QTextEdit::textChanged, this, &TsMuxerWindow::onChapterParamsChanged);
+ connect(ui->memoChapters, &QPlainTextEdit::textChanged, this, &TsMuxerWindow::onChapterParamsChanged);
connect(ui->noSplit, &QAbstractButton::clicked, this, &TsMuxerWindow::onSplitCutParamsChanged);
connect(ui->splitByDuration, &QAbstractButton::clicked, this, &TsMuxerWindow::onSplitCutParamsChanged);
connect(ui->splitBySize, &QAbstractButton::clicked, this, &TsMuxerWindow::onSplitCutParamsChanged);
@@ -870,7 +879,7 @@ void TsMuxerWindow::addFiles(const QList &files)
void TsMuxerWindow::onAddBtnClick()
{
QString fileName = QDir::toNativeSeparators(
- QFileDialog::getOpenFileName(this, tr("Add media file"), lastInputDir, tr(fileDialogFilter)));
+ QFileDialog::getOpenFileName(this, tr("Add media file"), lastInputDir, fileDialogFilter()));
if (fileName.isEmpty())
return;
lastInputDir = fileName;
@@ -938,7 +947,7 @@ void TsMuxerWindow::trackLVItemSelectionChanged()
while (ui->tabWidgetTracks->count()) ui->tabWidgetTracks->removeTab(0);
if (ui->trackLV->currentRow() == -1)
{
- ui->tabWidgetTracks->addTab(ui->tabSheetFake, tr(TI_DEFAULT_TAB_NAME));
+ ui->tabWidgetTracks->addTab(ui->tabSheetFake, TI_DEFAULT_TAB_NAME());
return;
}
QtvCodecInfo *codecInfo = getCurrentCodec();
@@ -949,7 +958,7 @@ void TsMuxerWindow::trackLVItemSelectionChanged()
{
if (isVideoCodec(codecInfo->displayName))
{
- ui->tabWidgetTracks->addTab(ui->tabSheetVideo, tr(TI_DEFAULT_TAB_NAME));
+ ui->tabWidgetTracks->addTab(ui->tabSheetVideo, TI_DEFAULT_TAB_NAME());
ui->checkFPS->setChecked(codecInfo->checkFPS);
ui->checkBoxLevel->setChecked(codecInfo->checkLevel);
@@ -980,9 +989,9 @@ void TsMuxerWindow::trackLVItemSelectionChanged()
}
else
{
- ui->tabWidgetTracks->addTab(ui->tabSheetAudio, tr(TI_DEFAULT_TAB_NAME));
+ ui->tabWidgetTracks->addTab(ui->tabSheetAudio, TI_DEFAULT_TAB_NAME());
if (codecInfo->displayName == "LPCM")
- ui->tabWidgetTracks->addTab(ui->demuxLpcmOptions, tr(TI_DEMUX_TAB_NAME));
+ ui->tabWidgetTracks->addTab(ui->demuxLpcmOptions, TI_DEMUX_TAB_NAME());
if (codecInfo->displayName == "DTS-HD")
ui->dtsDwnConvert->setText("Downconvert DTS-HD to DTS");
@@ -1872,12 +1881,21 @@ void TsMuxerWindow::updateMuxTime2()
updateMetaLines();
}
-void TsMuxerWindow::onLanguageComboBoxIndexChanged(int x)
+void TsMuxerWindow::onLanguageComboBoxIndexChanged(int idx)
{
- static const QString languages[] = {"en", "ru"};
- auto lang = languages[x];
+ auto lang = ui->languageSelectComboBox->itemData(idx).toString();
qtCoreTranslator.load(QString("qtbase_%1").arg(lang), QLibraryInfo::location(QLibraryInfo::TranslationsPath));
tsMuxerTranslator.load(QString("tsmuxergui_%1").arg(lang), ":/i18n");
+ QFile aboutContent(QString(":/about_%1.html").arg(lang));
+ if (aboutContent.open(QIODevice::ReadOnly))
+ {
+ ui->textEdit->setHtml(QString::fromUtf8(aboutContent.readAll()));
+ }
+ else
+ {
+ qWarning() << "Failed to open about.html for language" << lang << aboutContent.errorString();
+ ui->textEdit->clear();
+ }
}
void TsMuxerWindow::updateMetaLines()
@@ -1886,7 +1904,8 @@ void TsMuxerWindow::updateMetaLines()
return;
ui->memoMeta->clear();
- ui->memoMeta->append(getMuxOpts());
+ QString metaContent;
+ metaContent.append(getMuxOpts() + '\n');
QString tmpFps;
for (int i = 0; i < ui->trackLV->rowCount(); ++i)
{
@@ -1951,7 +1970,7 @@ void TsMuxerWindow::updateMetaLines()
if (codecInfo->subTrack != 0)
postfix += QString(", subTrack=") + QString::number(codecInfo->subTrack);
if (isVideoCodec(codecInfo->displayName))
- ui->memoMeta->append(prefix + getVideoMetaInfo(codecInfo) + postfix);
+ metaContent.append(prefix + getVideoMetaInfo(codecInfo) + postfix + '\n');
else
{
if (isDiskOutput() && ui->defaultAudioTrackCheckBox->isChecked() &&
@@ -1959,9 +1978,10 @@ void TsMuxerWindow::updateMetaLines()
{
postfix += QString(", default");
}
- ui->memoMeta->append(prefix + getAudioMetaInfo(codecInfo) + postfix);
+ metaContent.append(prefix + getAudioMetaInfo(codecInfo) + postfix + '\n');
}
}
+ ui->memoMeta->setPlainText(metaContent);
}
void TsMuxerWindow::onFontBtnClicked()
@@ -2159,7 +2179,7 @@ void TsMuxerWindow::deleteTrack(int idx)
{
lastSourceDir.clear();
while (ui->tabWidgetTracks->count()) ui->tabWidgetTracks->removeTab(0);
- ui->tabWidgetTracks->addTab(ui->tabSheetFake, tr(TI_DEFAULT_TAB_NAME));
+ ui->tabWidgetTracks->addTab(ui->tabSheetFake, TI_DEFAULT_TAB_NAME());
ui->outFileName->setText(getDefaultOutputFileName());
outFileNameModified = false;
}
@@ -2204,7 +2224,7 @@ void TsMuxerWindow::onAppendButtonClick()
return;
}
QString fileName = QDir::toNativeSeparators(
- QFileDialog::getOpenFileName(this, tr("Append media file"), lastInputDir, tr(fileDialogFilter)));
+ QFileDialog::getOpenFileName(this, tr("Append media file"), lastInputDir, fileDialogFilter()));
if (fileName.isEmpty())
return;
lastInputDir = fileName;
@@ -2368,17 +2388,17 @@ void TsMuxerWindow::RadioButtonMuxClick()
if (ui->radioButtonTS->isChecked())
{
ui->outFileName->setText(changeFileExt(ui->outFileName->text(), "ts"));
- saveDialogFilter = tr(TS_SAVE_DIALOG_FILTER);
+ mSaveDialogFilter = TS_SAVE_DIALOG_FILTER();
}
else if (ui->radioButtonBluRayISO->isChecked())
{
ui->outFileName->setText(changeFileExt(ui->outFileName->text(), "iso"));
- saveDialogFilter = tr(ISO_SAVE_DIALOG_FILTER);
+ mSaveDialogFilter = ISO_SAVE_DIALOG_FILTER();
}
else
{
ui->outFileName->setText(changeFileExt(ui->outFileName->text(), "m2ts"));
- saveDialogFilter = tr(M2TS_SAVE_DIALOG_FILTER);
+ mSaveDialogFilter = M2TS_SAVE_DIALOG_FILTER();
}
}
ui->DiskLabel->setVisible(ui->radioButtonBluRayISO->isChecked());
@@ -2442,7 +2462,7 @@ void TsMuxerWindow::saveFileDialog()
path = QFileInfo(fileName).absolutePath();
}
QString fileName = QDir::toNativeSeparators(
- QFileDialog::getSaveFileName(this, tr("Select file for muxing"), path, saveDialogFilter));
+ QFileDialog::getSaveFileName(this, tr("Select file for muxing"), path, mSaveDialogFilter));
if (!fileName.isEmpty())
{
ui->outFileName->setText(fileName);
@@ -2529,7 +2549,7 @@ void TsMuxerWindow::startMuxing()
void TsMuxerWindow::saveMetaFileBtnClick()
{
QString metaName =
- QFileDialog::getSaveFileName(this, "", changeFileExt(ui->outFileName->text(), "meta"), tr(saveMetaFilter));
+ QFileDialog::getSaveFileName(this, "", changeFileExt(ui->outFileName->text(), "meta"), mSaveDialogFilter);
if (metaName.isEmpty())
return;
QFileInfo fi(metaName);
diff --git a/tsMuxerGUI/tsmuxerwindow.h b/tsMuxerGUI/tsmuxerwindow.h
index 79d00f9..660b08a 100644
--- a/tsMuxerGUI/tsmuxerwindow.h
+++ b/tsMuxerGUI/tsmuxerwindow.h
@@ -166,7 +166,7 @@ class TsMuxerWindow : public QWidget
bool outFileNameModified;
QString oldFileName;
bool outFileNameDisableChange;
- QString saveDialogFilter;
+ QString mSaveDialogFilter;
MuxForm* muxForm;
QString newFileName;
QList codecList;
diff --git a/tsMuxerGUI/tsmuxerwindow.ui b/tsMuxerGUI/tsmuxerwindow.ui
index d5e5da2..4bf77d1 100644
--- a/tsMuxerGUI/tsmuxerwindow.ui
+++ b/tsMuxerGUI/tsmuxerwindow.ui
@@ -1226,26 +1226,16 @@
-
-
+
false
true
-
- <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd">
-<html><head><meta name="qrichtext" content="1" /><style type="text/css">
-p, li { white-space: pre-wrap; }
-</style></head><body style=" font-family:'MS Shell Dlg 2'; font-size:8.25pt; font-weight:400; font-style:normal;">
-<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:8pt;"></p></body></html>
-
20
-
- false
-
@@ -1971,6 +1961,15 @@ p, li { white-space: pre-wrap; }
84
+
+ false
+
+
+ true
+
+
+ false
+
New Row
@@ -2593,68 +2592,15 @@ p, li { white-space: pre-wrap; }
-
+
+ true
+
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd">
-<html><head><meta name="qrichtext" content="1" /><title>tsMuxeR</title><style type="text/css">
+<html><head><meta name="qrichtext" content="1" /><style type="text/css">
p, li { white-space: pre-wrap; }
-</style></head><body style=" font-family:'MS Shell Dlg 2'; font-size:8.25pt; font-weight:400; font-style:normal;">
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><a href="https://github.com/justdan96/tsMuxer"><span style=" font-size:8pt; font-weight:600; text-decoration: underline; color:#0000ff;">tsMuxeR</span></a><span style=" font-size:8pt;"> – the software utility to create TS and M2TS files for IP broadcasting as well as for viewing at hardware video players (i.e., Dune HD Ultra, Sony Playstation3, Samsung Smart TV and others). </span></p>
-<p style=" margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:8pt;">tsMuxeR is open source. </span></p>
-<p style=" margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:8pt;">Supported incoming formats: </span></p>
-<ul style="margin-top: 0px; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; -qt-list-indent: 1;">
-<li style=" font-size:8pt;" style=" margin-top:12px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">TS; </li>
-<li style=" font-size:8pt;" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">M2TS; </li>
-<li style=" font-size:8pt;" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">SIFF;</li>
-<li style=" font-size:8pt;" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">MOV;</li>
-<li style=" font-size:8pt;" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">MP4;</li>
-<li style=" font-size:8pt;" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">MKV;</li>
-<li style=" font-size:8pt;" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Blu-ray; </li>
-<li style=" font-size:8pt;" style=" margin-top:0px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Demux option. </li></ul>
-<p style=" margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:8pt;">Supported videocodecs: </span></p>
-<ul style="margin-top: 0px; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; -qt-list-indent: 1;">
-<li style=" font-size:8pt;" style=" margin-top:12px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">H.264/MVC </li>
-<li style=" font-size:8pt;" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">H.265/HEVC; </li>
-<li style=" font-size:8pt;" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Microsoft VC-1; </li>
-<li style=" font-size:8pt;" style=" margin-top:0px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">MPEG-2. </li></ul>
-<p style=" margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:8pt;">Supported audiocodecs: </span></p>
-<ul style="margin-top: 0px; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; -qt-list-indent: 1;">
-<li style=" font-size:8pt;" style=" margin-top:12px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">AAC; </li>
-<li style=" font-size:8pt;" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">AC3 / E-AC3(DD+); </li>
-<li style=" font-size:8pt;" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Dolby True HD (for streams with AC3 core only); </li>
-<li style=" font-size:8pt;" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">DTS/ DTS-HD; </li>
-<li style=" font-size:8pt;" style=" margin-top:0px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">LPCM. </li></ul>
-<p style=" margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:8pt;">Supported subtitle types: </span></p>
-<ul style="margin-top: 0px; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; -qt-list-indent: 1;">
-<li style=" font-size:8pt;" style=" margin-top:12px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">M2TS Presentation graphic stream. </li>
-<li style=" font-size:8pt;" style=" margin-top:0px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">SRT text subtitles </li></ul>
-<p style=" margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:8pt;">Supported containers and formats: </span></p>
-<ul style="margin-top: 0px; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; -qt-list-indent: 1;">
-<li style=" font-size:8pt;" style=" margin-top:12px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Elementary stream; </li>
-<li style=" font-size:8pt;" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Transport stream TS and M2TS; </li>
-<li style=" font-size:8pt;" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Program stream EVO/VOB/MPG; </li>
-<li style=" font-size:8pt;" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Matroska MKV/MKA. </li>
-<li style=" font-size:8pt;" style=" margin-top:0px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">MP4/MOV. </li></ul>
-<p style=" margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:8pt;">Main features: </span></p>
-<ul style="margin-top: 0px; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; -qt-list-indent: 1;">
-<li style=" font-size:8pt;" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">3D Blu-ray support;</li>
-<li style=" font-size:8pt;" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">UHD, HDR10, HDR10+ and Dolby Vision support; </li>
-<li style=" font-size:8pt;" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Automatic or manual fps adjustment while mixing; </li>
-<li style=" font-size:8pt;" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Level changing as well as SEI, SPS/PPS elements and NAL unit delimiter cycle insertion while mixing H.264; </li>
-<li style=" font-size:8pt;" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Audio tracks and subtitles time shifting; </li>
-<li style=" font-size:8pt;" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Ability to extract DTS core from DTS-HD; </li>
-<li style=" font-size:8pt;" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Ability to extract AC3 core from True-HD; </li>
-<li style=" font-size:8pt;" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Ability to join files; </li>
-<li style=" font-size:8pt;" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Ability to adjust fps for subtitles; </li>
-<li style=" font-size:8pt;" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Ability to convert LPCM streams into WAVE and vice versa; </li>
-<li style=" font-size:8pt;" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Track language information injection into blu-ray structure and TS header; </li>
-<li style=" font-size:8pt;" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Ability to cut source files; </li>
-<li style=" font-size:8pt;" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Ability to split output file; </li>
-<li style=" font-size:8pt;" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Ability to detect audio delay for TS/M2TS/MPG/VOB/EVO sources; </li>
-<li style=" font-size:8pt;" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Ability to remove pulldown info from stream; </li>
-<li style=" font-size:8pt;" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Ability to open Blu-ray playlist (MPLS) files; </li>
-<li style=" font-size:8pt;" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Ability to convert SRT subtitles to PGS; </li>
-<li style=" font-size:8pt;" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Tags for SRT subtitles support - tags for changing font, color, size, etc.; tag's syntax is similar to HTML; </li>
-<li style=" font-size:8pt;" style=" margin-top:0px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">United cross-platform GUI - Windows, Linux, MacOS. </li></ul></body></html>
+</style></head><body style=" font-family:'Sans'; font-size:9pt; font-weight:400; font-style:normal;">
+<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><br /></p></body></html>
@@ -2848,16 +2794,13 @@ p, li { white-space: pre-wrap; }
-
-
+
false
true
-
- false
-
Qt::TextSelectableByKeyboard|Qt::TextSelectableByMouse
@@ -2886,16 +2829,6 @@ p, li { white-space: pre-wrap; }
0
- -
-
- English
-
-
- -
-
- Русский
-
-
-
@@ -2932,6 +2865,12 @@ p, li { white-space: pre-wrap; }
-
+
+
+ 0
+ 0
+
+
128
@@ -2940,7 +2879,7 @@ p, li { white-space: pre-wrap; }
- 128
+ 256
16777215