58 lines
1.9 KiB
ActionScript
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.
|
|
}
|
|
}
|
|
} |