public virtual void ReportTrackMetadata(ITrackMetadata trackMetadata) { if (trackMetadata == null) { throw new ArgumentNullException("trackMetadata"); } Debug.WriteLine("MetadataSink.ReportTrackMetadata() " + (object)trackMetadata); TimeSpan?timeStamp = trackMetadata.TimeStamp; if (!timeStamp.HasValue) { throw new ArgumentException("A timestamp is required", "trackMetadata"); } timeStamp = trackMetadata.TimeStamp; if (timeStamp.Value < TimeSpan.Zero) { throw new ArgumentOutOfRangeException("trackMetadata", "The timestamp cannot be negative"); } bool lockTaken = false; object obj = null; try { Monitor.Enter(obj = this._lock, ref lockTaken); this._pendingTracks.Enqueue(trackMetadata); } finally { if (lockTaken) { Monitor.Exit(obj); } } }
private TimeSpan?ProcessPendingTracks() { TimeSpan?nullable; while (this._pendingTracks.Count > 0) { if (null == this._metadataState.TrackMetadata) { ITrackMetadata trackMetadata = this._pendingTracks.Dequeue(); this._metadataState.TrackMetadata = trackMetadata; nullable = trackMetadata.TimeStamp; Debug.Assert(nullable.HasValue, "Invalid track metadata (no timestamp)"); } else { TimeSpan?timeStamp = this._metadataState.TrackMetadata.TimeStamp; nullable = timeStamp; TimeSpan timeSpan1 = this._position; if ((nullable.HasValue ? (nullable.GetValueOrDefault() > timeSpan1 ? 1 : 0) : 0) != 0) { return(timeStamp); } ITrackMetadata trackMetadata1 = this._pendingTracks.Peek(); nullable = trackMetadata1.TimeStamp; Debug.Assert(nullable.HasValue, "Invalid track metadata (no timestamp)"); nullable = trackMetadata1.TimeStamp; TimeSpan timeSpan2 = this._position; if ((nullable.HasValue ? (nullable.GetValueOrDefault() > timeSpan2 ? 1 : 0) : 0) != 0) { return(trackMetadata1.TimeStamp); } ITrackMetadata trackMetadata2 = this._pendingTracks.Dequeue(); Debug.Assert(object.ReferenceEquals((object)trackMetadata1, (object)trackMetadata2), "Dequeue track mismatch"); this._metadataState.TrackMetadata = trackMetadata1; } } if (null != this._metadataState.TrackMetadata) { TimeSpan?timeStamp = this._metadataState.TrackMetadata.TimeStamp; Debug.Assert(timeStamp.HasValue, "Invalid track metadata (no timestamp)"); nullable = timeStamp; TimeSpan timeSpan = this._position; if ((nullable.HasValue ? (nullable.GetValueOrDefault() > timeSpan ? 1 : 0) : 0) != 0) { return(timeStamp); } } nullable = new TimeSpan?(); return(nullable); }
public VorbisComments(ITrackMetadata[] metadata) { MemoryStream ms = new MemoryStream(); BinaryWriter writer = new BinaryWriter(ms); string vendorString = "flacFS"; writer.Write(vendorString.Length); writer.Write(Encoding.UTF8.GetBytes(vendorString)); writer.Write(metadata.Length); foreach (ITrackMetadata m in metadata) { if (m.Key.Equals("Track", StringComparison.InvariantCultureIgnoreCase)) { string [] track = m.Value.Split(new char[]{'/'}); string comment; comment = "TrackNumber=" + Convert.ToInt32(track[0]).ToString(); writer.Write(comment.Length); writer.Write(Encoding.UTF8.GetBytes(comment)); comment = "TotalTracks=" + Convert.ToInt32(track[1]).ToString(); writer.Write(comment.Length); writer.Write(Encoding.UTF8.GetBytes(comment)); } else if (m.Key.Equals("Year", StringComparison.InvariantCultureIgnoreCase)) { string comment = "Date=" + m.Value; writer.Write(comment.Length); writer.Write(Encoding.UTF8.GetBytes(comment)); } else { string[] v = m.Value.Split(new char[] { '\0' }); foreach (string s in v) { string comment = m.Key + "=" + s; writer.Write(comment.Length); writer.Write(Encoding.UTF8.GetBytes(comment)); } } } block = ms.GetBuffer(); writer.Close(); }
public override void SetTrackMetadata(ITrackMetadata trackMetadata) { this._metadataSink.ReportTrackMetadata(trackMetadata); }
public abstract void SetTrackMetadata(ITrackMetadata trackMetadata);
public override void ReportTrackMetadata(ITrackMetadata trackMetadata) { base.ReportTrackMetadata(trackMetadata); this._updateAction(); }
public virtual void ReportTrackMetadata(ITrackMetadata trackMetadata) { if (trackMetadata == null) throw new ArgumentNullException(nameof(trackMetadata)); Debug.WriteLine("MetadataSink.ReportTrackMetadata() " + trackMetadata); if (!trackMetadata.TimeStamp.HasValue) throw new ArgumentException("A timestamp is required", nameof(trackMetadata)); if (trackMetadata.TimeStamp.Value < TimeSpan.Zero) throw new ArgumentOutOfRangeException(nameof(trackMetadata), "The timestamp cannot be negative"); lock (_lock) { _pendingTracks.Enqueue(trackMetadata); } }
public void SetTrackMetadata(ITrackMetadata trackMetadata) { }
public void SetTrackMetadata(ITrackMetadata trackMetadata) { }
public override void ReportTrackMetadata(ITrackMetadata trackMetadata) { base.ReportTrackMetadata(trackMetadata); _updateAction(); }