diff --git a/Bwg.Scsi/Device.cs b/Bwg.Scsi/Device.cs
index d9949e2..e9ca210 100644
--- a/Bwg.Scsi/Device.cs
+++ b/Bwg.Scsi/Device.cs
@@ -1463,9 +1463,16 @@ namespace Bwg.Scsi
return st;
len = cmd.GetBuffer8(4);
- len += 4;
+ len += 5;
- result = new InquiryResult(cmd.GetBuffer(), cmd.BufferSize);
+ if (len <= cmd.BufferSize)
+ {
+ result = new InquiryResult(cmd.GetBuffer(), len);
+
+ if (m_logger != null)
+ m_logger.DumpBuffer(9, "Raw Inquiry Result", cmd.GetBuffer(), len);
+ return CommandStatus.Success;
+ }
//
// As an oddity, the Sony DW-G120A only supports requests that are an even number
diff --git a/CUETools.Codecs.FLACCL/FLACCLWriter.cs b/CUETools.Codecs.FLACCL/FLACCLWriter.cs
index ad829c8..da64337 100644
--- a/CUETools.Codecs.FLACCL/FLACCLWriter.cs
+++ b/CUETools.Codecs.FLACCL/FLACCLWriter.cs
@@ -1240,29 +1240,22 @@ namespace CUETools.Codecs.FLACCL
else
frame.ch_mode = channels != 2 ? ChannelMode.NotStereo : ChannelMode.LeftRight;
+ int toUnpack = Math.Min(task.frameSize, eparams.max_prediction_order);
// calculate wbits before unpacking samples.
- for (int ch = 0; ch < channels; ch++)
- {
- int index = ch + iFrame * channels;
- frame.subframes[ch].wbits = frame.blocksize > 4
- ? task.BestResidualTasks[index].wbits : 0;
- }
- unpack_samples(task, Math.Min(task.frameSize, eparams.max_prediction_order));
-
for (int ch = 0; ch < channels; ch++)
{
int index = ch + iFrame * channels;
frame.subframes[ch].best.residual = ((int*)task.clResidualPtr) + task.BestResidualTasks[index].residualOffs;
frame.subframes[ch].best.type = SubframeType.Verbatim;
frame.subframes[ch].best.size = (uint)(frame.subframes[ch].obits * frame.blocksize);
-
+ frame.subframes[ch].wbits = 0;
if (frame.blocksize > Math.Max(4, eparams.max_prediction_order))
{
if (task.BestResidualTasks[index].size < 0)
throw new Exception("internal error");
-
- if (frame.subframes[ch].best.size > task.BestResidualTasks[index].size
- && (SubframeType)task.BestResidualTasks[index].type != SubframeType.Verbatim)
+
+ if (frame.subframes[ch].best.size > task.BestResidualTasks[index].size &&
+ (SubframeType)task.BestResidualTasks[index].type != SubframeType.Verbatim)
{
frame.subframes[ch].best.type = (SubframeType)task.BestResidualTasks[index].type;
frame.subframes[ch].best.size = (uint)task.BestResidualTasks[index].size;
@@ -1294,18 +1287,27 @@ namespace CUETools.Codecs.FLACCL
throw new Exception("size reported incorrectly");
}
}
+ if (task.frame.subframes[ch].best.type == SubframeType.Verbatim)
+ toUnpack = task.frameSize;
+ if (task.frame.subframes[ch].best.type == SubframeType.LPC && !task.UseGPUOnly)
+ toUnpack = task.frameSize;
+ if (task.frame.subframes[ch].best.type == SubframeType.Fixed && !task.UseGPUOnly)
+ toUnpack = task.frameSize;
+ }
+ unpack_samples(task, toUnpack);
+ for (int ch = 0; ch < channels; ch++)
+ {
+ int index = ch + iFrame * channels;
switch (task.frame.subframes[ch].best.type)
{
case SubframeType.Constant:
break;
case SubframeType.Verbatim:
- unpack_samples(task, task.frameSize);
break;
case SubframeType.Fixed:
if (!task.UseGPUOnly)
{
- unpack_samples(task, task.frameSize);
encode_residual_fixed(task.frame.subframes[ch].best.residual, task.frame.subframes[ch].samples,
task.frame.blocksize, task.frame.subframes[ch].best.order);
@@ -1317,7 +1319,6 @@ namespace CUETools.Codecs.FLACCL
case SubframeType.LPC:
if (!task.UseGPUOnly)
{
- unpack_samples(task, task.frameSize);
fixed (int* coefs = task.frame.subframes[ch].best.coefs)
{
if (PCM.BitsPerSample > 16)
diff --git a/CUETools.Codecs.LAME/CUETools.Codecs.LAME.csproj b/CUETools.Codecs.LAME/CUETools.Codecs.LAME.csproj
index ce18c10..564b0d7 100644
--- a/CUETools.Codecs.LAME/CUETools.Codecs.LAME.csproj
+++ b/CUETools.Codecs.LAME/CUETools.Codecs.LAME.csproj
@@ -21,6 +21,7 @@
DEBUG;TRACE
prompt
4
+ true
pdbonly
diff --git a/CUETools.Compression.Zip/CUETools.Compression.Zip.csproj b/CUETools.Compression.Zip/CUETools.Compression.Zip.csproj
index 5f363fa..dfbb89a 100644
--- a/CUETools.Compression.Zip/CUETools.Compression.Zip.csproj
+++ b/CUETools.Compression.Zip/CUETools.Compression.Zip.csproj
@@ -2,7 +2,7 @@
Debug
AnyCPU
- 8.0.50727
+ 9.0.30729
2.0
{EA2CAE21-940C-4F51-A802-E02ABB97A9B5}
Library
@@ -19,7 +19,7 @@
true
full
false
- bin\Debug\
+ ..\bin\Debug\plugins\
DEBUG;TRACE
prompt
4
diff --git a/CUETools/CUETools.TestParity/CUETools.TestParity.csproj b/CUETools/CUETools.TestParity/CUETools.TestParity.csproj
index 6c40af9..c1471d8 100644
--- a/CUETools/CUETools.TestParity/CUETools.TestParity.csproj
+++ b/CUETools/CUETools.TestParity/CUETools.TestParity.csproj
@@ -23,6 +23,7 @@
DEBUG;TRACE
prompt
4
+ true
pdbonly