 											logger.debug("Processed " + processed + " bytes ( buffer = " + this.bufferLength + ", bufferTime = " + this.bufferTime+", wasBufferEmptied = "+_wasBufferEmptied+" )" ); 
 										}
 										
+										// if are able to process some bytes, this is a good stream
+										if (!streamIsGood)
+										{
+											streamIsGood = true;
+											timeSinceWait = 0;
+											retryAttemptCount = 0;
+										}
+										
 										if (_waitForDRM)
 										{
 											setState(HTTPStreamingState.WAIT);

			private var _liveStallStartTime:Date;
			
			private var hasStarted:Boolean = false;// true after we have played once, checked before automatically switching to a default stream

			private static const HIGH_PRIORITY:int = int.MAX_VALUE;
			

					}
				}
				
				/**
				 * @private
				 * 
				 * Seeks the video to a specific time and marks us as no longer waiting for an
				 * attempt to grab data. Only used when a previously good stream encounters a
				 * URL error. Will allow the player to pick up again if the URL error was
				 * a fluke.
				 * 
				 * @param requestedTime The time that the function will seek to
				 */
				private function seekToRetrySegment(requestedTime:Number)
				{
					_seekTarget = requestedTime;
					isWaitingForData = false;
					setState(HTTPStreamingState.SEEK);
				}
				
			private var _desiredBufferTime_Min:Number = 0;
			private var _desiredBufferTime_Max:Number = 0;
			
