34 lines
1.3 KiB
ActionScript
34 lines
1.3 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.hls.utils {
|
|
public class PTS {
|
|
/* find PTS value nearest a given reference PTS value
|
|
*
|
|
* PTS retrieved from demux are within a range of
|
|
* (+/-) 2^32/90 - 1 = (+/-) 47721858
|
|
* when reaching upper limit, PTS will loop to lower limit
|
|
* this cause some issues with fragment duration calculation
|
|
* this method will normalize a given PTS value and output a result
|
|
* that is closest to provided PTS reference value.
|
|
* i.e it could output values bigger than the (+/-) 2^32/90.
|
|
* this will avoid PTS looping issues.
|
|
*/
|
|
public static function normalize(reference : Number, value : Number) : Number {
|
|
var offset : Number;
|
|
if (reference < value) {
|
|
// - 2^33/90
|
|
offset = -95443717;
|
|
} else {
|
|
// + 2^33/90
|
|
offset = 95443717;
|
|
}
|
|
// 2^32 / 90
|
|
while (!isNaN(reference) && (Math.abs(value - reference) > 47721858)) {
|
|
value += offset;
|
|
}
|
|
return value;
|
|
}
|
|
}
|
|
}
|