 		{
 			// Check the actual amount of content present.
 			if(super.bufferLength >= bufferFeedMin)
+			{
 				return;
+			}
+
+			// Sort as needed.
+			ensurePendingSorted();
 
 			// We want to keep the actual required buffer short so we don't stall with
 			// tags still pending.

							appendBytes(bytes);
						}
						
						if (haveSeenVideoTag)
						{
							var _unmuteTag:FLVTagVideo = new FLVTagVideo();
							_unmuteTag.timestamp = tag.timestamp;  // may get overwritten, ok
							_unmuteTag.codecID = codecID;

								if (vTagVideo.codecID == FLVTagVideo.CODEC_ID_AVC && vTagVideo.avcPacketType == FLVTagVideo.AVC_PACKET_TYPE_NALU)
								{
									// for H.264 we need to move the timestamp forward but the composition time offset backwards to compensate
									var adjustment:int = tag.timestamp - vTagVideo.timestamp; // how far we are adjusting - no need to unwrap since it's a delta
									var compTime:int = vTagVideo.avcCompositionTimeOffset;
									compTime -= adjustment; // do the adjustment
									vTagVideo.avcCompositionTimeOffset = compTime;	// save adjustment
								}
								
								codecID = vTagVideo.codecID;
