public bool UpdateTagInFile(TagData theTag, int tagType) { bool result = true; IMetaDataIO theMetaIO; LogDelegator.GetLocateDelegate()(fileName); theTag.DurationMs = audioDataIO.Duration; if (audioDataIO.IsMetaSupported(tagType)) { try { theMetaIO = getMeta(tagType); Stream s = (null == stream) ? new FileStream(fileName, FileMode.Open, FileAccess.ReadWrite, FileShare.Read, bufferSize, fileOptions) : stream; BinaryReader r = new BinaryReader(s); BinaryWriter w = new BinaryWriter(s); try { // If current file can embed metadata, do a 1st pass to detect embedded metadata position if (audioDataIO is IMetaDataEmbedder) { MetaDataIO.ReadTagParams readTagParams = new MetaDataIO.ReadTagParams(false, false); readTagParams.PrepareForWriting = true; audioDataIO.Read(r, sizeInfo, readTagParams); theMetaIO.SetEmbedder((IMetaDataEmbedder)audioDataIO); } result = theMetaIO.Write(r, w, theTag, writeProgress); if (result) { setMeta(theMetaIO); } } finally { if (null == stream) { r.Close(); w.Close(); } } } catch (Exception e) { System.Console.WriteLine(e.Message); System.Console.WriteLine(e.StackTrace); LogDelegator.GetLogDelegate()(Log.LV_ERROR, e.Message); result = false; } } else { LogDelegator.GetLogDelegate()(Log.LV_DEBUG, "Tag type " + tagType + " not supported"); } return(result); }
public bool Read(BinaryReader source, AudioDataManager.SizeInfo sizeInfo, MetaDataIO.ReadTagParams readTagParams) { return(audioData.Read(source, sizeInfo, readTagParams)); }
public Boolean UpdateTagInFile(TagData theTag, Int32 tagType) { var result = true; IMetaDataIO theMetaIO; LogDelegator.GetLocateDelegate()(fileName); if (audioDataIO.IsMetaSupported(tagType)) { try { theMetaIO = getMeta(tagType); var s = (null == stream) ? new FileStream(fileName, FileMode.Open, FileAccess.ReadWrite, FileShare.Read, bufferSize, fileOptions) : stream; var r = new BinaryReader(s); var w = new BinaryWriter(s); try { // If current file can embed metadata, do a 1st pass to detect embedded metadata position if (audioDataIO is IMetaDataEmbedder) { var readTagParams = new MetaDataIO.ReadTagParams(false, false); readTagParams.PrepareForWriting = true; audioDataIO.Read(r, sizeInfo, readTagParams); theMetaIO.SetEmbedder((IMetaDataEmbedder)audioDataIO); } result = theMetaIO.Write(r, w, theTag); } finally { if (null == stream) { r.Close(); w.Close(); } } } catch (ArgumentOutOfRangeException e) { throw new AudioDataCorruptionException( "Possible audio data corruption, check Inner Exception for details", e); } catch (Exception e) { System.Console.WriteLine(e.Message); System.Console.WriteLine(e.StackTrace); LogDelegator.GetLogDelegate()(Log.LV_ERROR, e.Message); result = false; } } else { LogDelegator.GetLogDelegate()(Log.LV_DEBUG, "Tag type " + tagType + " not supported"); } return(result); }