PDA

View Full Version : Problems with using ACM codecs to create Compressed WAV files



davidhall
08-20-2015, 12:04 AM
Hi,

I am hoping someone can offer some assistance for the problem I am having.

I am trying to use the Compressed WAV option to create an ACM compressed WAV. The ACM codec I wish to use is 32 bit. My Windows 7 version is 64 bit. I have sucessfully installed the 32 bit codec and it is working in other 32 bit applications such as Adobe Audition 3.0.

I initially could not see the codec in dbpoweramp because I had the 64 bit version installed. I have uninstalled it and done a forced install of the 32 bit version of dbpoweramp. I am using version Ref 15.3 I can now see the codec I want in the list of codecs when in dbpoweramp. For the record I am trying to create compressed BWF Layer 2 files. I am aware there is a codec for dbpoweramp to do this natively but the .mp2 codec in dbpoweramp is limited in the options and bit rates it supports.

The problem I am experiencing is when I try to create the compressed WAV in dbpoweramp, it appears to be creating the compressing the file in that it doesn't return an error and the time it takes seems to suggest it is doing something but the resultant file it creates is 0kB.

This happens regardless of any installed ACM codec I try.

I have also tried this on a completely different WinXP machine with the same results.

Thanks in advance...

edit: Here's the log

Splitting Command Line:Done
->-> [dBCoreConverter::ReaddBCommandFile]
<-<- [dBCoreConverter::ReaddBCommandFile]
Decodes [clDecoder::Get]
BatchID [clDecoder::Set]
->-> [cldBCodecHandler::LoadEncoder]
Loading Encoder 'C:\Program Files (x86)\Illustrate\dBpoweramp\encoder\Wave.DLL'
<-<- [cldBCodecHandler::LoadEncoder]
BatchID [clEncoder::Set]
->-> [dBCoreConverter::StripCoreConverterCmds]
<-<- [dBCoreConverter::StripCoreConverterCmds]
SendRawUnCompressed [clEncoder::Get]
IsLive [clDSP::Get]
SendOverReplayGainTags [clDSP::Get]
BatchID [clDSP::Set]
Communicate [clDecoder::Get]
Communicate [clEncoder::Get]
NeedHQAudio [clEncoder::Get]
->-> [clDecoder::Open]
Opening file 'C:\Temp\Robin Thicke - When I Get You Alone.wav' for read access: Opened
Reading Audio Information
->-> [clWaveDecoder::Initialize]
<-<- [clWaveDecoder::Initialize]
->-> [clRIFFHandler::Initialize]
clRIFFHandler::CalcAllChunks: Ok
<-<- [clRIFFHandler::Initialize]
->-> [clRIFFHandler::ScanFile]
clRIFFHandler::CalcAllChunks: Ok
RIFF Header 'RIFF' Length: 37843158 FormType 'WAVE'
Got Chunk 'fmt ' Length: 18 RiffSizeLeft: 37843146 ChunkPosition: 12
Got Chunk 'data' Length: 37843120 RiffSizeLeft: 37843120 ChunkPosition: 38
clRIFFHandler::CalcAllChunks: Ok
<-<- [clRIFFHandler::ScanFile]
Read Audio Information
->-> [clWaveDecoder::ReadIDTags]
->-> [clWaveDecoder::PullOutFMTnDATA]
Finding 'fmt ' chunk.
Finding 'data' chunk.
Assigning 'fmt ' chunk to WFX
<-<- [clWaveDecoder::PullOutFMTnDATA]
2 ID Tags:
_riff_1: DATA Length: 4 fmt
_riff_2: DATA Length: 4 data
<-<- [clWaveDecoder::ReadIDTags]
->-> [clWaveDecoder::FillAudioProps]
Audio Quality: CD (Lossless)
Encoder Settings: PCM
Wave Header: Wave Format Extended
Channel Mapping: Left, Right
Sample Count: 9,460,780
Riff Chunks: 'fmt ' 18 bytes, 'data' 36.09 MB
Gapless: Yes
<-<- [clWaveDecoder::FillAudioProps]
Writing Audio Information
->-> [clWaveDecoder::FillAudioInfo]
Audio Length: 214530 mili-seconds 37843120 bytes 1411 kbps
<-<- [clWaveDecoder::FillAudioInfo]
Written Audio Information
Preparing to Decode
->-> [clWaveDecoder::PrepareToDecodeAudio]
Calling ACMDecoder.CreateNewConverter
Compressed WFX (on file): Format Tag: 1 Channels: 2 Bits per Sample: 16 Samples Per Second: 44100 Bytes Per Second: 176400 Block Align: 4 CB Size: 0
Uncompressed WFX (sent to db): Format Tag: 1 Channels: 2 Bits per Sample: 16 Samples Per Second: 44100 Bytes Per Second: 176400 Block Align: 4 CB Size: 0
Setting Position in File
<-<- [clWaveDecoder::PrepareToDecodeAudio]
Prepared Decoding
<-<- [clDecoder::Open]
SendOverReplayGainTags [clEncoder::Get]
->-> [clDSP::BeginConversion]
DSP Resample is Active:
Source Audio Format Tag: 1 Channels: 2 Bits per Sample: 16 Samples Per Second: 44100 Bytes Per Second: 176400 Block Align: 4 CB Size: 0
Destination Audio Format Tag: 1 Channels: 2 Bits per Sample: 16 Samples Per Second: 48000 Bytes Per Second: 192000 Block Align: 4 CB Size: 0
<-<- [clDSP::BeginConversion]
->-> [clEncoder::BeginConversion]
Converting to 'C:\Users\David\Desktop\Robin Thicke - When I Get You Alone.wav' encoder settings ' -compression="ACM" -acm="5000020080BB000080BB0000800400001600020000DC050003 000F00010018000000000000000000"'
Wave output WaveFormat: Format Tag: 80 Channels: 2 Bits per Sample: 0 Samples Per Second: 48000 Bytes Per Second: 48000 Block Align: 1152 CB Size: 22
->-> [clRIFFHandler::InitializeNewWAV]
clRIFFHandler::CalcAllChunks: Ok
->-> Adding Chunk 'fmt ' Length: 40 [clRIFFHandler::AddChunk]
clRIFFHandler::CalcAllChunks: Ok
<-<- [clRIFFHandler::AddChunk]
->-> Adding Chunk 'fact' Length: 4 [clRIFFHandler::AddChunk]
clRIFFHandler::CalcAllChunks: Ok
<-<- [clRIFFHandler::AddChunk]
->-> Adding Chunk 'data' Length: 0 [clRIFFHandler::AddChunk]
clRIFFHandler::CalcAllChunks: Ok
<-<- [clRIFFHandler::AddChunk]
->-> [clRIFFHandler::WriteChunkHeaders]
clRIFFHandler::CalcAllChunks: Ok
Writing Chunk Header 'fmt ' Length: 40 ChunkPosition: 12 ChunkDataPos: 20
Writing Chunk Header 'fact' Length: 4 ChunkPosition: 60 ChunkDataPos: 68
Writing Chunk Header 'data' Length: 0 ChunkPosition: 72 ChunkDataPos: 80
<-<- Exit as only write to data chunk [clRIFFHandler::WriteChunkHeaders]
Writing Chunk Data 'fmt ' Length: 40 ChunkPosition: 12 ChunkDataPos: 20
Writing Chunk Data 'fact' Length: 4 ChunkPosition: 60 ChunkDataPos: 68
<-<- [clRIFFHandler::InitializeNewWAV]
<-<- [clEncoder::BeginConversion]
Communicate [clDecoder::Get]
Communicate [clEncoder::Get]
Encoding To: Wave
Encoder Cmd Line: -compression="ACM" -acm="5000020080BB000080BB0000800400001600020000DC050003 000F00010018000000000000000000"
DSP Effects:
Resample: -frequency="48000"

