Exemplo n.º 1
0
 public bool Read(BinaryReader source, MetaDataIO.ReadTagParams readTagParams)
 {
     throw new NotImplementedException();
 }
Exemplo n.º 2
0
 public bool Read(BinaryReader source, AudioDataManager.SizeInfo sizeInfo, MetaDataIO.ReadTagParams readTagParams)
 {
     return(audioData.Read(source, sizeInfo, readTagParams));
 }
Exemplo n.º 3
0
 public bool Read(BinaryReader source, MetaDataIO.ReadTagParams readTagParams)
 {
     return(metaData.Read(source, readTagParams));
 }
Exemplo n.º 4
0
        private bool read(BinaryReader source, MetaDataIO.ReadTagParams readTagParams)
        {
            bool result = false;

            if (audioDataIO.IsMetaSupported(MetaDataIOFactory.TAG_ID3V1))
            {
                if (iD3v1.Read(source, readTagParams))
                {
                    sizeInfo.SetSize(MetaDataIOFactory.TAG_ID3V1, iD3v1.Size);
                }
            }
            if (audioDataIO.IsMetaSupported(MetaDataIOFactory.TAG_ID3V2))
            {
                if (!(audioDataIO is IMetaDataEmbedder)) // No embedded ID3v2 tag => supported tag is the standard version of ID3v2
                {
                    if (iD3v2.Read(source, readTagParams))
                    {
                        sizeInfo.SetSize(MetaDataIOFactory.TAG_ID3V2, iD3v2.Size);
                    }
                }
            }
            if (audioDataIO.IsMetaSupported(MetaDataIOFactory.TAG_APE))
            {
                if (aPEtag.Read(source, readTagParams))
                {
                    sizeInfo.SetSize(MetaDataIOFactory.TAG_APE, aPEtag.Size);
                }
            }

            if (audioDataIO.IsMetaSupported(MetaDataIOFactory.TAG_NATIVE) && audioDataIO is IMetaDataIO)
            {
                IMetaDataIO nativeTag = (IMetaDataIO)audioDataIO;
                this.nativeTag = nativeTag;
                result         = audioDataIO.Read(source, sizeInfo, readTagParams);

                if (result)
                {
                    sizeInfo.SetSize(MetaDataIOFactory.TAG_NATIVE, nativeTag.Size);
                }
            }
            else
            {
                readTagParams.ReadTag = false;
                result = audioDataIO.Read(source, sizeInfo, readTagParams);
            }

            if (audioDataIO is IMetaDataEmbedder) // Embedded ID3v2 tag detected while reading
            {
                if (((IMetaDataEmbedder)audioDataIO).HasEmbeddedID3v2 > 0)
                {
                    readTagParams.offset = ((IMetaDataEmbedder)audioDataIO).HasEmbeddedID3v2;
                    if (iD3v2.Read(source, readTagParams))
                    {
                        sizeInfo.SetSize(MetaDataIOFactory.TAG_ID3V2, iD3v2.Size);
                    }
                }
                else
                {
                    iD3v2.Clear();
                }
            }

            return(result);
        }
Exemplo n.º 5
0
        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);
        }
Exemplo n.º 6
0
 public Boolean Read(BinaryReader source, MetaDataIO.ReadTagParams readTagParams)
 {
     return(_metaData.Read(source, readTagParams));
 }