The pointer for the CPHD phase history data is not offset to the starting position of each channel of data. This results in the first channel being written for each channel specified in the XML data. The issue can be see on line 341 of six/modules/c++/source/CPHDWriter.cpp.
I was able to fix the offset issue by changing the line to be:
writeCPHDDataImpl(reinterpret_cast<const sys::ubyte*>(data) + (channel * numElements * mElementSize), numElements);
I'm unsure if line 331 also needs to modified for the correct offset of each compressed phase history channel. I haven't had the chance to check it.