OSDN Git Service

Updated Monkey's Audio binary to v4.11 (2013-01-20), including STDERR flush fix.
[lamexp/LameXP.git] / src / Encoder_Opus.cpp
index 11e27dd..aa2e082 100644 (file)
@@ -1,6 +1,6 @@
 ///////////////////////////////////////////////////////////////////////////////
 // LameXP - Audio Encoder Front-End
-// Copyright (C) 2004-2012 LoRd_MuldeR <MuldeR2@GMX.de>
+// Copyright (C) 2004-2013 LoRd_MuldeR <MuldeR2@GMX.de>
 //
 // This program is free software; you can redistribute it and/or modify
 // it under the terms of the GNU General Public License as published by
 
 OpusEncoder::OpusEncoder(void)
 :
-       m_binary_std(lamexp_lookup_tool("opusenc_std.exe")),
-       m_binary_ea7(lamexp_lookup_tool("opusenc_ea7.exe"))
+       m_binary(lamexp_lookup_tool("opusenc.exe"))
 {
-       if(m_binary_std.isEmpty() || m_binary_ea7.isEmpty())
+       if(m_binary.isEmpty())
        {
                throw "Error initializing Opus encoder. Tool 'opusenc.exe' is not registred!";
        }
@@ -41,7 +40,6 @@ OpusEncoder::OpusEncoder(void)
        m_configOptimizeFor = 0;
        m_configEncodeComplexity = 10;
        m_configFrameSize = 3;
-       m_configExpAnalysisOn = true;
 }
 
 OpusEncoder::~OpusEncoder(void)
@@ -71,15 +69,15 @@ bool OpusEncoder::encode(const QString &sourceFile, const AudioFileModel &metaIn
                break;
        }
 
-       switch(m_configOptimizeFor)
-       {
-       case 0:
-               args << "--music";
-               break;
-       case 1:
-               args << "--speech";
-               break;
-       }
+       //switch(m_configOptimizeFor)
+       //{
+       //case 0:
+       //      args << "--music";
+       //      break;
+       //case 1:
+       //      args << "--speech";
+       //      break;
+       //}
 
        args << "--comp" << QString::number(m_configEncodeComplexity);
 
@@ -107,20 +105,20 @@ bool OpusEncoder::encode(const QString &sourceFile, const AudioFileModel &metaIn
 
        args << QString("--bitrate") << QString::number(qMax(0, qMin(500, m_configBitrate * 8)));
 
-       if(!metaInfo.fileName().isEmpty()) args << "--title" << metaInfo.fileName();
-       if(!metaInfo.fileArtist().isEmpty()) args << "--artist" << metaInfo.fileArtist();
-       if(!metaInfo.fileAlbum().isEmpty()) args << "--comment" << QString("album=%1").arg(metaInfo.fileAlbum());
-       if(!metaInfo.fileGenre().isEmpty()) args << "--comment" << QString("genre=%1").arg(metaInfo.fileGenre());
-       if(!metaInfo.fileComment().isEmpty()) args << "--comment" << QString("comment=%1").arg(metaInfo.fileComment());
-       if(metaInfo.fileYear()) args << "--comment" << QString("date=%1").arg(QString::number(metaInfo.fileYear()));
-       if(metaInfo.filePosition()) args << "--comment" << QString("track=%1").arg(QString::number(metaInfo.filePosition()));
+       if(!metaInfo.fileName().isEmpty()) args << "--title" << cleanTag(metaInfo.fileName());
+       if(!metaInfo.fileArtist().isEmpty()) args << "--artist" << cleanTag(metaInfo.fileArtist());
+       if(!metaInfo.fileAlbum().isEmpty()) args << "--album" << cleanTag(metaInfo.fileAlbum());
+       if(!metaInfo.fileGenre().isEmpty()) args << "--genre" << cleanTag(metaInfo.fileGenre());
+       if(metaInfo.fileYear()) args << "--date" << QString::number(metaInfo.fileYear());
+       if(metaInfo.filePosition()) args << "--comment" << QString("tracknumber=%1").arg(QString::number(metaInfo.filePosition()));
+       if(!metaInfo.fileComment().isEmpty()) args << "--comment" << QString("comment=%1").arg(cleanTag(metaInfo.fileComment()));
        
        if(!m_configCustomParams.isEmpty()) args << m_configCustomParams.split(" ", QString::SkipEmptyParts);
 
        args << QDir::toNativeSeparators(sourceFile);
        args << QDir::toNativeSeparators(outputFile);
 
-       if(!startProcess(process, m_configExpAnalysisOn ? m_binary_ea7 : m_binary_std, args))
+       if(!startProcess(process, m_binary, args))
        {
                return false;
        }
@@ -203,11 +201,6 @@ void OpusEncoder::setFrameSize(int frameSize)
        m_configFrameSize = qBound(0, frameSize, 5);
 }
 
-void OpusEncoder::setExpAnalysisOn(bool expAnalysisOn)
-{
-       m_configExpAnalysisOn = expAnalysisOn;
-}
-
 QString OpusEncoder::extension(void)
 {
        return "opus";
@@ -233,7 +226,8 @@ const unsigned int *OpusEncoder::supportedChannelCount(void)
 
 const unsigned int *OpusEncoder::supportedBitdepths(void)
 {
-       return NULL;
+       static const unsigned int supportedBPS[] = {8, 16, 24, AudioFileModel::BITDEPTH_IEEE_FLOAT32, NULL};
+       return supportedBPS;
 }
 
 const bool OpusEncoder::needsTimingInfo(void)