Skip to content

Commit

Permalink
No longer use mkvmerge
Browse files Browse the repository at this point in the history
  • Loading branch information
towel42-com committed Apr 7, 2023
1 parent 130fc47 commit ac921cf
Show file tree
Hide file tree
Showing 7 changed files with 70 additions and 160 deletions.
7 changes: 2 additions & 5 deletions App/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -96,20 +96,17 @@ find_program( FFPROBE_EXEC ffprobe.exe
find_program( FFMPEG_EMBY_EXEC ffmpeg.exe
PATHS "${APPDATA}/Emby-Server/system"
REQUIRED )
find_program( MKVMERGE_EXEC mkvmerge.exe
PATHS "${PROGRAMFILES}/MKVToolNix"
REQUIRED )
find_program( MKVPROPEDIT_EXEC mkvpropedit.exe
PATHS "${PROGRAMFILES}/MKVToolNix"
REQUIRED )

INSTALL( FILES "${FFMPEG_EXEC}" "${FFPROBE_EXEC}" "${MKVMERGE_EXEC}" "${MKVPROPEDIT_EXEC}" DESTINATION . )
INSTALL( FILES "${FFMPEG_EXEC}" "${FFPROBE_EXEC}" "${MKVPROPEDIT_EXEC}" DESTINATION . )
INSTALL( FILES "${FFMPEG_EMBY_EXEC}" DESTINATION . RENAME ffmpeg-emby.exe )


add_custom_command(TARGET ${PROJECT_NAME} POST_BUILD
COMMAND "${CMAKE_COMMAND}" -E echo "Copying External Executables to '$<TARGET_FILE_DIR:MediaManager>'"
COMMAND "${CMAKE_COMMAND}" -E copy_if_different \"${FFMPEG_EXEC}\" \"${FFPROBE_EXEC}\" \"${MKVMERGE_EXEC}\" \"${MKVPROPEDIT_EXEC}\" \"$<TARGET_FILE_DIR:MediaManager>\"
COMMAND "${CMAKE_COMMAND}" -E copy_if_different \"${FFMPEG_EXEC}\" \"${FFPROBE_EXEC}\" \"${MKVPROPEDIT_EXEC}\" \"$<TARGET_FILE_DIR:MediaManager>\"
COMMAND "${CMAKE_COMMAND}" -E copy_if_different \"${FFMPEG_EMBY_EXEC}\" \"$<TARGET_FILE_DIR:MediaManager>/ffmpeg-emby.exe\"
)

16 changes: 0 additions & 16 deletions Preferences/Core/Preferences.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -1302,22 +1302,6 @@ namespace NMediaManager
return getExternalToolPath( "", "mkvalidator.exe", qApp->applicationDirPath() );
}

void CPreferences::setMKVMergeEXE( const QString &value )
{
if ( value == getMKVMergeEXE() )
return;

QSettings settings;
settings.beginGroup( toString( EPreferenceType::eExtToolsPrefs ) );
settings.setValue( "MKVMergeEXE", value );
emitSigPreferencesChanged( EPreferenceType::eExtToolsPrefs );
}

QString CPreferences::getMKVMergeEXE() const
{
return getExternalToolPath( "MKVMergeEXE", "mkvmerge.exe", "C:/Program Files/MKVToolNix" );
}

