From 63bb4a64007caefaf6815e52306fb4c9a65e7731 Mon Sep 17 00:00:00 2001 From: ace20022 Date: Mon, 4 Mar 2013 13:00:10 +0100 Subject: [DVDInputStreamNavigator/Players] Use a struct and dvdnav_get_audio_info(...) to query all required audio stream info at once. [Fixes] - Fix stream type, e.g. "(Directors Comments)", recognition. It is stored in code_extension not in lang_extension. - Properly set the number of channels of a dvd audio stream. - Set the stream language of dvd audio tracks properly/consistent with other audio streams, i.e. set it to a three char code. - Set the stream name of dvd audio tracks properly/consistent with other audio streams. --- .../DVDInputStreams/DVDInputStreamNavigator.cpp | 111 ++++++++++++++++----- .../DVDInputStreams/DVDInputStreamNavigator.h | 13 ++- xbmc/cores/dvdplayer/DVDPlayer.cpp | 8 +- xbmc/cores/omxplayer/OMXPlayer.cpp | 8 +- 4 files changed, 112 insertions(+), 28 deletions(-) diff --git a/xbmc/cores/dvdplayer/DVDInputStreams/DVDInputStreamNavigator.cpp b/xbmc/cores/dvdplayer/DVDInputStreams/DVDInputStreamNavigator.cpp index 2b70d96bf8..549ffc8258 100644 --- a/xbmc/cores/dvdplayer/DVDInputStreams/DVDInputStreamNavigator.cpp +++ b/xbmc/cores/dvdplayer/DVDInputStreams/DVDInputStreamNavigator.cpp @@ -27,6 +27,7 @@ #include "utils/log.h" #include "guilib/Geometry.h" #include "utils/URIUtils.h" +#include "utils/StringUtils.h" #if defined(TARGET_DARWIN) #include "osx/CocoaInterface.h" #endif @@ -925,37 +926,101 @@ int CDVDInputStreamNavigator::GetActiveAudioStream() return activeStream; } -std::string CDVDInputStreamNavigator::GetAudioStreamLanguage(int iId) +void CDVDInputStreamNavigator::SetAudioStreamName(DVDNavStreamInfo &info, const audio_attr_t audio_attributes) { - if (!m_dvdnav) return NULL; + switch( audio_attributes.code_extension ) + { + case DVD_AUDIO_LANG_EXT_VisuallyImpaired: + info.name = "(Visually Impaired)"; + break; + case DVD_AUDIO_LANG_EXT_DirectorsComments1: + info.name = "(Directors Comments)"; + break; + case DVD_AUDIO_LANG_EXT_DirectorsComments2: + info.name = "(Directors Comments 2)"; + break; + case DVD_AUDIO_LANG_EXT_NotSpecified: + case DVD_AUDIO_LANG_EXT_NormalCaptions: + default: + break; + } - CStdString strLanguage; + switch(audio_attributes.audio_format) + { + case DVD_AUDIO_FORMAT_AC3: + info.name += " AC3"; + break; + case DVD_AUDIO_FORMAT_MPEG1: + case DVD_AUDIO_FORMAT_MPEG1_DRC: + info.name += " MP1"; + break; + case DVD_AUDIO_FORMAT_MPEG2: + case DVD_AUDIO_FORMAT_MPEG2_DRC: + info.name += " MP2"; + break; + case DVD_AUDIO_FORMAT_LPCM: + info.name += " LPCM"; + break; + case DVD_AUDIO_FORMAT_DTS: + info.name += " DTS"; + break; + case DVD_AUDIO_FORMAT_SDDS: + info.name += " SDDS"; + break; + default: + info.name += " Other"; + break; + } + + switch(audio_attributes.channels + 1) + { + case 1: + info.name += " Mono"; + break; + case 2: + info.name += " Stereo"; + break; + case 6: + info.name += " 5.1"; + break; + case 7: + info.name += " 6.1"; + break; + default: + char temp[32]; + sprintf(temp, " %d-chs", audio_attributes.channels + 1); + info.name += temp; + } + + StringUtils::TrimLeft(info.name); + +} + +bool CDVDInputStreamNavigator::GetAudioStreamInfo(const int iId, DVDNavStreamInfo &info) +{ + if (!m_dvdnav) return false; - audio_attr_t audio_attributes; int streamId = ConvertAudioStreamId_XBMCToExternal(iId); + audio_attr_t audio_attributes; + if( m_dll.dvdnav_get_audio_info(m_dvdnav, streamId, &audio_attributes) == DVDNAV_STATUS_OK ) { - if (!g_LangCodeExpander.Lookup(strLanguage, audio_attributes.lang_code)) strLanguage = "Unknown"; + SetAudioStreamName(info, audio_attributes); - switch( audio_attributes.lang_extension ) - { - case DVD_AUDIO_LANG_EXT_VisuallyImpaired: - strLanguage+= " (Visually Impaired)"; - break; - case DVD_AUDIO_LANG_EXT_DirectorsComments1: - strLanguage+= " (Directors Comments)"; - break; - case DVD_AUDIO_LANG_EXT_DirectorsComments2: - strLanguage+= " (Directors Comments 2)"; - break; - case DVD_AUDIO_LANG_EXT_NotSpecified: - case DVD_AUDIO_LANG_EXT_NormalCaptions: - default: - break; - } - } + char lang[3]; + lang[2] = 0; + lang[1] = (audio_attributes.lang_code & 255); + lang[0] = (audio_attributes.lang_code >> 8) & 255; - return strLanguage; + CStdString temp; + g_LangCodeExpander.ConvertToThreeCharCode(temp, lang); + info.language = temp; + + info.channels = audio_attributes.channels + 1; + + return true; + } + return false; } int CDVDInputStreamNavigator::GetAudioStreamCount() diff --git a/xbmc/cores/dvdplayer/DVDInputStreams/DVDInputStreamNavigator.h b/xbmc/cores/dvdplayer/DVDInputStreams/DVDInputStreamNavigator.h index 2005876796..2b2b57fc55 100644 --- a/xbmc/cores/dvdplayer/DVDInputStreams/DVDInputStreamNavigator.h +++ b/xbmc/cores/dvdplayer/DVDInputStreams/DVDInputStreamNavigator.h @@ -44,6 +44,15 @@ class CDVDOverlayPicture; struct dvdnav_s; +struct DVDNavStreamInfo +{ + std::string name; + std::string language; + int channels; + + DVDNavStreamInfo() : channels(0) {} +}; + class DVDNavResult { public: @@ -104,9 +113,9 @@ public: bool IsSubtitleStreamEnabled(); int GetActiveAudioStream(); - std::string GetAudioStreamLanguage(int iId); int GetAudioStreamCount(); bool SetActiveAudioStream(int iId); + bool GetAudioStreamInfo(const int iId, DVDNavStreamInfo &info); bool GetNavigatorState(std::string &xmlstate); bool SetNavigatorState(std::string &xmlstate); @@ -145,6 +154,8 @@ protected: int ConvertSubtitleStreamId_XBMCToExternal(int id); int ConvertSubtitleStreamId_ExternalToXBMC(int id); + void SetAudioStreamName(DVDNavStreamInfo &info, const audio_attr_t audio_attributes); + DllDvdNav m_dll; bool m_bCheckButtons; bool m_bEOF; diff --git a/xbmc/cores/dvdplayer/DVDPlayer.cpp b/xbmc/cores/dvdplayer/DVDPlayer.cpp index 3d2ca03e5a..0a3ae2aac8 100644 --- a/xbmc/cores/dvdplayer/DVDPlayer.cpp +++ b/xbmc/cores/dvdplayer/DVDPlayer.cpp @@ -318,10 +318,14 @@ void CSelectionStreams::Update(CDVDInputStream* input, CDVDDemux* demuxer) s.source = source; s.type = STREAM_AUDIO; s.id = i; - s.name = nav->GetAudioStreamLanguage(i); s.flags = CDemuxStream::FLAG_NONE; s.filename = filename; - s.channels = 0; + + DVDNavStreamInfo info; + nav->GetAudioStreamInfo(i, info); + s.name = info.name; + s.language = info.language; + s.channels = info.channels; Update(s); } diff --git a/xbmc/cores/omxplayer/OMXPlayer.cpp b/xbmc/cores/omxplayer/OMXPlayer.cpp index 4420da2a56..6182e506bd 100644 --- a/xbmc/cores/omxplayer/OMXPlayer.cpp +++ b/xbmc/cores/omxplayer/OMXPlayer.cpp @@ -318,10 +318,14 @@ void COMXSelectionStreams::Update(CDVDInputStream* input, CDVDDemux* demuxer) s.source = source; s.type = STREAM_AUDIO; s.id = i; - s.name = nav->GetAudioStreamLanguage(i); s.flags = CDemuxStream::FLAG_NONE; s.filename = filename; - s.channels = 0; + + DVDNavStreamInfo info; + nav->GetAudioStreamInfo(i, info); + s.name = info.name; + s.language = info.language; + s.channels = info.channels; Update(s); } -- cgit v1.2.3 From d8b2ca86306e8d44b496f216d4f91824b4925330 Mon Sep 17 00:00:00 2001 From: ace20022 Date: Sat, 2 Feb 2013 10:11:21 +0100 Subject: [DVDInputStreamNavigator/Players] Use a struct and dvdnav_get_stitle_info(...) to query all required subtitle stream info at once. [Fixes] - Set the stream language of dvd subtitles properly/consistent with other streams, i.e. set it to a three char code. - Set the stream name of dvd subtitle tracks properly/consistent with other streams; in particular don't use the language as the name. --- .../DVDInputStreams/DVDInputStreamNavigator.cpp | 79 ++++++++++++---------- .../DVDInputStreams/DVDInputStreamNavigator.h | 3 +- xbmc/cores/dvdplayer/DVDPlayer.cpp | 6 +- xbmc/cores/omxplayer/OMXPlayer.cpp | 6 +- 4 files changed, 56 insertions(+), 38 deletions(-) diff --git a/xbmc/cores/dvdplayer/DVDInputStreams/DVDInputStreamNavigator.cpp b/xbmc/cores/dvdplayer/DVDInputStreams/DVDInputStreamNavigator.cpp index 549ffc8258..35873400ed 100644 --- a/xbmc/cores/dvdplayer/DVDInputStreams/DVDInputStreamNavigator.cpp +++ b/xbmc/cores/dvdplayer/DVDInputStreams/DVDInputStreamNavigator.cpp @@ -823,52 +823,61 @@ int CDVDInputStreamNavigator::GetActiveSubtitleStream() return activeStream; } -std::string CDVDInputStreamNavigator::GetSubtitleStreamLanguage(int iId) +bool CDVDInputStreamNavigator::GetSubtitleStreamInfo(const int iId, DVDNavStreamInfo &info) { - if (!m_dvdnav) return NULL; - - CStdString strLanguage; + if (!m_dvdnav) return false; - subp_attr_t subp_attributes; int streamId = ConvertSubtitleStreamId_XBMCToExternal(iId); + subp_attr_t subp_attributes; + if( m_dll.dvdnav_get_stitle_info(m_dvdnav, streamId, &subp_attributes) == DVDNAV_STATUS_OK ) { + SetSubtitleStreamName(info, subp_attributes); - if (subp_attributes.type == DVD_SUBPICTURE_TYPE_Language || - subp_attributes.type == DVD_SUBPICTURE_TYPE_NotSpecified) - { - if (!g_LangCodeExpander.Lookup(strLanguage, subp_attributes.lang_code)) strLanguage = "Unknown"; + char lang[3]; + lang[2] = 0; + lang[1] = (subp_attributes.lang_code & 255); + lang[0] = (subp_attributes.lang_code >> 8) & 255; - switch (subp_attributes.lang_extension) - { - case DVD_SUBPICTURE_LANG_EXT_NotSpecified: - case DVD_SUBPICTURE_LANG_EXT_NormalCaptions: - case DVD_SUBPICTURE_LANG_EXT_BigCaptions: - case DVD_SUBPICTURE_LANG_EXT_ChildrensCaptions: - break; + CStdString temp; + g_LangCodeExpander.ConvertToThreeCharCode(temp, lang); + info.language = temp; - case DVD_SUBPICTURE_LANG_EXT_NormalCC: - case DVD_SUBPICTURE_LANG_EXT_BigCC: - case DVD_SUBPICTURE_LANG_EXT_ChildrensCC: - strLanguage+= " (CC)"; - break; - case DVD_SUBPICTURE_LANG_EXT_Forced: - strLanguage+= " (Forced)"; - break; - case DVD_SUBPICTURE_LANG_EXT_NormalDirectorsComments: - case DVD_SUBPICTURE_LANG_EXT_BigDirectorsComments: - case DVD_SUBPICTURE_LANG_EXT_ChildrensDirectorsComments: - strLanguage+= " (Directors Comments)"; - break; - } - } - else + return true; + } + return false; +} + +void CDVDInputStreamNavigator::SetSubtitleStreamName(DVDNavStreamInfo &info, const subp_attr_t subp_attributes) +{ + if (subp_attributes.type == DVD_SUBPICTURE_TYPE_Language || + subp_attributes.type == DVD_SUBPICTURE_TYPE_NotSpecified) + { + switch (subp_attributes.lang_extension) { - strLanguage = "Unknown"; + case DVD_SUBPICTURE_LANG_EXT_NotSpecified: + case DVD_SUBPICTURE_LANG_EXT_NormalCaptions: + case DVD_SUBPICTURE_LANG_EXT_BigCaptions: + case DVD_SUBPICTURE_LANG_EXT_ChildrensCaptions: + break; + + case DVD_SUBPICTURE_LANG_EXT_NormalCC: + case DVD_SUBPICTURE_LANG_EXT_BigCC: + case DVD_SUBPICTURE_LANG_EXT_ChildrensCC: + info.name += "(CC)"; + break; + case DVD_SUBPICTURE_LANG_EXT_Forced: + info.name += "(Forced)"; + break; + case DVD_SUBPICTURE_LANG_EXT_NormalDirectorsComments: + case DVD_SUBPICTURE_LANG_EXT_BigDirectorsComments: + case DVD_SUBPICTURE_LANG_EXT_ChildrensDirectorsComments: + info.name += "(Directors Comments)"; + break; + default: + break; } } - - return strLanguage; } int CDVDInputStreamNavigator::GetSubTitleStreamCount() diff --git a/xbmc/cores/dvdplayer/DVDInputStreams/DVDInputStreamNavigator.h b/xbmc/cores/dvdplayer/DVDInputStreams/DVDInputStreamNavigator.h index 2b2b57fc55..2502ea4560 100644 --- a/xbmc/cores/dvdplayer/DVDInputStreams/DVDInputStreamNavigator.h +++ b/xbmc/cores/dvdplayer/DVDInputStreams/DVDInputStreamNavigator.h @@ -105,8 +105,8 @@ public: bool IsInMenu() { return m_bInMenu; } int GetActiveSubtitleStream(); - std::string GetSubtitleStreamLanguage(int iId); int GetSubTitleStreamCount(); + bool GetSubtitleStreamInfo(const int iId, DVDNavStreamInfo &info); bool SetActiveSubtitleStream(int iId); void EnableSubtitleStream(bool bEnable); @@ -155,6 +155,7 @@ protected: int ConvertSubtitleStreamId_ExternalToXBMC(int id); void SetAudioStreamName(DVDNavStreamInfo &info, const audio_attr_t audio_attributes); + void SetSubtitleStreamName(DVDNavStreamInfo &info, const subp_attr_t subp_attributes); DllDvdNav m_dll; bool m_bCheckButtons; diff --git a/xbmc/cores/dvdplayer/DVDPlayer.cpp b/xbmc/cores/dvdplayer/DVDPlayer.cpp index 0a3ae2aac8..8695bb1af9 100644 --- a/xbmc/cores/dvdplayer/DVDPlayer.cpp +++ b/xbmc/cores/dvdplayer/DVDPlayer.cpp @@ -336,10 +336,14 @@ void CSelectionStreams::Update(CDVDInputStream* input, CDVDDemux* demuxer) s.source = source; s.type = STREAM_SUBTITLE; s.id = i; - s.name = nav->GetSubtitleStreamLanguage(i); s.flags = CDemuxStream::FLAG_NONE; s.filename = filename; s.channels = 0; + + DVDNavStreamInfo info; + nav->GetSubtitleStreamInfo(i, info); + s.name = info.name; + s.language = info.language; Update(s); } } diff --git a/xbmc/cores/omxplayer/OMXPlayer.cpp b/xbmc/cores/omxplayer/OMXPlayer.cpp index 6182e506bd..6e8c4ceb95 100644 --- a/xbmc/cores/omxplayer/OMXPlayer.cpp +++ b/xbmc/cores/omxplayer/OMXPlayer.cpp @@ -336,10 +336,14 @@ void COMXSelectionStreams::Update(CDVDInputStream* input, CDVDDemux* demuxer) s.source = source; s.type = STREAM_SUBTITLE; s.id = i; - s.name = nav->GetSubtitleStreamLanguage(i); s.flags = CDemuxStream::FLAG_NONE; s.filename = filename; s.channels = 0; + + DVDNavStreamInfo info; + nav->GetSubtitleStreamInfo(i, info); + s.name = info.name; + s.language = info.language; Update(s); } } -- cgit v1.2.3 From d3722b986115920b8ed2b04d70c04b8ca3ce73a6 Mon Sep 17 00:00:00 2001 From: ace20022 Date: Sun, 10 Feb 2013 11:11:20 +0100 Subject: Make the type, e.g. "(Forced)", of a stream translatable in its name. --- language/English/strings.po | 30 ++++++++++++++++++++++ .../DVDInputStreams/DVDInputStreamNavigator.cpp | 13 +++++----- 2 files changed, 37 insertions(+), 6 deletions(-) diff --git a/language/English/strings.po b/language/English/strings.po index 97ce8f2590..7017ead465 100644 --- a/language/English/strings.po +++ b/language/English/strings.po @@ -11746,3 +11746,33 @@ msgstr "" msgctxt "#36042" msgid "Use limited color range (16-235)" msgstr "" + +#: xbmc/cores/dvdplayer/DVDInputStreams/DVDInputStreamNavigator.cpp +msgctxt "#37000" +msgid "(Visually Impaired)" +msgstr "" + +#: xbmc/cores/dvdplayer/DVDInputStreams/DVDInputStreamNavigator.cpp +msgctxt "#37001" +msgid "(Directors Comments)" +msgstr "" + +#: xbmc/cores/dvdplayer/DVDInputStreams/DVDInputStreamNavigator.cpp +msgctxt "#37002" +msgid "(Directors Comments 2)" +msgstr "" + +#: xbmc/cores/dvdplayer/DVDInputStreams/DVDInputStreamNavigator.cpp +msgctxt "#37011" +msgid "(CC)" +msgstr "" + +#: xbmc/cores/dvdplayer/DVDInputStreams/DVDInputStreamNavigator.cpp +msgctxt "#37012" +msgid "(Forced)" +msgstr "" + +#: xbmc/cores/dvdplayer/DVDInputStreams/DVDInputStreamNavigator.cpp +msgctxt "#37013" +msgid "(Directors Comments)" +msgstr "" diff --git a/xbmc/cores/dvdplayer/DVDInputStreams/DVDInputStreamNavigator.cpp b/xbmc/cores/dvdplayer/DVDInputStreams/DVDInputStreamNavigator.cpp index 35873400ed..894c4943b7 100644 --- a/xbmc/cores/dvdplayer/DVDInputStreams/DVDInputStreamNavigator.cpp +++ b/xbmc/cores/dvdplayer/DVDInputStreams/DVDInputStreamNavigator.cpp @@ -28,6 +28,7 @@ #include "guilib/Geometry.h" #include "utils/URIUtils.h" #include "utils/StringUtils.h" +#include "guilib/LocalizeStrings.h" #if defined(TARGET_DARWIN) #include "osx/CocoaInterface.h" #endif @@ -864,15 +865,15 @@ void CDVDInputStreamNavigator::SetSubtitleStreamName(DVDNavStreamInfo &info, con case DVD_SUBPICTURE_LANG_EXT_NormalCC: case DVD_SUBPICTURE_LANG_EXT_BigCC: case DVD_SUBPICTURE_LANG_EXT_ChildrensCC: - info.name += "(CC)"; + info.name += g_localizeStrings.Get(37011); break; case DVD_SUBPICTURE_LANG_EXT_Forced: - info.name += "(Forced)"; + info.name += g_localizeStrings.Get(37012); break; case DVD_SUBPICTURE_LANG_EXT_NormalDirectorsComments: case DVD_SUBPICTURE_LANG_EXT_BigDirectorsComments: case DVD_SUBPICTURE_LANG_EXT_ChildrensDirectorsComments: - info.name += "(Directors Comments)"; + info.name += g_localizeStrings.Get(37013); break; default: break; @@ -940,13 +941,13 @@ void CDVDInputStreamNavigator::SetAudioStreamName(DVDNavStreamInfo &info, const switch( audio_attributes.code_extension ) { case DVD_AUDIO_LANG_EXT_VisuallyImpaired: - info.name = "(Visually Impaired)"; + info.name = g_localizeStrings.Get(37000); break; case DVD_AUDIO_LANG_EXT_DirectorsComments1: - info.name = "(Directors Comments)"; + info.name = g_localizeStrings.Get(37001); break; case DVD_AUDIO_LANG_EXT_DirectorsComments2: - info.name = "(Directors Comments 2)"; + info.name = g_localizeStrings.Get(37002); break; case DVD_AUDIO_LANG_EXT_NotSpecified: case DVD_AUDIO_LANG_EXT_NormalCaptions: -- cgit v1.2.3 From d54456ccab3a23016301b5c37f8bc30889b8492c Mon Sep 17 00:00:00 2001 From: ace20022 Date: Mon, 4 Mar 2013 13:25:55 +0100 Subject: [DVDDemuxer] Don't set the language as the stream name. --- xbmc/cores/dvdplayer/DVDDemuxers/DVDDemux.cpp | 10 +--------- 1 file changed, 1 insertion(+), 9 deletions(-) diff --git a/xbmc/cores/dvdplayer/DVDDemuxers/DVDDemux.cpp b/xbmc/cores/dvdplayer/DVDDemuxers/DVDDemux.cpp index 064c374b91..8bf8f93a7e 100644 --- a/xbmc/cores/dvdplayer/DVDDemuxers/DVDDemux.cpp +++ b/xbmc/cores/dvdplayer/DVDDemuxers/DVDDemux.cpp @@ -20,7 +20,6 @@ #include "DVDDemux.h" #include "DVDCodecs/DVDCodecs.h" -#include "utils/LangCodeExpander.h" void CDemuxStreamTeletext::GetStreamInfo(std::string& strInfo) { @@ -168,14 +167,7 @@ CDemuxStreamTeletext* CDVDDemux::GetStreamFromTeletextId(int iTeletextIndex) void CDemuxStream::GetStreamName( std::string& strInfo ) { - if( language[0] == 0 ) - strInfo = ""; - else - { - CStdString name; - g_LangCodeExpander.Lookup( name, language ); - strInfo = name; - } + strInfo = ""; } AVDiscard CDemuxStream::GetDiscard() -- cgit v1.2.3 From e7dfb28ff32c4555e3565fada88f6a2275fdf9be Mon Sep 17 00:00:00 2001 From: ace20022 Date: Sun, 3 Mar 2013 08:54:31 +0100 Subject: [Players] Don't assign "unknown" to the audio/subtitle stream name, leave it empty instead. --- xbmc/cores/dvdplayer/DVDPlayer.cpp | 4 ---- xbmc/cores/omxplayer/OMXPlayer.cpp | 4 ---- 2 files changed, 8 deletions(-) diff --git a/xbmc/cores/dvdplayer/DVDPlayer.cpp b/xbmc/cores/dvdplayer/DVDPlayer.cpp index 8695bb1af9..3030fe932b 100644 --- a/xbmc/cores/dvdplayer/DVDPlayer.cpp +++ b/xbmc/cores/dvdplayer/DVDPlayer.cpp @@ -2699,8 +2699,6 @@ void CDVDPlayer::GetSubtitleStreamInfo(int index, SPlayerSubtitleStreamInfo &inf SelectionStream& s = m_SelectionStreams.Get(STREAM_SUBTITLE, index); if(s.name.length() > 0) info.name = s.name; - else - info.name = g_localizeStrings.Get(13205); // Unknown if(s.type == STREAM_NONE) info.name += "(Invalid)"; @@ -3843,8 +3841,6 @@ void CDVDPlayer::GetAudioStreamInfo(int index, SPlayerAudioStreamInfo &info) if(s.name.length() > 0) info.name = s.name; - else - info.name += "Unknown"; if(s.type == STREAM_NONE) info.name += " (Invalid)"; diff --git a/xbmc/cores/omxplayer/OMXPlayer.cpp b/xbmc/cores/omxplayer/OMXPlayer.cpp index 6e8c4ceb95..866330c8d2 100644 --- a/xbmc/cores/omxplayer/OMXPlayer.cpp +++ b/xbmc/cores/omxplayer/OMXPlayer.cpp @@ -2700,8 +2700,6 @@ void COMXPlayer::GetSubtitleStreamInfo(int index, SPlayerSubtitleStreamInfo &inf OMXSelectionStream& s = m_SelectionStreams.Get(STREAM_SUBTITLE, index); if(s.name.length() > 0) info.name = s.name; - else - info.name = g_localizeStrings.Get(13205); // Unknown if(s.type == STREAM_NONE) info.name += "(Invalid)"; @@ -3797,8 +3795,6 @@ void COMXPlayer::GetAudioStreamInfo(int index, SPlayerAudioStreamInfo &info) if(s.name.length() > 0) info.name = s.name; - else - info.name += "Unknown"; if(s.type == STREAM_NONE) info.name += " (Invalid)"; -- cgit v1.2.3 From 25b162339fd5ee439b5257850ee1b16bcdf9a42b Mon Sep 17 00:00:00 2001 From: ace20022 Date: Sun, 3 Mar 2013 09:25:48 +0100 Subject: [AMLPlayer] Set the name of a stream properly/consistent with the other players, i.e., codec name (if possible) + channels. Don't assign "unknown" to the audio/subtitle stream name, leave it empty instead. --- xbmc/cores/amlplayer/AMLPlayer.cpp | 33 +++++++++++++++++++++++---------- 1 file changed, 23 insertions(+), 10 deletions(-) diff --git a/xbmc/cores/amlplayer/AMLPlayer.cpp b/xbmc/cores/amlplayer/AMLPlayer.cpp index 2c2a8496b8..dc65869ba6 100644 --- a/xbmc/cores/amlplayer/AMLPlayer.cpp +++ b/xbmc/cores/amlplayer/AMLPlayer.cpp @@ -922,15 +922,11 @@ void CAMLPlayer::GetSubtitleStreamInfo(int index, SPlayerSubtitleStreamInfo &inf g_LangCodeExpander.Lookup(name, m_subtitle_streams[index]->language); info.name = name; } - else - info.name = g_localizeStrings.Get(13205); // Unknown } else { if(m_subtitle_streams[m_subtitle_index]->name.length() > 0) info.name = m_subtitle_streams[m_subtitle_index]->name; - else - info.name = g_localizeStrings.Get(13205); // Unknown } if (m_log_level > 5) CLog::Log(LOGDEBUG, "CAMLPlayer::GetSubtitleName, iStream(%d)", index); @@ -1112,13 +1108,30 @@ void CAMLPlayer::GetAudioStreamInfo(int index, SPlayerAudioStreamInfo &info) info.audioCodecName = AudioCodecName(m_audio_streams[index]->format); - info.name.Format("Undefined"); - - if ( m_audio_streams[index]->language.size()) + if (info.audioCodecName.size()) + info.name = info.audioCodecName + " "; + + switch(info.channels) { - CStdString name; - g_LangCodeExpander.Lookup( name, m_audio_streams[index]->language); - info.name = name; + case 1: + info.name += "Mono"; + break; + case 2: + info.name += "Stereo"; + break; + case 6: + info.name += "5.1"; + break; + case 7: + info.name += "6.1"; + break; + case 8: + info.name += "7.1"; + break; + default: + char temp[32]; + sprintf(temp, "%d-chs", info.channels); + info.name += temp; } } -- cgit v1.2.3 From bee3993a3cdcef596c20eb5313aabe1a84d5bdb7 Mon Sep 17 00:00:00 2001 From: ace20022 Date: Wed, 6 Feb 2013 19:15:48 +0100 Subject: [Players] Convert the language code of a selection stream to three chars if necessary. --- xbmc/cores/dvdplayer/DVDPlayer.cpp | 8 ++++++++ xbmc/cores/omxplayer/OMXPlayer.cpp | 8 ++++++++ 2 files changed, 16 insertions(+) diff --git a/xbmc/cores/dvdplayer/DVDPlayer.cpp b/xbmc/cores/dvdplayer/DVDPlayer.cpp index 3030fe932b..206400ce32 100644 --- a/xbmc/cores/dvdplayer/DVDPlayer.cpp +++ b/xbmc/cores/dvdplayer/DVDPlayer.cpp @@ -369,6 +369,14 @@ void CSelectionStreams::Update(CDVDInputStream* input, CDVDDemux* demuxer) s.type = stream->type; s.id = stream->iId; s.language = stream->language; + + if (s.language.length() == 2) + { + CStdString lang; + g_LangCodeExpander.ConvertToThreeCharCode(lang, stream->language); + s.language = lang; + } + s.flags = stream->flags; s.filename = demuxer->GetFileName(); stream->GetStreamName(s.name); diff --git a/xbmc/cores/omxplayer/OMXPlayer.cpp b/xbmc/cores/omxplayer/OMXPlayer.cpp index 866330c8d2..1a9f2faa99 100644 --- a/xbmc/cores/omxplayer/OMXPlayer.cpp +++ b/xbmc/cores/omxplayer/OMXPlayer.cpp @@ -369,6 +369,14 @@ void COMXSelectionStreams::Update(CDVDInputStream* input, CDVDDemux* demuxer) s.type = stream->type; s.id = stream->iId; s.language = stream->language; + + if (s.language.length() == 2) + { + CStdString lang; + g_LangCodeExpander.ConvertToThreeCharCode(lang, stream->language); + s.language = lang; + } + s.flags = stream->flags; s.filename = demuxer->GetFileName(); stream->GetStreamName(s.name); -- cgit v1.2.3 From d65cd9ce34acda1f37a120177e57f67a3d822d18 Mon Sep 17 00:00:00 2001 From: ace20022 Date: Sun, 3 Mar 2013 10:51:49 +0100 Subject: [AMLPlayer] Convert the language code of a stream to three chars if necessary. --- xbmc/cores/amlplayer/AMLPlayer.cpp | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) diff --git a/xbmc/cores/amlplayer/AMLPlayer.cpp b/xbmc/cores/amlplayer/AMLPlayer.cpp index dc65869ba6..d988ab5bd8 100644 --- a/xbmc/cores/amlplayer/AMLPlayer.cpp +++ b/xbmc/cores/amlplayer/AMLPlayer.cpp @@ -1942,7 +1942,16 @@ bool CAMLPlayer::WaitForFormatValid(int timeout_ms) info->format = media_info.audio_info[i]->aformat; #if !defined(TARGET_ANDROID) if (media_info.audio_info[i]->audio_language[0] != 0) + { info->language = std::string(media_info.audio_info[i]->audio_language, 3); + + if (info->language.length() == 2) + { + CStdString lang; + g_LangCodeExpander.ConvertToThreeCharCode(lang, info->language); + info->language = lang; + } + } #endif m_audio_streams.push_back(info); } @@ -1966,7 +1975,16 @@ bool CAMLPlayer::WaitForFormatValid(int timeout_ms) info->id = media_info.sub_info[i]->id; info->type = STREAM_SUBTITLE; if (media_info.sub_info[i]->sub_language && media_info.sub_info[i]->sub_language[0] != 0) + { info->language = std::string(media_info.sub_info[i]->sub_language, 3); + + if (info->language.length() == 2) + { + CStdString lang; + g_LangCodeExpander.ConvertToThreeCharCode(lang, info->language); + info->language = lang; + } + } m_subtitle_streams.push_back(info); } m_subtitle_index = media_info.stream_info.cur_sub_index; -- cgit v1.2.3 From e71cb79a06576fdbf7f78dbadde587159db97c6b Mon Sep 17 00:00:00 2001 From: ace20022 Date: Sun, 3 Mar 2013 11:00:33 +0100 Subject: [AMLPlayer] Always set the name and language fields of a subtitle/audio stream in the getInfo methods. --- xbmc/cores/amlplayer/AMLPlayer.cpp | 20 ++++---------------- 1 file changed, 4 insertions(+), 16 deletions(-) diff --git a/xbmc/cores/amlplayer/AMLPlayer.cpp b/xbmc/cores/amlplayer/AMLPlayer.cpp index d988ab5bd8..09f82b1a8b 100644 --- a/xbmc/cores/amlplayer/AMLPlayer.cpp +++ b/xbmc/cores/amlplayer/AMLPlayer.cpp @@ -914,20 +914,9 @@ void CAMLPlayer::GetSubtitleStreamInfo(int index, SPlayerSubtitleStreamInfo &inf if (index > (int)m_subtitle_streams.size() -1 || index < 0) return; - if (m_subtitle_streams[m_subtitle_index]->source == STREAM_SOURCE_NONE) - { - if ( m_subtitle_streams[index]->language.size()) - { - CStdString name; - g_LangCodeExpander.Lookup(name, m_subtitle_streams[index]->language); - info.name = name; - } - } - else - { - if(m_subtitle_streams[m_subtitle_index]->name.length() > 0) - info.name = m_subtitle_streams[m_subtitle_index]->name; - } + info.language = m_subtitle_streams[index]->language; + info.name = m_subtitle_streams[m_subtitle_index]->name; + if (m_log_level > 5) CLog::Log(LOGDEBUG, "CAMLPlayer::GetSubtitleName, iStream(%d)", index); } @@ -1101,8 +1090,7 @@ void CAMLPlayer::GetAudioStreamInfo(int index, SPlayerAudioStreamInfo &info) info.bitrate = m_audio_streams[index]->bit_rate; - if ( m_audio_streams[index]->language.size()) - info.language = m_audio_streams[index]->language; + info.language = m_audio_streams[index]->language; info.channels = m_audio_streams[index]->channel; -- cgit v1.2.3 From 089ba3a922d0303af1fa782133e935b28a4b2e48 Mon Sep 17 00:00:00 2001 From: ace20022 Date: Sun, 3 Mar 2013 11:20:49 +0100 Subject: [Players] Set the language code instead of the full name in the GetSubtitleStreamInfo methods. --- xbmc/cores/dvdplayer/DVDPlayer.cpp | 6 +----- xbmc/cores/omxplayer/OMXPlayer.cpp | 6 +----- 2 files changed, 2 insertions(+), 10 deletions(-) diff --git a/xbmc/cores/dvdplayer/DVDPlayer.cpp b/xbmc/cores/dvdplayer/DVDPlayer.cpp index 206400ce32..1ed895353b 100644 --- a/xbmc/cores/dvdplayer/DVDPlayer.cpp +++ b/xbmc/cores/dvdplayer/DVDPlayer.cpp @@ -2711,11 +2711,7 @@ void CDVDPlayer::GetSubtitleStreamInfo(int index, SPlayerSubtitleStreamInfo &inf if(s.type == STREAM_NONE) info.name += "(Invalid)"; - CStdString strStreamLang; - if (!g_LangCodeExpander.Lookup(strStreamLang, s.language)) - info.language = g_localizeStrings.Get(13205); // Unknown - else - info.language = strStreamLang; + info.language = s.language; } void CDVDPlayer::SetSubtitle(int iStream) diff --git a/xbmc/cores/omxplayer/OMXPlayer.cpp b/xbmc/cores/omxplayer/OMXPlayer.cpp index 1a9f2faa99..9c2705d58a 100644 --- a/xbmc/cores/omxplayer/OMXPlayer.cpp +++ b/xbmc/cores/omxplayer/OMXPlayer.cpp @@ -2712,11 +2712,7 @@ void COMXPlayer::GetSubtitleStreamInfo(int index, SPlayerSubtitleStreamInfo &inf if(s.type == STREAM_NONE) info.name += "(Invalid)"; - CStdString strStreamLang; - if (!g_LangCodeExpander.Lookup(strStreamLang, s.language)) - info.language = g_localizeStrings.Get(13205); // Unknown - else - info.language = strStreamLang; + info.language = s.language; } void COMXPlayer::SetSubtitle(int iStream) -- cgit v1.2.3 From 1d8cf1619b413967e57818f2a1fadebc8da4abd9 Mon Sep 17 00:00:00 2001 From: ace20022 Date: Fri, 1 Feb 2013 13:44:42 +0100 Subject: [GUI Audio] Adapt the presentation of audio and subtitle items. The labels are built as follows: "[language|unknown] - name" or, if name is empty, "[language/unknown]" --- .../dialogs/GUIDialogAudioSubtitleSettings.cpp | 29 ++++++++++++++-------- 1 file changed, 18 insertions(+), 11 deletions(-) diff --git a/xbmc/video/dialogs/GUIDialogAudioSubtitleSettings.cpp b/xbmc/video/dialogs/GUIDialogAudioSubtitleSettings.cpp index 06ae29b13b..3157bd7480 100644 --- a/xbmc/video/dialogs/GUIDialogAudioSubtitleSettings.cpp +++ b/xbmc/video/dialogs/GUIDialogAudioSubtitleSettings.cpp @@ -38,6 +38,7 @@ #include "pvr/PVRManager.h" #include "cores/AudioEngine/Utils/AEUtil.h" #include "cores/IPlayer.h" +#include "utils/LangCodeExpander.h" using namespace std; using namespace XFILE; @@ -162,16 +163,20 @@ void CGUIDialogAudioSubtitleSettings::AddAudioStreams(unsigned int id) for (int i = 0; i <= setting.max; ++i) { CStdString strItem; - CStdString strName; + CStdString strLanguage; SPlayerAudioStreamInfo info; g_application.m_pPlayer->GetAudioStreamInfo(i, info); - strName = info.name; - if (strName.length() == 0) - strName = "Unnamed"; + if (!g_LangCodeExpander.Lookup(strLanguage, info.language)) + strLanguage = g_localizeStrings.Get(13205); // Unknown - strItem.Format("%s (%i/%i)", strName.c_str(), i + 1, (int)setting.max + 1); + if (info.name.length() == 0) + strItem = strLanguage; + else + strItem.Format("%s - %s", strLanguage.c_str(), info.name.c_str()); + + strItem.Format("%s (%i/%i)", strItem.c_str(), i + 1, (int)setting.max + 1); setting.entry.push_back(make_pair(setting.entry.size(), strItem)); } @@ -207,15 +212,17 @@ void CGUIDialogAudioSubtitleSettings::AddSubtitleStreams(unsigned int id) g_application.m_pPlayer->GetSubtitleStreamInfo(i, info); CStdString strItem; - CStdString strName = info.name; + CStdString strLanguage; - if (strName.length() == 0) - strName = "Unnamed"; + if (!g_LangCodeExpander.Lookup(strLanguage, info.language)) + strLanguage = g_localizeStrings.Get(13205); // Unknown - if (strName != info.language) - strName.Format("%s [%s]", strName.c_str(), info.language.c_str()); + if (info.name.length() == 0) + strItem = strLanguage; + else + strItem.Format("%s - %s", strLanguage.c_str(), info.name.c_str()); - strItem.Format("%s (%i/%i)", strName.c_str(), i + 1, (int)setting.max + 1); + strItem.Format("%s (%i/%i)", strItem.c_str(), i + 1, (int)setting.max + 1); setting.entry.push_back(make_pair(setting.entry.size(), strItem)); } -- cgit v1.2.3 From 33b0427d888fc11881ce35793814da48b8663b58 Mon Sep 17 00:00:00 2001 From: ace20022 Date: Mon, 4 Mar 2013 12:48:09 +0100 Subject: [DVDDemux] Add "Dolby TrueHD" and 7.1 recognition to GetStreamType. Additionally adapt the default channel string to "channel count-chs" --- xbmc/cores/dvdplayer/DVDDemuxers/DVDDemux.cpp | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/xbmc/cores/dvdplayer/DVDDemuxers/DVDDemux.cpp b/xbmc/cores/dvdplayer/DVDDemuxers/DVDDemux.cpp index 8bf8f93a7e..d72973f3bb 100644 --- a/xbmc/cores/dvdplayer/DVDDemuxers/DVDDemux.cpp +++ b/xbmc/cores/dvdplayer/DVDDemuxers/DVDDemux.cpp @@ -43,15 +43,17 @@ void CDemuxStreamAudio::GetStreamType(std::string& strInfo) strcpy(sInfo, "DTS "); } else if (codec == CODEC_ID_MP2) strcpy(sInfo, "MP2 "); + else if (codec == CODEC_ID_TRUEHD) strcpy(sInfo, "Dolby TrueHD "); else strcpy(sInfo, ""); if (iChannels == 1) strcat(sInfo, "Mono"); else if (iChannels == 2) strcat(sInfo, "Stereo"); else if (iChannels == 6) strcat(sInfo, "5.1"); + else if (iChannels == 8) strcat(sInfo, "7.1"); else if (iChannels != 0) { char temp[32]; - sprintf(temp, " %d %s", iChannels, "Channels"); + sprintf(temp, " %d%s", iChannels, "-chs"); strcat(sInfo, temp); } strInfo = sInfo; -- cgit v1.2.3 From 93e562f499586b15a4e6ea0ab4adaebfa02d0ef1 Mon Sep 17 00:00:00 2001 From: ace20022 Date: Mon, 4 Mar 2013 14:37:44 +0100 Subject: [Player] Return the language code of a stream, or its name if the language is not specified. --- xbmc/interfaces/legacy/Player.cpp | 26 ++++++++++++-------------- 1 file changed, 12 insertions(+), 14 deletions(-) diff --git a/xbmc/interfaces/legacy/Player.cpp b/xbmc/interfaces/legacy/Player.cpp index 433dea9356..10f789cf91 100644 --- a/xbmc/interfaces/legacy/Player.cpp +++ b/xbmc/interfaces/legacy/Player.cpp @@ -28,7 +28,6 @@ #include "ApplicationMessenger.h" #include "GUIInfoManager.h" #include "AddonUtils.h" -#include "utils/LangCodeExpander.h" #include "utils/log.h" #include "cores/IPlayer.h" @@ -396,11 +395,11 @@ namespace XBMCAddon { SPlayerSubtitleStreamInfo info; g_application.m_pPlayer->GetSubtitleStreamInfo(g_application.m_pPlayer->GetSubtitle(), info); - CStdString strName = info.name; - if (strName == "Unknown(Invalid)") - strName = ""; - return strName; + if (info.language.length() > 0) + return info.language; + else + return info.name; } return NULL; @@ -428,10 +427,10 @@ namespace XBMCAddon SPlayerSubtitleStreamInfo info; g_application.m_pPlayer->GetSubtitleStreamInfo(iStream, info); - CStdString FullLang; - if (!g_LangCodeExpander.Lookup(FullLang, info.name)) - FullLang = info.name; - (*ret)[iStream] = FullLang; + if (info.language.length() > 0) + (*ret)[iStream] = info.language; + else + (*ret)[iStream] = info.name; } return ret; } @@ -463,11 +462,10 @@ namespace XBMCAddon SPlayerAudioStreamInfo info; g_application.m_pPlayer->GetAudioStreamInfo(iStream, info); - CStdString FullLang; - g_LangCodeExpander.Lookup(FullLang, info.language); - if (FullLang.IsEmpty()) - FullLang = info.name; - (*ret)[iStream] = FullLang; + if (info.language.length() > 0) + (*ret)[iStream] = info.language; + else + (*ret)[iStream] = info.name; } return ret; } -- cgit v1.2.3 From b60f700a2c7db27da227fedf4ac1a3a775ba2459 Mon Sep 17 00:00:00 2001 From: ace20022 Date: Wed, 20 Mar 2013 14:03:24 +0100 Subject: [Fix] Correct the audio format recognition. --- lib/libdvd/libdvdnav/src/dvdnav/dvd_types.h | 13 ++++++------ .../libdvdnav_correct_audio_format_enum.diff | 23 ++++++++++++++++++++++ .../DVDInputStreams/DVDInputStreamNavigator.cpp | 16 +++++++++------ .../dvdplayer/DVDInputStreams/dvdnav/dvd_types.h | 17 ++++++++-------- 4 files changed, 47 insertions(+), 22 deletions(-) create mode 100644 lib/libdvd/patches/libdvdnav_correct_audio_format_enum.diff diff --git a/lib/libdvd/libdvdnav/src/dvdnav/dvd_types.h b/lib/libdvd/libdvdnav/src/dvdnav/dvd_types.h index 08b46d385b..eb8121d843 100644 --- a/lib/libdvd/libdvdnav/src/dvdnav/dvd_types.h +++ b/lib/libdvd/libdvdnav/src/dvdnav/dvd_types.h @@ -161,14 +161,13 @@ typedef enum { /* The audio format */ typedef enum { DVD_AUDIO_FORMAT_AC3 = 0, - DVD_AUDIO_FORMAT_MPEG1 = 1, - DVD_AUDIO_FORMAT_MPEG1_DRC = 2, - DVD_AUDIO_FORMAT_MPEG2 = 3, - DVD_AUDIO_FORMAT_MPEG2_DRC = 4, - DVD_AUDIO_FORMAT_LPCM = 5, + DVD_AUDIO_FORMAT_UNKNOWN_1 = 1, + DVD_AUDIO_FORMAT_MPEG = 2, + DVD_AUDIO_FORMAT_MPEG2_EXT = 3, + DVD_AUDIO_FORMAT_LPCM = 4, + DVD_AUDIO_FORMAT_UNKNOWN_5 = 5, DVD_AUDIO_FORMAT_DTS = 6, - DVD_AUDIO_FORMAT_SDDS = 7, - DVD_AUDIO_FORMAT_Other = 8 + DVD_AUDIO_FORMAT_SDDS = 7 } DVDAudioFormat_t; /* Audio language extension */ diff --git a/lib/libdvd/patches/libdvdnav_correct_audio_format_enum.diff b/lib/libdvd/patches/libdvdnav_correct_audio_format_enum.diff new file mode 100644 index 0000000000..2951de71c9 --- /dev/null +++ b/lib/libdvd/patches/libdvdnav_correct_audio_format_enum.diff @@ -0,0 +1,23 @@ +--- libdvdnav-4.2.0/src/dvdnav/dvd_types.h Wed Mar 20 08:51:10 2013 ++++ lib/libdvd/libdvdnav/src/dvdnav/dvd_types.h Wed Mar 20 12:22:25 2013 +@@ -161,14 +161,13 @@ + /* The audio format */ + typedef enum { + DVD_AUDIO_FORMAT_AC3 = 0, +- DVD_AUDIO_FORMAT_MPEG1 = 1, +- DVD_AUDIO_FORMAT_MPEG1_DRC = 2, +- DVD_AUDIO_FORMAT_MPEG2 = 3, +- DVD_AUDIO_FORMAT_MPEG2_DRC = 4, +- DVD_AUDIO_FORMAT_LPCM = 5, ++ DVD_AUDIO_FORMAT_UNKNOWN_1 = 1, ++ DVD_AUDIO_FORMAT_MPEG = 2, ++ DVD_AUDIO_FORMAT_MPEG2_EXT = 3, ++ DVD_AUDIO_FORMAT_LPCM = 4, ++ DVD_AUDIO_FORMAT_UNKNOWN_5 = 5, + DVD_AUDIO_FORMAT_DTS = 6, +- DVD_AUDIO_FORMAT_SDDS = 7, +- DVD_AUDIO_FORMAT_Other = 8 ++ DVD_AUDIO_FORMAT_SDDS = 7 + } DVDAudioFormat_t; + + /* Audio language extension */ diff --git a/xbmc/cores/dvdplayer/DVDInputStreams/DVDInputStreamNavigator.cpp b/xbmc/cores/dvdplayer/DVDInputStreams/DVDInputStreamNavigator.cpp index 894c4943b7..78bfa9de6f 100644 --- a/xbmc/cores/dvdplayer/DVDInputStreams/DVDInputStreamNavigator.cpp +++ b/xbmc/cores/dvdplayer/DVDInputStreams/DVDInputStreamNavigator.cpp @@ -960,17 +960,21 @@ void CDVDInputStreamNavigator::SetAudioStreamName(DVDNavStreamInfo &info, const case DVD_AUDIO_FORMAT_AC3: info.name += " AC3"; break; - case DVD_AUDIO_FORMAT_MPEG1: - case DVD_AUDIO_FORMAT_MPEG1_DRC: - info.name += " MP1"; + case DVD_AUDIO_FORMAT_UNKNOWN_1: + info.name += " UNKNOWN #1"; break; - case DVD_AUDIO_FORMAT_MPEG2: - case DVD_AUDIO_FORMAT_MPEG2_DRC: - info.name += " MP2"; + case DVD_AUDIO_FORMAT_MPEG: + info.name += " MPEG AUDIO"; + break; + case DVD_AUDIO_FORMAT_MPEG2_EXT: + info.name += " MP2 Ext."; break; case DVD_AUDIO_FORMAT_LPCM: info.name += " LPCM"; break; + case DVD_AUDIO_FORMAT_UNKNOWN_5: + info.name += " UNKNOWN #5"; + break; case DVD_AUDIO_FORMAT_DTS: info.name += " DTS"; break; diff --git a/xbmc/cores/dvdplayer/DVDInputStreams/dvdnav/dvd_types.h b/xbmc/cores/dvdplayer/DVDInputStreams/dvdnav/dvd_types.h index 08d22caf65..a3067a5298 100644 --- a/xbmc/cores/dvdplayer/DVDInputStreams/dvdnav/dvd_types.h +++ b/xbmc/cores/dvdplayer/DVDInputStreams/dvdnav/dvd_types.h @@ -163,15 +163,14 @@ typedef enum { /* The audio format */ typedef enum { - DVD_AUDIO_FORMAT_AC3 = 0, - DVD_AUDIO_FORMAT_MPEG1 = 1, - DVD_AUDIO_FORMAT_MPEG1_DRC = 2, - DVD_AUDIO_FORMAT_MPEG2 = 3, - DVD_AUDIO_FORMAT_MPEG2_DRC = 4, - DVD_AUDIO_FORMAT_LPCM = 5, - DVD_AUDIO_FORMAT_DTS = 6, - DVD_AUDIO_FORMAT_SDDS = 7, - DVD_AUDIO_FORMAT_Other = 8 + DVD_AUDIO_FORMAT_AC3 = 0, + DVD_AUDIO_FORMAT_UNKNOWN_1 = 1, + DVD_AUDIO_FORMAT_MPEG = 2, + DVD_AUDIO_FORMAT_MPEG2_EXT = 3, + DVD_AUDIO_FORMAT_LPCM = 4, + DVD_AUDIO_FORMAT_UNKNOWN_5 = 5, + DVD_AUDIO_FORMAT_DTS = 6, + DVD_AUDIO_FORMAT_SDDS = 7 } DVDAudioFormat_t; /* Audio language extension */ -- cgit v1.2.3 From e0e12a7b9968c3325031dfe416f2857eefbc9098 Mon Sep 17 00:00:00 2001 From: ace20022 Date: Wed, 20 Mar 2013 14:17:50 +0100 Subject: [Cosmetics] Fix indentations. --- lib/libdvd/libdvdnav/src/dvdnav/dvdnav.h | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/lib/libdvd/libdvdnav/src/dvdnav/dvdnav.h b/lib/libdvd/libdvdnav/src/dvdnav/dvdnav.h index 7f3e86922b..ae319ef717 100644 --- a/lib/libdvd/libdvdnav/src/dvdnav/dvdnav.h +++ b/lib/libdvd/libdvdnav/src/dvdnav/dvdnav.h @@ -32,11 +32,11 @@ extern "C" { #endif -# include -# include -# include -# include /* For vm_cmd_t */ -# include +#include +#include +#include +#include /* For vm_cmd_t */ +#include -- cgit v1.2.3 From 2e171e6221b7a2e21003e0b5b87d5444883bc400 Mon Sep 17 00:00:00 2001 From: ace20022 Date: Wed, 20 Mar 2013 14:33:55 +0100 Subject: [Fix] Fixes dvdnav_audio_stream_format(...). Don't change the audio format numbers, e.g. DTS is 6 not 5, 5 is unknown. --- lib/libdvd/libdvdnav/src/dvdnav.c | 23 ++------------- lib/libdvd/libdvdnav/src/dvdnav/dvdnav.h | 6 ---- ...bdvdnav_correct_dvdnav_audio_stream_format.diff | 33 ++++++++++++++++++++++ .../patches/libdvdnav_remove_unneeded_defines.diff | 15 ++++++++++ 4 files changed, 51 insertions(+), 26 deletions(-) create mode 100644 lib/libdvd/patches/libdvdnav_correct_dvdnav_audio_stream_format.diff create mode 100644 lib/libdvd/patches/libdvdnav_remove_unneeded_defines.diff diff --git a/lib/libdvd/libdvdnav/src/dvdnav.c b/lib/libdvd/libdvdnav/src/dvdnav.c index b10b61ef2f..6009b37f6c 100644 --- a/lib/libdvd/libdvdnav/src/dvdnav.c +++ b/lib/libdvd/libdvdnav/src/dvdnav.c @@ -925,27 +925,10 @@ uint16_t dvdnav_audio_stream_format(dvdnav_t *this, uint8_t stream) { attr = vm_get_audio_attr(this->vm, stream); pthread_mutex_unlock(&this->vm_lock); - switch(attr.audio_format) { - case 0: - format = DVDNAV_FORMAT_AC3; - break; - case 2: /* MPEG-1 or MPEG-2 without extension bitstream. */ - case 3: /* MPEG-2 with extension bitstream. */ - format = DVDNAV_FORMAT_MPEGAUDIO; - break; - case 4: - format = DVDNAV_FORMAT_LPCM; - break; - case 6: - format = DVDNAV_FORMAT_DTS; - break; - case 7: - format = DVDNAV_FORMAT_SDDS; - break; - default: + if (attr.audio_format >=0 && attr.audio_format <= 7) + format = attr.audio_format; + else format = 0xffff; - break; - } return format; } diff --git a/lib/libdvd/libdvdnav/src/dvdnav/dvdnav.h b/lib/libdvd/libdvdnav/src/dvdnav/dvdnav.h index ae319ef717..359b951aad 100644 --- a/lib/libdvd/libdvdnav/src/dvdnav/dvdnav.h +++ b/lib/libdvd/libdvdnav/src/dvdnav/dvdnav.h @@ -63,12 +63,6 @@ typedef int32_t dvdnav_status_t; #define DVDNAV_STATUS_ERR 0 #define DVDNAV_STATUS_OK 1 -#define DVDNAV_FORMAT_AC3 0 -#define DVDNAV_FORMAT_MPEGAUDIO 3 -#define DVDNAV_FORMAT_LPCM 4 -#define DVDNAV_FORMAT_DTS 5 -#define DVDNAV_FORMAT_SDDS 6 - /********************************************************************* * initialisation & housekeeping functions * *********************************************************************/ diff --git a/lib/libdvd/patches/libdvdnav_correct_dvdnav_audio_stream_format.diff b/lib/libdvd/patches/libdvdnav_correct_dvdnav_audio_stream_format.diff new file mode 100644 index 0000000000..d4e3b776d8 --- /dev/null +++ b/lib/libdvd/patches/libdvdnav_correct_dvdnav_audio_stream_format.diff @@ -0,0 +1,33 @@ +--- libdvdnav-4.2.0/src/dvdnav.c Wed Mar 20 11:38:53 2013 ++++ lib/libdvd/libdvdnav/src/dvdnav.c Wed Mar 20 13:20:35 2013 +@@ -907,27 +925,10 @@ + attr = vm_get_audio_attr(this->vm, stream); + pthread_mutex_unlock(&this->vm_lock); + +- switch(attr.audio_format) { +- case 0: +- format = DVDNAV_FORMAT_AC3; +- break; +- case 2: /* MPEG-1 or MPEG-2 without extension bitstream. */ +- case 3: /* MPEG-2 with extension bitstream. */ +- format = DVDNAV_FORMAT_MPEGAUDIO; +- break; +- case 4: +- format = DVDNAV_FORMAT_LPCM; +- break; +- case 6: +- format = DVDNAV_FORMAT_DTS; +- break; +- case 7: +- format = DVDNAV_FORMAT_SDDS; +- break; +- default: ++ if (attr.audio_format >=0 && attr.audio_format <= 7) ++ format = attr.audio_format; ++ else + format = 0xffff; +- break; +- } + + return format; + } diff --git a/lib/libdvd/patches/libdvdnav_remove_unneeded_defines.diff b/lib/libdvd/patches/libdvdnav_remove_unneeded_defines.diff new file mode 100644 index 0000000000..9609dd0312 --- /dev/null +++ b/lib/libdvd/patches/libdvdnav_remove_unneeded_defines.diff @@ -0,0 +1,15 @@ +--- libdvdnav-4.2.0/src/dvdnav/dvdnav.h Wed Mar 20 11:38:52 2013 ++++ lib/libdvd/libdvdnav/src/dvdnav/dvdnav.h Wed Mar 20 13:19:13 2013 +@@ -63,12 +63,6 @@ + #define DVDNAV_STATUS_ERR 0 + #define DVDNAV_STATUS_OK 1 + +-#define DVDNAV_FORMAT_AC3 0 +-#define DVDNAV_FORMAT_MPEGAUDIO 3 +-#define DVDNAV_FORMAT_LPCM 4 +-#define DVDNAV_FORMAT_DTS 5 +-#define DVDNAV_FORMAT_SDDS 6 +- + /********************************************************************* + * initialisation & housekeeping functions * + *********************************************************************/ -- cgit v1.2.3