diff --git a/mediafileinfo.cpp b/mediafileinfo.cpp index 0c653a0..18b424d 100644 --- a/mediafileinfo.cpp +++ b/mediafileinfo.cpp @@ -674,6 +674,14 @@ const char *MediaFileInfo::containerFormatAbbreviation() const unsigned int version = 0; switch(m_containerFormat) { case ContainerFormat::Ogg: + // check whether only Opus tracks are present + version = static_cast(GeneralMediaFormat::Opus); + for(const auto &track : static_cast(m_container.get())->tracks()) { + if(track->format().general != GeneralMediaFormat::Opus) { + version = 0; + break; + } + } case ContainerFormat::Matroska: case ContainerFormat::Mp4: mediaType = hasTracksOfType(MediaType::Video) ? MediaType::Video : MediaType::Audio; diff --git a/signature.cpp b/signature.cpp index 744656b..579b932 100644 --- a/signature.cpp +++ b/signature.cpp @@ -238,12 +238,17 @@ const char *containerFormatAbbreviation(ContainerFormat containerFormat, MediaTy default: return "mp4"; } - case ContainerFormat::Ogg: return "ogg"; + case ContainerFormat::Ogg: switch(mediaType) { case MediaType::Video: return "ogv"; default: - return "ogg"; + switch(version) { + case static_cast(GeneralMediaFormat::Opus): + return "opus"; + default: + return "ogg"; + } } case ContainerFormat::PhotoshopDocument: return "psd"; case ContainerFormat::Png: return "png";