Actually it is PCM, just you get 16-bit data in an array of bytes (8-bit descriptor). So you have to combine the bytes. The alignment of 8-bit descriptor types ensure that the data starts on a 4-byte boundary, so you can use a cast-hack:
then samples, samples... is your 16-bit sample data. I do not remember if it is signed or not (TUint16 treats it as signed).
HBufC8 *something=... // as I see, you get HBufC8-s from that code
const TUint16 *samples=reinterpret_cast<const TUint16*>(&( (*something)) ));