[Mac] some track language tags are not recognized
https://bugs.webkit.org/show_bug.cgi?id=119643
Reviewed by Dean Jackson.
* platform/graphics/avfoundation/objc/MediaPlayerPrivateAVFoundationObjC.mm:
(WebCore::MediaPlayerPrivateAVFoundationObjC::tracksChanged): Always call languageOfPrimaryAudioTrack(),
a track may have changed so we may have a new language.
(WebCore::MediaPlayerPrivateAVFoundationObjC::languageOfPrimaryAudioTrack): Call [AVAssetTrack languageCode]
if [AVAssetTrack extendedLanguageTag] returns NULL in case the media file has an old
QuickTime language code.
git-svn-id: http://svn.webkit.org/repository/webkit/trunk@153912 268f45cc-cd09-0410-ab3c-d52691b4dbfc
diff --git a/Source/WebCore/ChangeLog b/Source/WebCore/ChangeLog
index 266412b..3d092b1 100644
--- a/Source/WebCore/ChangeLog
+++ b/Source/WebCore/ChangeLog
@@ -1,3 +1,17 @@
+2013-08-09 Eric Carlson <eric.carlson@apple.com>
+
+ [Mac] some track language tags are not recognized
+ https://bugs.webkit.org/show_bug.cgi?id=119643
+
+ Reviewed by Dean Jackson.
+
+ * platform/graphics/avfoundation/objc/MediaPlayerPrivateAVFoundationObjC.mm:
+ (WebCore::MediaPlayerPrivateAVFoundationObjC::tracksChanged): Always call languageOfPrimaryAudioTrack(),
+ a track may have changed so we may have a new language.
+ (WebCore::MediaPlayerPrivateAVFoundationObjC::languageOfPrimaryAudioTrack): Call [AVAssetTrack languageCode]
+ if [AVAssetTrack extendedLanguageTag] returns NULL in case the media file has an old
+ QuickTime language code.
+
2013-08-09 Dean Jackson <dino@apple.com>
Captions menu needs to reset text-align
diff --git a/Source/WebCore/platform/graphics/avfoundation/objc/MediaPlayerPrivateAVFoundationObjC.mm b/Source/WebCore/platform/graphics/avfoundation/objc/MediaPlayerPrivateAVFoundationObjC.mm
index 4af4916..7447f12 100644
--- a/Source/WebCore/platform/graphics/avfoundation/objc/MediaPlayerPrivateAVFoundationObjC.mm
+++ b/Source/WebCore/platform/graphics/avfoundation/objc/MediaPlayerPrivateAVFoundationObjC.mm
@@ -1045,7 +1045,7 @@
sizeChanged();
- if (!primaryAudioTrackLanguage.isNull() && primaryAudioTrackLanguage != languageOfPrimaryAudioTrack())
+ if (primaryAudioTrackLanguage != languageOfPrimaryAudioTrack())
player()->characteristicChanged();
}
@@ -1497,6 +1497,12 @@
AVAssetTrack *track = [tracks objectAtIndex:0];
NSString *language = [track extendedLanguageTag];
+ // If the language code is stored as a QuickTime 5-bit packed code there aren't enough bits for a full
+ // RFC 4646 language tag so extendedLanguageTag returns NULL. In this case languageCode will return the
+ // ISO 639-2/T language code so check it.
+ if (!language)
+ language = [track languageCode];
+
// Some legacy tracks have "und" as a language, treat that the same as no language at all.
if (language && ![language isEqualToString:@"und"]) {
m_languageOfPrimaryAudioTrack = language;