Esempio n. 1
0
        private void WriteDiscInfo(IntPtr tagsPtr, IntPtr discInfoPtr)
        {
            if (this.DiscNumber == null && this.TotalDiscs == null)
            {
                NativeMethods.MP4TagsSetDisk(tagsPtr, IntPtr.Zero);
            }
            else
            {
                NativeMethods.MP4TagDisk discInfo = new NativeMethods.MP4TagDisk();
                if (discInfoPtr != IntPtr.Zero)
                {
                    discInfoPtr.ReadStructure <NativeMethods.MP4TagDisk>();
                }

                if (this.DiscNumber.Value != discInfo.index || this.TotalDiscs != discInfo.total)
                {
                    discInfo.index = (this.DiscNumber == null ? (short)0 : this.DiscNumber.Value);
                    discInfo.total = (this.TotalDiscs == null ? (short)0 : this.TotalDiscs.Value);
                    IntPtr discPtr = Marshal.AllocHGlobal(Marshal.SizeOf(discInfo));
                    Marshal.StructureToPtr(discInfo, discPtr, false);
                    NativeMethods.MP4TagsSetDisk(tagsPtr, discPtr);
                    Marshal.FreeHGlobal(discPtr);
                }
            }
        }
Esempio n. 2
0
        private void ReadDiskInfo(IntPtr diskInfoPointer)
        {
            if (diskInfoPointer == IntPtr.Zero)
            {
                return;
            }

            NativeMethods.MP4TagDisk diskInfo = diskInfoPointer.ReadStructure <NativeMethods.MP4TagDisk>();
            this.DiscNumber = diskInfo.index;
            this.TotalDiscs = diskInfo.total;
        }