============= CONVERSION BEGIN =============
============= CONVERSION END =============
Communicate [clDecoder::Get]
Communicate [clEncoder::Get]
->-> [dBCoreConverter::CloseDecoder]
->-> [clDecoder::Close]
->-> [clWaveDecoder::Close]
<-<- [clWaveDecoder::Close]
<-<- [clDecoder::Close]
->-> [clDSP::EndConversion]
<-<- [clDSP::EndConversion]
->-> [clEncoder::EndConversion]
->-> [clRIFFHandler::WriteChunkHeaders]
clRIFFHandler::CalcAllChunks: Ok
Writing Chunk Header 'data' Length: 0 ChunkPosition: 72 ChunkDataPos: 80
<-<- [clRIFFHandler::WriteChunkHeaders]
Writing Chunk Data 'fact' Length: 4 ChunkPosition: 60 ChunkDataPos: 68
<-<- [clEncoder::EndConversion]
File Size Check : 80 bytes Filename: C:\Users\David\Desktop\Robin Thicke - When I Get You Alone.wav
File Size Check (before ID Tags Written): 80 bytes Filename: C:\Users\David\Desktop\Robin Thicke - When I Get You Alone.wav
->-> [dBCoreConverter::IDTagWriter]
Decodes [clDecoder::Get]
IDTags [clDecoder::Set]
->-> [clWaveDecoder::WriteIDTags]
->-> [clRIFFBEXTChunk::TagsToBEXT]
Encoding BEXT chunk [clRIFFBEXTChunk::TagsToBEXT]
<-<- [clRIFFBEXTChunk::TagsToBEXT]
Opening file 'C:\Users\David\Desktop\Robin Thicke - When I Get You Alone.wav' for write access: Opened
->-> [clRIFFHandler::Initialize]
clRIFFHandler::CalcAllChunks: Ok
<-<- [clRIFFHandler::Initialize]
->-> [clRIFFHandler::ScanFile]
clRIFFHandler::CalcAllChunks: Ok
RIFF Header 'RIFF' Length: 72 FormType 'WAVE'
Got Chunk 'fmt ' Length: 40 RiffSizeLeft: 60 ChunkPosition: 12
Got Chunk 'fact' Length: 4 RiffSizeLeft: 12 ChunkPosition: 60
Got Chunk 'data' Length: 0 RiffSizeLeft: 0 ChunkPosition: 72
clRIFFHandler::CalcAllChunks: Ok
<-<- [clRIFFHandler::ScanFile]
->-> [clRIFFLISTChunk::TagsToLIST]
<-<- [clRIFFLISTChunk::TagsToLIST]
clRIFFHandler::CalcAllChunks: Ok
->-> [clRIFFHandler::WriteChunkHeaders]
clRIFFHandler::CalcAllChunks: Ok
Writing Chunk Header 'id3 ' Length: 10 ChunkPosition: 80 ChunkDataPos: 88
<-<- [clRIFFHandler::WriteChunkHeaders]
<-<- [clWaveDecoder::WriteIDTags]
<-<- [dBCoreConverter::IDTagWriter]
Communicate [clDecoder::Get]
Communicate [clEncoder::Get]
->-> [clDSP::AfterConversion]
<-<- [clDSP::AfterConversion]
Conversion completed in 6.7 seconds x31 realtime encoding
File Size Check (core converter exit): 98 bytes Filename: C:\Users\David\Desktop\Robin Thicke - When I Get You Alone.wav

