Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
5 changes: 5 additions & 0 deletions build/build-temp.bat
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
@echo off

REM Builds the SWF/SWC files into build-temp so they're ignore by git

build ..\bin-temp
44 changes: 26 additions & 18 deletions build/build.bat
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,14 @@ IF "%JAVA_HOME%"=="" ( echo Please set JAVA_HOME to the path of the Java SDK &&

cls

IF "%1"=="" (set BIN_PATH=..\bin) ELSE (set BIN_PATH=%1)

echo Building SWF/SWC files into %BIN_PATH%
echo.

if not exist "%BIN_PATH%\release" mkdir "%BIN_PATH%\release"
if not exist "%BIN_PATH%\debug" mkdir "%BIN_PATH%\debug"

set OPT_DEBUG=-use-network=false ^
-debug=true ^
-library-path+=..\lib\blooddy_crypto.swc ^
Expand All @@ -22,88 +30,88 @@ echo Compiling bin\debug\flashls.swc...
call "%FLEX_HOME%\bin\compc" ^
%OPT_DEBUG% ^
-include-sources ..\src\org\mangui\hls ^
-output ..\bin\debug\flashls.swc ^
-output %BIN_PATH%\debug\flashls.swc ^
-target-player=10.1

echo.
echo Compiling bin\release\flashls.swc...
call "%FLEX_HOME%\bin\compc" ^
%OPT_RELEASE% ^
-include-sources ..\src\org\mangui\hls ^
-output ..\bin\release\flashls.swc ^
-output %BIN_PATH%\release\flashls.swc ^
-target-player=10.1

echo.
echo Compiling bin\release\flashlsChromeless.swf...
call "%FLEX_HOME%\bin\mxmlc" ..\src\org\mangui\chromeless\ChromelessPlayer.as ^
-source-path+=..\src ^
-o ..\bin\release\flashlsChromeless.swf ^
-o %BIN_PATH%\release\flashlsChromeless.swf ^
%OPT_RELEASE% ^
-target-player=11.1 ^
-default-size 480 270 ^
-default-background-color=0x000000
.\add-opt-in.py ..\bin\release\flashlsChromeless.swf
.\add-opt-in.py %BIN_PATH%\release\flashlsChromeless.swf

echo.
echo Compiling bin\debug\flashlsChromeless.swf...
call "%FLEX_HOME%\bin\mxmlc" ..\src\org\mangui\chromeless\ChromelessPlayer.as ^
-source-path+=..\src ^
-o ..\bin\debug\flashlsChromeless.swf ^
-o %BIN_PATH%\debug\flashlsChromeless.swf ^
%OPT_DEBUG% ^
-target-player=11.1 ^
-default-size 480 270 ^
-default-background-color=0x000000
REM .\add-opt-in.py ..\bin\debug\flashlsChromeless.swf
REM .\add-opt-in.py %BIN_PATH%\debug\flashlsChromeless.swf

echo.
echo Compiling bin\release\flashlsFlowPlayer.swf...
call "%FLEX_HOME%\bin\mxmlc" ..\src\org\mangui\flowplayer\HLSPluginFactory.as ^
-source-path+=..\src -o ..\bin\release\flashlsFlowPlayer.swf ^
-source-path+=..\src -o %BIN_PATH%\release\flashlsFlowPlayer.swf ^
%OPT_RELEASE% ^
-library-path+=..\lib\flowplayer ^
-load-externs=..\lib\flowplayer\flowplayer-classes.xml ^
-target-player=11.1
REM .\add-opt-in.py ..\bin\release\flashlsFlowPlayer.swf
REM .\add-opt-in.py %BIN_PATH%\release\flashlsFlowPlayer.swf

echo.
echo Compiling bin\debug\flashlsFlowPlayer.swf...
call "%FLEX_HOME%\bin\mxmlc" ..\src\org\mangui\flowplayer\HLSPluginFactory.as ^
-source-path+=..\src -o ..\bin\debug\flashlsFlowPlayer.swf ^
-source-path+=..\src -o %BIN_PATH%\debug\flashlsFlowPlayer.swf ^
%OPT_DEBUG% ^
-library-path+=..\lib\flowplayer ^
-load-externs=..\lib\flowplayer\flowplayer-classes.xml ^
-target-player=11.1
.\add-opt-in.py ..\bin\debug\flashlsFlowPlayer.swf
.\add-opt-in.py %BIN_PATH%\debug\flashlsFlowPlayer.swf

echo.
echo Compiling bin\release\flashlsOSMF.swf...
call "%FLEX_HOME%\bin\mxmlc" ..\src\org\mangui\osmf\plugins\HLSDynamicPlugin.as ^
-source-path+=..\src ^
-o ..\bin\release\flashlsOSMF.swf ^
-o %BIN_PATH%\release\flashlsOSMF.swf ^
%OPT_RELEASE% ^
-library-path+=..\lib\osmf ^
-load-externs=..\lib\osmf\exclude-sources.xml ^
-target-player=10.1
.\add-opt-in.py ..\bin\release\flashlsOSMF.swf
.\add-opt-in.py %BIN_PATH%\release\flashlsOSMF.swf

echo.
echo Compiling bin\debug\flashlsOSMF.swf...
call "%FLEX_HOME%\bin\mxmlc" ..\src\org\mangui\osmf\plugins\HLSDynamicPlugin.as ^
-source-path+=..\src ^
-o ..\bin\debug\flashlsOSMF.swf ^
-o %BIN_PATH%\debug\flashlsOSMF.swf ^
%OPT_DEBUG% ^
-library-path+=..\lib\osmf ^
-load-externs=..\lib\osmf\exclude-sources.xml ^
-target-player=10.1
.\add-opt-in.py ..\bin\debug\flashlsOSMF.swf
.\add-opt-in.py %BIN_PATH%\debug\flashlsOSMF.swf

echo.
echo Compiling bin\release\flashlsOSMF.swc...
call "%FLEX_HOME%\bin\compc" ^
-include-sources ..\src\org\mangui\osmf ^
-output ..\bin\release\flashlsOSMF.swc ^
-output %BIN_PATH%\release\flashlsOSMF.swc ^
%OPT_RELEASE% ^
-library-path+=..\bin\release\flashls.swc ^
-library-path+=%BIN_PATH%\release\flashls.swc ^
-library-path+=..\lib\osmf ^
-target-player=10.1 ^
-external-library-path+=..\lib\osmf
Expand All @@ -112,9 +120,9 @@ echo.
echo Compiling bin\debug\flashlsOSMF.swc...
call "%FLEX_HOME%\bin\compc" ^
-include-sources ..\src\org\mangui\osmf ^
-output ..\bin\debug\flashlsOSMF.swc ^
-output %BIN_PATH%\debug\flashlsOSMF.swc ^
%OPT_DEBUG% ^
-library-path+=..\bin\debug\flashls.swc ^
-library-path+=%BIN_PATH%\debug\flashls.swc ^
-library-path+=..\lib\osmf ^
-target-player=10.1 ^
-external-library-path+=..\lib\osmf
Expand Down
29 changes: 27 additions & 2 deletions src/org/mangui/hls/HLS.as
Original file line number Diff line number Diff line change
Expand Up @@ -10,14 +10,18 @@ package org.mangui.hls {
import flash.net.NetStream;
import flash.net.URLLoader;
import flash.net.URLStream;

import org.mangui.hls.constant.HLSSeekStates;
import org.mangui.hls.controller.AudioTrackController;
import org.mangui.hls.controller.LevelController;
import org.mangui.hls.controller.SubtitlesTrackController;
import org.mangui.hls.event.HLSEvent;
import org.mangui.hls.loader.AltAudioLevelLoader;
import org.mangui.hls.loader.LevelLoader;
import org.mangui.hls.loader.SubtitlesLevelLoader;
import org.mangui.hls.model.AudioTrack;
import org.mangui.hls.model.Level;
import org.mangui.hls.model.SubtitlesTrack;
import org.mangui.hls.playlist.AltAudioTrack;
import org.mangui.hls.stream.HLSNetStream;
import org.mangui.hls.stream.StreamBuffer;
Expand All @@ -28,9 +32,11 @@ package org.mangui.hls {
/** Class that manages the streaming process. **/
public class HLS extends EventDispatcher {
private var _levelLoader : LevelLoader;
private var _levelController : LevelController;
private var _altAudioLevelLoader : AltAudioLevelLoader;
private var _audioTrackController : AudioTrackController;
private var _levelController : LevelController;
private var _subtitlesLevelLoader : SubtitlesLevelLoader;
private var _subtitlesTrackController : SubtitlesTrackController;
private var _streamBuffer : StreamBuffer;
/** HLS NetStream **/
private var _hlsNetStream : HLSNetStream;
Expand All @@ -51,6 +57,8 @@ package org.mangui.hls {
_audioTrackController = new AudioTrackController(this);
_levelController = new LevelController(this);
_streamBuffer = new StreamBuffer(this, _audioTrackController, _levelController);
_subtitlesLevelLoader = new SubtitlesLevelLoader(this, _levelLoader);
_subtitlesTrackController = new SubtitlesTrackController(this, _streamBuffer, _levelLoader);
_hlsURLStream = URLStream as Class;
_hlsURLLoader = URLLoader as Class;
// default loader
Expand Down Expand Up @@ -85,12 +93,15 @@ package org.mangui.hls {
_levelLoader.dispose();
_altAudioLevelLoader.dispose();
_audioTrackController.dispose();
_subtitlesLevelLoader.dispose();
_subtitlesTrackController.dispose();
_levelController.dispose();
_hlsNetStream.dispose_();
_streamBuffer.dispose();
_levelLoader = null;
_altAudioLevelLoader = null;
_audioTrackController = null;
_subtitlesLevelLoader = null;
_levelController = null;
_hlsNetStream = null;
_client = null;
Expand Down Expand Up @@ -209,7 +220,6 @@ package org.mangui.hls {
return _hlsNetStream.watched;
};


/** Return the total nb of dropped video frames since last call to hls.load() **/
public function get droppedFrames() : Number {
return _hlsNetStream.droppedFrames;
Expand Down Expand Up @@ -240,6 +250,21 @@ package org.mangui.hls {
_client = value;
}

/** get subtitles tracks list**/
public function get subtitlesTracks() : Vector.<SubtitlesTrack> {
return _subtitlesTrackController.subtitlesTracks;
};

/** get index of the selected subtitles track (index in subtitles track lists) **/
public function get subtitlesTrack() : int {
return _subtitlesTrackController.subtitlesTrack;
};

/** select a subtitles track, based on its index in subtitles track lists**/
public function set subtitlesTrack(val : int) : void {
_subtitlesTrackController.subtitlesTrack = val;
}

/** get audio tracks list**/
public function get audioTracks() : Vector.<AudioTrack> {
return _audioTrackController.audioTracks;
Expand Down
33 changes: 33 additions & 0 deletions src/org/mangui/hls/HLSSettings.as
Original file line number Diff line number Diff line change
Expand Up @@ -340,6 +340,39 @@ package org.mangui.hls {
* Default is -1
*/
public static var seekFromLevel : Number = -1;

/**
* subtitlesAutoSelectDefault
*
* Should a subtitles track automatically be selected if it is flagged
* as DEFAULT=YES?
*
* Default is false
*/
public static var subtitlesAutoSelectDefault:Boolean = false;

/**
* subtitlesAutoSelect
*
* Should a subtitles track automatically be selected if it is flagged
* as AUTOSELECT=YES and the language matches the current system locale?
* If true, these subtitles will always be selected in preference to
* default subtitles.
*
* Default is true
*/
public static var subtitlesAutoSelect:Boolean = true;

/**
* subtitlesAutoSelectForced
*
* Should a subtitles track automatically be selected is it is flagged
* as FORCED=YES? If true, forced subtitles will always be selected
* in preference to all others.
*
* Default is true
*/
public static var subtitlesAutoSelectForced:Boolean = true;

/**
* useHardwareVideoDecoder
Expand Down
8 changes: 6 additions & 2 deletions src/org/mangui/hls/constant/HLSLoaderTypes.as
Original file line number Diff line number Diff line change
Expand Up @@ -10,9 +10,13 @@
public static const LEVEL_MAIN : int = 1;
// playlist / level loader
public static const LEVEL_ALTAUDIO : int = 2;
// playlist / level loader
public static const LEVEL_SUBTITLES : int = 4;
// main fragment loader
public static const FRAGMENT_MAIN : int = 3;
public static const FRAGMENT_MAIN : int = 5;
// alt audio fragment loader
public static const FRAGMENT_ALTAUDIO : int = 4;
public static const FRAGMENT_ALTAUDIO : int = 6;
// subtitles fragment loader
public static const FRAGMENT_SUBTITLES : int = 7;
}
}
Loading