in torchaudio/csrc/sox/utils.cpp [440:477]
sox_encodinginfo_t get_tensor_encodinginfo(caffe2::TypeMeta dtype) {
sox_encoding_t encoding = [&]() {
switch (dtype.toScalarType()) {
case c10::ScalarType::Byte:
return SOX_ENCODING_UNSIGNED;
case c10::ScalarType::Short:
return SOX_ENCODING_SIGN2;
case c10::ScalarType::Int:
return SOX_ENCODING_SIGN2;
case c10::ScalarType::Float:
return SOX_ENCODING_FLOAT;
default:
throw std::runtime_error("Unsupported dtype.");
}
}();
unsigned bits_per_sample = [&]() {
switch (dtype.toScalarType()) {
case c10::ScalarType::Byte:
return 8;
case c10::ScalarType::Short:
return 16;
case c10::ScalarType::Int:
return 32;
case c10::ScalarType::Float:
return 32;
default:
throw std::runtime_error("Unsupported dtype.");
}
}();
return sox_encodinginfo_t{
/*encoding=*/encoding,
/*bits_per_sample=*/bits_per_sample,
/*compression=*/HUGE_VAL,
/*reverse_bytes=*/sox_option_default,
/*reverse_nibbles=*/sox_option_default,
/*reverse_bits=*/sox_option_default,
/*opposite_endian=*/sox_false};
}