- if (ASDCP_FAILURE (reader.FillWriterInfo (info))) {
- boost::throw_exception (DCPReadError ("could not read audio MXF information"));
+ if (ASDCP_FAILURE (reader.FillWriterInfo(info))) {
+ boost::throw_exception (ReadError("could not read audio MXF information"));
+ }
+
+ ASDCP::MXF::SoundfieldGroupLabelSubDescriptor* soundfield;
+ auto rr = reader.OP1aHeader().GetMDObjectByType(
+ asdcp_smpte_dict->ul(ASDCP::MDD_SoundfieldGroupLabelSubDescriptor),
+ reinterpret_cast<ASDCP::MXF::InterchangeObject**>(&soundfield)
+ );
+
+ if (KM_SUCCESS(rr)) {
+ if (!soundfield->RFC5646SpokenLanguage.empty()) {
+ char buffer[64];
+ soundfield->RFC5646SpokenLanguage.get().EncodeString(buffer, sizeof(buffer));
+ _language = buffer;
+ }