void CPreferences::setMKVPropEditEXE( const QString &value )
{
if ( value == getMKVPropEditEXE() )
Expand Down
3 changes: 0 additions & 3 deletions Preferences/Core/Preferences.h
Original file line number Diff line number Diff line change
Expand Up @@ -461,9 +461,6 @@ namespace NMediaManager

QString getMKVValidatorEXE() const;

void setMKVMergeEXE( const QString &value );
QString getMKVMergeEXE() const;

void setMKVPropEditEXE( const QString &value );
QString getMKVPropEditEXE() const;

Expand Down
34 changes: 0 additions & 34 deletions Preferences/UI/ExternalTools.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -40,11 +40,6 @@ namespace NMediaManager
{
fImpl->setupUi( this );

connect( fImpl->btnSelectMKVMergeExe, &QToolButton::clicked, this, &CExternalTools::slotSelectMKVMergeExe );
fImpl->mkvMergeExe->setCheckExists( true );
fImpl->mkvMergeExe->setCheckIsFile( true );
fImpl->mkvMergeExe->setCheckIsExecutable( true );

connect( fImpl->btnSelectMKVPropEditExe, &QToolButton::clicked, this, &CExternalTools::slotSelectMKVPropEditExe );
fImpl->mkvPropEditExe->setCheckExists( true );
fImpl->mkvPropEditExe->setCheckIsFile( true );
Expand All @@ -67,32 +62,15 @@ namespace NMediaManager

connect( fImpl->ffmpegExe, &NSABUtils::CDelayLineEdit::sigTextChangedAfterDelay, this, &CExternalTools::slotFFToolChanged );
connect( fImpl->ffprobeExe, &NSABUtils::CDelayLineEdit::sigTextChangedAfterDelay, this, &CExternalTools::slotFFToolChanged );
connect( fImpl->mkvMergeExe, &NSABUtils::CDelayLineEdit::sigTextChangedAfterDelay, this, &CExternalTools::slotMKVNixToolChanged );
connect( fImpl->mkvPropEditExe, &NSABUtils::CDelayLineEdit::sigTextChangedAfterDelay, this, &CExternalTools::slotMKVNixToolChanged );

fftoolToolChanged( fImpl->ffmpegExe );
fftoolToolChanged( fImpl->ffprobeExe );
mkvnixToolChanged( fImpl->mkvMergeExe );
mkvnixToolChanged( fImpl->mkvPropEditExe );
}

CExternalTools::~CExternalTools()
{
}

void CExternalTools::slotSelectMKVMergeExe()
{
auto exe = QFileDialog::getOpenFileName( this, tr( "Select MKVMerge Executable:" ), fImpl->mkvMergeExe->text(), "mkvmerge Executable (mkvmerge.exe);;All Executables (*.exe);;All Files (*.*)" );
if ( !exe.isEmpty() && !QFileInfo( exe ).isExecutable() )
{
QMessageBox::critical( this, "Not an Executable", tr( "The file '%1' is not an executable" ).arg( exe ) );
return;
}

if ( !exe.isEmpty() )
fImpl->mkvMergeExe->setText( exe );
}

void CExternalTools::slotSelectMKVPropEditExe()
{
auto exe = QFileDialog::getOpenFileName( this, tr( "Select MKVPropEdit Executable:" ), fImpl->mkvPropEditExe->text(), "mkvpropedit Executable (mkvpropedit.exe);;All Executables (*.exe);;All Files (*.*)" );
Expand Down Expand Up @@ -181,16 +159,6 @@ namespace NMediaManager
otherLE->setText( otherEXE );
}

void CExternalTools::slotMKVNixToolChanged()
{
mkvnixToolChanged( dynamic_cast< QLineEdit * >( sender() ) );
}

void CExternalTools::mkvnixToolChanged( QLineEdit *le )
{
updateOtherTool( le, { fImpl->mkvPropEditExe, "mkvpropedit" }, { fImpl->mkvMergeExe, "mkvmerge" } );
}

void CExternalTools::slotFFToolChanged()
{
fftoolToolChanged( dynamic_cast< QLineEdit * >( sender() ) );
Expand All @@ -204,7 +172,6 @@ namespace NMediaManager
void CExternalTools::load()
{
fImpl->useCustomExternalTools->setChecked( NPreferences::NCore::CPreferences::instance()->getUseCustomExternalTools() );
fImpl->mkvMergeExe->setText( NPreferences::NCore::CPreferences::instance()->getMKVMergeEXE() );
fImpl->mkvPropEditExe->setText( NPreferences::NCore::CPreferences::instance()->getMKVPropEditEXE() );
fImpl->ffmpegExe->setText( NPreferences::NCore::CPreferences::instance()->getFFMpegEXE() );
fImpl->ffmpegEmbyExe->setText( NPreferences::NCore::CPreferences::instance()->getFFMpegEmbyEXE() );
Expand All @@ -214,7 +181,6 @@ namespace NMediaManager
void CExternalTools::save()
{
NPreferences::NCore::CPreferences::instance()->setUseCustomExternalTools( fImpl->useCustomExternalTools->isChecked() );
NPreferences::NCore::CPreferences::instance()->setMKVMergeEXE( fImpl->mkvMergeExe->text() );
NPreferences::NCore::CPreferences::instance()->setMKVPropEditEXE( fImpl->mkvPropEditExe->text() );
NPreferences::NCore::CPreferences::instance()->setFFMpegEXE( fImpl->ffmpegExe->text() );
NPreferences::NCore::CPreferences::instance()->setFFMpegEmbyEXE( fImpl->ffmpegEmbyExe->text() );
Expand Down
3 changes: 0 additions & 3 deletions Preferences/UI/ExternalTools.h
Original file line number Diff line number Diff line change
Expand Up @@ -54,17 +54,14 @@ namespace NMediaManager
virtual void save() override;
virtual QStringList pageName() const override { return QStringList( { "External Tools" } ); }
public Q_SLOTS:
void slotSelectMKVMergeExe();
void slotSelectMKVPropEditExe();
void slotSelectFFMpegExe();
void slotSelectFFMpegEmbyExe();
void slotSelectFFProbeExe();

void slotFFToolChanged();
void slotMKVNixToolChanged();

private:
void mkvnixToolChanged( QLineEdit *le );
void fftoolToolChanged( QLineEdit *le );

void updateOtherTool( QObject *sender, const std::pair< QLineEdit *, QString > &lhs, const std::pair< QLineEdit *, QString > &rhs );
Expand Down
165 changes: 67 additions & 98 deletions Preferences/UI/ExternalTools.ui
Original file line number Diff line number Diff line change
Expand Up @@ -36,8 +36,43 @@
<bool>true</bool>
</property>
<layout class="QGridLayout" name="gridLayout_2">
<item row="4" column="0">
<widget class="QLabel" name="label_12">
<property name="text">
<string>ffprobe Executable:</string>
</property>
<property name="alignment">
<set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
</property>
</widget>
</item>
<item row="3" column="1">
<widget class="QLineEdit" name="ffmpegEmbyExe"/>
</item>
<item row="3" column="2">
<widget class="QToolButton" name="btnSelectFFMpegEmbyExe">
<property name="text">
<string>...</string>
</property>
<property name="icon">
<iconset resource="../../SABUtils/resources/SABUtils.qrc">
<normaloff>:/SABUtilsResources/open.png</normaloff>:/SABUtilsResources/open.png</iconset>
</property>
</widget>
</item>
<item row="2" column="2">
<widget class="QToolButton" name="btnSelectFFMpegExe">
<property name="text">
<string>...</string>
</property>
<property name="icon">
<iconset resource="../../SABUtils/resources/SABUtils.qrc">
<normaloff>:/SABUtilsResources/open.png</normaloff>:/SABUtilsResources/open.png</iconset>
</property>
</widget>
</item>
<item row="0" column="1">
<widget class="NSABUtils::CPathBasedDelayLineEdit" name="mkvMergeExe">
<widget class="NSABUtils::CPathBasedDelayLineEdit" name="mkvPropEditExe">
<property name="sizePolicy">
<sizepolicy hsizetype="Expanding" vsizetype="Fixed">
<horstretch>0</horstretch>
Expand All @@ -46,7 +81,7 @@
</property>
</widget>
</item>
<item row="1" column="0">
<item row="0" column="0">
<widget class="QLabel" name="label_8">
<property name="text">
<string>mkvpropedit Executable:</string>
Expand All @@ -56,32 +91,18 @@
</property>
</widget>
</item>
<item row="5" column="1">
<widget class="NSABUtils::CPathBasedDelayLineEdit" name="ffprobeExe"/>
</item>
<item row="6" column="0" colspan="3">
<widget class="QLabel" name="label_2">
<item row="4" column="2">
<widget class="QToolButton" name="btnSelectFFProbeExe">
<property name="text">
<string>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;ffmpeg and ffprobe need to come from the Emby distribution for BIF creation. &lt;br/&gt;Download from here &lt;a href=&quot;https://emby.media/windows-server.html&quot;&gt;&lt;span style=&quot; text-decoration: underline; color:#0000ff;&quot;&gt;https://emby.media/windows-server.htm&lt;/span&gt;&lt;/a&gt;&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</string>
</property>
<property name="textFormat">
<enum>Qt::AutoText</enum>
</property>
<property name="alignment">
<set>Qt::AlignCenter</set>
</property>
<property name="wordWrap">
<bool>false</bool>
</property>
<property name="openExternalLinks">
<bool>true</bool>
<string>...</string>
</property>
<property name="textInteractionFlags">
<set>Qt::TextBrowserInteraction</set>
<property name="icon">
<iconset resource="../../SABUtils/resources/SABUtils.qrc">
<normaloff>:/SABUtilsResources/open.png</normaloff>:/SABUtilsResources/open.png</iconset>
</property>
</widget>
</item>
<item row="3" column="0">
<item row="2" column="0">
<widget class="QLabel" name="label_11">
<property name="text">
<string>ffmpeg Executable:</string>
Expand All @@ -91,8 +112,11 @@
</property>
</widget>
</item>
<item row="2" column="1">
<widget class="NSABUtils::CPathBasedDelayLineEdit" name="ffmpegExe"/>
</item>
<item row="0" column="2">
<widget class="QToolButton" name="btnSelectMKVMergeExe">
<widget class="QToolButton" name="btnSelectMKVPropEditExe">
<property name="text">
<string>...</string>
</property>
Expand All @@ -102,18 +126,17 @@
</property>
</widget>
</item>
<item row="1" column="2">
<widget class="QToolButton" name="btnSelectMKVPropEditExe">
<item row="3" column="0">
<widget class="QLabel" name="label_3">
<property name="text">
<string>...</string>
</property>
<property name="icon">
<iconset resource="../../SABUtils/resources/SABUtils.qrc">
<normaloff>:/SABUtilsResources/open.png</normaloff>:/SABUtilsResources/open.png</iconset>
<string>ffmpeg (Emby) Executable:</string>
</property>
</widget>
</item>
<item row="2" column="0" colspan="3">
<item row="4" column="1">
<widget class="NSABUtils::CPathBasedDelayLineEdit" name="ffprobeExe"/>
</item>
<item row="1" column="0" colspan="3">
<widget class="QLabel" name="label_4">
<property name="text">
<string>Download from here &lt;a href=&quot;https://mkvtoolnix.download/downloads.html#windows&quot;&gt;https://mkvtoolnix.download/downloads.html&lt;/a&gt;</string>
Expand All @@ -132,79 +155,25 @@
</property>
</widget>
</item>
<item row="5" column="0">
<widget class="QLabel" name="label_12">
<property name="text">
<string>ffprobe Executable:</string>
</property>
<property name="alignment">
<set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
</property>
</widget>
</item>
<item row="1" column="1">
<widget class="NSABUtils::CPathBasedDelayLineEdit" name="mkvPropEditExe">
<property name="sizePolicy">
<sizepolicy hsizetype="Expanding" vsizetype="Fixed">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
</widget>
</item>
<item row="3" column="2">
<widget class="QToolButton" name="btnSelectFFMpegExe">
<property name="text">
<string>...</string>
</property>
<property name="icon">
<iconset resource="../../SABUtils/resources/SABUtils.qrc">
<normaloff>:/SABUtilsResources/open.png</normaloff>:/SABUtilsResources/open.png</iconset>
</property>
</widget>
</item>
<item row="5" column="2">
<widget class="QToolButton" name="btnSelectFFProbeExe">
<item row="5" column="0" colspan="3">
<widget class="QLabel" name="label_2">
<property name="text">
<string>...</string>
</property>
<property name="icon">
<iconset resource="../../SABUtils/resources/SABUtils.qrc">
<normaloff>:/SABUtilsResources/open.png</normaloff>:/SABUtilsResources/open.png</iconset>
<string>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;ffmpeg and ffprobe need to come from the Emby distribution for BIF creation. &lt;br/&gt;Download from here &lt;a href=&quot;https://emby.media/windows-server.html&quot;&gt;&lt;span style=&quot; text-decoration: underline; color:#0000ff;&quot;&gt;https://emby.media/windows-server.htm&lt;/span&gt;&lt;/a&gt;&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</string>
</property>
</widget>
</item>
<item row="3" column="1">
<widget class="NSABUtils::CPathBasedDelayLineEdit" name="ffmpegExe"/>
</item>
<item row="0" column="0">
<widget class="QLabel" name="label">
<property name="text">
<string>mkvmerge Executable:</string>
<property name="textFormat">
<enum>Qt::AutoText</enum>
</property>
<property name="alignment">
<set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
<set>Qt::AlignCenter</set>
</property>
</widget>
</item>
<item row="4" column="0">
<widget class="QLabel" name="label_3">
<property name="text">
<string>ffmpeg (Emby) Executable:</string>
<property name="wordWrap">
<bool>false</bool>
</property>
</widget>
</item>
<item row="4" column="1">
<widget class="QLineEdit" name="ffmpegEmbyExe"/>
</item>
<item row="4" column="2">
<widget class="QToolButton" name="btnSelectFFMpegEmbyExe">
<property name="text">
<string>...</string>
<property name="openExternalLinks">
<bool>true</bool>
</property>
<property name="icon">
<iconset resource="../../SABUtils/resources/SABUtils.qrc">
<normaloff>:/SABUtilsResources/open.png</normaloff>:/SABUtilsResources/open.png</iconset>
<property name="textInteractionFlags">
<set>Qt::TextBrowserInteraction</set>
</property>
</widget>
</item>
Expand Down
2 changes: 1 addition & 1 deletion VersionInfo.cmake
Original file line number Diff line number Diff line change
Expand Up @@ -28,7 +28,7 @@ STRING(TIMESTAMP BUILD_DATE "%m/%d/%Y" UTC)
STRING(TIMESTAMP BUILD_TIME "%H:%M:%S" UTC)

SET( MAJOR_VERSION 1 )
SET( MINOR_VERSION 29 )
SET( MINOR_VERSION 30 )
SET( APP_NAME "Media Manager" )
SET( VENDOR "Scott Aron Bloom" )
SET( HOMEPAGE "www.towel42.com" )
Expand Down

0 comments on commit ac921cf

Please sign in to comment.