Spoon
08-20-2015, 04:27 AM
It will be the acm encoder which is internally failing to encode, I cannot say why though, perhaps it is designed to only work with specific programs?

davidhall
08-20-2015, 04:40 AM
Hi Spoon,

This is what I initially thought but the problem is not unique to just one ACM codec. Regardless of which ACM codec I try... Microsoft ADPCM, MP3 etc.. All of them give the same result. A WAV file with a header but no audio data. The problem is appearing on two different machines (one Win7 64bit, the other WinXP) and in both cases the result is the same with ANY installed ACM codec.

-David

Spoon
08-20-2015, 10:53 AM
I have been able to reproduce this issue, the next beta update will fix.

davidhall
08-24-2015, 08:53 PM
Thanks Spoon,

I was wondering if you could tell me a little about the MP2 codec from codec central. You have the option of choosing Stereo or Dual Mono. With the encoders I have experience with I was under the impression that from an encoding perspective these are the same thing but I know there must be some difference in the file as WMPlayer treats them differently. Does the codec central encoder support Joint Stereo, is this what choosing Stereo means? Does the encoder intelligently choose whether to encode in Joint Stereo or Discreet Stereo on a frame by frame basis depending on how much bitrate is required?

Thanks...

-David

Spoon
08-25-2015, 03:56 AM
If you hold the mouse over a file encoded dBpoweramp should tell you if it is joint stereo. It would encode the whole file as joint stereo.

davidhall
09-11-2015, 01:11 AM
I sussed this out by analyzing the frame headers in the bit stream with a hex editor. It turns out dbPoweramp encodes all frames as stereo. There are no joint stereo frames.

pitoloko
09-11-2015, 03:34 PM
I have been able to reproduce this issue, the next beta update will fix.

Hi Spoon.

Could you clarify whether that fix maybe will mean that it will solve also the problem that we are facing here about ADPCM codec?:
-> Fail: MP3 to WAV (Microsoft ADPCM) encoding... (https://forum.dbpoweramp.com/showthread.php?26263-Fail-MP3-to-WAV-%28Microsoft-ADPCM%29-encoding)

If I didn't miss understood the fix will fix encoding with ADPCM and the other ACM codecs that ships internally installed on Windows?. Then finally after a couple of years dbPoweramp will be able to encode using ADPCM as normally without stange issues as what happened to me? it will be a great thing to know.

PS: Recently I made a new post on that topic, I think its waiting for moderator to publish it.

Thanks for read!

Spoon
09-12-2015, 06:35 AM
Until I look at the code I cannot say what the fix will do as far as your issue.

davidhall
09-13-2015, 08:45 PM
I can replicate the issue pitoloko is having. When I try Microsoft ADPCM the resultant WAV file appears to be remarkably similar to the result I was getting trying to use the Layer 2 ACM codec. The WAV file contains the wrapper, but the data chunk doesn't contain any data. This appears to be the case regardless of any ACM codec that you try to use.

pitoloko
09-14-2015, 01:17 AM
Thanks for your interest @davidhall (and sorry for the little intrusion in your topic) and your great suppoort @spoon. I'll keep an eye on this resolution.

Good luck about the problem!.