 				return NaN;
 
 			return segments[segments.length-1].startTime + segments[segments.length-1].duration;
+		}
+
+		public function getStreamStartTime():Number
+		{
+			if(!manifest)
+				return NaN;
+
+			var activeManifest:HLSManifestParser = getManifestForQuality(lastQuality);
+			var segments:Vector.<HLSManifestSegment> = activeManifest.segments;
+			if(segments.length == 0)
+				return NaN;
+
+			return segments[0].startTime;
 		}
 		
 		// getSegmentIndexForTime()

			dvrInfo.startTime = firstSegment.startTime;
			dvrInfo.beginOffset = firstSegment.startTime;
			dvrInfo.endOffset = lastSegment.startTime + lastSegment.duration;
			dvrInfo.curLength = dvrInfo.endOffset - dvrInfo.beginOffset;
			dvrInfo.windowDuration = dvrInfo.curLength; // TODO: verify that this is what we want to be putting here
			dispatchEvent(new DVRStreamInfoEvent(DVRStreamInfoEvent.DVRSTREAMINFO, false, false, dvrInfo));
		}

		
		public override function getFileForTime(time:Number, quality:int):HTTPStreamRequest
		{	
			// Update duration as we learn more.
			dispatchDVRStreamInfo();

			trace("--- getFileForTime(time=" + time + ", quality=" + quality + ")");
			
			targetQuality = quality;
