diff --git a/src/apps/mediaplayer/Controller.cpp b/src/apps/mediaplayer/Controller.cpp index ba0ed90521..f6549d274f 100644 --- a/src/apps/mediaplayer/Controller.cpp +++ b/src/apps/mediaplayer/Controller.cpp @@ -852,6 +852,41 @@ Controller::GetAudioCodecInfo(media_codec_info* info) } +status_t +Controller::GetMetaData(BMessage* metaData) +{ + // TODO: Move API into supplier classes + if (fMediaFile == NULL) + return B_NO_INIT; + + return fMediaFile->GetMetaData(metaData); +} + + +status_t +Controller::GetVideoMetaData(int32 index, BMessage* metaData) +{ + // TODO: Move API into supplier classes + BMediaTrack* track = (BMediaTrack*)fVideoTrackList.ItemAt(index); + if (track == NULL) + return B_BAD_INDEX; + + return track->GetMetaData(metaData); +} + + +status_t +Controller::GetAudioMetaData(int32 index, BMessage* metaData) +{ + // TODO: Move API into supplier classes + BMediaTrack* track = (BMediaTrack*)fAudioTrackList.ItemAt(index); + if (track == NULL) + return B_BAD_INDEX; + + return track->GetMetaData(metaData); +} + + // #pragma mark - diff --git a/src/apps/mediaplayer/Controller.h b/src/apps/mediaplayer/Controller.h index 5e93c2f77a..e0706543c5 100644 --- a/src/apps/mediaplayer/Controller.h +++ b/src/apps/mediaplayer/Controller.h @@ -134,6 +134,12 @@ public: status_t GetEncodedAudioFormat(media_format* format); status_t GetAudioCodecInfo(media_codec_info* info); + status_t GetMetaData(BMessage* metaData); + status_t GetVideoMetaData(int32 track, + BMessage* metaData); + status_t GetAudioMetaData(int32 track, + BMessage* metaData); + // video view void SetVideoView(VideoView *view); diff --git a/src/apps/mediaplayer/Jamfile b/src/apps/mediaplayer/Jamfile index 6d4acab783..b5d29c7e0c 100644 --- a/src/apps/mediaplayer/Jamfile +++ b/src/apps/mediaplayer/Jamfile @@ -108,7 +108,7 @@ Application MediaPlayer : MainWin.cpp VideoView.cpp - : be game media tracker translation textencoding $(TARGET_LIBSTDC++) + : be game locale media tracker translation textencoding $(TARGET_LIBSTDC++) : MediaPlayer.rdef ; diff --git a/src/apps/mediaplayer/MainWin.cpp b/src/apps/mediaplayer/MainWin.cpp index e8e5482c37..30208e7a25 100644 --- a/src/apps/mediaplayer/MainWin.cpp +++ b/src/apps/mediaplayer/MainWin.cpp @@ -32,6 +32,7 @@ #include #include #include +#include #include #include #include @@ -1548,7 +1549,18 @@ MainWin::_SetupTrackMenus(BMenu* audioTrackMenu, BMenu* videoTrackMenu) int count = fController->AudioTrackCount(); int current = fController->CurrentAudioTrack(); for (int i = 0; i < count; i++) { - sprintf(s, "Track %d", i + 1); + BMessage metaData; + const char* languageString = NULL; + if (fController->GetAudioMetaData(i, &metaData) == B_OK) + metaData.FindString("language", &languageString); + if (languageString != NULL) { + BLanguage language(languageString); + BString languageName; + if (language.GetTranslatedName(languageName) == B_OK) + languageString = languageName.String(); + snprintf(s, sizeof(s), "%s", languageString); + } else + snprintf(s, sizeof(s), "Track %d", i + 1); BMenuItem* item = new BMenuItem(s, new BMessage(M_SELECT_AUDIO_TRACK + i)); item->SetMarked(i == current); @@ -1563,7 +1575,7 @@ MainWin::_SetupTrackMenus(BMenu* audioTrackMenu, BMenu* videoTrackMenu) count = fController->VideoTrackCount(); current = fController->CurrentVideoTrack(); for (int i = 0; i < count; i++) { - sprintf(s, "Track %d", i + 1); + snprintf(s, sizeof(s), "Track %d", i + 1); BMenuItem* item = new BMenuItem(s, new BMessage(M_SELECT_VIDEO_TRACK + i)); item->SetMarked(i == current);