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.constant.HLSPlayStates;
|
|
import org.osmf.traits.BufferTrait;
|
|
|
|
CONFIG::LOGGING {
|
|
import org.mangui.hls.utils.Log;
|
|
}
|
|
|
|
public class HLSBufferTrait extends BufferTrait {
|
|
private var _hls : HLS;
|
|
|
|
public function HLSBufferTrait(hls : HLS) {
|
|
CONFIG::LOGGING {
|
|
Log.debug("HLSBufferTrait()");
|
|
}
|
|
super();
|
|
_hls = hls;
|
|
_hls.addEventListener(HLSEvent.PLAYBACK_STATE, _stateChangedHandler);
|
|
}
|
|
|
|
override public function dispose() : void {
|
|
CONFIG::LOGGING {
|
|
Log.debug("HLSBufferTrait:dispose");
|
|
}
|
|
_hls.removeEventListener(HLSEvent.PLAYBACK_STATE, _stateChangedHandler);
|
|
super.dispose();
|
|
}
|
|
|
|
override public function get bufferLength() : Number {
|
|
return _hls.stream.bufferLength;
|
|
}
|
|
|
|
/** state changed handler **/
|
|
private function _stateChangedHandler(event : HLSEvent) : void {
|
|
switch(event.state) {
|
|
case HLSPlayStates.PLAYING_BUFFERING:
|
|
case HLSPlayStates.PAUSED_BUFFERING:
|
|
CONFIG::LOGGING {
|
|
Log.debug("HLSBufferTrait:_stateChangedHandler:setBuffering(true)");
|
|
}
|
|
setBuffering(true);
|
|
break;
|
|
default:
|
|
CONFIG::LOGGING {
|
|
Log.debug("HLSBufferTrait:_stateChangedHandler:setBuffering(false)");
|
|
}
|
|
setBuffering(false);
|
|
break;
|
|
}
|
|
}
|
|
}
|
|
}
|