no commit message
This commit is contained in:
@@ -0,0 +1,107 @@
|
||||
/* 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.hls.model {
|
||||
|
||||
import flash.net.ObjectEncoding;
|
||||
import flash.utils.ByteArray;
|
||||
import org.mangui.hls.demux.ID3Tag;
|
||||
import org.mangui.hls.flv.FLVTag;
|
||||
|
||||
/** Fragment model **/
|
||||
public class Fragment {
|
||||
/** Duration of this chunk. **/
|
||||
public var duration : Number;
|
||||
/** Start time of this chunk. **/
|
||||
public var start_time : Number;
|
||||
/** sequence number of this chunk. **/
|
||||
public var seqnum : int;
|
||||
/** URL to this chunk. **/
|
||||
public var url : String;
|
||||
/** level of this chunk. **/
|
||||
public var level : int;
|
||||
/** continuity index of this chunk. **/
|
||||
public var continuity : int;
|
||||
/** program date of this chunk. **/
|
||||
public var program_date : Number;
|
||||
/** URL of the key used to decrypt content **/
|
||||
public var decrypt_url : String;
|
||||
/** Initialization Vector to decrypt content **/
|
||||
public var decrypt_iv : ByteArray;
|
||||
/** byte range start offset **/
|
||||
public var byterange_start_offset : int;
|
||||
/** byte range offset **/
|
||||
public var byterange_end_offset : int;
|
||||
/** data **/
|
||||
public var data : FragmentData;
|
||||
/** custom tags **/
|
||||
public var tag_list : Vector.<String>;
|
||||
|
||||
/** Create the fragment. **/
|
||||
public function Fragment(url : String, duration : Number, level : int, seqnum : int, start_time : Number, continuity : int, program_date : Number, decrypt_url : String, decrypt_iv : ByteArray, byterange_start_offset : int, byterange_end_offset : int, tag_list : Vector.<String>) {
|
||||
this.url = url;
|
||||
this.duration = duration;
|
||||
this.seqnum = seqnum;
|
||||
this.level = level;
|
||||
this.start_time = start_time;
|
||||
this.continuity = continuity;
|
||||
this.program_date = program_date;
|
||||
this.decrypt_url = decrypt_url;
|
||||
this.decrypt_iv = decrypt_iv;
|
||||
this.byterange_start_offset = byterange_start_offset;
|
||||
this.byterange_end_offset = byterange_end_offset;
|
||||
this.tag_list = tag_list;
|
||||
data = new FragmentData();
|
||||
// CONFIG::LOGGING {
|
||||
// Log.info("Frag["+seqnum+"]:duration/start_time,cc="+duration+","+start_time+","+continuity);
|
||||
// }
|
||||
};
|
||||
|
||||
public function getMetadataTag() : FLVTag {
|
||||
var tag : FLVTag = new FLVTag(FLVTag.METADATA, this.data.dts_min, this.data.dts_min, false);
|
||||
var data : ByteArray = new ByteArray();
|
||||
data.objectEncoding = ObjectEncoding.AMF0;
|
||||
data.writeObject("onHLSFragmentChange");
|
||||
data.writeObject(this.level);
|
||||
data.writeObject(this.seqnum);
|
||||
data.writeObject(this.continuity);
|
||||
data.writeObject(this.duration);
|
||||
data.writeObject(!this.data.video_found);
|
||||
data.writeObject(this.program_date);
|
||||
data.writeObject(this.data.video_width);
|
||||
data.writeObject(this.data.video_height);
|
||||
data.writeObject(this.data.auto_level);
|
||||
data.writeObject(this.tag_list.length);
|
||||
this.data.id3_tags ? data.writeObject(this.data.id3_tags.length) : data.writeObject(0);
|
||||
for each (var custom_tag : String in this.tag_list) {
|
||||
data.writeObject(custom_tag);
|
||||
}
|
||||
for each (var id3_tag : ID3Tag in this.data.id3_tags) {
|
||||
data.writeObject(id3_tag.id);
|
||||
data.writeObject(id3_tag.flag);
|
||||
data.writeObject(id3_tag.base64);
|
||||
data.writeObject(id3_tag.data);
|
||||
}
|
||||
tag.push(data, 0, data.length);
|
||||
tag.build();
|
||||
return tag;
|
||||
}
|
||||
|
||||
public function getSkippedTag() : FLVTag {
|
||||
var tag : FLVTag = new FLVTag(FLVTag.METADATA, this.data.pts_start_computed, this.data.pts_start_computed, false);
|
||||
var data : ByteArray = new ByteArray();
|
||||
data.objectEncoding = ObjectEncoding.AMF0;
|
||||
data.writeObject("onHLSFragmentSkipped");
|
||||
data.writeObject(this.level);
|
||||
data.writeObject(this.seqnum);
|
||||
data.writeObject(this.duration);
|
||||
tag.push(data, 0, data.length);
|
||||
tag.build();
|
||||
return tag;
|
||||
}
|
||||
|
||||
public function toString() : String {
|
||||
return "Fragment (seqnum: " + seqnum + ", start_time:" + start_time + ", duration:" + duration + ")";
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user