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