diff --git a/APEDotNet/apedotnet.cpp b/APEDotNet/apedotnet.cpp index a1f7064..0f31421 100644 --- a/APEDotNet/apedotnet.cpp +++ b/APEDotNet/apedotnet.cpp @@ -45,7 +45,6 @@ namespace APEDotNet { pAPEDecompress = NULL; _sampleOffset = 0; - _samplesWaiting = false; _path = path; pBuffer = NULL; @@ -109,7 +108,6 @@ namespace APEDotNet { } void set(Int64 offset) { _sampleOffset = offset; - _samplesWaiting = false; if (pAPEDecompress->Seek ((int) offset /*? */)) throw gcnew Exception("Unable to seek."); } @@ -168,7 +166,6 @@ namespace APEDotNet { sampleBuffer = _sampleBuffer; _sampleOffset += nBlocksRetrieved; - _samplesWaiting = false; return sampleCount; } @@ -180,7 +177,6 @@ namespace APEDotNet { Int64 _sampleCount, _sampleOffset; Int32 _bitsPerSample, _channelCount, _sampleRate; int nBlockAlign; - bool _samplesWaiting; unsigned char * pBuffer; String^ _path; @@ -223,6 +219,7 @@ namespace APEDotNet { _bitsPerSample = bitsPerSample; _channelCount = channelCount; _sampleRate = sampleRate; + _blockAlign = _channelCount * ((_bitsPerSample + 7) / 8); int nRetVal; pAPECompress = CreateIAPECompress (&nRetVal); @@ -282,14 +279,9 @@ namespace APEDotNet { void Write(array^ sampleBuffer, UInt32 sampleCount) { if (!_initialized) Initialize(); - pin_ptr pSampleBuffer = &sampleBuffer[0]; - - if (pAPECompress->AddData (pSampleBuffer, sampleCount * sizeof (int))) - { + if (pAPECompress->AddData (pSampleBuffer, sampleCount * _blockAlign)) throw gcnew Exception("An error occurred while encoding."); - } - _samplesWritten += sampleCount; } @@ -307,7 +299,7 @@ namespace APEDotNet { IAPECompress * pAPECompress; bool _initialized; Int32 _finalSampleCount, _samplesWritten; - Int32 _bitsPerSample, _channelCount, _sampleRate; + Int32 _bitsPerSample, _channelCount, _sampleRate, _blockAlign; Int32 _compressionLevel; NameValueCollection^ _tags; String^ _path; @@ -322,7 +314,7 @@ namespace APEDotNet { FillWaveFormatEx (&waveFormat, _sampleRate, _bitsPerSample, _channelCount); res = pAPECompress->Start ((const wchar_t*)pathChars.ToPointer(), &waveFormat, - (_finalSampleCount == 0) ? MAX_AUDIO_BYTES_UNKNOWN : _finalSampleCount * sizeof (int), + (_finalSampleCount == 0) ? MAX_AUDIO_BYTES_UNKNOWN : _finalSampleCount * _blockAlign, _compressionLevel, NULL, CREATE_WAV_HEADER_ON_DECOMPRESSION); diff --git a/CUETools/CUETools.sln b/CUETools/CUETools.sln index d1abc87..a618e4f 100644 --- a/CUETools/CUETools.sln +++ b/CUETools/CUETools.sln @@ -41,166 +41,165 @@ Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "CUEToolsLib", "..\CUEToolsL {E70FA90A-7012-4A52-86B5-362B699D1540} = {E70FA90A-7012-4A52-86B5-362B699D1540} EndProjectSection EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "HDCDDotNet", "..\HDCDDotNet\HDCDDotNet.csproj", "{32338A04-5B6B-4C63-8EE7-C6400F73B5D7}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "AudioCodecsDotNet", "..\AudioCodecsDotNet\AudioCodecsDotNet.csproj", "{6458A13A-30EF-45A9-9D58-E5031B17BEE2}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ALACDotNet", "..\ALACDotNet\ALACDotNet.csproj", "{F2EC7193-D5E5-4252-9803-5CEB407E910F}" +EndProject Global GlobalSection(SolutionConfigurationPlatforms) = preSolution Debug|Any CPU = Debug|Any CPU - Debug|Win32 = Debug|Win32 Debug|x64 = Debug|x64 Debug|x86 = Debug|x86 Release|Any CPU = Release|Any CPU - Release|Win32 = Release|Win32 Release|x64 = Release|x64 Release|x86 = Release|x86 EndGlobalSection GlobalSection(ProjectConfigurationPlatforms) = postSolution {EF351583-A9CD-4530-92C3-20AC02136BC2}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {EF351583-A9CD-4530-92C3-20AC02136BC2}.Debug|Any CPU.Build.0 = Debug|Any CPU - {EF351583-A9CD-4530-92C3-20AC02136BC2}.Debug|Win32.ActiveCfg = Debug|x86 - {EF351583-A9CD-4530-92C3-20AC02136BC2}.Debug|Win32.Build.0 = Debug|x86 {EF351583-A9CD-4530-92C3-20AC02136BC2}.Debug|x64.ActiveCfg = Debug|x64 {EF351583-A9CD-4530-92C3-20AC02136BC2}.Debug|x64.Build.0 = Debug|x64 {EF351583-A9CD-4530-92C3-20AC02136BC2}.Debug|x86.ActiveCfg = Debug|x86 {EF351583-A9CD-4530-92C3-20AC02136BC2}.Debug|x86.Build.0 = Debug|x86 {EF351583-A9CD-4530-92C3-20AC02136BC2}.Release|Any CPU.ActiveCfg = Release|Any CPU {EF351583-A9CD-4530-92C3-20AC02136BC2}.Release|Any CPU.Build.0 = Release|Any CPU - {EF351583-A9CD-4530-92C3-20AC02136BC2}.Release|Win32.ActiveCfg = Release|x86 - {EF351583-A9CD-4530-92C3-20AC02136BC2}.Release|Win32.Build.0 = Release|x86 {EF351583-A9CD-4530-92C3-20AC02136BC2}.Release|x64.ActiveCfg = Release|x64 {EF351583-A9CD-4530-92C3-20AC02136BC2}.Release|x64.Build.0 = Release|x64 {EF351583-A9CD-4530-92C3-20AC02136BC2}.Release|x86.ActiveCfg = Release|x86 {EF351583-A9CD-4530-92C3-20AC02136BC2}.Release|x86.Build.0 = Release|x86 {E70FA90A-7012-4A52-86B5-362B699D1540}.Debug|Any CPU.ActiveCfg = Debug|x64 - {E70FA90A-7012-4A52-86B5-362B699D1540}.Debug|Win32.ActiveCfg = Debug|Win32 - {E70FA90A-7012-4A52-86B5-362B699D1540}.Debug|Win32.Build.0 = Debug|Win32 {E70FA90A-7012-4A52-86B5-362B699D1540}.Debug|x64.ActiveCfg = Debug|x64 {E70FA90A-7012-4A52-86B5-362B699D1540}.Debug|x64.Build.0 = Debug|x64 {E70FA90A-7012-4A52-86B5-362B699D1540}.Debug|x86.ActiveCfg = Debug|Win32 {E70FA90A-7012-4A52-86B5-362B699D1540}.Debug|x86.Build.0 = Debug|Win32 {E70FA90A-7012-4A52-86B5-362B699D1540}.Release|Any CPU.ActiveCfg = Release|x64 - {E70FA90A-7012-4A52-86B5-362B699D1540}.Release|Win32.ActiveCfg = Release|Win32 - {E70FA90A-7012-4A52-86B5-362B699D1540}.Release|Win32.Build.0 = Release|Win32 {E70FA90A-7012-4A52-86B5-362B699D1540}.Release|x64.ActiveCfg = Release|x64 {E70FA90A-7012-4A52-86B5-362B699D1540}.Release|x64.Build.0 = Release|x64 {E70FA90A-7012-4A52-86B5-362B699D1540}.Release|x86.ActiveCfg = Release|Win32 {E70FA90A-7012-4A52-86B5-362B699D1540}.Release|x86.Build.0 = Release|Win32 {9AE965C4-301E-4C01-B90F-297AF341ACC6}.Debug|Any CPU.ActiveCfg = Debug|x64 - {9AE965C4-301E-4C01-B90F-297AF341ACC6}.Debug|Win32.ActiveCfg = Debug|Win32 - {9AE965C4-301E-4C01-B90F-297AF341ACC6}.Debug|Win32.Build.0 = Debug|Win32 {9AE965C4-301E-4C01-B90F-297AF341ACC6}.Debug|x64.ActiveCfg = Debug|x64 {9AE965C4-301E-4C01-B90F-297AF341ACC6}.Debug|x64.Build.0 = Debug|x64 {9AE965C4-301E-4C01-B90F-297AF341ACC6}.Debug|x86.ActiveCfg = Debug|Win32 {9AE965C4-301E-4C01-B90F-297AF341ACC6}.Debug|x86.Build.0 = Debug|Win32 {9AE965C4-301E-4C01-B90F-297AF341ACC6}.Release|Any CPU.ActiveCfg = Release|x64 - {9AE965C4-301E-4C01-B90F-297AF341ACC6}.Release|Win32.ActiveCfg = Release|Win32 - {9AE965C4-301E-4C01-B90F-297AF341ACC6}.Release|Win32.Build.0 = Release|Win32 {9AE965C4-301E-4C01-B90F-297AF341ACC6}.Release|x64.ActiveCfg = Release|x64 {9AE965C4-301E-4C01-B90F-297AF341ACC6}.Release|x64.Build.0 = Release|x64 {9AE965C4-301E-4C01-B90F-297AF341ACC6}.Release|x86.ActiveCfg = Release|Win32 {9AE965C4-301E-4C01-B90F-297AF341ACC6}.Release|x86.Build.0 = Release|Win32 - {CC2E74B6-534A-43D8-9F16-AC03FE955000}.Debug|Any CPU.ActiveCfg = Debug|Win32 - {CC2E74B6-534A-43D8-9F16-AC03FE955000}.Debug|Win32.ActiveCfg = Debug|Win32 - {CC2E74B6-534A-43D8-9F16-AC03FE955000}.Debug|Win32.Build.0 = Debug|Win32 + {CC2E74B6-534A-43D8-9F16-AC03FE955000}.Debug|Any CPU.ActiveCfg = Debug|x64 {CC2E74B6-534A-43D8-9F16-AC03FE955000}.Debug|x64.ActiveCfg = Debug|x64 {CC2E74B6-534A-43D8-9F16-AC03FE955000}.Debug|x64.Build.0 = Debug|x64 {CC2E74B6-534A-43D8-9F16-AC03FE955000}.Debug|x86.ActiveCfg = Debug|Win32 {CC2E74B6-534A-43D8-9F16-AC03FE955000}.Debug|x86.Build.0 = Debug|Win32 {CC2E74B6-534A-43D8-9F16-AC03FE955000}.Release|Any CPU.ActiveCfg = Release|Win32 - {CC2E74B6-534A-43D8-9F16-AC03FE955000}.Release|Win32.ActiveCfg = Release|Win32 - {CC2E74B6-534A-43D8-9F16-AC03FE955000}.Release|Win32.Build.0 = Release|Win32 {CC2E74B6-534A-43D8-9F16-AC03FE955000}.Release|x64.ActiveCfg = Release|x64 {CC2E74B6-534A-43D8-9F16-AC03FE955000}.Release|x64.Build.0 = Release|x64 {CC2E74B6-534A-43D8-9F16-AC03FE955000}.Release|x86.ActiveCfg = Release|Win32 {CC2E74B6-534A-43D8-9F16-AC03FE955000}.Release|x86.Build.0 = Release|Win32 {0B9C97D4-61B8-4294-A1DF-BA90752A1779}.Debug|Any CPU.ActiveCfg = Debug|x64 - {0B9C97D4-61B8-4294-A1DF-BA90752A1779}.Debug|Win32.ActiveCfg = Debug|Win32 - {0B9C97D4-61B8-4294-A1DF-BA90752A1779}.Debug|Win32.Build.0 = Debug|Win32 {0B9C97D4-61B8-4294-A1DF-BA90752A1779}.Debug|x64.ActiveCfg = Debug|x64 {0B9C97D4-61B8-4294-A1DF-BA90752A1779}.Debug|x64.Build.0 = Debug|x64 {0B9C97D4-61B8-4294-A1DF-BA90752A1779}.Debug|x86.ActiveCfg = Debug|Win32 {0B9C97D4-61B8-4294-A1DF-BA90752A1779}.Debug|x86.Build.0 = Debug|Win32 {0B9C97D4-61B8-4294-A1DF-BA90752A1779}.Release|Any CPU.ActiveCfg = Release|x64 - {0B9C97D4-61B8-4294-A1DF-BA90752A1779}.Release|Win32.ActiveCfg = Release|Win32 - {0B9C97D4-61B8-4294-A1DF-BA90752A1779}.Release|Win32.Build.0 = Release|Win32 {0B9C97D4-61B8-4294-A1DF-BA90752A1779}.Release|x64.ActiveCfg = Release|x64 {0B9C97D4-61B8-4294-A1DF-BA90752A1779}.Release|x64.Build.0 = Release|x64 {0B9C97D4-61B8-4294-A1DF-BA90752A1779}.Release|x86.ActiveCfg = Release|Win32 {0B9C97D4-61B8-4294-A1DF-BA90752A1779}.Release|x86.Build.0 = Release|Win32 {4CEFBC84-C215-11DB-8314-0800200C9A66}.Debug|Any CPU.ActiveCfg = Debug|x64 - {4CEFBC84-C215-11DB-8314-0800200C9A66}.Debug|Win32.ActiveCfg = Debug|Win32 - {4CEFBC84-C215-11DB-8314-0800200C9A66}.Debug|Win32.Build.0 = Debug|Win32 {4CEFBC84-C215-11DB-8314-0800200C9A66}.Debug|x64.ActiveCfg = Debug|x64 {4CEFBC84-C215-11DB-8314-0800200C9A66}.Debug|x64.Build.0 = Debug|x64 {4CEFBC84-C215-11DB-8314-0800200C9A66}.Debug|x86.ActiveCfg = Debug|Win32 {4CEFBC84-C215-11DB-8314-0800200C9A66}.Debug|x86.Build.0 = Debug|Win32 {4CEFBC84-C215-11DB-8314-0800200C9A66}.Release|Any CPU.ActiveCfg = Release|x64 - {4CEFBC84-C215-11DB-8314-0800200C9A66}.Release|Win32.ActiveCfg = Release|Win32 - {4CEFBC84-C215-11DB-8314-0800200C9A66}.Release|Win32.Build.0 = Release|Win32 {4CEFBC84-C215-11DB-8314-0800200C9A66}.Release|x64.ActiveCfg = Release|x64 {4CEFBC84-C215-11DB-8314-0800200C9A66}.Release|x64.Build.0 = Release|x64 {4CEFBC84-C215-11DB-8314-0800200C9A66}.Release|x86.ActiveCfg = Release|Win32 {4CEFBC84-C215-11DB-8314-0800200C9A66}.Release|x86.Build.0 = Release|Win32 {CA200BCB-DFC6-4153-9BD4-785BC768B26B}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {CA200BCB-DFC6-4153-9BD4-785BC768B26B}.Debug|Any CPU.Build.0 = Debug|Any CPU - {CA200BCB-DFC6-4153-9BD4-785BC768B26B}.Debug|Win32.ActiveCfg = Debug|x86 - {CA200BCB-DFC6-4153-9BD4-785BC768B26B}.Debug|Win32.Build.0 = Debug|x86 {CA200BCB-DFC6-4153-9BD4-785BC768B26B}.Debug|x64.ActiveCfg = Debug|x64 {CA200BCB-DFC6-4153-9BD4-785BC768B26B}.Debug|x64.Build.0 = Debug|x64 {CA200BCB-DFC6-4153-9BD4-785BC768B26B}.Debug|x86.ActiveCfg = Debug|x86 {CA200BCB-DFC6-4153-9BD4-785BC768B26B}.Debug|x86.Build.0 = Debug|x86 {CA200BCB-DFC6-4153-9BD4-785BC768B26B}.Release|Any CPU.ActiveCfg = Release|Any CPU {CA200BCB-DFC6-4153-9BD4-785BC768B26B}.Release|Any CPU.Build.0 = Release|Any CPU - {CA200BCB-DFC6-4153-9BD4-785BC768B26B}.Release|Win32.ActiveCfg = Release|x86 - {CA200BCB-DFC6-4153-9BD4-785BC768B26B}.Release|Win32.Build.0 = Release|x86 {CA200BCB-DFC6-4153-9BD4-785BC768B26B}.Release|x64.ActiveCfg = Release|x64 {CA200BCB-DFC6-4153-9BD4-785BC768B26B}.Release|x64.Build.0 = Release|x64 {CA200BCB-DFC6-4153-9BD4-785BC768B26B}.Release|x86.ActiveCfg = Release|x86 {CA200BCB-DFC6-4153-9BD4-785BC768B26B}.Release|x86.Build.0 = Release|x86 {5CCCB9CF-0384-458F-BA08-72B73866840F}.Debug|Any CPU.ActiveCfg = Debug|x64 - {5CCCB9CF-0384-458F-BA08-72B73866840F}.Debug|Win32.ActiveCfg = Debug|Win32 - {5CCCB9CF-0384-458F-BA08-72B73866840F}.Debug|Win32.Build.0 = Debug|Win32 {5CCCB9CF-0384-458F-BA08-72B73866840F}.Debug|x64.ActiveCfg = Debug|x64 {5CCCB9CF-0384-458F-BA08-72B73866840F}.Debug|x64.Build.0 = Debug|x64 {5CCCB9CF-0384-458F-BA08-72B73866840F}.Debug|x86.ActiveCfg = Debug|Win32 {5CCCB9CF-0384-458F-BA08-72B73866840F}.Debug|x86.Build.0 = Debug|Win32 {5CCCB9CF-0384-458F-BA08-72B73866840F}.Release|Any CPU.ActiveCfg = Release|x64 - {5CCCB9CF-0384-458F-BA08-72B73866840F}.Release|Win32.ActiveCfg = Release|Win32 - {5CCCB9CF-0384-458F-BA08-72B73866840F}.Release|Win32.Build.0 = Release|Win32 {5CCCB9CF-0384-458F-BA08-72B73866840F}.Release|x64.ActiveCfg = Release|x64 {5CCCB9CF-0384-458F-BA08-72B73866840F}.Release|x64.Build.0 = Release|x64 {5CCCB9CF-0384-458F-BA08-72B73866840F}.Release|x86.ActiveCfg = Release|Win32 {5CCCB9CF-0384-458F-BA08-72B73866840F}.Release|x86.Build.0 = Release|Win32 {A5A8D8FA-9E32-4010-8AAF-AE580C5AF728}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {A5A8D8FA-9E32-4010-8AAF-AE580C5AF728}.Debug|Any CPU.Build.0 = Debug|Any CPU - {A5A8D8FA-9E32-4010-8AAF-AE580C5AF728}.Debug|Win32.ActiveCfg = Debug|x86 - {A5A8D8FA-9E32-4010-8AAF-AE580C5AF728}.Debug|Win32.Build.0 = Debug|x86 {A5A8D8FA-9E32-4010-8AAF-AE580C5AF728}.Debug|x64.ActiveCfg = Debug|x64 {A5A8D8FA-9E32-4010-8AAF-AE580C5AF728}.Debug|x64.Build.0 = Debug|x64 {A5A8D8FA-9E32-4010-8AAF-AE580C5AF728}.Debug|x86.ActiveCfg = Debug|x86 {A5A8D8FA-9E32-4010-8AAF-AE580C5AF728}.Debug|x86.Build.0 = Debug|x86 {A5A8D8FA-9E32-4010-8AAF-AE580C5AF728}.Release|Any CPU.ActiveCfg = Release|Any CPU {A5A8D8FA-9E32-4010-8AAF-AE580C5AF728}.Release|Any CPU.Build.0 = Release|Any CPU - {A5A8D8FA-9E32-4010-8AAF-AE580C5AF728}.Release|Win32.ActiveCfg = Release|x86 - {A5A8D8FA-9E32-4010-8AAF-AE580C5AF728}.Release|Win32.Build.0 = Release|x86 {A5A8D8FA-9E32-4010-8AAF-AE580C5AF728}.Release|x64.ActiveCfg = Release|x64 {A5A8D8FA-9E32-4010-8AAF-AE580C5AF728}.Release|x64.Build.0 = Release|x64 {A5A8D8FA-9E32-4010-8AAF-AE580C5AF728}.Release|x86.ActiveCfg = Release|x86 {A5A8D8FA-9E32-4010-8AAF-AE580C5AF728}.Release|x86.Build.0 = Release|x86 {4911BD82-49EF-4858-8B51-5394F86739A4}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {4911BD82-49EF-4858-8B51-5394F86739A4}.Debug|Any CPU.Build.0 = Debug|Any CPU - {4911BD82-49EF-4858-8B51-5394F86739A4}.Debug|Win32.ActiveCfg = Debug|x86 - {4911BD82-49EF-4858-8B51-5394F86739A4}.Debug|Win32.Build.0 = Debug|x86 {4911BD82-49EF-4858-8B51-5394F86739A4}.Debug|x64.ActiveCfg = Debug|x64 {4911BD82-49EF-4858-8B51-5394F86739A4}.Debug|x64.Build.0 = Debug|x64 {4911BD82-49EF-4858-8B51-5394F86739A4}.Debug|x86.ActiveCfg = Debug|x86 {4911BD82-49EF-4858-8B51-5394F86739A4}.Debug|x86.Build.0 = Debug|x86 {4911BD82-49EF-4858-8B51-5394F86739A4}.Release|Any CPU.ActiveCfg = Release|Any CPU {4911BD82-49EF-4858-8B51-5394F86739A4}.Release|Any CPU.Build.0 = Release|Any CPU - {4911BD82-49EF-4858-8B51-5394F86739A4}.Release|Win32.ActiveCfg = Release|x86 - {4911BD82-49EF-4858-8B51-5394F86739A4}.Release|Win32.Build.0 = Release|x86 {4911BD82-49EF-4858-8B51-5394F86739A4}.Release|x64.ActiveCfg = Release|x64 {4911BD82-49EF-4858-8B51-5394F86739A4}.Release|x64.Build.0 = Release|x64 {4911BD82-49EF-4858-8B51-5394F86739A4}.Release|x86.ActiveCfg = Release|x86 {4911BD82-49EF-4858-8B51-5394F86739A4}.Release|x86.Build.0 = Release|x86 + {32338A04-5B6B-4C63-8EE7-C6400F73B5D7}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {32338A04-5B6B-4C63-8EE7-C6400F73B5D7}.Debug|Any CPU.Build.0 = Debug|Any CPU + {32338A04-5B6B-4C63-8EE7-C6400F73B5D7}.Debug|x64.ActiveCfg = Debug|x64 + {32338A04-5B6B-4C63-8EE7-C6400F73B5D7}.Debug|x64.Build.0 = Debug|x64 + {32338A04-5B6B-4C63-8EE7-C6400F73B5D7}.Debug|x86.ActiveCfg = Debug|x86 + {32338A04-5B6B-4C63-8EE7-C6400F73B5D7}.Debug|x86.Build.0 = Debug|x86 + {32338A04-5B6B-4C63-8EE7-C6400F73B5D7}.Release|Any CPU.ActiveCfg = Release|Any CPU + {32338A04-5B6B-4C63-8EE7-C6400F73B5D7}.Release|x64.ActiveCfg = Release|x64 + {32338A04-5B6B-4C63-8EE7-C6400F73B5D7}.Release|x64.Build.0 = Release|x64 + {32338A04-5B6B-4C63-8EE7-C6400F73B5D7}.Release|x86.ActiveCfg = Release|x86 + {32338A04-5B6B-4C63-8EE7-C6400F73B5D7}.Release|x86.Build.0 = Release|x86 + {6458A13A-30EF-45A9-9D58-E5031B17BEE2}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {6458A13A-30EF-45A9-9D58-E5031B17BEE2}.Debug|Any CPU.Build.0 = Debug|Any CPU + {6458A13A-30EF-45A9-9D58-E5031B17BEE2}.Debug|x64.ActiveCfg = Debug|x64 + {6458A13A-30EF-45A9-9D58-E5031B17BEE2}.Debug|x64.Build.0 = Debug|x64 + {6458A13A-30EF-45A9-9D58-E5031B17BEE2}.Debug|x86.ActiveCfg = Debug|x86 + {6458A13A-30EF-45A9-9D58-E5031B17BEE2}.Debug|x86.Build.0 = Debug|x86 + {6458A13A-30EF-45A9-9D58-E5031B17BEE2}.Release|Any CPU.ActiveCfg = Release|Any CPU + {6458A13A-30EF-45A9-9D58-E5031B17BEE2}.Release|Any CPU.Build.0 = Release|Any CPU + {6458A13A-30EF-45A9-9D58-E5031B17BEE2}.Release|x64.ActiveCfg = Release|x64 + {6458A13A-30EF-45A9-9D58-E5031B17BEE2}.Release|x64.Build.0 = Release|x64 + {6458A13A-30EF-45A9-9D58-E5031B17BEE2}.Release|x86.ActiveCfg = Release|x86 + {6458A13A-30EF-45A9-9D58-E5031B17BEE2}.Release|x86.Build.0 = Release|x86 + {F2EC7193-D5E5-4252-9803-5CEB407E910F}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {F2EC7193-D5E5-4252-9803-5CEB407E910F}.Debug|Any CPU.Build.0 = Debug|Any CPU + {F2EC7193-D5E5-4252-9803-5CEB407E910F}.Debug|x64.ActiveCfg = Debug|x64 + {F2EC7193-D5E5-4252-9803-5CEB407E910F}.Debug|x64.Build.0 = Debug|x64 + {F2EC7193-D5E5-4252-9803-5CEB407E910F}.Debug|x86.ActiveCfg = Debug|x86 + {F2EC7193-D5E5-4252-9803-5CEB407E910F}.Debug|x86.Build.0 = Debug|x86 + {F2EC7193-D5E5-4252-9803-5CEB407E910F}.Release|Any CPU.ActiveCfg = Release|Any CPU + {F2EC7193-D5E5-4252-9803-5CEB407E910F}.Release|Any CPU.Build.0 = Release|Any CPU + {F2EC7193-D5E5-4252-9803-5CEB407E910F}.Release|x64.ActiveCfg = Release|x64 + {F2EC7193-D5E5-4252-9803-5CEB407E910F}.Release|x64.Build.0 = Release|x64 + {F2EC7193-D5E5-4252-9803-5CEB407E910F}.Release|x86.ActiveCfg = Release|x86 + {F2EC7193-D5E5-4252-9803-5CEB407E910F}.Release|x86.Build.0 = Release|x86 EndGlobalSection GlobalSection(SolutionProperties) = preSolution HideSolutionNode = FALSE @@ -209,6 +208,7 @@ Global {9AE965C4-301E-4C01-B90F-297AF341ACC6} = {85F88959-C9E9-4989-ACB1-67BA9D1BEFE7} {CC2E74B6-534A-43D8-9F16-AC03FE955000} = {85F88959-C9E9-4989-ACB1-67BA9D1BEFE7} {E70FA90A-7012-4A52-86B5-362B699D1540} = {85F88959-C9E9-4989-ACB1-67BA9D1BEFE7} + {F2EC7193-D5E5-4252-9803-5CEB407E910F} = {85F88959-C9E9-4989-ACB1-67BA9D1BEFE7} {0B9C97D4-61B8-4294-A1DF-BA90752A1779} = {8B179853-B7D6-479C-B8B2-6CBCE835D040} {4CEFBC84-C215-11DB-8314-0800200C9A66} = {8B179853-B7D6-479C-B8B2-6CBCE835D040} {5CCCB9CF-0384-458F-BA08-72B73866840F} = {8B179853-B7D6-479C-B8B2-6CBCE835D040} diff --git a/CUETools/frmCUETools.Designer.cs b/CUETools/frmCUETools.Designer.cs index 388837d..41748d1 100644 --- a/CUETools/frmCUETools.Designer.cs +++ b/CUETools/frmCUETools.Designer.cs @@ -71,6 +71,7 @@ namespace JDP { this.btnCUECreator = new System.Windows.Forms.Button(); this.btnStop = new System.Windows.Forms.Button(); this.btnPause = new System.Windows.Forms.Button(); + this.btnResume = new System.Windows.Forms.Button(); this.grpCUEPaths.SuspendLayout(); this.grpOutputStyle.SuspendLayout(); this.grpOutputPathGeneration.SuspendLayout(); @@ -81,78 +82,125 @@ namespace JDP { // // btnConvert // + this.btnConvert.AccessibleDescription = null; + this.btnConvert.AccessibleName = null; resources.ApplyResources(this.btnConvert, "btnConvert"); + this.btnConvert.BackgroundImage = null; + this.btnConvert.Font = null; this.btnConvert.Name = "btnConvert"; + this.toolTip1.SetToolTip(this.btnConvert, resources.GetString("btnConvert.ToolTip")); this.btnConvert.UseVisualStyleBackColor = true; this.btnConvert.Click += new System.EventHandler(this.btnConvert_Click); // // grpCUEPaths // + this.grpCUEPaths.AccessibleDescription = null; + this.grpCUEPaths.AccessibleName = null; + resources.ApplyResources(this.grpCUEPaths, "grpCUEPaths"); + this.grpCUEPaths.BackgroundImage = null; this.grpCUEPaths.Controls.Add(this.btnBrowseOutput); this.grpCUEPaths.Controls.Add(this.btnBrowseInput); this.grpCUEPaths.Controls.Add(this.lblOutput); this.grpCUEPaths.Controls.Add(this.lblInput); this.grpCUEPaths.Controls.Add(this.txtOutputPath); this.grpCUEPaths.Controls.Add(this.txtInputPath); - resources.ApplyResources(this.grpCUEPaths, "grpCUEPaths"); + this.grpCUEPaths.Font = null; this.grpCUEPaths.Name = "grpCUEPaths"; this.grpCUEPaths.TabStop = false; + this.toolTip1.SetToolTip(this.grpCUEPaths, resources.GetString("grpCUEPaths.ToolTip")); // // btnBrowseOutput // + this.btnBrowseOutput.AccessibleDescription = null; + this.btnBrowseOutput.AccessibleName = null; resources.ApplyResources(this.btnBrowseOutput, "btnBrowseOutput"); + this.btnBrowseOutput.BackgroundImage = null; + this.btnBrowseOutput.Font = null; this.btnBrowseOutput.Name = "btnBrowseOutput"; + this.toolTip1.SetToolTip(this.btnBrowseOutput, resources.GetString("btnBrowseOutput.ToolTip")); this.btnBrowseOutput.UseVisualStyleBackColor = true; this.btnBrowseOutput.Click += new System.EventHandler(this.btnBrowseOutput_Click); // // btnBrowseInput // + this.btnBrowseInput.AccessibleDescription = null; + this.btnBrowseInput.AccessibleName = null; resources.ApplyResources(this.btnBrowseInput, "btnBrowseInput"); + this.btnBrowseInput.BackgroundImage = null; + this.btnBrowseInput.Font = null; this.btnBrowseInput.Name = "btnBrowseInput"; + this.toolTip1.SetToolTip(this.btnBrowseInput, resources.GetString("btnBrowseInput.ToolTip")); this.btnBrowseInput.UseVisualStyleBackColor = true; this.btnBrowseInput.Click += new System.EventHandler(this.btnBrowseInput_Click); // // lblOutput // + this.lblOutput.AccessibleDescription = null; + this.lblOutput.AccessibleName = null; resources.ApplyResources(this.lblOutput, "lblOutput"); + this.lblOutput.Font = null; this.lblOutput.Name = "lblOutput"; + this.toolTip1.SetToolTip(this.lblOutput, resources.GetString("lblOutput.ToolTip")); // // lblInput // + this.lblInput.AccessibleDescription = null; + this.lblInput.AccessibleName = null; resources.ApplyResources(this.lblInput, "lblInput"); + this.lblInput.Font = null; this.lblInput.Name = "lblInput"; + this.toolTip1.SetToolTip(this.lblInput, resources.GetString("lblInput.ToolTip")); // // txtOutputPath // + this.txtOutputPath.AccessibleDescription = null; + this.txtOutputPath.AccessibleName = null; this.txtOutputPath.AllowDrop = true; resources.ApplyResources(this.txtOutputPath, "txtOutputPath"); + this.txtOutputPath.BackgroundImage = null; + this.txtOutputPath.Font = null; this.txtOutputPath.Name = "txtOutputPath"; + this.toolTip1.SetToolTip(this.txtOutputPath, resources.GetString("txtOutputPath.ToolTip")); this.txtOutputPath.DragDrop += new System.Windows.Forms.DragEventHandler(this.PathTextBox_DragDrop); this.txtOutputPath.DragEnter += new System.Windows.Forms.DragEventHandler(this.PathTextBox_DragEnter); // // txtInputPath // + this.txtInputPath.AccessibleDescription = null; + this.txtInputPath.AccessibleName = null; this.txtInputPath.AllowDrop = true; resources.ApplyResources(this.txtInputPath, "txtInputPath"); + this.txtInputPath.BackgroundImage = null; + this.txtInputPath.Font = null; this.txtInputPath.Name = "txtInputPath"; + this.toolTip1.SetToolTip(this.txtInputPath, resources.GetString("txtInputPath.ToolTip")); this.txtInputPath.TextChanged += new System.EventHandler(this.txtInputPath_TextChanged); this.txtInputPath.DragDrop += new System.Windows.Forms.DragEventHandler(this.PathTextBox_DragDrop); this.txtInputPath.DragEnter += new System.Windows.Forms.DragEventHandler(this.PathTextBox_DragEnter); // // grpOutputStyle // + this.grpOutputStyle.AccessibleDescription = null; + this.grpOutputStyle.AccessibleName = null; + resources.ApplyResources(this.grpOutputStyle, "grpOutputStyle"); + this.grpOutputStyle.BackgroundImage = null; this.grpOutputStyle.Controls.Add(this.rbEmbedCUE); this.grpOutputStyle.Controls.Add(this.rbGapsLeftOut); this.grpOutputStyle.Controls.Add(this.rbGapsPrepended); this.grpOutputStyle.Controls.Add(this.rbGapsAppended); this.grpOutputStyle.Controls.Add(this.rbSingleFile); - resources.ApplyResources(this.grpOutputStyle, "grpOutputStyle"); + this.grpOutputStyle.Font = null; this.grpOutputStyle.Name = "grpOutputStyle"; this.grpOutputStyle.TabStop = false; + this.toolTip1.SetToolTip(this.grpOutputStyle, resources.GetString("grpOutputStyle.ToolTip")); // // rbEmbedCUE // + this.rbEmbedCUE.AccessibleDescription = null; + this.rbEmbedCUE.AccessibleName = null; resources.ApplyResources(this.rbEmbedCUE, "rbEmbedCUE"); + this.rbEmbedCUE.BackgroundImage = null; + this.rbEmbedCUE.Font = null; this.rbEmbedCUE.Name = "rbEmbedCUE"; this.rbEmbedCUE.TabStop = true; this.toolTip1.SetToolTip(this.rbEmbedCUE, resources.GetString("rbEmbedCUE.ToolTip")); @@ -161,29 +209,45 @@ namespace JDP { // // rbGapsLeftOut // + this.rbGapsLeftOut.AccessibleDescription = null; + this.rbGapsLeftOut.AccessibleName = null; resources.ApplyResources(this.rbGapsLeftOut, "rbGapsLeftOut"); + this.rbGapsLeftOut.BackgroundImage = null; + this.rbGapsLeftOut.Font = null; this.rbGapsLeftOut.Name = "rbGapsLeftOut"; this.toolTip1.SetToolTip(this.rbGapsLeftOut, resources.GetString("rbGapsLeftOut.ToolTip")); this.rbGapsLeftOut.UseVisualStyleBackColor = true; // // rbGapsPrepended // + this.rbGapsPrepended.AccessibleDescription = null; + this.rbGapsPrepended.AccessibleName = null; resources.ApplyResources(this.rbGapsPrepended, "rbGapsPrepended"); + this.rbGapsPrepended.BackgroundImage = null; + this.rbGapsPrepended.Font = null; this.rbGapsPrepended.Name = "rbGapsPrepended"; this.toolTip1.SetToolTip(this.rbGapsPrepended, resources.GetString("rbGapsPrepended.ToolTip")); this.rbGapsPrepended.UseVisualStyleBackColor = true; // // rbGapsAppended // + this.rbGapsAppended.AccessibleDescription = null; + this.rbGapsAppended.AccessibleName = null; resources.ApplyResources(this.rbGapsAppended, "rbGapsAppended"); + this.rbGapsAppended.BackgroundImage = null; + this.rbGapsAppended.Font = null; this.rbGapsAppended.Name = "rbGapsAppended"; this.toolTip1.SetToolTip(this.rbGapsAppended, resources.GetString("rbGapsAppended.ToolTip")); this.rbGapsAppended.UseVisualStyleBackColor = true; // // rbSingleFile // + this.rbSingleFile.AccessibleDescription = null; + this.rbSingleFile.AccessibleName = null; resources.ApplyResources(this.rbSingleFile, "rbSingleFile"); + this.rbSingleFile.BackgroundImage = null; this.rbSingleFile.Checked = true; + this.rbSingleFile.Font = null; this.rbSingleFile.Name = "rbSingleFile"; this.rbSingleFile.TabStop = true; this.toolTip1.SetToolTip(this.rbSingleFile, resources.GetString("rbSingleFile.ToolTip")); @@ -191,13 +255,22 @@ namespace JDP { // // btnAbout // + this.btnAbout.AccessibleDescription = null; + this.btnAbout.AccessibleName = null; resources.ApplyResources(this.btnAbout, "btnAbout"); + this.btnAbout.BackgroundImage = null; + this.btnAbout.Font = null; this.btnAbout.Name = "btnAbout"; + this.toolTip1.SetToolTip(this.btnAbout, resources.GetString("btnAbout.ToolTip")); this.btnAbout.UseVisualStyleBackColor = true; this.btnAbout.Click += new System.EventHandler(this.btnAbout_Click); // // grpOutputPathGeneration // + this.grpOutputPathGeneration.AccessibleDescription = null; + this.grpOutputPathGeneration.AccessibleName = null; + resources.ApplyResources(this.grpOutputPathGeneration, "grpOutputPathGeneration"); + this.grpOutputPathGeneration.BackgroundImage = null; this.grpOutputPathGeneration.Controls.Add(this.txtCustomFormat); this.grpOutputPathGeneration.Controls.Add(this.rbCustomFormat); this.grpOutputPathGeneration.Controls.Add(this.txtCreateSubdirectory); @@ -205,80 +278,130 @@ namespace JDP { this.grpOutputPathGeneration.Controls.Add(this.rbCreateSubdirectory); this.grpOutputPathGeneration.Controls.Add(this.rbAppendFilename); this.grpOutputPathGeneration.Controls.Add(this.txtAppendFilename); - resources.ApplyResources(this.grpOutputPathGeneration, "grpOutputPathGeneration"); + this.grpOutputPathGeneration.Font = null; this.grpOutputPathGeneration.Name = "grpOutputPathGeneration"; this.grpOutputPathGeneration.TabStop = false; + this.toolTip1.SetToolTip(this.grpOutputPathGeneration, resources.GetString("grpOutputPathGeneration.ToolTip")); // // txtCustomFormat // + this.txtCustomFormat.AccessibleDescription = null; + this.txtCustomFormat.AccessibleName = null; resources.ApplyResources(this.txtCustomFormat, "txtCustomFormat"); + this.txtCustomFormat.BackgroundImage = null; + this.txtCustomFormat.Font = null; this.txtCustomFormat.Name = "txtCustomFormat"; + this.toolTip1.SetToolTip(this.txtCustomFormat, resources.GetString("txtCustomFormat.ToolTip")); this.txtCustomFormat.TextChanged += new System.EventHandler(this.txtCustomFormat_TextChanged); // // rbCustomFormat // + this.rbCustomFormat.AccessibleDescription = null; + this.rbCustomFormat.AccessibleName = null; resources.ApplyResources(this.rbCustomFormat, "rbCustomFormat"); + this.rbCustomFormat.BackgroundImage = null; + this.rbCustomFormat.Font = null; this.rbCustomFormat.Name = "rbCustomFormat"; this.rbCustomFormat.TabStop = true; + this.toolTip1.SetToolTip(this.rbCustomFormat, resources.GetString("rbCustomFormat.ToolTip")); this.rbCustomFormat.UseVisualStyleBackColor = true; this.rbCustomFormat.CheckedChanged += new System.EventHandler(this.rbCustomFormat_CheckedChanged); // // txtCreateSubdirectory // + this.txtCreateSubdirectory.AccessibleDescription = null; + this.txtCreateSubdirectory.AccessibleName = null; resources.ApplyResources(this.txtCreateSubdirectory, "txtCreateSubdirectory"); + this.txtCreateSubdirectory.BackgroundImage = null; + this.txtCreateSubdirectory.Font = null; this.txtCreateSubdirectory.Name = "txtCreateSubdirectory"; + this.toolTip1.SetToolTip(this.txtCreateSubdirectory, resources.GetString("txtCreateSubdirectory.ToolTip")); this.txtCreateSubdirectory.TextChanged += new System.EventHandler(this.txtCreateSubdirectory_TextChanged); // // rbDontGenerate // + this.rbDontGenerate.AccessibleDescription = null; + this.rbDontGenerate.AccessibleName = null; resources.ApplyResources(this.rbDontGenerate, "rbDontGenerate"); + this.rbDontGenerate.BackgroundImage = null; + this.rbDontGenerate.Font = null; this.rbDontGenerate.Name = "rbDontGenerate"; + this.toolTip1.SetToolTip(this.rbDontGenerate, resources.GetString("rbDontGenerate.ToolTip")); this.rbDontGenerate.UseVisualStyleBackColor = true; // // rbCreateSubdirectory // + this.rbCreateSubdirectory.AccessibleDescription = null; + this.rbCreateSubdirectory.AccessibleName = null; resources.ApplyResources(this.rbCreateSubdirectory, "rbCreateSubdirectory"); + this.rbCreateSubdirectory.BackgroundImage = null; this.rbCreateSubdirectory.Checked = true; + this.rbCreateSubdirectory.Font = null; this.rbCreateSubdirectory.Name = "rbCreateSubdirectory"; this.rbCreateSubdirectory.TabStop = true; + this.toolTip1.SetToolTip(this.rbCreateSubdirectory, resources.GetString("rbCreateSubdirectory.ToolTip")); this.rbCreateSubdirectory.UseVisualStyleBackColor = true; this.rbCreateSubdirectory.CheckedChanged += new System.EventHandler(this.rbCreateSubdirectory_CheckedChanged); // // rbAppendFilename // + this.rbAppendFilename.AccessibleDescription = null; + this.rbAppendFilename.AccessibleName = null; resources.ApplyResources(this.rbAppendFilename, "rbAppendFilename"); + this.rbAppendFilename.BackgroundImage = null; + this.rbAppendFilename.Font = null; this.rbAppendFilename.Name = "rbAppendFilename"; + this.toolTip1.SetToolTip(this.rbAppendFilename, resources.GetString("rbAppendFilename.ToolTip")); this.rbAppendFilename.UseVisualStyleBackColor = true; this.rbAppendFilename.CheckedChanged += new System.EventHandler(this.rbAppendFilename_CheckedChanged); // // txtAppendFilename // + this.txtAppendFilename.AccessibleDescription = null; + this.txtAppendFilename.AccessibleName = null; resources.ApplyResources(this.txtAppendFilename, "txtAppendFilename"); + this.txtAppendFilename.BackgroundImage = null; + this.txtAppendFilename.Font = null; this.txtAppendFilename.Name = "txtAppendFilename"; + this.toolTip1.SetToolTip(this.txtAppendFilename, resources.GetString("txtAppendFilename.ToolTip")); this.txtAppendFilename.TextChanged += new System.EventHandler(this.txtAppendFilename_TextChanged); // // grpAudioOutput // + this.grpAudioOutput.AccessibleDescription = null; + this.grpAudioOutput.AccessibleName = null; + resources.ApplyResources(this.grpAudioOutput, "grpAudioOutput"); + this.grpAudioOutput.BackgroundImage = null; this.grpAudioOutput.Controls.Add(this.rbAPE); this.grpAudioOutput.Controls.Add(this.rbNoAudio); this.grpAudioOutput.Controls.Add(this.rbWavPack); this.grpAudioOutput.Controls.Add(this.rbFLAC); this.grpAudioOutput.Controls.Add(this.rbWAV); - resources.ApplyResources(this.grpAudioOutput, "grpAudioOutput"); + this.grpAudioOutput.Font = null; this.grpAudioOutput.Name = "grpAudioOutput"; this.grpAudioOutput.TabStop = false; + this.toolTip1.SetToolTip(this.grpAudioOutput, resources.GetString("grpAudioOutput.ToolTip")); // // rbAPE // + this.rbAPE.AccessibleDescription = null; + this.rbAPE.AccessibleName = null; resources.ApplyResources(this.rbAPE, "rbAPE"); + this.rbAPE.BackgroundImage = null; + this.rbAPE.Font = null; this.rbAPE.Name = "rbAPE"; this.rbAPE.TabStop = true; + this.toolTip1.SetToolTip(this.rbAPE, resources.GetString("rbAPE.ToolTip")); this.rbAPE.UseVisualStyleBackColor = true; this.rbAPE.CheckedChanged += new System.EventHandler(this.rbAPE_CheckedChanged); // // rbNoAudio // + this.rbNoAudio.AccessibleDescription = null; + this.rbNoAudio.AccessibleName = null; resources.ApplyResources(this.rbNoAudio, "rbNoAudio"); + this.rbNoAudio.BackgroundImage = null; + this.rbNoAudio.Font = null; this.rbNoAudio.Name = "rbNoAudio"; this.toolTip1.SetToolTip(this.rbNoAudio, resources.GetString("rbNoAudio.ToolTip")); this.rbNoAudio.UseVisualStyleBackColor = true; @@ -286,84 +409,135 @@ namespace JDP { // // rbWavPack // + this.rbWavPack.AccessibleDescription = null; + this.rbWavPack.AccessibleName = null; resources.ApplyResources(this.rbWavPack, "rbWavPack"); + this.rbWavPack.BackgroundImage = null; + this.rbWavPack.Font = null; this.rbWavPack.Name = "rbWavPack"; + this.toolTip1.SetToolTip(this.rbWavPack, resources.GetString("rbWavPack.ToolTip")); this.rbWavPack.UseVisualStyleBackColor = true; this.rbWavPack.CheckedChanged += new System.EventHandler(this.rbWavPack_CheckedChanged); // // rbFLAC // + this.rbFLAC.AccessibleDescription = null; + this.rbFLAC.AccessibleName = null; resources.ApplyResources(this.rbFLAC, "rbFLAC"); + this.rbFLAC.BackgroundImage = null; + this.rbFLAC.Font = null; this.rbFLAC.Name = "rbFLAC"; + this.toolTip1.SetToolTip(this.rbFLAC, resources.GetString("rbFLAC.ToolTip")); this.rbFLAC.UseVisualStyleBackColor = true; this.rbFLAC.CheckedChanged += new System.EventHandler(this.rbFLAC_CheckedChanged); // // rbWAV // + this.rbWAV.AccessibleDescription = null; + this.rbWAV.AccessibleName = null; resources.ApplyResources(this.rbWAV, "rbWAV"); + this.rbWAV.BackgroundImage = null; this.rbWAV.Checked = true; + this.rbWAV.Font = null; this.rbWAV.Name = "rbWAV"; this.rbWAV.TabStop = true; + this.toolTip1.SetToolTip(this.rbWAV, resources.GetString("rbWAV.ToolTip")); this.rbWAV.UseVisualStyleBackColor = true; this.rbWAV.CheckedChanged += new System.EventHandler(this.rbWAV_CheckedChanged); // // btnBatch // + this.btnBatch.AccessibleDescription = null; + this.btnBatch.AccessibleName = null; resources.ApplyResources(this.btnBatch, "btnBatch"); + this.btnBatch.BackgroundImage = null; + this.btnBatch.Font = null; this.btnBatch.Name = "btnBatch"; + this.toolTip1.SetToolTip(this.btnBatch, resources.GetString("btnBatch.ToolTip")); this.btnBatch.UseVisualStyleBackColor = true; this.btnBatch.Click += new System.EventHandler(this.btnBatch_Click); // // btnFilenameCorrector // + this.btnFilenameCorrector.AccessibleDescription = null; + this.btnFilenameCorrector.AccessibleName = null; resources.ApplyResources(this.btnFilenameCorrector, "btnFilenameCorrector"); + this.btnFilenameCorrector.BackgroundImage = null; + this.btnFilenameCorrector.Font = null; this.btnFilenameCorrector.Name = "btnFilenameCorrector"; + this.toolTip1.SetToolTip(this.btnFilenameCorrector, resources.GetString("btnFilenameCorrector.ToolTip")); this.btnFilenameCorrector.UseVisualStyleBackColor = true; this.btnFilenameCorrector.Click += new System.EventHandler(this.btnFilenameCorrector_Click); // // btnSettings // + this.btnSettings.AccessibleDescription = null; + this.btnSettings.AccessibleName = null; resources.ApplyResources(this.btnSettings, "btnSettings"); + this.btnSettings.BackgroundImage = null; + this.btnSettings.Font = null; this.btnSettings.Name = "btnSettings"; + this.toolTip1.SetToolTip(this.btnSettings, resources.GetString("btnSettings.ToolTip")); this.btnSettings.UseVisualStyleBackColor = true; this.btnSettings.Click += new System.EventHandler(this.btnSettings_Click); // // grpAccurateRip // + this.grpAccurateRip.AccessibleDescription = null; + this.grpAccurateRip.AccessibleName = null; + resources.ApplyResources(this.grpAccurateRip, "grpAccurateRip"); + this.grpAccurateRip.BackgroundImage = null; this.grpAccurateRip.Controls.Add(this.label1); this.grpAccurateRip.Controls.Add(this.txtDataTrackLength); this.grpAccurateRip.Controls.Add(this.rbArApplyOffset); this.grpAccurateRip.Controls.Add(this.rbArVerify); this.grpAccurateRip.Controls.Add(this.rbArNone); - resources.ApplyResources(this.grpAccurateRip, "grpAccurateRip"); + this.grpAccurateRip.Font = null; this.grpAccurateRip.Name = "grpAccurateRip"; this.grpAccurateRip.TabStop = false; + this.toolTip1.SetToolTip(this.grpAccurateRip, resources.GetString("grpAccurateRip.ToolTip")); // // label1 // + this.label1.AccessibleDescription = null; + this.label1.AccessibleName = null; resources.ApplyResources(this.label1, "label1"); + this.label1.Font = null; this.label1.Name = "label1"; + this.toolTip1.SetToolTip(this.label1, resources.GetString("label1.ToolTip")); // // txtDataTrackLength // + this.txtDataTrackLength.AccessibleDescription = null; + this.txtDataTrackLength.AccessibleName = null; + resources.ApplyResources(this.txtDataTrackLength, "txtDataTrackLength"); + this.txtDataTrackLength.BackgroundImage = null; this.txtDataTrackLength.Culture = new System.Globalization.CultureInfo(""); this.txtDataTrackLength.CutCopyMaskFormat = System.Windows.Forms.MaskFormat.IncludePromptAndLiterals; + this.txtDataTrackLength.Font = null; this.txtDataTrackLength.InsertKeyMode = System.Windows.Forms.InsertKeyMode.Overwrite; - resources.ApplyResources(this.txtDataTrackLength, "txtDataTrackLength"); this.txtDataTrackLength.Name = "txtDataTrackLength"; this.txtDataTrackLength.TextMaskFormat = System.Windows.Forms.MaskFormat.IncludePromptAndLiterals; this.toolTip1.SetToolTip(this.txtDataTrackLength, resources.GetString("txtDataTrackLength.ToolTip")); // // rbArApplyOffset // + this.rbArApplyOffset.AccessibleDescription = null; + this.rbArApplyOffset.AccessibleName = null; resources.ApplyResources(this.rbArApplyOffset, "rbArApplyOffset"); + this.rbArApplyOffset.BackgroundImage = null; + this.rbArApplyOffset.Font = null; this.rbArApplyOffset.Name = "rbArApplyOffset"; this.toolTip1.SetToolTip(this.rbArApplyOffset, resources.GetString("rbArApplyOffset.ToolTip")); this.rbArApplyOffset.UseVisualStyleBackColor = true; // // rbArVerify // + this.rbArVerify.AccessibleDescription = null; + this.rbArVerify.AccessibleName = null; resources.ApplyResources(this.rbArVerify, "rbArVerify"); + this.rbArVerify.BackgroundImage = null; + this.rbArVerify.Font = null; this.rbArVerify.Name = "rbArVerify"; this.toolTip1.SetToolTip(this.rbArVerify, resources.GetString("rbArVerify.ToolTip")); this.rbArVerify.UseVisualStyleBackColor = true; @@ -371,8 +545,12 @@ namespace JDP { // // rbArNone // + this.rbArNone.AccessibleDescription = null; + this.rbArNone.AccessibleName = null; resources.ApplyResources(this.rbArNone, "rbArNone"); + this.rbArNone.BackgroundImage = null; this.rbArNone.Checked = true; + this.rbArNone.Font = null; this.rbArNone.Name = "rbArNone"; this.rbArNone.TabStop = true; this.toolTip1.SetToolTip(this.rbArNone, resources.GetString("rbArNone.ToolTip")); @@ -380,32 +558,44 @@ namespace JDP { // // statusStrip1 // + this.statusStrip1.AccessibleDescription = null; + this.statusStrip1.AccessibleName = null; + resources.ApplyResources(this.statusStrip1, "statusStrip1"); + this.statusStrip1.BackgroundImage = null; + this.statusStrip1.Font = null; this.statusStrip1.Items.AddRange(new System.Windows.Forms.ToolStripItem[] { this.toolStripStatusLabel1, this.toolStripProgressBar1, this.toolStripProgressBar2}); - resources.ApplyResources(this.statusStrip1, "statusStrip1"); this.statusStrip1.Name = "statusStrip1"; this.statusStrip1.SizingGrip = false; + this.toolTip1.SetToolTip(this.statusStrip1, resources.GetString("statusStrip1.ToolTip")); // // toolStripStatusLabel1 // - this.toolStripStatusLabel1.Name = "toolStripStatusLabel1"; + this.toolStripStatusLabel1.AccessibleDescription = null; + this.toolStripStatusLabel1.AccessibleName = null; resources.ApplyResources(this.toolStripStatusLabel1, "toolStripStatusLabel1"); + this.toolStripStatusLabel1.BackgroundImage = null; + this.toolStripStatusLabel1.Name = "toolStripStatusLabel1"; this.toolStripStatusLabel1.Spring = true; // // toolStripProgressBar1 // + this.toolStripProgressBar1.AccessibleDescription = null; + this.toolStripProgressBar1.AccessibleName = null; + resources.ApplyResources(this.toolStripProgressBar1, "toolStripProgressBar1"); this.toolStripProgressBar1.AutoToolTip = true; this.toolStripProgressBar1.Name = "toolStripProgressBar1"; - resources.ApplyResources(this.toolStripProgressBar1, "toolStripProgressBar1"); this.toolStripProgressBar1.Style = System.Windows.Forms.ProgressBarStyle.Continuous; // // toolStripProgressBar2 // + this.toolStripProgressBar2.AccessibleDescription = null; + this.toolStripProgressBar2.AccessibleName = null; + resources.ApplyResources(this.toolStripProgressBar2, "toolStripProgressBar2"); this.toolStripProgressBar2.AutoToolTip = true; this.toolStripProgressBar2.Name = "toolStripProgressBar2"; - resources.ApplyResources(this.toolStripProgressBar2, "toolStripProgressBar2"); this.toolStripProgressBar2.Style = System.Windows.Forms.ProgressBarStyle.Continuous; // // toolTip1 @@ -416,29 +606,60 @@ namespace JDP { // // btnCUECreator // + this.btnCUECreator.AccessibleDescription = null; + this.btnCUECreator.AccessibleName = null; resources.ApplyResources(this.btnCUECreator, "btnCUECreator"); + this.btnCUECreator.BackgroundImage = null; + this.btnCUECreator.Font = null; this.btnCUECreator.Name = "btnCUECreator"; + this.toolTip1.SetToolTip(this.btnCUECreator, resources.GetString("btnCUECreator.ToolTip")); this.btnCUECreator.UseVisualStyleBackColor = true; this.btnCUECreator.Click += new System.EventHandler(this.btnCUECreator_Click); // // btnStop // + this.btnStop.AccessibleDescription = null; + this.btnStop.AccessibleName = null; resources.ApplyResources(this.btnStop, "btnStop"); + this.btnStop.BackgroundImage = null; + this.btnStop.Font = null; this.btnStop.Name = "btnStop"; + this.toolTip1.SetToolTip(this.btnStop, resources.GetString("btnStop.ToolTip")); this.btnStop.UseVisualStyleBackColor = true; this.btnStop.Click += new System.EventHandler(this.btnStop_Click); // // btnPause // + this.btnPause.AccessibleDescription = null; + this.btnPause.AccessibleName = null; resources.ApplyResources(this.btnPause, "btnPause"); + this.btnPause.BackgroundImage = null; + this.btnPause.Font = null; this.btnPause.Name = "btnPause"; + this.toolTip1.SetToolTip(this.btnPause, resources.GetString("btnPause.ToolTip")); this.btnPause.UseVisualStyleBackColor = true; this.btnPause.Click += new System.EventHandler(this.btnPause_Click); // + // btnResume + // + this.btnResume.AccessibleDescription = null; + this.btnResume.AccessibleName = null; + resources.ApplyResources(this.btnResume, "btnResume"); + this.btnResume.BackgroundImage = null; + this.btnResume.Font = null; + this.btnResume.Name = "btnResume"; + this.toolTip1.SetToolTip(this.btnResume, resources.GetString("btnResume.ToolTip")); + this.btnResume.UseVisualStyleBackColor = true; + this.btnResume.Click += new System.EventHandler(this.btnPause_Click); + // // frmCUETools // + this.AccessibleDescription = null; + this.AccessibleName = null; resources.ApplyResources(this, "$this"); this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; + this.BackgroundImage = null; + this.Controls.Add(this.btnResume); this.Controls.Add(this.btnPause); this.Controls.Add(this.btnStop); this.Controls.Add(this.btnCUECreator); @@ -454,8 +675,10 @@ namespace JDP { this.Controls.Add(this.grpCUEPaths); this.Controls.Add(this.btnConvert); this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.FixedSingle; + this.Icon = null; this.MaximizeBox = false; this.Name = "frmCUETools"; + this.toolTip1.SetToolTip(this, resources.GetString("$this.ToolTip")); this.Load += new System.EventHandler(this.frmCUETools_Load); this.FormClosed += new System.Windows.Forms.FormClosedEventHandler(this.frmCUETools_FormClosed); this.grpCUEPaths.ResumeLayout(false); @@ -523,6 +746,7 @@ namespace JDP { private System.Windows.Forms.RadioButton rbAPE; private System.Windows.Forms.Button btnStop; private System.Windows.Forms.Button btnPause; + private System.Windows.Forms.Button btnResume; } } diff --git a/CUETools/frmCUETools.cs b/CUETools/frmCUETools.cs index 7802438..55732d7 100644 --- a/CUETools/frmCUETools.cs +++ b/CUETools/frmCUETools.cs @@ -401,8 +401,9 @@ namespace JDP { btnBatch.Enabled = !running; btnConvert.Enabled = !running; btnConvert.Visible = !running; - btnStop.Enabled = btnPause.Enabled = running; + btnStop.Enabled = btnPause.Enabled = btnResume.Enabled = running; btnStop.Visible = btnPause.Visible = running; + btnResume.Visible = false; toolStripStatusLabel1.Text = String.Empty; toolStripProgressBar1.Value = 0; toolStripProgressBar2.Value = 0; @@ -852,7 +853,7 @@ namespace JDP { string[] cueFiles = Directory.GetFiles(dir, "*.cue"); if (cueFiles.Length == 0) { - string[] audioExts = new string[] { "*.wav", "*.flac", "*.wv", "*.ape" }; + string[] audioExts = new string[] { "*.wav", "*.flac", "*.wv", "*.ape", "*.m4a" }; for (int i = 0; i < audioExts.Length; i++) { string [] audioFiles = Directory.GetFiles(dir, audioExts[i]); @@ -912,7 +913,11 @@ namespace JDP { private void btnPause_Click(object sender, EventArgs e) { if ((_workThread != null) && (_workThread.IsAlive)) + { _workClass.Pause(); + btnPause.Visible = !btnPause.Visible; + btnResume.Visible = !btnResume.Visible; + } } } diff --git a/CUETools/frmCUETools.resx b/CUETools/frmCUETools.resx index 2b3ca51..f9f9e3a 100644 --- a/CUETools/frmCUETools.resx +++ b/CUETools/frmCUETools.resx @@ -117,1192 +117,1324 @@ System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - 412, 307 + + - - 131, 23 + + + + + + 69, 17 + + + 54, 21 + + + + + + 00:00:00 + + + 178, 21 + + + 178, 21 - - 5 + + 14 - - &Go + + - - btnConvert + + 4 - - System.Windows.Forms.Button, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - $this - - - 13 - - - 452, 49 - - - 71, 23 - - - 5 - - - Browse... - - - btnBrowseOutput - - - System.Windows.Forms.Button, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - grpCUEPaths + + rbGapsLeftOut 0 - - 452, 20 + + System.Windows.Forms.GroupBox, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - 71, 23 + + CUE Style - + + + NoControl + + + 4 + + + btnPause + + 2 - - Browse... - - - btnBrowseInput - - - System.Windows.Forms.Button, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - grpCUEPaths - - - 1 - - - True - - - 8, 52 - - - 45, 13 - - - 3 - - - &Output: - - - lblOutput + + grpOutputPathGeneration System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - grpCUEPaths + + 8 - - 2 + + 66, 23 - - True + + Gaps Left Out - - 8, 24 + + System.Windows.Forms.RadioButton, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - 37, 13 + + grpOutputStyle - + + %1:-2\New\%-1\%F.cue + + + rbNoAudio + + + System.Windows.Forms.RadioButton, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + grpOutputPathGeneration + + + 4 + + + 4 + + + 78, 86 + + + 10 + + 0 - - &Input: + + 0 + + + + + + grpAccurateRip + + + System.Windows.Forms.Form, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + CenterScreen + + + System.Windows.Forms.Button, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + 551, 361 + + + 0 + + + btnAbout + + + rbEmbedCUE + + + + + + System.Windows.Forms.RadioButton, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 lblInput - - System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + System.Windows.Forms.TextBox, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + 1 + + + + + + 3 + + + System.Windows.Forms.ToolStripStatusLabel, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + btnBrowseInput + + + True + + + txtCreateSubdirectory + + + 5 + + + frmCUETools + + + 6 + + + + + + rbWavPack + + + Browse... + + + False + + + System.Windows.Forms.TextBox, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + True + + + System.Windows.Forms.Button, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + + + + $this + + + Batch... + + + 3 + + + Verify, &then encode + + + System.Windows.Forms.Button, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + rbArVerify + + + 1 + + + Create single file with embedded CUE sheet. + + + 535, 84 + + + System.Windows.Forms.RadioButton, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + 10 + + + True + + + $this + + + rbGapsPrepended + + + System.Windows.Forms.Button, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + Filename Corrector... + + + rbGapsAppended + + + grpAccurateRip + + + System.Windows.Forms.RadioButton, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + 1 + + + 551, 22 + + + NoControl + + + 452, 20 + + + 3 + + + grpOutputPathGeneration + + + True + + + True + + + NoControl + + + &None + + + 7 + + + 122, 17 + + + True + + + 3 + + + btnBrowseOutput + + + 3 + + + 6 + + + Advanced Settings... + + + 8, 24 + + + 330, 115 + + + 412, 245 + + + 9 + + + True + + + 1 + + + rbDontGenerate + + + True + + + rbCreateSubdirectory + + + True + + + grpAudioOutput + + + grpCUEPaths - + + + + + 66, 23 + + + System.Windows.Forms.TextBox, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + btnFilenameCorrector + + + 71, 23 + + + CUE Paths + + + 131, 23 + + + System.Windows.Forms.Button, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + 2 + + + $this + + + 14 + + 3 - - 59, 48 + + grpCUEPaths - - 385, 21 + + 10, 51 + + + grpCUEPaths + + + &WAV + + + System.Windows.Forms.RadioButton, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + 412, 152 + + + 4 + + + 10, 85 + + + 131, 23 + + + True + + + System.Windows.Forms.RadioButton, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + + + + btnSettings + + + $this + + + System.Windows.Forms.Button, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 4 + + + + + System.Windows.Forms.MaskedTextBox, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + CUE Sheet Creator... + + + 50, 17 + + + 2 + + + grpAccurateRip + + + &Stop + + + Wav&Pack + + + 123, 17 + + + NoControl + + + 2 + + + &Manual + + + $this + + + grpOutputStyle + + + System.Windows.Forms.RadioButton, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + rbSingleFile + + + Create multiple files with gaps left out + + + 2 + + + txtDataTrackLength + + + Tahoma, 8.25pt + + + 59, 48 + + + &Output: + + + + + + System.Windows.Forms.RadioButton, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Windows.Forms.Button, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + True + + + grpOutputPathGeneration + + + System.Windows.Forms.RadioButton, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + 92, 119 + + + 2 + + + 5 + + + Track progress + + + True + + + 4 + + + APE + + + $this + + + 104, 17 + + + grpOutputPathGeneration + + + 10, 34 + + + Not used for normal music CDs. Enhanced CDs with data tracks cannot be found in database unless you know the length of the data track. You can often find it in EAC log. If EAC log is found next to the CUE sheet, it will be parsed automaticly and you won't have to enter anything here. + + + 0 + + + btnConvert + + + + + + False + + + 3 + + + &Pause + + + True + + + grpOutputPathGeneration + + + 1 + + + grpAudioOutput + + + &Resume + + + 13 + + + $this + + + About + + + lblOutput + + + grpOutputStyle + + + AccurateRip + + + txtInputPath + + + &Embedded + + + 412, 307 + + + 0, 339 + + + System.Windows.Forms.RadioButton, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + 2 + + + Create multiple files with gaps prepended + + + System.Windows.Forms.GroupBox, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + 412, 183 + + + grpOutputStyle + + + btnCUECreator + + + 44, 17 + + + 385, 21 + + + 8, 211 + + + 10, 54 + + + &Single File + CUE + + + 10, 89 + + + 385, 21 + + + System.Windows.Forms.RadioButton, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + MiddleLeft + + + 8, 52 + + + + + + C&reate subdirectory: + + + 5 + + + + + + 0 + + + 4 + + + System.Windows.Forms.GroupBox, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Windows.Forms.Button, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + 140, 20 + + + 0 + + + 412, 307 + + + Output Path + + + 125, 17 + + + grpAudioOutput + + + txtCustomFormat + + + 412, 276 + + + $this + + + 45, 13 + + + 66, 23 + + + grpOutputPathGeneration + + + 8, 4 + + + statusStrip1 + + + + + + 120, 17 + + + System.Windows.Forms.RadioButton, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + rbWAV + + + Create single file + CUE sheet + + + + + + 10, 20 + + + 92, 17 + + + toolTip1 + + + 1 + + + 131, 23 + + + 8, 92 + + + Disk progress + + + $this + + + True + + + 452, 49 + + + &FLAC + + + 0 + + + + + + True + + + + + + 106, 17 + + + 59, 22 + + + + + + $this + + + btnStop + + + + + + New + + + + + + 0 + + + 140, 16 + + + + + + $this + + + Browse... + txtOutputPath + + 6 + + + 140, 41 + + + txtAppendFilename + + + 477, 307 + + + Contact the AccurateRip databse for validation and compare the image against database + + + 11, 87 + + + System.Windows.Forms.ToolStripProgressBar, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + 11, 70 + + + 140, 16 + + + System.Windows.Forms.ToolTip, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + 3 + + + 1 + + + grpOutputStyle + + + True + + + 6, 13 + + + grpAccurateRip + System.Windows.Forms.TextBox, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 grpCUEPaths - - 4 + + 8, 89 - - 59, 22 - - - 385, 21 - - - 1 - - - txtInputPath - - - System.Windows.Forms.TextBox, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - grpCUEPaths - - - 5 - - - 8, 4 - - - 535, 84 - - + 0 - - CUE Paths - - - grpCUEPaths - - - System.Windows.Forms.GroupBox, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - $this - - - 12 - - - True - - - - NoControl - - - 11, 19 - - - 75, 17 - - - 0 - - - &Embedded - - - 153, 8 - - - Create single file with embedded CUE sheet. - - - rbEmbedCUE - - - System.Windows.Forms.RadioButton, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - grpOutputStyle - - - 0 - - - True - - - 11, 87 - - - 92, 17 - - - 4 - - - Gaps Left Out - - - Create multiple files with gaps left out - - - rbGapsLeftOut - - - System.Windows.Forms.RadioButton, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - grpOutputStyle - - - 1 - - - True - - - 11, 70 - - - 104, 17 - - - 3 - - - Gaps Prepended - - - Create multiple files with gaps prepended - - - rbGapsPrepended - - - System.Windows.Forms.RadioButton, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - grpOutputStyle - - - 2 - - - True - - - 11, 53 - - - 101, 17 - - - 2 - - - Gaps &Appended - - - Create multiple files with gaps appended - - - rbGapsAppended - - - System.Windows.Forms.RadioButton, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - grpOutputStyle - - - 3 - - - True - - - 11, 36 - - - 106, 17 - - - 1 - - - &Single File + CUE - - - Create single file + CUE sheet - - - rbSingleFile - - - System.Windows.Forms.RadioButton, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - grpOutputStyle - - - 4 - - - 108, 211 - - - 128, 119 - - - 3 - - - CUE Style - - - grpOutputStyle - - - System.Windows.Forms.GroupBox, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - $this - - - 11 - - - 412, 152 - - - 131, 23 - - - 10 - - - About - - - btnAbout - - - System.Windows.Forms.Button, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - $this - - - 10 - - - 140, 62 - - - 178, 21 - - - 5 - - - %1:-2\New\%-1\%F.cue - - - txtCustomFormat - - - System.Windows.Forms.TextBox, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - grpOutputPathGeneration - - - 0 - - - True - - - 10, 66 - - - 119, 17 - - - 4 - - - Use custom format: - - - rbCustomFormat - - - System.Windows.Forms.RadioButton, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - grpOutputPathGeneration - - - 1 - - - 140, 20 - - - 178, 21 - - - 1 - - - New - - - txtCreateSubdirectory - - - System.Windows.Forms.TextBox, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - grpOutputPathGeneration - - - 2 - - - True - - - 10, 89 - - - 59, 17 - - - 6 - - - &Manual - - - rbDontGenerate - - - System.Windows.Forms.RadioButton, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - grpOutputPathGeneration - - - 3 - - - True - - - 10, 20 - - - 125, 17 - - - 0 - - - C&reate subdirectory: - - - rbCreateSubdirectory - - - System.Windows.Forms.RadioButton, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - grpOutputPathGeneration - - - 4 - - - True - - - 10, 43 - - - 122, 17 - - - 2 - - - Append to filename: - - - rbAppendFilename - - - System.Windows.Forms.RadioButton, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - grpOutputPathGeneration - - - 5 - - - 140, 41 - - - 178, 21 - - - 3 - -New - - txtAppendFilename - - - System.Windows.Forms.TextBox, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - grpOutputPathGeneration - - - 6 - - - 8, 92 - - - 330, 115 - - - 1 - - - Output Path - - - grpOutputPathGeneration - - - System.Windows.Forms.GroupBox, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - $this - - - 9 - - - True - - - 10, 51 - - - 44, 17 - - - 2 - - - APE - - - rbAPE - - - System.Windows.Forms.RadioButton, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - grpAudioOutput - - - 0 - - - True - - - 10, 85 - - - 50, 17 - - - 4 - - - &None - - - Don't create any audio files, only CUE sheet - - - rbNoAudio - - - System.Windows.Forms.RadioButton, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - grpAudioOutput - - - 1 - - - True - - - 10, 34 - - - 69, 17 + + 122, 17 1 - - Wav&Pack - - - rbWavPack - - - System.Windows.Forms.RadioButton, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - grpAudioOutput - - - 2 - - - True - - - 10, 17 - - - 50, 17 - - - 0 - - - &FLAC - - - rbFLAC - - - System.Windows.Forms.RadioButton, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - grpAudioOutput - - - 3 - - - True - - - 10, 68 - - - 48, 17 - - - 3 - - - &WAV - - - rbWAV - - - System.Windows.Forms.RadioButton, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - grpAudioOutput - - - 4 - - - 8, 211 - - - 92, 119 - - - 2 - - - Audio Output - - - grpAudioOutput - - - System.Windows.Forms.GroupBox, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - $this - - - 8 - - - 412, 276 - - - 131, 23 - - - 6 - - - Batch... - - - btnBatch - - - System.Windows.Forms.Button, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - $this - - - 7 - - - 412, 245 - - - 131, 23 - - - 7 - - - Filename Corrector... - - - btnFilenameCorrector - - - System.Windows.Forms.Button, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - $this - - - 6 - - - 412, 183 - - - 131, 23 - - - 9 - - - Advanced Settings... - - - btnSettings - - - System.Windows.Forms.Button, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - $this - - - 5 - - - True - - - 8, 89 - - - 61, 13 - - - 3 - - - Data track: + + 11, 19 label1 - - System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + 10, 43 - - grpAccurateRip - - - 0 - - - 78, 86 - - - 00:00:00 - - - 0 - - - 54, 21 - - - 4 - - - Not used for normal music CDs. Enhanced CDs with data tracks cannot be found in database unless you know the length of the data track. You can often find it in EAC log. If EAC log is found next to the CUE sheet, it will be parsed automaticly and you won't have to enter anything here. - - - txtDataTrackLength - - - System.Windows.Forms.MaskedTextBox, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - grpAccurateRip - - - 1 - - - True - - - 10, 20 - - - 120, 17 - - - 0 - - - Verify, &then encode - - - On the first pass, verify and try to find an offset correction which makes the rip accurate according to the AccurateRip database. On the second pass, convert, possibly applying offset correction. - - - rbArApplyOffset - - - System.Windows.Forms.RadioButton, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - grpAccurateRip - - - 2 - - - True - - - 10, 54 - - - 122, 17 - - - 2 - - - &Verify, don't encode - - - Contact the AccurateRip databse for validation and compare the image against database - - - rbArVerify - - - System.Windows.Forms.RadioButton, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - grpAccurateRip - - - 3 - - - True + + 6 10, 37 - - 123, 17 - - - 1 - - - &Don't verify, encode - - - Don't contact the AccurateRip database for validation - - - rbArNone - - - System.Windows.Forms.RadioButton, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - grpAccurateRip - - - 4 - - - 244, 211 - - - 144, 119 - - - 4 - - - AccurateRip - - - grpAccurateRip - - - System.Windows.Forms.GroupBox, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - $this - - - 4 - - - 0, 339 - 252, 17 - - MiddleLeft + + Data track: - - 140, 16 - - - Track progress - - - 140, 16 - - - Disk progress - - - 0, 339 - - - 551, 22 - - - 11 - - - statusStrip1 - - - statusStrip1 - - - System.Windows.Forms.StatusStrip, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - $this - - - 3 - - - NoControl - - - 412, 214 - - - 131, 23 + + True 8 - - CUE Sheet Creator... + + Don't create any audio files, only CUE sheet - - btnCUECreator + + - + + grpAudioOutput + + + 1 + + + 2 + + + 0 + + + 12 + + + grpAccurateRip + + + 178, 21 + + + rbCustomFormat + + + 61, 13 + + + grpAccurateRip + + + Audio Output + + + 128, 119 + + + rbAppendFilename + + + True + + + 2 + + + Use custom format: + + System.Windows.Forms.Button, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + 37, 13 + + + 3 + + + 3 + + + Append to filename: + + + System.Windows.Forms.RadioButton, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + On the first pass, verify and try to find an offset correction which makes the rip accurate according to the AccurateRip database. On the second pass, convert, possibly applying offset correction. + + + + + + &Verify, don't encode + + + 4 + + + 10, 20 + + + System.Windows.Forms.RadioButton, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + 140, 62 + + + grpOutputStyle + $this - - 2 + + 131, 23 - - NoControl + + rbArApplyOffset - - 412, 307 - - - 66, 23 - - - 12 - - - &Stop - - - False - - - btnStop - - - System.Windows.Forms.Button, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - + $this - - 1 + + - - NoControl + + True - - 477, 307 + + grpCUEPaths - - 66, 23 + + rbArNone - - 13 + + 101, 17 - - &Pause - - - False - - - btnPause - - + System.Windows.Forms.Button, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - $this - - + 0 - - True - - - 6, 13 + + btnResume - - 551, 361 + + 11 - - Tahoma, 8.25pt + + System.Windows.Forms.TextBox, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - CenterScreen + + grpOutputPathGeneration + + + 7 + + + 11, 53 + + + System.Windows.Forms.StatusStrip, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + 3 + + + &Go + + + grpAudioOutput CUE Tools - - toolStripStatusLabel1 + + 244, 211 - - System.Windows.Forms.ToolStripStatusLabel, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + - - toolStripProgressBar1 - - - System.Windows.Forms.ToolStripProgressBar, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + $this toolStripProgressBar2 + + System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + + + + 5 + + + System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + 3 + + + 2 + + + statusStrip1 + + + 4 + + + toolStripProgressBar1 + + + + + + 10, 17 + + + + + + 131, 23 + + + False + + + True + + + + + + 75, 17 + + + 10, 66 + + + 1 + + + 5 + + + $this + + + 48, 17 + + + System.Windows.Forms.RadioButton, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + Don't contact the AccurateRip database for validation + + + 1 + + + Gaps Prepended + + + &Input: + + + 0 + + + toolStripStatusLabel1 + + + Gaps &Appended + + + System.Windows.Forms.GroupBox, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + 5 + + + grpCUEPaths + + + 119, 17 + + + 131, 23 + + + 11, 36 + + + &Don't verify, encode + + + 412, 214 + + + 71, 23 + + + 4 + + + 50, 17 + + + NoControl + + + 4 + + + rbAPE + + + btnBatch + System.Windows.Forms.ToolStripProgressBar, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - toolTip1 + + rbFLAC - - System.Windows.Forms.ToolTip, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + grpAudioOutput - - frmCUETools + + 144, 119 - - System.Windows.Forms.Form, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + System.Windows.Forms.GroupBox, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + 11 + + + 12 + + + 9 + + + 13 + + + Create multiple files with gaps appended + + + 477, 307 + + + 108, 211 + + + 2 + + + System.Windows.Forms.RadioButton, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + 2 + + + 59, 17 + + + grpCUEPaths + + + 10, 68 + + + + + + 1 + + + System.Windows.Forms.Button, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + 0, 339 + + + 153, 8 + + + True + \ No newline at end of file diff --git a/CUETools/frmCUETools.ru-RU.resx b/CUETools/frmCUETools.ru-RU.resx index 409712c..49adc3c 100644 --- a/CUETools/frmCUETools.ru-RU.resx +++ b/CUETools/frmCUETools.ru-RU.resx @@ -304,4 +304,7 @@ Пауза + + &Поехали + \ No newline at end of file diff --git a/CUETools/frmSettings.Designer.cs b/CUETools/frmSettings.Designer.cs index 3901f39..f0fdcb1 100644 --- a/CUETools/frmSettings.Designer.cs +++ b/CUETools/frmSettings.Designer.cs @@ -27,6 +27,8 @@ namespace JDP { System.Windows.Forms.Button btnCancel; System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(frmSettings)); this.grpGeneral = new System.Windows.Forms.GroupBox(); + this.chkCreateCUEFileWhenEmbedded = new System.Windows.Forms.CheckBox(); + this.chkCreateM3U = new System.Windows.Forms.CheckBox(); this.chkFillUpCUE = new System.Windows.Forms.CheckBox(); this.chkEmbedLog = new System.Windows.Forms.CheckBox(); this.numericWriteOffset = new System.Windows.Forms.NumericUpDown(); @@ -39,6 +41,7 @@ namespace JDP { this.chkFLACVerify = new System.Windows.Forms.CheckBox(); this.btnOK = new System.Windows.Forms.Button(); this.grpWavPack = new System.Windows.Forms.GroupBox(); + this.chkWVStoreMD5 = new System.Windows.Forms.CheckBox(); this.numWVExtraMode = new System.Windows.Forms.NumericUpDown(); this.chkWVExtraMode = new System.Windows.Forms.CheckBox(); this.rbWVVeryHigh = new System.Windows.Forms.RadioButton(); @@ -62,6 +65,8 @@ namespace JDP { this.toolTip1 = new System.Windows.Forms.ToolTip(this.components); this.chkFilenamesANSISafe = new System.Windows.Forms.CheckBox(); this.chkWriteARTagsOnVerify = new System.Windows.Forms.CheckBox(); + this.chkHDCDDecode = new System.Windows.Forms.CheckBox(); + this.chkHDCDStopLooking = new System.Windows.Forms.CheckBox(); this.grpAudioFilenames = new System.Windows.Forms.GroupBox(); this.chkKeepOriginalFilenames = new System.Windows.Forms.CheckBox(); this.txtSpecialExceptions = new System.Windows.Forms.TextBox(); @@ -83,6 +88,9 @@ namespace JDP { this.groupBox3 = new System.Windows.Forms.GroupBox(); this.chkWriteARLogOnVerify = new System.Windows.Forms.CheckBox(); this.tabPage3 = new System.Windows.Forms.TabPage(); + this.tabPage4 = new System.Windows.Forms.TabPage(); + this.grpHDCD = new System.Windows.Forms.GroupBox(); + this.chkHDCDDetect = new System.Windows.Forms.CheckBox(); btnCancel = new System.Windows.Forms.Button(); this.grpGeneral.SuspendLayout(); ((System.ComponentModel.ISupportInitialize)(this.numericWriteOffset)).BeginInit(); @@ -102,6 +110,8 @@ namespace JDP { this.tabPage2.SuspendLayout(); this.groupBox3.SuspendLayout(); this.tabPage3.SuspendLayout(); + this.tabPage4.SuspendLayout(); + this.grpHDCD.SuspendLayout(); this.SuspendLayout(); // // btnCancel @@ -122,6 +132,8 @@ namespace JDP { this.grpGeneral.AccessibleName = null; resources.ApplyResources(this.grpGeneral, "grpGeneral"); this.grpGeneral.BackgroundImage = null; + this.grpGeneral.Controls.Add(this.chkCreateCUEFileWhenEmbedded); + this.grpGeneral.Controls.Add(this.chkCreateM3U); this.grpGeneral.Controls.Add(this.chkFillUpCUE); this.grpGeneral.Controls.Add(this.chkEmbedLog); this.grpGeneral.Controls.Add(this.numericWriteOffset); @@ -133,6 +145,28 @@ namespace JDP { this.grpGeneral.TabStop = false; this.toolTip1.SetToolTip(this.grpGeneral, resources.GetString("grpGeneral.ToolTip")); // + // chkCreateCUEFileWhenEmbedded + // + this.chkCreateCUEFileWhenEmbedded.AccessibleDescription = null; + this.chkCreateCUEFileWhenEmbedded.AccessibleName = null; + resources.ApplyResources(this.chkCreateCUEFileWhenEmbedded, "chkCreateCUEFileWhenEmbedded"); + this.chkCreateCUEFileWhenEmbedded.BackgroundImage = null; + this.chkCreateCUEFileWhenEmbedded.Font = null; + this.chkCreateCUEFileWhenEmbedded.Name = "chkCreateCUEFileWhenEmbedded"; + this.toolTip1.SetToolTip(this.chkCreateCUEFileWhenEmbedded, resources.GetString("chkCreateCUEFileWhenEmbedded.ToolTip")); + this.chkCreateCUEFileWhenEmbedded.UseVisualStyleBackColor = true; + // + // chkCreateM3U + // + this.chkCreateM3U.AccessibleDescription = null; + this.chkCreateM3U.AccessibleName = null; + resources.ApplyResources(this.chkCreateM3U, "chkCreateM3U"); + this.chkCreateM3U.BackgroundImage = null; + this.chkCreateM3U.Font = null; + this.chkCreateM3U.Name = "chkCreateM3U"; + this.toolTip1.SetToolTip(this.chkCreateM3U, resources.GetString("chkCreateM3U.ToolTip")); + this.chkCreateM3U.UseVisualStyleBackColor = true; + // // chkFillUpCUE // this.chkFillUpCUE.AccessibleDescription = null; @@ -277,6 +311,7 @@ namespace JDP { this.grpWavPack.AccessibleName = null; resources.ApplyResources(this.grpWavPack, "grpWavPack"); this.grpWavPack.BackgroundImage = null; + this.grpWavPack.Controls.Add(this.chkWVStoreMD5); this.grpWavPack.Controls.Add(this.numWVExtraMode); this.grpWavPack.Controls.Add(this.chkWVExtraMode); this.grpWavPack.Controls.Add(this.rbWVVeryHigh); @@ -288,6 +323,17 @@ namespace JDP { this.grpWavPack.TabStop = false; this.toolTip1.SetToolTip(this.grpWavPack, resources.GetString("grpWavPack.ToolTip")); // + // chkWVStoreMD5 + // + this.chkWVStoreMD5.AccessibleDescription = null; + this.chkWVStoreMD5.AccessibleName = null; + resources.ApplyResources(this.chkWVStoreMD5, "chkWVStoreMD5"); + this.chkWVStoreMD5.BackgroundImage = null; + this.chkWVStoreMD5.Font = null; + this.chkWVStoreMD5.Name = "chkWVStoreMD5"; + this.toolTip1.SetToolTip(this.chkWVStoreMD5, resources.GetString("chkWVStoreMD5.ToolTip")); + this.chkWVStoreMD5.UseVisualStyleBackColor = true; + // // numWVExtraMode // this.numWVExtraMode.AccessibleDescription = null; @@ -611,6 +657,28 @@ namespace JDP { this.toolTip1.SetToolTip(this.chkWriteARTagsOnVerify, resources.GetString("chkWriteARTagsOnVerify.ToolTip")); this.chkWriteARTagsOnVerify.UseVisualStyleBackColor = true; // + // chkHDCDDecode + // + this.chkHDCDDecode.AccessibleDescription = null; + this.chkHDCDDecode.AccessibleName = null; + resources.ApplyResources(this.chkHDCDDecode, "chkHDCDDecode"); + this.chkHDCDDecode.BackgroundImage = null; + this.chkHDCDDecode.Font = null; + this.chkHDCDDecode.Name = "chkHDCDDecode"; + this.toolTip1.SetToolTip(this.chkHDCDDecode, resources.GetString("chkHDCDDecode.ToolTip")); + this.chkHDCDDecode.UseVisualStyleBackColor = true; + // + // chkHDCDStopLooking + // + this.chkHDCDStopLooking.AccessibleDescription = null; + this.chkHDCDStopLooking.AccessibleName = null; + resources.ApplyResources(this.chkHDCDStopLooking, "chkHDCDStopLooking"); + this.chkHDCDStopLooking.BackgroundImage = null; + this.chkHDCDStopLooking.Font = null; + this.chkHDCDStopLooking.Name = "chkHDCDStopLooking"; + this.toolTip1.SetToolTip(this.chkHDCDStopLooking, resources.GetString("chkHDCDStopLooking.ToolTip")); + this.chkHDCDStopLooking.UseVisualStyleBackColor = true; + // // grpAudioFilenames // this.grpAudioFilenames.AccessibleDescription = null; @@ -803,6 +871,7 @@ namespace JDP { this.tabControl1.Controls.Add(this.tabPage1); this.tabControl1.Controls.Add(this.tabPage2); this.tabControl1.Controls.Add(this.tabPage3); + this.tabControl1.Controls.Add(this.tabPage4); this.tabControl1.Font = null; this.tabControl1.HotTrack = true; this.tabControl1.Multiline = true; @@ -876,6 +945,44 @@ namespace JDP { this.tabPage3.Name = "tabPage3"; this.toolTip1.SetToolTip(this.tabPage3, resources.GetString("tabPage3.ToolTip")); // + // tabPage4 + // + this.tabPage4.AccessibleDescription = null; + this.tabPage4.AccessibleName = null; + resources.ApplyResources(this.tabPage4, "tabPage4"); + this.tabPage4.BackColor = System.Drawing.SystemColors.Control; + this.tabPage4.BackgroundImage = null; + this.tabPage4.Controls.Add(this.grpHDCD); + this.tabPage4.Controls.Add(this.chkHDCDDetect); + this.tabPage4.Font = null; + this.tabPage4.Name = "tabPage4"; + this.toolTip1.SetToolTip(this.tabPage4, resources.GetString("tabPage4.ToolTip")); + // + // grpHDCD + // + this.grpHDCD.AccessibleDescription = null; + this.grpHDCD.AccessibleName = null; + resources.ApplyResources(this.grpHDCD, "grpHDCD"); + this.grpHDCD.BackgroundImage = null; + this.grpHDCD.Controls.Add(this.chkHDCDStopLooking); + this.grpHDCD.Controls.Add(this.chkHDCDDecode); + this.grpHDCD.Font = null; + this.grpHDCD.Name = "grpHDCD"; + this.grpHDCD.TabStop = false; + this.toolTip1.SetToolTip(this.grpHDCD, resources.GetString("grpHDCD.ToolTip")); + // + // chkHDCDDetect + // + this.chkHDCDDetect.AccessibleDescription = null; + this.chkHDCDDetect.AccessibleName = null; + resources.ApplyResources(this.chkHDCDDetect, "chkHDCDDetect"); + this.chkHDCDDetect.BackgroundImage = null; + this.chkHDCDDetect.Font = null; + this.chkHDCDDetect.Name = "chkHDCDDetect"; + this.toolTip1.SetToolTip(this.chkHDCDDetect, resources.GetString("chkHDCDDetect.ToolTip")); + this.chkHDCDDetect.UseVisualStyleBackColor = true; + this.chkHDCDDetect.CheckedChanged += new System.EventHandler(this.chkHDCDDetect_CheckedChanged); + // // frmSettings // this.AcceptButton = this.btnOK; @@ -924,6 +1031,10 @@ namespace JDP { this.groupBox3.ResumeLayout(false); this.groupBox3.PerformLayout(); this.tabPage3.ResumeLayout(false); + this.tabPage4.ResumeLayout(false); + this.tabPage4.PerformLayout(); + this.grpHDCD.ResumeLayout(false); + this.grpHDCD.PerformLayout(); this.ResumeLayout(false); } @@ -987,6 +1098,14 @@ namespace JDP { private System.Windows.Forms.CheckBox chkWriteARLogOnVerify; private System.Windows.Forms.CheckBox chkWriteARTagsOnVerify; private System.Windows.Forms.CheckBox chkEncodeWhenZeroOffset; + private System.Windows.Forms.TabPage tabPage4; + private System.Windows.Forms.CheckBox chkHDCDDecode; + private System.Windows.Forms.CheckBox chkHDCDDetect; + private System.Windows.Forms.CheckBox chkWVStoreMD5; + private System.Windows.Forms.GroupBox grpHDCD; + private System.Windows.Forms.CheckBox chkHDCDStopLooking; + private System.Windows.Forms.CheckBox chkCreateM3U; + private System.Windows.Forms.CheckBox chkCreateCUEFileWhenEmbedded; } } \ No newline at end of file diff --git a/CUETools/frmSettings.cs b/CUETools/frmSettings.cs index 6515c7d..61fb93c 100644 --- a/CUETools/frmSettings.cs +++ b/CUETools/frmSettings.cs @@ -35,6 +35,7 @@ namespace JDP { chkWVExtraMode.Checked = (_config.wvExtraMode != 0); chkWVExtraMode_CheckedChanged(null, null); if (_config.wvExtraMode != 0) numWVExtraMode.Value = _config.wvExtraMode; + chkWVStoreMD5.Checked = _config.wvStoreMD5; switch (_config.apeCompressionLevel) { case 1: rbAPEfast.Checked = true; break; @@ -56,6 +57,11 @@ namespace JDP { chkEmbedLog.Checked = _config.embedLog; chkFillUpCUE.Checked = _config.fillUpCUE; chkFilenamesANSISafe.Checked = _config.filenamesANSISafe; + chkHDCDDetect.Checked = _config.detectHDCD; + chkHDCDDecode.Checked = _config.decodeHDCD; + chkHDCDStopLooking.Checked = _config.wait750FramesForHDCD; + chkCreateM3U.Checked = _config.createM3U; + chkCreateCUEFileWhenEmbedded.Checked = _config.createCUEFileWhenEmbedded; } private void frmSettings_FormClosing(object sender, FormClosingEventArgs e) { @@ -72,12 +78,7 @@ namespace JDP { } private void chkWVExtraMode_CheckedChanged(object sender, EventArgs e) { - if (chkWVExtraMode.Checked) { - numWVExtraMode.Enabled = true; - } - else { - numWVExtraMode.Enabled = false; - } + numWVExtraMode.Enabled = chkWVExtraMode.Checked; } private void btnOK_Click(object sender, EventArgs e) @@ -100,6 +101,7 @@ namespace JDP { else _config.wvCompressionMode = 1; if (!chkWVExtraMode.Checked) _config.wvExtraMode = 0; else _config.wvExtraMode = (int) numWVExtraMode.Value; + _config.wvStoreMD5 = chkWVStoreMD5.Checked; _config.apeCompressionLevel = (uint) (rbAPEfast.Checked ? 1 : rbAPEnormal.Checked ? 2 : rbAPEhigh.Checked ? 3 : @@ -118,6 +120,11 @@ namespace JDP { _config.embedLog = chkEmbedLog.Checked; _config.fillUpCUE = chkFillUpCUE.Checked; _config.filenamesANSISafe = chkFilenamesANSISafe.Checked; + _config.detectHDCD = chkHDCDDetect.Checked; + _config.wait750FramesForHDCD = chkHDCDStopLooking.Checked; + _config.decodeHDCD = chkHDCDDecode.Checked; + _config.createM3U = chkCreateM3U.Checked; + _config.createCUEFileWhenEmbedded = chkCreateCUEFileWhenEmbedded.Checked; } private void chkArFixOffset_CheckedChanged(object sender, EventArgs e) @@ -136,5 +143,10 @@ namespace JDP { labelEncodeWhenPercent.Enabled = chkEncodeWhenZeroOffset.Enabled = chkArNoUnverifiedAudio.Checked; } + + private void chkHDCDDetect_CheckedChanged(object sender, EventArgs e) + { + grpHDCD.Enabled = chkHDCDDetect.Checked; + } } } \ No newline at end of file diff --git a/CUETools/frmSettings.resx b/CUETools/frmSettings.resx index 7216f1e..99c05b2 100644 --- a/CUETools/frmSettings.resx +++ b/CUETools/frmSettings.resx @@ -120,6 +120,9 @@ + + + Add ACCURATERIPCOUNT/ACCURATERIPCOUNTALLOFFSETS/ACCURATERIPTOTAL tags to input files. You can set up foobar2000 to show those values, and see if your music was ripped correctly or how popular it is. @@ -130,6 +133,9 @@ 73, 23 + + 137, 17 + 2 @@ -143,26 +149,26 @@ 6, 20 - - - System.Windows.Forms.GroupBox, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + System.Windows.Forms.TabPage, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + System.Windows.Forms.RadioButton, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 12, 44 - - 2 + + labelEncodeWhenConfidence 2 - - 0 + + Decode HDCD to 24 bit Single format: @@ -197,18 +203,27 @@ %N-%A-%T + + HDCD decoding is irreversable. Resulting files cannot be burned to the CD. 24-bit audio files are created, but the actual resolution is 20 bit + btnOK 7 + + 128, 101 + 36, 21 System.Windows.Forms.CheckBox, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + 194, 271 + 4 @@ -218,6 +233,9 @@ 71, 17 + + 46, 17 + 6, 172 @@ -239,8 +257,15 @@ 4 - - 149, 21 + + Detect HDCD encoding + + + True + + + + 3, 3, 3, 3 grpGeneral @@ -248,24 +273,30 @@ Write offset (samples): - - 58, 17 + + tabControl1 + + + 81, 17 System.Windows.Forms.CheckBox, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - 0 + + True - + 2 - - True + + chkHDCDStopLooking groupBox3 + + System.Windows.Forms.TextBox, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + System.Windows.Forms.Form, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 @@ -281,17 +312,17 @@ 542, 307 - - 3 - - + + + System.Windows.Forms.CheckBox, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + %F - - 8 + + groupBox1 @@ -323,9 +354,6 @@ 9, 93 - - System.Windows.Forms.GroupBox, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - 2 @@ -344,15 +372,11 @@ - - - - Yes - - labelEncodeWhenConfidence + + 10 grpFLAC @@ -360,18 +384,27 @@ - - Tahoma, 8.25pt + + 12, 129 - - + + 13, 19 + + + System.Windows.Forms.CheckBox, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 3 + + chkCreateM3U + chkArNoUnverifiedAudio + + 4, 22 + tabControl1 @@ -390,12 +423,18 @@ groupBox1 + + chkHDCDDetect + 101, 23 103, 91 + + HDCD options + lblTrackFilenameFormat @@ -408,9 +447,6 @@ 2 - - labelFixWhenConfidence - System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 @@ -442,7 +478,7 @@ 4, 22 - 1 + 2 3 @@ -450,6 +486,9 @@ 108, 21 + + chkWVStoreMD5 + 58, 17 @@ -465,33 +504,39 @@ 12, 92 - - - System.Windows.Forms.TabPage, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 System.Windows.Forms.CheckBox, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + System.Windows.Forms.CheckBox, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + Top, Right 0 - - 194, 17 + + labelFixWhenConfidence System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + 125, 17 + Locate audio files if missing 72, 13 + + txtSingleFilenameFormat + Codecs @@ -502,7 +547,7 @@ 2 - 2 + 4 @@ -525,17 +570,17 @@ True + + 12, 114 + System.Windows.Forms.RadioButton, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - AccurateRip + + 1 - - System.Windows.Forms.CheckBox, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - 46, 17 + + 2 System.Windows.Forms.GroupBox, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 @@ -552,15 +597,18 @@ True - - 11, 71 + + 168, 17 - - + + grpHDCD 0 + + + System.Windows.Forms.CheckBox, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 @@ -570,15 +618,12 @@ 4 - - FLAC + + System.Windows.Forms.GroupBox, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 chkWriteARLogOnVerify - - 5 - True @@ -588,32 +633,32 @@ 273, 271 + + 0 + numericFLACCompressionLevel NoControl - - 46, 17 + + System.Windows.Forms.GroupBox, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 2 + + + groupBox3 with confidence >= - - 6, 13 - - - 5 - - - 0, 0 + + 38, 21 12, 100 @@ -621,15 +666,15 @@ groupBox2 + + System.Windows.Forms.CheckBox, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + Only allow characters, which are present in ANSI codepage, for compatibility with non-unicode applications grpAudioFilenames - - NoControl - 38, 21 @@ -642,8 +687,11 @@ 2 - - 130, 17 + + 6 + + + FLAC True @@ -652,7 +700,7 @@ chkEmbedLog - 4 + 5 chkRemoveSpecial @@ -666,14 +714,8 @@ 0 - - System.Windows.Forms.RadioButton, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - grpAudioFilenames - - - 3 + + 73, 23 @@ -684,17 +726,17 @@ Compression level: + + numWVExtraMode + numFixWhenPercent - - 1 - Force ANSI filenames - - + + Top, Right System.Windows.Forms.CheckBox, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 @@ -720,8 +762,8 @@ 0 - - 1 + + grpFLAC 1 @@ -735,8 +777,8 @@ 0 - - 6, 149 + + tabPage4 @@ -762,15 +804,15 @@ tabPage3 + + 97, 13 + 235, 40 System.Windows.Forms.TabPage, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - System.Windows.Forms.GroupBox, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 @@ -780,6 +822,15 @@ numEncodeWhenConfidence + + True + + + chkWriteArLogOnConvert + + + chkFLACVerify + CUETools @@ -789,20 +840,23 @@ System.Windows.Forms.CheckBox, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - 11 + + 1 + + + chkAutoCorrectFilenames True - - chkFillUpCUE + + 3 groupBox1 - - 5, 172 + + tabPage3 System.Windows.Forms.Button, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 @@ -822,6 +876,9 @@ True + + 4 + 97, 40 @@ -831,14 +888,11 @@ numEncodeWhenPercent - - grpFLAC - 12, 61 - - rbAPEinsane + + grpGeneral 7 @@ -850,7 +904,7 @@ 2 - 3 + 5 tabControl1 @@ -858,17 +912,20 @@ 8 + + + 1 - - Write AccurateRip tags - - 5 + 7 - - System.Windows.Forms.RadioButton, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + 2 + + + groupBox1 12 @@ -894,12 +951,15 @@ True - - + + Stop looking for HDCD information, If none found in first 10 seconds of the disc 118, 13 + + grpHDCD + Right @@ -909,6 +969,9 @@ chkWriteArTagsOnConvert + + groupBox1 + @@ -918,8 +981,8 @@ True - - 0, 0, 0, 0 + + System.Windows.Forms.TabPage, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 NoControl @@ -936,6 +999,9 @@ Right + + + 5 @@ -946,10 +1012,13 @@ lblFLACCompressionLevel - 145, 119 + 145, 148 - 0 + 1 + + + grpGeneral 97, 68 @@ -960,12 +1029,18 @@ System.Windows.Forms.RadioButton, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - $this + + 3 grpGeneral + + 6 + + + True + 0 @@ -978,8 +1053,11 @@ 4 + + grpGeneral + - 4 + 6 543, 253 @@ -987,14 +1065,17 @@ CenterParent - - 5 + + 127, 17 Cancel - - 7 + + True + + + 6, 43 2 @@ -1002,35 +1083,32 @@ -() - - True - True 137, 17 + + 0 + System.Windows.Forms.GroupBox, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + True + System.Windows.Forms.NumericUpDown, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 295, 215 - - Normal - groupBox2 - - System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - 9, 43 + + True @@ -1053,8 +1131,8 @@ System.Windows.Forms.CheckBox, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - 3 + + 0 rbWVNormal @@ -1068,8 +1146,11 @@ Verify - - grpGeneral + + 3 + + + 189, 17 2 @@ -1101,11 +1182,11 @@ 1 - - 6 + + 235, 19 - - 38, 21 + + 9, 43 58, 17 @@ -1122,15 +1203,24 @@ System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + 264, 6 + 12 226, 6 + + 133, 20 + System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + System.Windows.Forms.GroupBox, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + rbAPEextrahigh @@ -1146,11 +1236,20 @@ System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + 0 + + + groupBox1 + chkArFixOffset + + System.Windows.Forms.CheckBox, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + - 204, 119 + 204, 148 toolTip1 @@ -1161,8 +1260,11 @@ Keep original filenames - - 6 + + System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + Create .cue file even if embedded True @@ -1170,26 +1272,32 @@ 101, 13 - - System.Windows.Forms.NumericUpDown, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + 1 - - 3 + + NoControl - - numWVExtraMode + + 46, 17 + + + HDCD labelEncodeWhenPercent + + 6 + Write AccurateRip tags NoControl - - 4 + + 0, 0, 0, 0 groupBox1 @@ -1197,42 +1305,69 @@ Extra High + + 1 + + + True + 173, 62 - - System.Windows.Forms.Button, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + 149, 21 12, 95 + + 19, 19 + rbAPEfast 13, 53 - - txtSingleFilenameFormat + + 2 + + + Normal chkPreserveHTOA - - 81, 17 + + Write AccurateRip tags 3 + + rbAPEinsane + High 252, 204 + + grpAudioFilenames + + + 8 + + + 12, 112 + Right + + 7 + 3 @@ -1242,8 +1377,8 @@ - - 3, 3, 3, 3 + + 2 6, 6 @@ -1254,14 +1389,20 @@ Verify, then convert - - Add ACCURATERIPCOUNT/ACCURATERIPCOUNTALLOFFSETS/ACCURATERIPTOTAL tags to output files. You can set up foobar2000 to show those values, and see if your music was ripped correctly or how popular it is. + + + + + 6, 149 + + + tabPage4 185, 17 - - 13, 19 + + 3 Write AccurateRip log @@ -1270,34 +1411,40 @@ 4, 22 - 146, 119 + 146, 148 - - + + Create .m3u playlists - - + + tabPage2 - - 2 + + tabPage4 - - System.Windows.Forms.TabPage, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + chkFilenamesANSISafe + + + 0, 0 True - - grpGeneral + + 2 0 + + chkReplaceSpaces + 1 - - + + 46, 17 Monkey's Audio (.ape) @@ -1305,13 +1452,13 @@ System.Windows.Forms.ToolTip, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - 97, 13 + + 7 130, 17 - + @@ -1320,11 +1467,14 @@ 235, 101 + + 6 + rbWVHigh - - tabPage2 + + 6, 13 tabPage3 @@ -1335,8 +1485,8 @@ Remove special characters except: - - Extra mode: + + 535, 227 grpAudioFilenames @@ -1344,32 +1494,53 @@ groupBox2 - + + + chkWVExtraMode + + + 1 + True + + 0 + True + + 203, 165 + + + + 149, 21 1 + + lblWriteOffset + - 1 + 3 36, 21 - - True + + 194, 17 + + + 135, 17 NoControl @@ -1380,35 +1551,47 @@ groupBox1 - + 4 True - - System.Windows.Forms.NumericUpDown, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + System.Windows.Forms.Button, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + 3 3 - - 12, 20 + + chkCreateCUEFileWhenEmbedded - - 46, 17 + + chkHDCDDecode - - grpAudioFilenames + + True + + + 5, 172 + + + Replace spaces with underscores - - Verify + + System.Windows.Forms.GroupBox, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - 8 + + Stop looking after 750 frames + + + 7 155, 17 @@ -1419,7 +1602,7 @@ 235, 80 - + @@ -1428,11 +1611,14 @@ System.Windows.Forms.TextBox, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + 136, 17 + numFixWhenConfidence - - 1 + + AccurateRip System.Windows.Forms.RadioButton, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 @@ -1440,8 +1626,8 @@ $this - - 194, 271 + + 4 Encode only if @@ -1449,26 +1635,41 @@ 1 + + grpAudioFilenames + 535, 227 - - chkFLACVerify + + True - - chkWriteArLogOnConvert + + 8 - - tabControl1 + + 12, 20 - - 264, 6 + + 1 + + + 11 + + + lblSingleFilenameFormat - - % of verified tracks >= + + Extra mode: + + + + + + Store MD5 checksum 1 @@ -1476,20 +1677,14 @@ True - - 2 - - - 0 - 3, 3, 3, 3 - - 62, 21 + + System.Windows.Forms.CheckBox, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 6, 149 @@ -1497,8 +1692,8 @@ % of verified tracks >= - - 1 + + 3, 3, 3, 3 @@ -1506,14 +1701,14 @@ 13, 71 - - groupBox1 + + 0 - - grpGeneral + + Top, Right - - System.Windows.Forms.TextBox, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + Track format: 4 @@ -1521,35 +1716,41 @@ System.Windows.Forms.CheckBox, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - 10 + + Add ACCURATERIPCOUNT/ACCURATERIPCOUNTALLOFFSETS/ACCURATERIPTOTAL tags to output files. You can set up foobar2000 to show those values, and see if your music was ripped correctly or how popular it is. - - groupBox1 + + 19, 42 + + + $this Advanced Settings + + tabControl1 + 6, 81 - - 3 - System.Windows.Forms.NumericUpDown, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 1 - - System.Windows.Forms.GroupBox, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + grpGeneral + + + 7 - - True + + chkFillUpCUE 12, 172 @@ -1560,12 +1761,15 @@ 6 - - 7 + + grpHDCD 3 + + + @@ -1575,11 +1779,8 @@ - - - - - chkFilenamesANSISafe + + 5 5 @@ -1590,17 +1791,17 @@ 1 - - + + 1 - - True + + 58, 17 Fast - - + + Tahoma, 8.25pt grpWavPack @@ -1635,11 +1836,17 @@ 535, 227 - - 235, 19 + + - - tabPage3 + + System.Windows.Forms.CheckBox, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + grpFLAC + + + 1 9, 23 @@ -1665,14 +1872,14 @@ - - Preprocess with filename corrector if unable to locate audio files + + 6 btnCancel - - 128, 101 + + 3 numericWriteOffset @@ -1680,29 +1887,38 @@ 9 - - Top, Right + + grpGeneral - - + + with confidence >= + + + 62, 21 2 - - groupBox1 + + 2 + + tabPage2 + 149, 21 - - High + + Verify - - Track format: + + 6, 20 + + + grpFLAC @@ -1714,7 +1930,7 @@ 6, 6 - 2 + 3 @@ -1725,26 +1941,35 @@ Top, Left, Right - - lblWriteOffset + + 5 - - 133, 20 + + 38, 21 - - chkReplaceSpaces + + High - - 10 + + True - - with confidence >= + + 130, 17 + + + + + + System.Windows.Forms.RadioButton, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Windows.Forms.NumericUpDown, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - tabPage2 + + 0 @@ -1755,29 +1980,32 @@ 13, 20 - - grpFLAC + + System.Windows.Forms.RadioButton, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + Preprocess with filename corrector if unable to locate audio files 121, 23 + + % of verified tracks >= + True 4, 22 - - chkWVExtraMode + + True grpGeneral - - Top, Right - - - grpAudioFilenames + + 10 True @@ -1788,21 +2016,27 @@ + + grpAudioFilenames + 166, 6 System.Windows.Forms.CheckBox, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - 137, 17 + + 11, 71 - - 38, 21 + + General + + System.Windows.Forms.NumericUpDown, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + 13, 88 @@ -1812,11 +2046,14 @@ + + grpWavPack + rbWVFast - - chkAutoCorrectFilenames + + False diff --git a/CUETools/frmSettings.ru-RU.resx b/CUETools/frmSettings.ru-RU.resx index b156d64..6f6857b 100644 --- a/CUETools/frmSettings.ru-RU.resx +++ b/CUETools/frmSettings.ru-RU.resx @@ -124,6 +124,18 @@ Общие + + 224, 17 + + + Создавать .cue даже при встраивании + + + 166, 17 + + + Создавать плейлисты .m3u + 221, 17 @@ -178,6 +190,12 @@ Верификация + + 119, 17 + + + MD5-хеширование + 89, 17 @@ -339,6 +357,24 @@ Добавлять тэги ACCURATERIPCOUNT/ACCURATERIPCOUNTALLOFFSETS/ACCURATERIPTOTAL в исходные файлы. Можно настроить foobar2000 на их отображение, чтобы видеть качество рипа и популярность дисков в вашей библиотеке. + + 152, 17 + + + Декодировать в 24 бита + + + Декодирование HDCD - необратимый процесс. Результирующие файлы не могут быть записаны на CD. Создаются файлы с разрешением 24 бита, но подлинное разрешение составляет 20 бит. + + + 172, 17 + + + Определять по 750 фреймам + + + Прекращать поиск HDCD-кодировки, если её не обнаружено в первых 10 секундах аудио данных. + Имена аудиофайлов @@ -390,6 +426,15 @@ Форматы + + Параметры + + + 120, 17 + + + Определять HDCD + Продвинутые настройки diff --git a/CUEToolsLib/AudioReadWrite.cs b/CUEToolsLib/AudioReadWrite.cs index eadc084..3246242 100644 --- a/CUEToolsLib/AudioReadWrite.cs +++ b/CUEToolsLib/AudioReadWrite.cs @@ -3,31 +3,12 @@ using System.IO; using FLACDotNet; using WavPackDotNet; using APEDotNet; +using ALACDotNet; +using AudioCodecsDotNet; using System.Collections.Generic; using System.Collections.Specialized; namespace CUEToolsLib { - public interface IAudioSource { - uint Read(byte[] buff, uint sampleCount); - ulong Length { get; } - ulong Position { get; set; } - NameValueCollection Tags { get; set; } - ulong Remaining { get; } - void Close(); - int BitsPerSample { get; } - int ChannelCount { get; } - int SampleRate { get; } - string Path { get; } - } - - public interface IAudioDest { - void Write(byte[] buff, uint sampleCount); - bool SetTags(NameValueCollection tags); - void Close(); - long FinalSampleCount { set; } - string Path { get; } - } - public static class AudioReadWrite { public static IAudioSource GetAudioSource(string path) { switch (Path.GetExtension(path).ToLower()) { @@ -40,6 +21,8 @@ namespace CUEToolsLib { return new WavPackReader(path); case ".ape": return new APEReader(path); + case ".m4a": + return new ALACReader(path); #endif default: throw new Exception("Unsupported audio type."); @@ -69,332 +52,6 @@ namespace CUEToolsLib { } } - public class DummyWriter : IAudioDest { - - public DummyWriter (string path, int bitsPerSample, int channelCount, int sampleRate) { - } - - public bool SetTags(NameValueCollection tags) - { - return false; - } - - public void Close() { - } - - public long FinalSampleCount { - set { - } - } - - public void Write(byte[] buff, uint sampleCount) { - } - - public string Path { get { return null; } } - } - - public class WAVReader : IAudioSource { - FileStream _fs; - BinaryReader _br; - ulong _dataOffset, _dataLen; - ulong _samplePos, _sampleLen; - int _bitsPerSample, _channelCount, _sampleRate, _blockAlign; - bool _largeFile; - string _path; - - public WAVReader(string path) { - _path = path; - //_fs = new FileStream(path, FileMode.Open, FileAccess.Read, FileShare.Read); - _fs = new FileStream(path, FileMode.Open, FileAccess.Read, FileShare.Read, 0x10000, FileOptions.SequentialScan); - _br = new BinaryReader(_fs); - - ParseHeaders(); - - _sampleLen = _dataLen / (uint)_blockAlign; - Position = 0; - } - - public void Close() { - _br.Close(); - - _br = null; - _fs = null; - } - - private void ParseHeaders() { - const long maxFileSize = 0x7FFFFFFEL; - const uint fccRIFF = 0x46464952; - const uint fccWAVE = 0x45564157; - const uint fccFormat = 0x20746D66; - const uint fccData = 0x61746164; - - uint lenRIFF; - long fileEnd; - bool foundFormat, foundData; - - if (_br.ReadUInt32() != fccRIFF) { - throw new Exception("Not a valid RIFF file."); - } - - lenRIFF = _br.ReadUInt32(); - fileEnd = (long)lenRIFF + 8; - - if (_br.ReadUInt32() != fccWAVE) { - throw new Exception("Not a valid WAVE file."); - } - - _largeFile = false; - foundFormat = false; - foundData = false; - - while (_fs.Position < fileEnd) { - uint ckID, ckSize, ckSizePadded; - long ckEnd; - - ckID = _br.ReadUInt32(); - ckSize = _br.ReadUInt32(); - ckSizePadded = (ckSize + 1U) & ~1U; - ckEnd = _fs.Position + (long)ckSizePadded; - - if (ckID == fccFormat) { - foundFormat = true; - - if (_br.ReadUInt16() != 1) { - throw new Exception("WAVE must be PCM format."); - } - _channelCount = _br.ReadInt16(); - _sampleRate = _br.ReadInt32(); - _br.ReadInt32(); - _blockAlign = _br.ReadInt16(); - _bitsPerSample = _br.ReadInt16(); - } - else if (ckID == fccData) { - foundData = true; - - _dataOffset = (ulong) _fs.Position; - if (_fs.Length <= maxFileSize) { - _dataLen = ckSize; - } - else { - _largeFile = true; - _dataLen = ((ulong)_fs.Length) - _dataOffset; - } - } - - if ((foundFormat & foundData) || _largeFile) { - break; - } - - _fs.Seek(ckEnd, SeekOrigin.Begin); - } - - if ((foundFormat & foundData) == false) { - throw new Exception("Format or data chunk not found."); - } - - if (_channelCount <= 0) { - throw new Exception("Channel count is invalid."); - } - if (_sampleRate <= 0) { - throw new Exception("Sample rate is invalid."); - } - if (_blockAlign != (_channelCount * ((_bitsPerSample + 7) / 8))) { - throw new Exception("Block align is invalid."); - } - if ((_bitsPerSample <= 0) || (_bitsPerSample > 32)) { - throw new Exception("Bits per sample is invalid."); - } - } - - public ulong Position { - get { - return _samplePos; - } - set { - ulong seekPos; - - if (value > _sampleLen) { - _samplePos = _sampleLen; - } - else { - _samplePos = value; - } - - seekPos = _dataOffset + (_samplePos * (uint)_blockAlign); - _fs.Seek((long) seekPos, SeekOrigin.Begin); - } - } - - public ulong Length { - get { - return _sampleLen; - } - } - - public ulong Remaining { - get { - return _sampleLen - _samplePos; - } - } - - public int ChannelCount { - get { - return _channelCount; - } - } - - public int SampleRate { - get { - return _sampleRate; - } - } - - public int BitsPerSample { - get { - return _bitsPerSample; - } - } - - public int BlockAlign { - get { - return _blockAlign; - } - } - - public NameValueCollection Tags { - get { - return new NameValueCollection(); - } - set { - } - } - - public void GetTags(out List names, out List values) - { - names = new List(); - values = new List(); - } - - public uint Read(byte[] buff, uint sampleCount) { - if (sampleCount > Remaining) - sampleCount = (uint) Remaining; - - uint byteCount = sampleCount * (uint) _blockAlign; - - if (sampleCount != 0) { - if (_fs.Read(buff, 0, (int) byteCount) != byteCount) { - throw new Exception("Incomplete file read."); - } - _samplePos += sampleCount; - } - - return sampleCount; - } - - public string Path { get { return _path; } } - } - - public class WAVWriter : IAudioDest { - FileStream _fs; - BinaryWriter _bw; - int _bitsPerSample, _channelCount, _sampleRate, _blockAlign; - long _sampleLen; - string _path; - - public WAVWriter(string path, int bitsPerSample, int channelCount, int sampleRate) { - _path = path; - _bitsPerSample = bitsPerSample; - _channelCount = channelCount; - _sampleRate = sampleRate; - _blockAlign = _channelCount * ((_bitsPerSample + 7) / 8); - - _fs = new FileStream(path, FileMode.Create, FileAccess.Write, FileShare.Read); - _bw = new BinaryWriter(_fs); - - WriteHeaders(); - } - - public bool SetTags(NameValueCollection tags) - { - return false; - } - - private void WriteHeaders() { - const uint fccRIFF = 0x46464952; - const uint fccWAVE = 0x45564157; - const uint fccFormat = 0x20746D66; - const uint fccData = 0x61746164; - - _bw.Write(fccRIFF); - _bw.Write((uint)0); - _bw.Write(fccWAVE); - - _bw.Write(fccFormat); - _bw.Write((uint)16); - _bw.Write((ushort)1); - _bw.Write((ushort)_channelCount); - _bw.Write((uint)_sampleRate); - _bw.Write((uint)(_sampleRate * _blockAlign)); - _bw.Write((ushort)_blockAlign); - _bw.Write((ushort)_bitsPerSample); - - _bw.Write(fccData); - _bw.Write((uint)0); - } - - public void Close() { - const long maxFileSize = 0x7FFFFFFEL; - long dataLen, dataLenPadded; - - dataLen = _sampleLen * _blockAlign; - - if ((dataLen & 1) == 1) { - _bw.Write((byte)0); - } - - if ((dataLen + 44) > maxFileSize) { - dataLen = ((maxFileSize - 44) / _blockAlign) * _blockAlign; - } - - dataLenPadded = ((dataLen & 1) == 1) ? (dataLen + 1) : dataLen; - - _bw.Seek(4, SeekOrigin.Begin); - _bw.Write((uint)(dataLenPadded + 36)); - - _bw.Seek(40, SeekOrigin.Begin); - _bw.Write((uint)dataLen); - - _bw.Close(); - - _bw = null; - _fs = null; - } - - public long Position { - get { - return _sampleLen; - } - } - - public long FinalSampleCount { - set { - } - } - - public void Write(byte[] buff, uint sampleCount) { - if (sampleCount < 0) { - sampleCount = 0; - } - - if (sampleCount != 0) { - _fs.Write(buff, 0, (int) sampleCount * _blockAlign); - _sampleLen += sampleCount; - } - } - - public string Path { get { return _path; } } - } - #if !MONO class FLACReader : IAudioSource { FLACDotNet.FLACReader _flacReader; @@ -469,29 +126,6 @@ namespace CUEToolsLib { } } - private unsafe void FLACSamplesToBytes_16(int[,] inSamples, uint inSampleOffset, - byte[] outSamples, uint outByteOffset, uint sampleCount, int channelCount) - { - uint loopCount = sampleCount * (uint) channelCount; - - if ((inSamples.GetLength(0) - inSampleOffset < sampleCount) || - (outSamples.Length - outByteOffset < loopCount * 2)) - { - throw new IndexOutOfRangeException(); - } - - fixed (int* pInSamplesFixed = &inSamples[inSampleOffset, 0]) { - fixed (byte* pOutSamplesFixed = &outSamples[outByteOffset]) { - int* pInSamples = pInSamplesFixed; - short* pOutSamples = (short*)pOutSamplesFixed; - - for (int i = 0; i < loopCount; i++) { - *(pOutSamples++) = (short)*(pInSamples++); - } - } - } - } - public uint Read(byte[] buff, uint sampleCount) { if (_flacReader.BitsPerSample != 16) { throw new Exception("Reading is only supported for 16 bit sample depth."); @@ -509,7 +143,7 @@ namespace CUEToolsLib { copyCount = Math.Min(samplesNeeded, SamplesInBuffer); - FLACSamplesToBytes_16(_sampleBuffer, _bufferOffset, buff, buffOffset, + AudioCodecsDotNet.AudioCodecsDotNet.FLACSamplesToBytes_16(_sampleBuffer, _bufferOffset, buff, buffOffset, copyCount, chanCount); samplesNeeded -= copyCount; @@ -525,14 +159,13 @@ namespace CUEToolsLib { class FLACWriter : IAudioDest { FLACDotNet.FLACWriter _flacWriter; - int[,] _sampleBuffer; int _bitsPerSample; int _channelCount; int _sampleRate; public FLACWriter(string path, int bitsPerSample, int channelCount, int sampleRate) { - if (bitsPerSample != 16) { - throw new Exception("Bits per sample must be 16."); + if (bitsPerSample != 16 && bitsPerSample != 24) { + throw new Exception("Bits per sample must be 16 or 24."); } _bitsPerSample = bitsPerSample; _channelCount = channelCount; @@ -577,35 +210,9 @@ namespace CUEToolsLib { _flacWriter.Close(); } - private unsafe void BytesToFLACSamples_16(byte[] inSamples, int inByteOffset, - int[,] outSamples, int outSampleOffset, uint sampleCount, int channelCount) + public void Write(int[,] buff, uint sampleCount) { - uint loopCount = sampleCount * (uint) channelCount; - - if ((inSamples.Length - inByteOffset < loopCount * 2) || - (outSamples.GetLength(0) - outSampleOffset < sampleCount)) - { - throw new IndexOutOfRangeException(); - } - - fixed (byte* pInSamplesFixed = &inSamples[inByteOffset]) { - fixed (int* pOutSamplesFixed = &outSamples[outSampleOffset, 0]) { - short* pInSamples = (short*)pInSamplesFixed; - int* pOutSamples = pOutSamplesFixed; - - for (int i = 0; i < loopCount; i++) { - *(pOutSamples++) = (int)*(pInSamples++); - } - } - } - } - - public void Write(byte[] buff, uint sampleCount) { - if ((_sampleBuffer == null) || (_sampleBuffer.GetLength(0) < sampleCount)) { - _sampleBuffer = new int[sampleCount, _channelCount]; - } - BytesToFLACSamples_16(buff, 0, _sampleBuffer, 0, sampleCount, _channelCount); - _flacWriter.Write(_sampleBuffer, (int) sampleCount); + _flacWriter.Write(buff, (int) sampleCount); } public string Path { get { return _flacWriter.Path; } } @@ -739,20 +346,22 @@ namespace CUEToolsLib { class APEWriter : IAudioDest { APEDotNet.APEWriter _apeWriter; - //int[,] _sampleBuffer; + byte[] _sampleBuffer; int _bitsPerSample; int _channelCount; int _sampleRate; + int _blockAlign; public APEWriter(string path, int bitsPerSample, int channelCount, int sampleRate) { - if (bitsPerSample != 16) + if (bitsPerSample != 16 && bitsPerSample != 24) { - throw new Exception("Bits per sample must be 16."); + throw new Exception("Bits per sample must be 16 or 24."); } _bitsPerSample = bitsPerSample; _channelCount = channelCount; _sampleRate = sampleRate; + _blockAlign = _channelCount * ((_bitsPerSample + 7) / 8); _apeWriter = new APEDotNet.APEWriter(path, bitsPerSample, channelCount, sampleRate); } @@ -775,40 +384,12 @@ namespace CUEToolsLib { { _apeWriter.Close(); } - private unsafe void BytesToAPESamples_16(byte[] inSamples, int inByteOffset, - int[,] outSamples, int outSampleOffset, uint sampleCount, int channelCount) + public void Write(int [,] buff, uint sampleCount) { - uint loopCount = sampleCount * (uint)channelCount; - - if ((inSamples.Length - inByteOffset < loopCount * 2) || - (outSamples.GetLength(0) - outSampleOffset < sampleCount)) - { - throw new IndexOutOfRangeException(); - } - - fixed (byte* pInSamplesFixed = &inSamples[inByteOffset]) - { - fixed (int* pOutSamplesFixed = &outSamples[outSampleOffset, 0]) - { - short* pInSamples = (short*)pInSamplesFixed; - int* pOutSamples = pOutSamplesFixed; - - for (int i = 0; i < loopCount; i++) - { - *(pOutSamples++) = (int)*(pInSamples++); - } - } - } - } - public void Write(byte[] buff, uint sampleCount) - { - //if ((_sampleBuffer == null) || (_sampleBuffer.GetLength(0) < sampleCount)) - //{ - // _sampleBuffer = new int[sampleCount, _channelCount]; - //} - //BytesToAPESamples_16(buff, 0, _sampleBuffer, 0, sampleCount, _channelCount); - //_apeWriter.Write(_sampleBuffer, (int)sampleCount); - _apeWriter.Write (buff, sampleCount); + if (_sampleBuffer == null || _sampleBuffer.Length < sampleCount * _blockAlign) + _sampleBuffer = new byte[sampleCount * _blockAlign]; + AudioCodecsDotNet.AudioCodecsDotNet.FLACSamplesToBytes (buff, 0, _sampleBuffer, 0, sampleCount, _channelCount, _bitsPerSample); + _apeWriter.Write(_sampleBuffer, sampleCount); } public string Path { get { return _apeWriter.Path; } } } @@ -871,29 +452,6 @@ namespace CUEToolsLib { set { _wavPackReader.Tags = value; } } - private unsafe void WavPackSamplesToBytes_16(int[,] inSamples, uint inSampleOffset, - byte[] outSamples, uint outByteOffset, uint sampleCount, int channelCount) - { - uint loopCount = sampleCount * (uint) channelCount; - - if ((inSamples.GetLength(0) - inSampleOffset < sampleCount) || - (outSamples.Length - outByteOffset < loopCount * 2)) - { - throw new IndexOutOfRangeException(); - } - - fixed (int* pInSamplesFixed = &inSamples[inSampleOffset, 0]) { - fixed (byte* pOutSamplesFixed = &outSamples[outByteOffset]) { - int* pInSamples = pInSamplesFixed; - short* pOutSamples = (short*)pOutSamplesFixed; - - for (int i = 0; i < loopCount; i++) { - *(pOutSamples++) = (short)*(pInSamples++); - } - } - } - } - public uint Read(byte[] buff, uint sampleCount) { if (_wavPackReader.BitsPerSample != 16) { throw new Exception("Reading is only supported for 16 bit sample depth."); @@ -903,8 +461,7 @@ namespace CUEToolsLib { sampleBuffer = new int[sampleCount * 2, chanCount]; _wavPackReader.Read(sampleBuffer, (int) sampleCount); - WavPackSamplesToBytes_16(sampleBuffer, 0, buff, 0, sampleCount, chanCount); - + AudioCodecsDotNet.AudioCodecsDotNet.FLACSamplesToBytes_16(sampleBuffer, 0, buff, 0, sampleCount, chanCount); return sampleCount; } @@ -913,18 +470,21 @@ namespace CUEToolsLib { class WavPackWriter : IAudioDest { WavPackDotNet.WavPackWriter _wavPackWriter; - int[,] _sampleBuffer; int _bitsPerSample; int _channelCount; int _sampleRate; + int _blockAlign; + byte[] _sampleBuffer; public WavPackWriter(string path, int bitsPerSample, int channelCount, int sampleRate) { - if (bitsPerSample != 16) { - throw new Exception("Bits per sample must be 16."); + if (bitsPerSample != 16 && bitsPerSample != 24) + { + throw new Exception("Bits per sample must be 16 or 24."); } _bitsPerSample = bitsPerSample; _channelCount = channelCount; _sampleRate = sampleRate; + _blockAlign = _channelCount * ((_bitsPerSample + 7) / 8); _wavPackWriter = new WavPackDotNet.WavPackWriter(path, bitsPerSample, channelCount, sampleRate); } @@ -961,39 +521,31 @@ namespace CUEToolsLib { } } + public bool MD5Sum + { + get + { + return _wavPackWriter.MD5Sum; + } + set + { + _wavPackWriter.MD5Sum = value; + } + } + public void Close() { _wavPackWriter.Close(); } - private unsafe void BytesToWavPackSamples_16(byte[] inSamples, int inByteOffset, - int[,] outSamples, int outSampleOffset, uint sampleCount, int channelCount) - { - uint loopCount = sampleCount * (uint) channelCount; - - if ((inSamples.Length - inByteOffset < loopCount * 2) || - (outSamples.GetLength(0) - outSampleOffset < sampleCount)) + public void Write(int[,] sampleBuffer, uint sampleCount) { + if (MD5Sum) { - throw new IndexOutOfRangeException(); + if (_sampleBuffer == null || _sampleBuffer.Length < sampleCount * _blockAlign) + _sampleBuffer = new byte[sampleCount * _blockAlign]; + AudioCodecsDotNet.AudioCodecsDotNet.FLACSamplesToBytes(sampleBuffer, 0, _sampleBuffer, 0, sampleCount, _channelCount, _bitsPerSample); + _wavPackWriter.UpdateHash(_sampleBuffer, (int) sampleCount * _blockAlign); } - - fixed (byte* pInSamplesFixed = &inSamples[inByteOffset]) { - fixed (int* pOutSamplesFixed = &outSamples[outSampleOffset, 0]) { - short* pInSamples = (short*)pInSamplesFixed; - int* pOutSamples = pOutSamplesFixed; - - for (int i = 0; i < loopCount; i++) { - *(pOutSamples++) = (int)*(pInSamples++); - } - } - } - } - - public void Write(byte[] buff, uint sampleCount) { - if ((_sampleBuffer == null) || (_sampleBuffer.GetLength(0) < sampleCount)) { - _sampleBuffer = new int[sampleCount, _channelCount]; - } - BytesToWavPackSamples_16(buff, 0, _sampleBuffer, 0, sampleCount, _channelCount); - _wavPackWriter.Write(_sampleBuffer, (int) sampleCount); + _wavPackWriter.Write(sampleBuffer, (int) sampleCount); } public string Path { get { return _wavPackWriter.Path; } } diff --git a/CUEToolsLib/CUEToolsLib.csproj b/CUEToolsLib/CUEToolsLib.csproj index 09af809..ef4f6c9 100644 --- a/CUEToolsLib/CUEToolsLib.csproj +++ b/CUEToolsLib/CUEToolsLib.csproj @@ -89,14 +89,26 @@ + + {F2EC7193-D5E5-4252-9803-5CEB407E910F} + ALACDotNet + {9AE965C4-301E-4C01-B90F-297AF341ACC6} APEDotNet + + {6458A13A-30EF-45A9-9D58-E5031B17BEE2} + AudioCodecsDotNet + {E70FA90A-7012-4A52-86B5-362B699D1540} FLACDotNet + + {32338A04-5B6B-4C63-8EE7-C6400F73B5D7} + HDCDDotNet + {CC2E74B6-534A-43D8-9F16-AC03FE955000} WavPackDotNet diff --git a/CUEToolsLib/Main.cs b/CUEToolsLib/Main.cs index 6d6b4de..ca3569c 100644 --- a/CUEToolsLib/Main.cs +++ b/CUEToolsLib/Main.cs @@ -27,6 +27,8 @@ using System.Globalization; using System.IO; using System.Net; using System.Threading; +using AudioCodecsDotNet; +using HDCDDotNet; namespace CUEToolsLib { @@ -215,6 +217,7 @@ namespace CUEToolsLib public bool preserveHTOA; public int wvCompressionMode; public int wvExtraMode; + public bool wvStoreMD5; public bool keepOriginalFilenames; public string trackFilenameFormat; public string singleFilenameFormat; @@ -225,6 +228,11 @@ namespace CUEToolsLib public bool fillUpCUE; public bool filenamesANSISafe; public bool bruteForceDTL; + public bool detectHDCD; + public bool decodeHDCD; + public bool wait750FramesForHDCD; + public bool createM3U; + public bool createCUEFileWhenEmbedded; public CUEConfig() { @@ -247,6 +255,7 @@ namespace CUEToolsLib preserveHTOA = true; wvCompressionMode = 1; wvExtraMode = 0; + wvStoreMD5 = false; keepOriginalFilenames = true; trackFilenameFormat = "%N-%A-%T"; singleFilenameFormat = "%F"; @@ -257,6 +266,11 @@ namespace CUEToolsLib fillUpCUE = true; filenamesANSISafe = true; bruteForceDTL = false; + detectHDCD = true; + wait750FramesForHDCD = true; + decodeHDCD = false; + createM3U = false; + createCUEFileWhenEmbedded = false; } public void Save (SettingsWriter sw) @@ -280,6 +294,7 @@ namespace CUEToolsLib sw.Save("FLACVerify", flacVerify); sw.Save("WVCompressionMode", wvCompressionMode); sw.Save("WVExtraMode", wvExtraMode); + sw.Save("WVStoreMD5", wvStoreMD5); sw.Save("KeepOriginalFilenames", keepOriginalFilenames); sw.Save("SingleFilenameFormat", singleFilenameFormat); sw.Save("TrackFilenameFormat", trackFilenameFormat); @@ -290,6 +305,11 @@ namespace CUEToolsLib sw.Save("FillUpCUE", fillUpCUE); sw.Save("FilenamesANSISafe", filenamesANSISafe); sw.Save("BruteForceDTL", bruteForceDTL); + sw.Save("DetectHDCD", detectHDCD); + sw.Save("Wait750FramesForHDCD", wait750FramesForHDCD); + sw.Save("DecodeHDCD", decodeHDCD); + sw.Save("CreateM3U", createM3U); + sw.Save("CreateCUEFileWhenEmbedded", createCUEFileWhenEmbedded); } public void Load(SettingsReader sr) @@ -313,6 +333,7 @@ namespace CUEToolsLib apeCompressionLevel = sr.LoadUInt32("APECompressionLevel", 1, 5) ?? 2; wvCompressionMode = sr.LoadInt32("WVCompressionMode", 0, 3) ?? 1; wvExtraMode = sr.LoadInt32("WVExtraMode", 0, 6) ?? 0; + wvStoreMD5 = sr.LoadBoolean("WVStoreMD5") ?? false; keepOriginalFilenames = sr.LoadBoolean("KeepOriginalFilenames") ?? true; singleFilenameFormat = sr.Load("SingleFilenameFormat") ?? "%F"; trackFilenameFormat = sr.Load("TrackFilenameFormat") ?? "%N-%A-%T"; @@ -323,6 +344,11 @@ namespace CUEToolsLib fillUpCUE = sr.LoadBoolean("FillUpCUE") ?? true; filenamesANSISafe = sr.LoadBoolean("FilenamesANSISafe") ?? true; bruteForceDTL = sr.LoadBoolean("BruteForceDTL") ?? false; + detectHDCD = sr.LoadBoolean("DetectHDCD") ?? true; + wait750FramesForHDCD = sr.LoadBoolean("Wait750FramesForHDCD") ?? true; + decodeHDCD = sr.LoadBoolean("DecodeHDCD") ?? false; + createM3U = sr.LoadBoolean("CreateM3U") ?? false; + createCUEFileWhenEmbedded = sr.LoadBoolean("CreateCUEFileWhenEmbedded") ?? false; } public string CleanseString (string s) @@ -374,6 +400,7 @@ namespace CUEToolsLib private List accDisks; private HttpStatusCode accResult; private const int _arOffsetRange = 5 * 588 - 1; + private HDCDDotNet.HDCDDotNet hdcdDecoder; CUEConfig _config; string _cddbDiscIdTag; @@ -381,6 +408,13 @@ namespace CUEToolsLib { _config = config; + hdcdDecoder = null; + if (_config.detectHDCD) + { + try { hdcdDecoder = new HDCDDotNet.HDCDDotNet(2, 44100, _config.decodeHDCD); } + catch { } + } + string cueDir, lineStr, command, pathAudio, fileType; CUELine line; TrackInfo trackInfo; @@ -890,6 +924,31 @@ namespace CUEToolsLib return (int)audioSource.Length; } + public void WriteM3U(string path, CUEStyle style) + { + StringWriter sw = new StringWriter(); + WriteM3U(sw, style); + sw.Close(); + bool utf8Required = CUESheet.Encoding.GetString(CUESheet.Encoding.GetBytes(sw.ToString())) != sw.ToString(); + StreamWriter sw1 = new StreamWriter(path, false, utf8Required ? Encoding.UTF8 : CUESheet.Encoding); + sw1.Write(sw.ToString()); + sw1.Close(); + } + + public void WriteM3U(TextWriter sw, CUEStyle style) + { + int iTrack; + bool htoaToFile = ((style == CUEStyle.GapsAppended) && _config.preserveHTOA && + (_tracks[0].IndexLengths[0] != 0)); + + if (htoaToFile) { + WriteLine(sw, 0, _htoaFilename); + } + for (iTrack = 0; iTrack < TrackCount; iTrack++) { + WriteLine(sw, 0, _trackFilenames[iTrack]); + } + } + public void Write(string path, CUEStyle style) { StringWriter sw = new StringWriter(); Write(sw, style); @@ -1064,11 +1123,19 @@ namespace CUEToolsLib // Allocate byte buffer to hold stream contents byte [] urlData = new byte[13]; - long urlDataLen; + int urlDataLen, bytesRead; accDisks.Clear(); - while ( 0 != (urlDataLen = respStream.Read(urlData, 0, 13)) ) + while ( true ) { + for (urlDataLen = 0; urlDataLen < 13; urlDataLen += bytesRead) + { + bytesRead = respStream.Read(urlData, urlDataLen, 13 - urlDataLen); + if (0 == bytesRead) + break; + } + if (urlDataLen == 0) + break; if (urlDataLen < 13) { accResult = HttpStatusCode.PartialContent; @@ -1082,11 +1149,14 @@ namespace CUEToolsLib for (int i = 0; i < dsk.count; i++) { - urlDataLen = respStream.Read(urlData, 0, 9); - if (urlDataLen < 9) + for (urlDataLen = 0; urlDataLen < 9; urlDataLen += bytesRead) { - accResult = HttpStatusCode.PartialContent; - return; + bytesRead = respStream.Read(urlData, urlDataLen, 9 - urlDataLen); + if (0 == bytesRead) + { + accResult = HttpStatusCode.PartialContent; + return; + } } AccTrack trk = new AccTrack(); trk.count = urlData[0]; @@ -1259,6 +1329,20 @@ namespace CUEToolsLib if (_accurateRipIdActual != _accurateRipId) sw.WriteLine("Using preserved id, actual id is {0}.", _accurateRipIdActual); } + + if (hdcdDecoder != null && hdcdDecoder.Detected) + { + hdcd_decoder_statistics stats; + hdcdDecoder.GetStatistics(out stats); + sw.WriteLine("HDCD: peak extend: {0}, transient filter: {1}, gain: {2}", + (stats.enabled_peak_extend ? (stats.disabled_peak_extend ? "some" : "yes") : "none"), + (stats.enabled_transient_filter ? (stats.disabled_transient_filter ? "some" : "yes") : "none"), + stats.min_gain_adjustment == stats.max_gain_adjustment ? + (stats.min_gain_adjustment == 1.0 ? "none" : String.Format ("{0:0.0}dB", (Math.Log10(stats.min_gain_adjustment) * 20))) : + String.Format ("{0:0.0}dB..{1:0.0}dB", (Math.Log10(stats.min_gain_adjustment) * 20), (Math.Log10(stats.max_gain_adjustment) * 20)) + ); + } + if (accResult == HttpStatusCode.NotFound) { sw.WriteLine("Disk not present in database."); @@ -1513,6 +1597,10 @@ namespace CUEToolsLib Directory.CreateDirectory(dir); if (style != CUEStyle.SingleFileWithCUE) Write(_cuePath, style); + else if (_config.createCUEFileWhenEmbedded) + Write(Path.ChangeExtension(_cuePath, ".cue"), style); + if (style != CUEStyle.SingleFileWithCUE && style != CUEStyle.SingleFile && _config.createM3U) + WriteM3U(Path.ChangeExtension(_cuePath, ".m3u"), style); } WriteAudioFilesPass(dir, style, statusDel, destPaths, destLengths, htoaToFile, verifyOnly); } @@ -1681,6 +1769,7 @@ namespace CUEToolsLib TrackInfo track; IAudioSource audioSource = null; IAudioDest audioDest = null; + IAudioDest decodedAudioDest = null; bool discardOutput; int iSource = -1; int iDest = -1; @@ -1732,14 +1821,25 @@ namespace CUEToolsLib if (!noOutput && _accurateRipId != null && _config.writeArTagsOnConvert && _accurateOffset && accResult == HttpStatusCode.OK) FindBestOffset(1, true, out tracksMatch, out bestOffset); + if (hdcdDecoder != null) + hdcdDecoder.Reset(); + if (style == CUEStyle.SingleFile || style == CUEStyle.SingleFileWithCUE) { iDest++; - audioDest = GetAudioDest(destPaths[iDest], destLengths[iDest], noOutput); + audioDest = GetAudioDest(destPaths[iDest], destLengths[iDest], noOutput, 16); if (!noOutput) SetAlbumTags(audioDest, bestOffset, style == CUEStyle.SingleFileWithCUE); + if (_config.detectHDCD && hdcdDecoder != null && _config.decodeHDCD && !noOutput) + { + decodedAudioDest = GetAudioDest(Path.ChangeExtension(destPaths[iDest], ".24bit" + Path.GetExtension(destPaths[iDest])), + destLengths[iDest], noOutput, 24); + SetAlbumTags(decodedAudioDest, bestOffset, style == CUEStyle.SingleFileWithCUE); + } } + int[,] sampleBuffer = null; + if (_accurateRip && noOutput) for (iTrack = 0; iTrack < TrackCount; iTrack++) for (int iCRC = 0; iCRC < 10 * 588; iCRC++) @@ -1765,9 +1865,18 @@ namespace CUEToolsLib if ((style == CUEStyle.GapsPrepended) || (style == CUEStyle.GapsLeftOut)) { if (audioDest != null) audioDest.Close(); iDest++; - audioDest = GetAudioDest(destPaths[iDest], destLengths[iDest], noOutput); + audioDest = GetAudioDest(destPaths[iDest], destLengths[iDest], noOutput, 16); if (!noOutput) SetTrackTags(audioDest, iTrack, bestOffset); + if (_config.detectHDCD && hdcdDecoder != null && _config.decodeHDCD && !noOutput) + { + hdcdDecoder.AudioDest = null; + if (decodedAudioDest != null) + decodedAudioDest.Close(); + decodedAudioDest = GetAudioDest(Path.ChangeExtension(destPaths[iDest], ".24bit" + Path.GetExtension(destPaths[iDest])), + destLengths[iDest], noOutput, 24); + SetTrackTags(decodedAudioDest, iTrack, bestOffset); + } } for (iIndex = 0; iIndex <= track.LastIndex; iIndex++) { @@ -1788,16 +1897,30 @@ namespace CUEToolsLib if ((style == CUEStyle.GapsAppended) && (iIndex == 1)) { if (audioDest != null) audioDest.Close(); iDest++; - audioDest = GetAudioDest(destPaths[iDest], destLengths[iDest], noOutput); + audioDest = GetAudioDest(destPaths[iDest], destLengths[iDest], noOutput, 16); if (!noOutput) SetTrackTags(audioDest, iTrack, bestOffset); + if (_config.detectHDCD && hdcdDecoder != null && _config.decodeHDCD && !noOutput) + { + hdcdDecoder.AudioDest = null; + if (decodedAudioDest != null) + decodedAudioDest.Close(); + decodedAudioDest = GetAudioDest(Path.ChangeExtension(destPaths[iDest], ".24bit" + Path.GetExtension(destPaths[iDest])), + destLengths[iDest], noOutput, 24); + SetTrackTags(decodedAudioDest, iTrack, bestOffset); + } } if ((style == CUEStyle.GapsAppended) && (iIndex == 0) && (iTrack == 0)) { discardOutput = !htoaToFile; if (htoaToFile) { iDest++; - audioDest = GetAudioDest(destPaths[iDest], destLengths[iDest], noOutput); + audioDest = GetAudioDest(destPaths[iDest], destLengths[iDest], noOutput, 16); + if (_config.detectHDCD && hdcdDecoder != null && _config.decodeHDCD && !noOutput) + { + decodedAudioDest = GetAudioDest(Path.ChangeExtension(destPaths[iDest], ".24bit" + Path.GetExtension(destPaths[iDest])), + destLengths[iDest], noOutput, 24); + } } } else if ((style == CUEStyle.GapsLeftOut) && (iIndex == 0)) { @@ -1828,7 +1951,24 @@ namespace CUEToolsLib } audioSource.Read(buff, copyCount); - if (!discardOutput) audioDest.Write(buff, copyCount); + if (sampleBuffer == null || sampleBuffer.GetLength(0) < copyCount) + sampleBuffer = new int[copyCount, audioSource.ChannelCount]; + AudioCodecsDotNet.AudioCodecsDotNet.BytesToFLACSamples_16(buff, 0, sampleBuffer, 0, copyCount, audioSource.ChannelCount); + if (!discardOutput) audioDest.Write(sampleBuffer, copyCount); + if (_config.detectHDCD && hdcdDecoder != null) + { + if (_config.wait750FramesForHDCD && diskOffset > 750 * 588 && !hdcdDecoder.Detected) + { + hdcdDecoder.AudioDest = null; + hdcdDecoder = null; + } + else + { + if (_config.decodeHDCD) + hdcdDecoder.AudioDest = (discardOutput || noOutput) ? null : decodedAudioDest; + hdcdDecoder.Process(sampleBuffer, copyCount); + } + } if (_accurateRip && noOutput && (iTrack != 0 || iIndex != 0)) unsafe { fixed (byte * pBuff = &buff[0]) @@ -1857,8 +1997,18 @@ namespace CUEToolsLib lock (this) { if (_stop) { + if (hdcdDecoder != null) + hdcdDecoder.AudioDest = null; audioSource.Close(); - try { audioDest.Close(); } catch {} + try { + if (audioDest != null) audioDest.Close(); + } catch { } + // need two separate try/catches, + // because Close always throws an exception, and + // we want both streams closed. + try { + if (decodedAudioDest != null) decodedAudioDest.Close(); + } catch { } throw new StopException(); } if (_pause) @@ -1871,8 +2021,12 @@ namespace CUEToolsLib } } + if (hdcdDecoder != null) + hdcdDecoder.AudioDest = null; if (audioSource != null) audioSource.Close(); audioDest.Close(); + if (decodedAudioDest != null) + decodedAudioDest.Close(); } public static string CorrectAudioFilenames(string path, bool always) { @@ -2030,11 +2184,11 @@ namespace CUEToolsLib } } - private IAudioDest GetAudioDest(string path, int finalSampleCount, bool noOutput) { + private IAudioDest GetAudioDest(string path, int finalSampleCount, bool noOutput, int bitsPerSample) { if (noOutput) - return new DummyWriter(path, 16, 2, 44100); + return new DummyWriter(path, bitsPerSample, 2, 44100); - IAudioDest dest = AudioReadWrite.GetAudioDest(path, 16, 2, 44100, finalSampleCount); + IAudioDest dest = AudioReadWrite.GetAudioDest(path, bitsPerSample, 2, 44100, finalSampleCount); #if !MONO if (dest is FLACWriter) { @@ -2046,6 +2200,7 @@ namespace CUEToolsLib WavPackWriter w = (WavPackWriter)dest; w.CompressionMode = _config.wvCompressionMode; w.ExtraMode = _config.wvExtraMode; + w.MD5Sum = _config.wvStoreMD5; } if (dest is APEWriter) { @@ -2406,86 +2561,4 @@ namespace CUEToolsLib public StopException() : base() { } } - - class SilenceGenerator : IAudioSource { - private ulong _sampleOffset, _sampleCount; - - public SilenceGenerator(uint sampleCount) { - _sampleOffset = 0; - _sampleCount = sampleCount; - } - - public ulong Length { - get { - return _sampleCount; - } - } - - public ulong Remaining { - get { - return _sampleCount - _sampleOffset; - } - } - - public ulong Position { - get { - return _sampleOffset; - } - set { - _sampleOffset = value; - } - } - - public int BitsPerSample { - get { - return 16; - } - } - - public int ChannelCount { - get { - return 2; - } - } - - public int SampleRate { - get { - return 44100; - } - } - - public NameValueCollection Tags - { - get - { - return new NameValueCollection(); - } - set - { - } - } - - public uint Read(byte[] buff, uint sampleCount) { - uint samplesRemaining, byteCount, i; - - samplesRemaining = (uint) (_sampleCount - _sampleOffset); - if (sampleCount > samplesRemaining) { - sampleCount = samplesRemaining; - } - - byteCount = sampleCount * 2 * 2; - for (i = 0; i < byteCount; i++) { - buff[i] = 0; - } - - _sampleOffset += sampleCount; - - return sampleCount; - } - - public void Close() { - } - - public string Path { get { return null; } } - } } \ No newline at end of file diff --git a/WavPackDotNet/WavPackDotNet.cpp b/WavPackDotNet/WavPackDotNet.cpp index c854c5f..3ae49a2 100644 --- a/WavPackDotNet/WavPackDotNet.cpp +++ b/WavPackDotNet/WavPackDotNet.cpp @@ -32,6 +32,7 @@ using namespace System; using namespace System::Runtime::InteropServices; using namespace System::Collections::Specialized; +using namespace System::Security::Cryptography; using namespace APETagsDotNet; #include @@ -187,6 +188,13 @@ namespace WavPackDotNet { } void Close() { + if (_md5Sum) + { + _md5hasher->TransformFinalBlock (gcnew array(1), 0, 0); + pin_ptr md5_digest = &_md5hasher->Hash[0]; + WavpackStoreMD5Sum (_wpc, md5_digest); + } + WavpackFlushSamples(_wpc); _wpc = WavpackCloseFile(_wpc); fclose(_hFile); @@ -244,11 +252,28 @@ namespace WavPackDotNet { } } + property bool MD5Sum { + bool get() { + return _md5Sum; + } + void set(bool value) { + _md5Sum = value; + } + } + + void UpdateHash(array^ buff, Int32 len) + { + if (!_initialized) Initialize(); + + if (!_md5Sum || !_md5hasher) + throw gcnew Exception("MD5 not enabled."); + _md5hasher->TransformBlock (buff, 0, len, buff, 0); + } + void Write(array^ sampleBuffer, Int32 sampleCount) { if (!_initialized) Initialize(); pin_ptr pSampleBuffer = &sampleBuffer[0, 0]; - if (!WavpackPackSamples(_wpc, (int32_t*)pSampleBuffer, sampleCount)) { throw gcnew Exception("An error occurred while encoding."); } @@ -275,6 +300,8 @@ namespace WavPackDotNet { Int32 _compressionMode, _extraMode; NameValueCollection^ _tags; String^ _path; + bool _md5Sum; + MD5^ _md5hasher; void Initialize() { WavpackConfig config; @@ -297,6 +324,11 @@ namespace WavPackDotNet { config.flags |= CONFIG_EXTRA_MODE; config.xmode = _extraMode; } + if (_md5Sum) + { + _md5hasher = gcnew MD5CryptoServiceProvider (); + config.flags |= CONFIG_MD5_CHECKSUM; + } if (!WavpackSetConfiguration(_wpc, &config, (_finalSampleCount == 0) ? -1 : _finalSampleCount)) { throw gcnew Exception("Invalid configuration setting.");