Diff
Modified: branches/safari-537.73-branch/LayoutTests/ChangeLog (157972 => 157973)
--- branches/safari-537.73-branch/LayoutTests/ChangeLog 2013-10-25 01:17:59 UTC (rev 157972)
+++ branches/safari-537.73-branch/LayoutTests/ChangeLog 2013-10-25 01:21:06 UTC (rev 157973)
@@ -1,5 +1,37 @@
2013-10-24 Lucas Forschler <[email protected]>
+ Merge r154527
+
+ 2013-08-23 Eric Carlson <[email protected]>
+
+ [Mac] some track language tags are not recognized
+ https://bugs.webkit.org/show_bug.cgi?id=119643
+
+ Reviewed by Jer Noble.
+
+ Explicitly set caption mode to "Automatic" so the track 'default' attribute works.
+
+ * media/track/text-track-cue-is-reachable.html:
+ * media/track/text-track-is-reachable.html:
+ * media/track/track-active-cues.html:
+ * media/track/track-cue-overlap-snap-to-lines-not-set.html:
+ * media/track/track-cue-rendering-horizontal.html:
+ * media/track/track-cue-rendering-vertical.html:
+ * media/track/track-kind.html:
+ * media/track/track-large-timestamp.html:
+ * media/track/track-mode.html:
+ * media/track/track-text-track-cue-list.html:
+ * media/track/track-webvtt-tc000-empty.html:
+ * media/track/track-webvtt-tc002-bom.html:
+ * media/track/track-webvtt-tc010-no-timings.html:
+ * media/track/track-webvtt-tc027-empty-cue.html:
+ * media/track/track-webvtt-tc028-unsupported-markup.html:
+ * media/track/track-word-breaking.html:
+ * media/video-test.js:
+ (setCaptionDisplayMode):
+
+2013-10-24 Lucas Forschler <[email protected]>
+
Merge r154346
2013-08-20 Michael Saboff <[email protected]>
Modified: branches/safari-537.73-branch/LayoutTests/media/track/text-track-cue-is-reachable.html (157972 => 157973)
--- branches/safari-537.73-branch/LayoutTests/media/track/text-track-cue-is-reachable.html 2013-10-25 01:17:59 UTC (rev 157972)
+++ branches/safari-537.73-branch/LayoutTests/media/track/text-track-cue-is-reachable.html 2013-10-25 01:21:06 UTC (rev 157973)
@@ -37,6 +37,8 @@
endTest();
}
+ setCaptionDisplayMode('Automatic');
+
</script>
</head>
<body>
Modified: branches/safari-537.73-branch/LayoutTests/media/track/text-track-is-reachable.html (157972 => 157973)
--- branches/safari-537.73-branch/LayoutTests/media/track/text-track-is-reachable.html 2013-10-25 01:17:59 UTC (rev 157972)
+++ branches/safari-537.73-branch/LayoutTests/media/track/text-track-is-reachable.html 2013-10-25 01:21:06 UTC (rev 157973)
@@ -38,6 +38,8 @@
endTest();
}
+ setCaptionDisplayMode('Automatic');
+
</script>
</head>
<body>
Modified: branches/safari-537.73-branch/LayoutTests/media/track/track-active-cues.html (157972 => 157973)
--- branches/safari-537.73-branch/LayoutTests/media/track/track-active-cues.html 2013-10-25 01:17:59 UTC (rev 157972)
+++ branches/safari-537.73-branch/LayoutTests/media/track/track-active-cues.html 2013-10-25 01:21:06 UTC (rev 157973)
@@ -39,6 +39,8 @@
video.src = "" "../content/test");
}
+
+ setCaptionDisplayMode('Automatic');
</script>
</head>
Modified: branches/safari-537.73-branch/LayoutTests/media/track/track-cue-overlap-snap-to-lines-not-set.html (157972 => 157973)
--- branches/safari-537.73-branch/LayoutTests/media/track/track-cue-overlap-snap-to-lines-not-set.html 2013-10-25 01:17:59 UTC (rev 157972)
+++ branches/safari-537.73-branch/LayoutTests/media/track/track-cue-overlap-snap-to-lines-not-set.html 2013-10-25 01:21:06 UTC (rev 157973)
@@ -65,6 +65,7 @@
});
}
+ setCaptionDisplayMode('Automatic');
</script>
</head>
<body _onload_="loaded()">
Modified: branches/safari-537.73-branch/LayoutTests/media/track/track-cue-rendering-horizontal.html (157972 => 157973)
--- branches/safari-537.73-branch/LayoutTests/media/track/track-cue-rendering-horizontal.html 2013-10-25 01:17:59 UTC (rev 157972)
+++ branches/safari-537.73-branch/LayoutTests/media/track/track-cue-rendering-horizontal.html 2013-10-25 01:21:06 UTC (rev 157973)
@@ -26,6 +26,9 @@
</script>
<script src=""
+ <script>
+ setCaptionDisplayMode('Automatic');
+ </script>
</head>
<body _onload_="loaded()">
<video>
Modified: branches/safari-537.73-branch/LayoutTests/media/track/track-cue-rendering-vertical.html (157972 => 157973)
--- branches/safari-537.73-branch/LayoutTests/media/track/track-cue-rendering-vertical.html 2013-10-25 01:17:59 UTC (rev 157972)
+++ branches/safari-537.73-branch/LayoutTests/media/track/track-cue-rendering-vertical.html 2013-10-25 01:21:06 UTC (rev 157973)
@@ -27,6 +27,9 @@
</script>
<script src=""
+ <script>
+ setCaptionDisplayMode('Automatic');
+ </script>
</head>
<body _onload_="loaded()">
<video>
Modified: branches/safari-537.73-branch/LayoutTests/media/track/track-kind.html (157972 => 157973)
--- branches/safari-537.73-branch/LayoutTests/media/track/track-kind.html 2013-10-25 01:17:59 UTC (rev 157972)
+++ branches/safari-537.73-branch/LayoutTests/media/track/track-kind.html 2013-10-25 01:21:06 UTC (rev 157973)
@@ -76,6 +76,8 @@
video.src = "" '../content/counting');
}
+ setCaptionDisplayMode('Automatic');
+
</script>
</head>
<body _onload_="loaded()">
Modified: branches/safari-537.73-branch/LayoutTests/media/track/track-large-timestamp.html (157972 => 157973)
--- branches/safari-537.73-branch/LayoutTests/media/track/track-large-timestamp.html 2013-10-25 01:17:59 UTC (rev 157972)
+++ branches/safari-537.73-branch/LayoutTests/media/track/track-large-timestamp.html 2013-10-25 01:21:06 UTC (rev 157973)
@@ -20,6 +20,7 @@
endTest();
}
+ setCaptionDisplayMode('Automatic');
</script>
</head>
<body>
Modified: branches/safari-537.73-branch/LayoutTests/media/track/track-mode.html (157972 => 157973)
--- branches/safari-537.73-branch/LayoutTests/media/track/track-mode.html 2013-10-25 01:17:59 UTC (rev 157972)
+++ branches/safari-537.73-branch/LayoutTests/media/track/track-mode.html 2013-10-25 01:21:06 UTC (rev 157973)
@@ -45,6 +45,8 @@
consoleWrite("<b>++ 'disabled'</b>");
setMode("disabled");
+ setCaptionDisplayMode('ForcedOnly');
+
waitForEvent('cuechange', cuechange);
video.addEventListener('playing', playing);
video.src = "" "../content/test");
@@ -86,6 +88,7 @@
}
}
+ setCaptionDisplayMode('Automatic');
</script>
</head>
<body>
Modified: branches/safari-537.73-branch/LayoutTests/media/track/track-text-track-cue-list.html (157972 => 157973)
--- branches/safari-537.73-branch/LayoutTests/media/track/track-text-track-cue-list.html 2013-10-25 01:17:59 UTC (rev 157972)
+++ branches/safari-537.73-branch/LayoutTests/media/track/track-text-track-cue-list.html 2013-10-25 01:21:06 UTC (rev 157973)
@@ -31,6 +31,7 @@
endTest();
}
+ setCaptionDisplayMode('Automatic');
</script>
</head>
<body>
Modified: branches/safari-537.73-branch/LayoutTests/media/track/track-webvtt-tc000-empty.html (157972 => 157973)
--- branches/safari-537.73-branch/LayoutTests/media/track/track-webvtt-tc000-empty.html 2013-10-25 01:17:59 UTC (rev 157972)
+++ branches/safari-537.73-branch/LayoutTests/media/track/track-webvtt-tc000-empty.html 2013-10-25 01:21:06 UTC (rev 157973)
@@ -15,6 +15,7 @@
endTest();
}
+ setCaptionDisplayMode('Automatic');
</script>
</head>
<body>
Modified: branches/safari-537.73-branch/LayoutTests/media/track/track-webvtt-tc002-bom.html (157972 => 157973)
--- branches/safari-537.73-branch/LayoutTests/media/track/track-webvtt-tc002-bom.html 2013-10-25 01:17:59 UTC (rev 157972)
+++ branches/safari-537.73-branch/LayoutTests/media/track/track-webvtt-tc002-bom.html 2013-10-25 01:21:06 UTC (rev 157973)
@@ -37,6 +37,8 @@
endTest();
}
+
+ setCaptionDisplayMode('Automatic');
</script>
</head>
<body>
Modified: branches/safari-537.73-branch/LayoutTests/media/track/track-webvtt-tc010-no-timings.html (157972 => 157973)
--- branches/safari-537.73-branch/LayoutTests/media/track/track-webvtt-tc010-no-timings.html 2013-10-25 01:17:59 UTC (rev 157972)
+++ branches/safari-537.73-branch/LayoutTests/media/track/track-webvtt-tc010-no-timings.html 2013-10-25 01:21:06 UTC (rev 157973)
@@ -21,6 +21,7 @@
endTest();
}
+ setCaptionDisplayMode('Automatic');
</script>
</head>
<body>
Modified: branches/safari-537.73-branch/LayoutTests/media/track/track-webvtt-tc027-empty-cue.html (157972 => 157973)
--- branches/safari-537.73-branch/LayoutTests/media/track/track-webvtt-tc027-empty-cue.html 2013-10-25 01:17:59 UTC (rev 157972)
+++ branches/safari-537.73-branch/LayoutTests/media/track/track-webvtt-tc027-empty-cue.html 2013-10-25 01:21:06 UTC (rev 157973)
@@ -15,6 +15,7 @@
endTest();
}
+ setCaptionDisplayMode('Automatic');
</script>
</head>
<body>
Modified: branches/safari-537.73-branch/LayoutTests/media/track/track-webvtt-tc028-unsupported-markup.html (157972 => 157973)
--- branches/safari-537.73-branch/LayoutTests/media/track/track-webvtt-tc028-unsupported-markup.html 2013-10-25 01:17:59 UTC (rev 157972)
+++ branches/safari-537.73-branch/LayoutTests/media/track/track-webvtt-tc028-unsupported-markup.html 2013-10-25 01:21:06 UTC (rev 157973)
@@ -34,6 +34,7 @@
endTest();
}
+ setCaptionDisplayMode('Automatic');
</script>
</head>
<body>
Modified: branches/safari-537.73-branch/LayoutTests/media/track/track-word-breaking.html (157972 => 157973)
--- branches/safari-537.73-branch/LayoutTests/media/track/track-word-breaking.html 2013-10-25 01:17:59 UTC (rev 157972)
+++ branches/safari-537.73-branch/LayoutTests/media/track/track-word-breaking.html 2013-10-25 01:21:06 UTC (rev 157973)
@@ -31,6 +31,7 @@
video.src = "" '../content/test');
}
+ setCaptionDisplayMode('Automatic');
</script>
</head>
<body _onload_="loaded()">
Modified: branches/safari-537.73-branch/LayoutTests/media/video-test.js (157972 => 157973)
--- branches/safari-537.73-branch/LayoutTests/media/video-test.js 2013-10-25 01:17:59 UTC (rev 157972)
+++ branches/safari-537.73-branch/LayoutTests/media/video-test.js 2013-10-25 01:21:06 UTC (rev 157973)
@@ -357,3 +357,12 @@
eventList[i][0].addEventListener(requiredEvents[i], _eventCallback, true);
}
}
+
+function setCaptionDisplayMode(mode)
+{
+ if (window.internals)
+ internals.setCaptionDisplayMode(mode);
+ else
+ consoleWrite("<br><b>** This test only works in DRT! **<" + "/b><br>");
+
+}
\ No newline at end of file
Modified: branches/safari-537.73-branch/Source/WebCore/ChangeLog (157972 => 157973)
--- branches/safari-537.73-branch/Source/WebCore/ChangeLog 2013-10-25 01:17:59 UTC (rev 157972)
+++ branches/safari-537.73-branch/Source/WebCore/ChangeLog 2013-10-25 01:21:06 UTC (rev 157973)
@@ -1,5 +1,48 @@
2013-10-24 Lucas Forschler <[email protected]>
+ Merge r154527
+
+ 2013-08-23 Eric Carlson <[email protected]>
+
+ [Mac] some track language tags are not recognized
+ https://bugs.webkit.org/show_bug.cgi?id=119643
+
+ Reviewed by Jere Noble.
+
+ No new tests, existing tests updated.
+
+ * html/HTMLMediaElement.cpp:
+ (WebCore::HTMLMediaElement::HTMLMediaElement): Initialize m_captionDisplayMode from settings
+ if possible.
+ (WebCore::HTMLMediaElement::configureTextTrackGroup): Don't enable a default track when preferences
+ say captions should be disabled. Don't disable an already visible track if we don't find
+ a match unless preferences say captions should be disabled. m_forcedOrAutomaticSubtitleTrackLanguage ->
+ m_subtitleTrackLanguage.
+ (WebCore::HTMLMediaElement::mediaPlayerCharacteristicChanged): If the language of the primary
+ audio track changes, only kick off a text track recalc if caption preference are set to "automatic".
+ * html/HTMLMediaElement.h:
+
+ * platform/graphics/avfoundation/MediaPlayerPrivateAVFoundation.cpp:
+ (WebCore::MediaPlayerPrivateAVFoundation::MediaPlayerPrivateAVFoundation): Initialize m_characteristicsChanged
+ and m_delayCharacteristicsChangedNotification.
+ (WebCore::MediaPlayerPrivateAVFoundation::setHasVideo): Call characteristicsChanged.
+ (WebCore::MediaPlayerPrivateAVFoundation::setHasAudio): Ditto.
+ (WebCore::MediaPlayerPrivateAVFoundation::setHasClosedCaptions): Ditto.
+ (WebCore::MediaPlayerPrivateAVFoundation::characteristicsChanged): New, allows us to coalesce
+ calls to the media player when we know several characteristics may change.
+ (WebCore::MediaPlayerPrivateAVFoundation::setDelayCharacteristicsChangedNotification): Enable or
+ disable notification delay.
+ * platform/graphics/avfoundation/MediaPlayerPrivateAVFoundation.h:
+
+ * 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-10-24 Lucas Forschler <[email protected]>
+
Merge r154308
2013-08-19 Ryosuke Niwa <[email protected]>
Modified: branches/safari-537.73-branch/Source/WebCore/html/HTMLMediaElement.cpp (157972 => 157973)
--- branches/safari-537.73-branch/Source/WebCore/html/HTMLMediaElement.cpp 2013-10-25 01:17:59 UTC (rev 157972)
+++ branches/safari-537.73-branch/Source/WebCore/html/HTMLMediaElement.cpp 2013-10-25 01:21:06 UTC (rev 157973)
@@ -341,6 +341,8 @@
#if ENABLE(VIDEO_TRACK)
document->registerForCaptionPreferencesChangedCallbacks(this);
+ if (document->page())
+ m_captionDisplayMode = document->page()->group().captionPreferences()->captionDisplayMode();
#endif
}
@@ -3236,6 +3238,7 @@
Page* page = document()->page();
CaptionUserPreferences* captionPreferences = page? page->group().captionPreferences() : 0;
+ CaptionUserPreferences::CaptionDisplayMode displayMode = captionPreferences ? captionPreferences->captionDisplayMode() : CaptionUserPreferences::Automatic;
// First, find the track in the group that should be enabled (if any).
Vector<RefPtr<TextTrack> > currentlyEnabledTracks;
@@ -3282,27 +3285,34 @@
// * If the track element has a default attribute specified, and there is no other text track in the media
// element's list of text tracks whose text track mode is showing or showing by default
// Let the text track mode be showing by default.
- defaultTrack = textTrack;
+ if (group.kind != TrackGroup::CaptionsAndSubtitles || displayMode != CaptionUserPreferences::ForcedOnly)
+ defaultTrack = textTrack;
}
}
if (!trackToEnable && defaultTrack)
trackToEnable = defaultTrack;
-
+
// If no track matches the user's preferred language, none was marked as 'default', and there is a forced subtitle track
// in the same language as the language of the primary audio track, enable it.
if (!trackToEnable && forcedSubitleTrack)
trackToEnable = forcedSubitleTrack;
+ // If no track matches, don't disable an already visible track unless preferences say they all should be off.
+ if (group.kind != TrackGroup::CaptionsAndSubtitles || displayMode != CaptionUserPreferences::ForcedOnly) {
+ if (!trackToEnable && !defaultTrack && group.visibleTrack)
+ trackToEnable = group.visibleTrack;
+ }
+
// If no track matches the user's preferred language and non was marked 'default', enable the first track
// because the user has explicitly stated a preference for this kind of track.
if (!trackToEnable && fallbackTrack)
trackToEnable = fallbackTrack;
- if (!defaultTrack && trackToEnable && trackToEnable != fallbackTrack && m_captionDisplayMode != CaptionUserPreferences::AlwaysOn)
- m_forcedOrAutomaticSubtitleTrackLanguage = trackToEnable->language();
+ if (trackToEnable)
+ m_subtitleTrackLanguage = trackToEnable->language();
else
- m_forcedOrAutomaticSubtitleTrackLanguage = emptyString();
+ m_subtitleTrackLanguage = emptyString();
if (currentlyEnabledTracks.size()) {
for (size_t i = 0; i < currentlyEnabledTracks.size(); ++i) {
@@ -3863,7 +3873,7 @@
beginProcessingMediaPlayerCallback();
#if ENABLE(VIDEO_TRACK)
- if (m_forcedOrAutomaticSubtitleTrackLanguage != m_player->languageOfPrimaryAudioTrack())
+ if (m_captionDisplayMode == CaptionUserPreferences::Automatic && m_subtitleTrackLanguage != m_player->languageOfPrimaryAudioTrack())
markCaptionAndSubtitleTracksAsUnconfigured(AfterDelay);
#endif
Modified: branches/safari-537.73-branch/Source/WebCore/html/HTMLMediaElement.h (157972 => 157973)
--- branches/safari-537.73-branch/Source/WebCore/html/HTMLMediaElement.h 2013-10-25 01:17:59 UTC (rev 157972)
+++ branches/safari-537.73-branch/Source/WebCore/html/HTMLMediaElement.h 2013-10-25 01:21:06 UTC (rev 157973)
@@ -731,7 +731,7 @@
bool m_haveVisibleTextTrack : 1;
bool m_processingPreferenceChange : 1;
- String m_forcedOrAutomaticSubtitleTrackLanguage;
+ String m_subtitleTrackLanguage;
float m_lastTextTrackUpdateTime;
CaptionUserPreferences::CaptionDisplayMode m_captionDisplayMode;
Modified: branches/safari-537.73-branch/Source/WebCore/platform/graphics/avfoundation/MediaPlayerPrivateAVFoundation.cpp (157972 => 157973)
--- branches/safari-537.73-branch/Source/WebCore/platform/graphics/avfoundation/MediaPlayerPrivateAVFoundation.cpp 2013-10-25 01:17:59 UTC (rev 157972)
+++ branches/safari-537.73-branch/Source/WebCore/platform/graphics/avfoundation/MediaPlayerPrivateAVFoundation.cpp 2013-10-25 01:21:06 UTC (rev 157973)
@@ -63,6 +63,7 @@
, m_seekTo(MediaPlayer::invalidTime())
, m_requestedRate(1)
, m_delayCallbacks(0)
+ , m_delayCharacteristicsChangedNotification(0)
, m_mainThreadCallPending(false)
, m_assetIsPlayable(false)
, m_visible(false)
@@ -75,6 +76,7 @@
, m_haveReportedFirstVideoFrame(false)
, m_playWhenFramesAvailable(false)
, m_inbandTrackConfigurationPending(false)
+ , m_characteristicsChanged(false)
, m_seekCount(0)
{
LOG(Media, "MediaPlayerPrivateAVFoundation::MediaPlayerPrivateAVFoundation(%p)", this);
@@ -328,7 +330,7 @@
{
if (m_cachedHasVideo != b) {
m_cachedHasVideo = b;
- m_player->characteristicChanged();
+ characteristicsChanged();
}
}
@@ -336,7 +338,7 @@
{
if (m_cachedHasAudio != b) {
m_cachedHasAudio = b;
- m_player->characteristicChanged();
+ characteristicsChanged();
}
}
@@ -344,10 +346,34 @@
{
if (m_cachedHasCaptions != b) {
m_cachedHasCaptions = b;
- m_player->characteristicChanged();
+ characteristicsChanged();
}
}
+void MediaPlayerPrivateAVFoundation::characteristicsChanged()
+{
+ if (m_delayCharacteristicsChangedNotification) {
+ m_characteristicsChanged = true;
+ return;
+ }
+
+ m_characteristicsChanged = false;
+ m_player->characteristicChanged();
+}
+
+void MediaPlayerPrivateAVFoundation::setDelayCharacteristicsChangedNotification(bool delay)
+{
+ if (delay) {
+ m_delayCharacteristicsChangedNotification++;
+ return;
+ }
+
+ ASSERT(m_delayCharacteristicsChangedNotification);
+ m_delayCharacteristicsChangedNotification--;
+ if (!m_delayCharacteristicsChangedNotification && m_characteristicsChanged)
+ characteristicsChanged();
+}
+
PassRefPtr<TimeRanges> MediaPlayerPrivateAVFoundation::buffered() const
{
if (!m_cachedLoadedTimeRanges)
Modified: branches/safari-537.73-branch/Source/WebCore/platform/graphics/avfoundation/MediaPlayerPrivateAVFoundation.h (157972 => 157973)
--- branches/safari-537.73-branch/Source/WebCore/platform/graphics/avfoundation/MediaPlayerPrivateAVFoundation.h 2013-10-25 01:17:59 UTC (rev 157972)
+++ branches/safari-537.73-branch/Source/WebCore/platform/graphics/avfoundation/MediaPlayerPrivateAVFoundation.h 2013-10-25 01:21:06 UTC (rev 157973)
@@ -234,6 +234,8 @@
void setHasVideo(bool);
void setHasAudio(bool);
void setHasClosedCaptions(bool);
+ void characteristicsChanged();
+ void setDelayCharacteristicsChangedNotification(bool);
void setDelayCallbacks(bool) const;
void setIgnoreLoadStateChanges(bool delay) { m_ignoreLoadStateChanges = delay; }
void setNaturalSize(IntSize);
@@ -292,6 +294,7 @@
double m_seekTo;
float m_requestedRate;
mutable int m_delayCallbacks;
+ int m_delayCharacteristicsChangedNotification;
bool m_mainThreadCallPending;
bool m_assetIsPlayable;
bool m_visible;
@@ -304,6 +307,7 @@
bool m_haveReportedFirstVideoFrame;
bool m_playWhenFramesAvailable;
bool m_inbandTrackConfigurationPending;
+ bool m_characteristicsChanged;
size_t m_seekCount;
};
Modified: branches/safari-537.73-branch/Source/WebCore/platform/graphics/avfoundation/objc/MediaPlayerPrivateAVFoundationObjC.mm (157972 => 157973)
--- branches/safari-537.73-branch/Source/WebCore/platform/graphics/avfoundation/objc/MediaPlayerPrivateAVFoundationObjC.mm 2013-10-25 01:17:59 UTC (rev 157972)
+++ branches/safari-537.73-branch/Source/WebCore/platform/graphics/avfoundation/objc/MediaPlayerPrivateAVFoundationObjC.mm 2013-10-25 01:21:06 UTC (rev 157973)
@@ -986,6 +986,8 @@
if (!m_avAsset)
return;
+ setDelayCharacteristicsChangedNotification(true);
+
bool haveCCTrack = false;
bool hasCaptions = false;
@@ -1045,8 +1047,10 @@
sizeChanged();
- if (!primaryAudioTrackLanguage.isNull() && primaryAudioTrackLanguage != languageOfPrimaryAudioTrack())
- player()->characteristicChanged();
+ if (primaryAudioTrackLanguage != languageOfPrimaryAudioTrack())
+ characteristicsChanged();
+
+ setDelayCharacteristicsChangedNotification(false);
}
void MediaPlayerPrivateAVFoundationObjC::sizeChanged()
@@ -1497,6 +1501,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;