Files
moeplayer/source/org/mangui/osmf/plugins/traits/HLSClosedCaptionsTrait.as
T
2020-09-17 18:40:01 +08:00

58 lines
1.9 KiB
ActionScript

/* This Source Code Form is subject to the terms of the Mozilla Public
* License, v. 2.0. If a copy of the MPL was not distributed with this
* file, You can obtain one at http://mozilla.org/MPL/2.0/. */
package org.mangui.osmf.plugins.traits {
import org.mangui.hls.HLS;
import org.mangui.hls.event.HLSEvent;
import org.mangui.hls.model.Level;
import org.osmf.traits.MediaTraitBase;
CONFIG::LOGGING {
import org.mangui.hls.utils.Log;
}
public class HLSClosedCaptionsTrait extends MediaTraitBase {
private var _hls : HLS;
private var _hasClosedCapations : String;
public function HLSClosedCaptionsTrait(hls : HLS, closed_captions : String = HLSClosedCaptionsState.UNKNOWN) {
CONFIG::LOGGING {
Log.debug("HLSClosedCaptionsTrait()");
}
super(HLSMediaTraitType.CLOSED_CAPTIONS);
_hasClosedCapations = closed_captions;
_hls = hls;
_hls.addEventListener(HLSEvent.LEVEL_SWITCH, _levelSwitchHandler);
}
override public function dispose() : void {
CONFIG::LOGGING {
Log.debug("HLSClosedCaptionsTrait:dispose");
}
_hls.removeEventListener(HLSEvent.LEVEL_SWITCH, _levelSwitchHandler);
super.dispose();
}
public function hasClosedCaptions() : String {
return _hasClosedCapations;
}
/** Update playback position/duration **/
private function _levelSwitchHandler(event : HLSEvent) : void {
var cc : String = (_hls.levels[event.level] as Level).closed_captions;
if (cc && cc === "NONE")
{
// manifest told us to ignore any 608/708 binary
_hasClosedCapations = HLSClosedCaptionsState.NO;
}
else
{
_hasClosedCapations = HLSClosedCaptionsState.UNKNOWN;
}
// YES only happens for WebVTT, which isn't supported.
}
}
}