diff --git a/CUERipper/CUERipper.csproj b/CUERipper/CUERipper.csproj index 5f98ddf1..1c7c7183 100644 --- a/CUERipper/CUERipper.csproj +++ b/CUERipper/CUERipper.csproj @@ -181,8 +181,8 @@ {8DD1E84B-0B03-4C0B-9B42-1E49F75E7CB1} ProgressODoom - - {6B143A39-C7B2-4743-9917-92262C60E9A6} + + {1219a514-d3fa-40db-bbb2-92ce05e35839} taglib-sharp diff --git a/CUETools.Codecs/CUEToolsCodecsConfig.cs b/CUETools.Codecs/CUEToolsCodecsConfig.cs index 14cee60a..b57d24ce 100644 --- a/CUETools.Codecs/CUEToolsCodecsConfig.cs +++ b/CUETools.Codecs/CUEToolsCodecsConfig.cs @@ -56,6 +56,7 @@ public CUEToolsCodecsConfig(List encs, List decs) encoders.Add(new CUEToolsUDC("VBR (lame.exe)", "mp3", false, "V9 V8 V7 V6 V5 V4 V3 V2 V1 V0", "V2", "lame.exe", "--vbr-new -%M - %O")); encoders.Add(new CUEToolsUDC("CBR (lame.exe)", "mp3", false, "96 128 192 256 320", "256", "lame.exe", "-m s -q 0 -b %M --noreplaygain - %O")); encoders.Add(new CUEToolsUDC("oggenc", "ogg", false, "-1 -0.5 0 0.5 1 1.5 2 2.5 3 3.5 4 4.5 5 5.5 6 6.5 7 7.5 8", "3", "oggenc.exe", "-q %M - -o %O")); + encoders.Add(new CUEToolsUDC("opusenc", "opus", false, "6 16 32 48 64 96 128 192 256", "128", "opusenc.exe", "--bitrate %M - %O")); encoders.Add(new CUEToolsUDC("nero aac", "m4a", false, "0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9", "0.4", "neroAacEnc.exe", "-q %M -if - -of %O")); encoders.Add(new CUEToolsUDC("qaac tvbr", "m4a", false, "10 20 30 40 50 60 70 80 90 100 110 127", "80", "qaac.exe", "-s -V %M -q 2 - -o %O")); @@ -80,6 +81,7 @@ public CUEToolsCodecsConfig(List encs, List decs) formats.Add("wma", new CUEToolsFormat("wma", CUEToolsTagger.TagLibSharp, true, true, false, true, encoders.GetDefault("wma", true), encoders.GetDefault("wma", false), decoders.GetDefault("wma", true))); formats.Add("mp3", new CUEToolsFormat("mp3", CUEToolsTagger.TagLibSharp, false, true, false, true, null, encoders.GetDefault("mp3", false), null)); formats.Add("ogg", new CUEToolsFormat("ogg", CUEToolsTagger.TagLibSharp, false, true, false, true, null, encoders.GetDefault("ogg", false), null)); + formats.Add("opus", new CUEToolsFormat("opus", CUEToolsTagger.TagLibSharp, false, true, false, true, null, encoders.GetDefault("opus", false), null)); } } } diff --git a/CUETools.Converter/CUETools.Converter.csproj b/CUETools.Converter/CUETools.Converter.csproj index 627aed4e..6fc8e50f 100644 --- a/CUETools.Converter/CUETools.Converter.csproj +++ b/CUETools.Converter/CUETools.Converter.csproj @@ -25,7 +25,6 @@ - diff --git a/CUETools.Processor/CUETools.Processor.csproj b/CUETools.Processor/CUETools.Processor.csproj index 8531b2b7..6b736fe8 100644 --- a/CUETools.Processor/CUETools.Processor.csproj +++ b/CUETools.Processor/CUETools.Processor.csproj @@ -30,7 +30,9 @@ - + + true + diff --git a/CUETools.eac3to/CUETools.eac3to.csproj b/CUETools.eac3to/CUETools.eac3to.csproj index 7fae15ef..777279ec 100644 --- a/CUETools.eac3to/CUETools.eac3to.csproj +++ b/CUETools.eac3to/CUETools.eac3to.csproj @@ -25,7 +25,6 @@ - diff --git a/CUETools/CUETools.csproj b/CUETools/CUETools.csproj index 3f1635a0..c8b0c971 100644 --- a/CUETools/CUETools.csproj +++ b/CUETools/CUETools.csproj @@ -276,8 +276,8 @@ {5ADCFD6D-BFEA-4B10-BB45-9083BBB56AF4} Freedb - - {6b143a39-c7b2-4743-9917-92262c60e9a6} + + {1219a514-d3fa-40db-bbb2-92ce05e35839} taglib-sharp @@ -319,6 +319,7 @@ + diff --git a/CUETools/CUETools.sln b/CUETools/CUETools.sln index a218d2c0..58e161a2 100644 --- a/CUETools/CUETools.sln +++ b/CUETools/CUETools.sln @@ -107,9 +107,6 @@ EndProject Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "CUETools.Codecs.TTA", "..\CUETools.Codecs.TTA\CUETools.Codecs.TTA.vcxproj", "{1D1E99BC-6D22-41C0-BD94-FF4DD5EC725B}" EndProject Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "CUETools.Converter", "..\CUETools.Converter\CUETools.Converter.csproj", "{115CC5B0-0385-41CD-8A23-6A7EA4C51926}" - ProjectSection(ProjectDependencies) = postProject - {6B143A39-C7B2-4743-9917-92262C60E9A6} = {6B143A39-C7B2-4743-9917-92262C60E9A6} - EndProjectSection EndProject Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "CUEControls", "..\CUEControls\CUEControls.csproj", "{CA4D64E6-6544-4A29-8BA5-7DB08D50D072}" EndProject @@ -173,8 +170,6 @@ Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "CUETools.AVX", "..\CUETools EndProject Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Third Party Libraries", "Third Party Libraries", "{7E402406-7E51-4F0D-8209-60824C1CD6E8}" EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "taglib-sharp", "..\taglib-sharp\src\taglib-sharp.csproj", "{6B143A39-C7B2-4743-9917-92262C60E9A6}" -EndProject Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "WindowsMediaLib", "..\WindowsMediaLib\WindowsMediaLib.csproj", "{7EA4160F-3BBD-47C9-A38C-4053B64B24A8}" EndProject Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "CUETools.Codecs.WMA", "..\CUETools.Codecs.WMA\CUETools.Codecs.WMA.csproj", "{082D6B9E-326E-4D15-9798-DE70A6EDAE9E}" @@ -193,6 +188,8 @@ Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "CUETools.CTDB.Types", "..\C EndProject Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "CUETools.Codecs.libFLAC", "..\CUETools.Codecs.libFLAC\CUETools.Codecs.libFLAC.csproj", "{F10AB92C-9AFB-4FC0-94E0-06FCD3CA8155}" EndProject +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "taglib-sharp", "..\ThirdParty\taglib-sharp\src\taglib-sharp.csproj", "{1219A514-D3FA-40DB-BBB2-92CE05E35839}" +EndProject Global GlobalSection(SolutionConfigurationPlatforms) = preSolution Debug|Any CPU = Debug|Any CPU @@ -983,20 +980,6 @@ Global {CC022842-F2E9-4016-82B8-65A264B642D5}.Release|Win32.ActiveCfg = Release|Win32 {CC022842-F2E9-4016-82B8-65A264B642D5}.Release|x64.ActiveCfg = Release|x64 {CC022842-F2E9-4016-82B8-65A264B642D5}.Release|x86.ActiveCfg = Release|Win32 - {6B143A39-C7B2-4743-9917-92262C60E9A6}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {6B143A39-C7B2-4743-9917-92262C60E9A6}.Debug|Any CPU.Build.0 = Debug|Any CPU - {6B143A39-C7B2-4743-9917-92262C60E9A6}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU - {6B143A39-C7B2-4743-9917-92262C60E9A6}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU - {6B143A39-C7B2-4743-9917-92262C60E9A6}.Debug|Win32.ActiveCfg = Debug|Any CPU - {6B143A39-C7B2-4743-9917-92262C60E9A6}.Debug|x64.ActiveCfg = Debug|Any CPU - {6B143A39-C7B2-4743-9917-92262C60E9A6}.Debug|x86.ActiveCfg = Debug|Any CPU - {6B143A39-C7B2-4743-9917-92262C60E9A6}.Release|Any CPU.ActiveCfg = Release|Any CPU - {6B143A39-C7B2-4743-9917-92262C60E9A6}.Release|Any CPU.Build.0 = Release|Any CPU - {6B143A39-C7B2-4743-9917-92262C60E9A6}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU - {6B143A39-C7B2-4743-9917-92262C60E9A6}.Release|Mixed Platforms.Build.0 = Release|Any CPU - {6B143A39-C7B2-4743-9917-92262C60E9A6}.Release|Win32.ActiveCfg = Release|Any CPU - {6B143A39-C7B2-4743-9917-92262C60E9A6}.Release|x64.ActiveCfg = Release|Any CPU - {6B143A39-C7B2-4743-9917-92262C60E9A6}.Release|x86.ActiveCfg = Release|Any CPU {7EA4160F-3BBD-47C9-A38C-4053B64B24A8}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {7EA4160F-3BBD-47C9-A38C-4053B64B24A8}.Debug|Any CPU.Build.0 = Debug|Any CPU {7EA4160F-3BBD-47C9-A38C-4053B64B24A8}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU @@ -1117,6 +1100,26 @@ Global {F10AB92C-9AFB-4FC0-94E0-06FCD3CA8155}.Release|x64.ActiveCfg = Release|Any CPU {F10AB92C-9AFB-4FC0-94E0-06FCD3CA8155}.Release|x86.ActiveCfg = Release|Any CPU {F10AB92C-9AFB-4FC0-94E0-06FCD3CA8155}.Release|x86.Build.0 = Release|Any CPU + {1219A514-D3FA-40DB-BBB2-92CE05E35839}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {1219A514-D3FA-40DB-BBB2-92CE05E35839}.Debug|Any CPU.Build.0 = Debug|Any CPU + {1219A514-D3FA-40DB-BBB2-92CE05E35839}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU + {1219A514-D3FA-40DB-BBB2-92CE05E35839}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU + {1219A514-D3FA-40DB-BBB2-92CE05E35839}.Debug|Win32.ActiveCfg = Debug|Any CPU + {1219A514-D3FA-40DB-BBB2-92CE05E35839}.Debug|Win32.Build.0 = Debug|Any CPU + {1219A514-D3FA-40DB-BBB2-92CE05E35839}.Debug|x64.ActiveCfg = Debug|Any CPU + {1219A514-D3FA-40DB-BBB2-92CE05E35839}.Debug|x64.Build.0 = Debug|Any CPU + {1219A514-D3FA-40DB-BBB2-92CE05E35839}.Debug|x86.ActiveCfg = Debug|Any CPU + {1219A514-D3FA-40DB-BBB2-92CE05E35839}.Debug|x86.Build.0 = Debug|Any CPU + {1219A514-D3FA-40DB-BBB2-92CE05E35839}.Release|Any CPU.ActiveCfg = Release|Any CPU + {1219A514-D3FA-40DB-BBB2-92CE05E35839}.Release|Any CPU.Build.0 = Release|Any CPU + {1219A514-D3FA-40DB-BBB2-92CE05E35839}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU + {1219A514-D3FA-40DB-BBB2-92CE05E35839}.Release|Mixed Platforms.Build.0 = Release|Any CPU + {1219A514-D3FA-40DB-BBB2-92CE05E35839}.Release|Win32.ActiveCfg = Release|Any CPU + {1219A514-D3FA-40DB-BBB2-92CE05E35839}.Release|Win32.Build.0 = Release|Any CPU + {1219A514-D3FA-40DB-BBB2-92CE05E35839}.Release|x64.ActiveCfg = Release|Any CPU + {1219A514-D3FA-40DB-BBB2-92CE05E35839}.Release|x64.Build.0 = Release|Any CPU + {1219A514-D3FA-40DB-BBB2-92CE05E35839}.Release|x86.ActiveCfg = Release|Any CPU + {1219A514-D3FA-40DB-BBB2-92CE05E35839}.Release|x86.Build.0 = Release|Any CPU EndGlobalSection GlobalSection(SolutionProperties) = preSolution HideSolutionNode = FALSE @@ -1166,7 +1169,6 @@ Global {84EBB7CB-02C9-40A9-9D32-C641B822DAA2} = {D9D97BB6-002F-4858-8EF2-49B4C4C4DDB4} {0AC7691C-562A-4879-8A11-6C7890BF659B} = {86BBE3FC-E4E5-4190-B675-C6745EAF4E64} {F8C29953-A697-4462-82DC-DA7146654A64} = {4B59E09C-A51F-4B80-91BE-987904DCEF7D} - {6B143A39-C7B2-4743-9917-92262C60E9A6} = {7E402406-7E51-4F0D-8209-60824C1CD6E8} {7EA4160F-3BBD-47C9-A38C-4053B64B24A8} = {7E402406-7E51-4F0D-8209-60824C1CD6E8} {082D6B9E-326E-4D15-9798-DE70A6EDAE9E} = {93B7AE1D-DEF6-4A04-A222-5CDE09DF262D} {E75F7CCD-4266-42E1-A039-DC7EB5EDD8F6} = {93B7AE1D-DEF6-4A04-A222-5CDE09DF262D} @@ -1174,6 +1176,7 @@ Global {678875A6-6B3A-4AAC-83B6-D9A72D9016CF} = {BC0C1801-0212-4ECC-92D5-8F2D6F69E888} {2D8D7A03-DFFA-44EF-9299-8BB56D122245} = {BC0C1801-0212-4ECC-92D5-8F2D6F69E888} {F10AB92C-9AFB-4FC0-94E0-06FCD3CA8155} = {93B7AE1D-DEF6-4A04-A222-5CDE09DF262D} + {1219A514-D3FA-40DB-BBB2-92CE05E35839} = {7E402406-7E51-4F0D-8209-60824C1CD6E8} EndGlobalSection GlobalSection(ExtensibilityGlobals) = postSolution SolutionGuid = {C634D169-5814-4203-94B6-6A11371DDA95} diff --git a/CUETools/Properties/Resources.Designer.cs b/CUETools/Properties/Resources.Designer.cs index 3ce8563b..a22d9de5 100644 --- a/CUETools/Properties/Resources.Designer.cs +++ b/CUETools/Properties/Resources.Designer.cs @@ -439,6 +439,16 @@ internal static System.Drawing.Icon ogg { } } + /// + /// Looks up a localized resource of type System.Drawing.Icon similar to (Icon). + /// + internal static System.Drawing.Icon opus { + get { + object obj = ResourceManager.GetObject("opus", resourceCulture); + return ((System.Drawing.Icon)(obj)); + } + } + /// /// Looks up a localized resource of type System.Drawing.Icon similar to (Icon). /// diff --git a/CUETools/Properties/Resources.resx b/CUETools/Properties/Resources.resx index 33342a00..cea90b2f 100644 --- a/CUETools/Properties/Resources.resx +++ b/CUETools/Properties/Resources.resx @@ -112,10 +112,10 @@ 2.0 - System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 @@ -277,8 +277,10 @@ ..\Resources\alarm-clock--minus.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a - ..\Resources\more\card--pencil.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + ..\Resources\opus.ico;System.Drawing.Icon, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + \ No newline at end of file diff --git a/CUETools/Resources/opus.ico b/CUETools/Resources/opus.ico new file mode 100644 index 00000000..b226e039 Binary files /dev/null and b/CUETools/Resources/opus.ico differ diff --git a/CUETools/frmCUETools.cs b/CUETools/frmCUETools.cs index 14a4dc03..ccb4d942 100644 --- a/CUETools/frmCUETools.cs +++ b/CUETools/frmCUETools.cs @@ -64,6 +64,7 @@ public frmCUETools() m_icon_mgr.SetExtensionIcon(".m4a", global::JDP.Properties.Resources.ipod_sound); m_icon_mgr.SetExtensionIcon(".wma", global::JDP.Properties.Resources.wma); m_icon_mgr.SetExtensionIcon(".ogg", global::JDP.Properties.Resources.ogg); + m_icon_mgr.SetExtensionIcon(".opus", global::JDP.Properties.Resources.opus); m_icon_mgr.SetExtensionIcon(".cue", global::JDP.Properties.Resources.cue3); m_icon_mgr.SetExtensionIcon(".#puzzle", global::JDP.Properties.Resources.puzzle); m_icon_mgr.SetExtensionIcon(".#users", global::JDP.Properties.Resources.users); diff --git a/ThirdParty/taglib-sharp b/ThirdParty/taglib-sharp index b730158a..240578fa 160000 --- a/ThirdParty/taglib-sharp +++ b/ThirdParty/taglib-sharp @@ -1 +1 @@ -Subproject commit b730158a4adf054cd5e719fe399042616869cd6c +Subproject commit 240578fa70b8eb4481923b7fd0fed1348a5be0f2 diff --git a/taglib-sharp/.gitignore b/taglib-sharp/.gitignore deleted file mode 100644 index 24cb39e2..00000000 --- a/taglib-sharp/.gitignore +++ /dev/null @@ -1,31 +0,0 @@ -INSTALL -Makefile -Makefile.in -aclocal.m4 -autom4te.cache/ -bin/ -config.log -config.status -configure -*.exe -*.mdb -*.pidb -*.config -install-sh -missing -src/AssemblyInfo.cs -*.pc -*.zip -tests/samples/tmp* -docs/*.xml -docs/*/* -docs/*.tree -*.dll.xml -examples/*.dll -*.userprefs -src/*.dll -src/*.snk -tests/*.dll -tests/*.xml -test-results -.*.swp diff --git a/taglib-sharp/.gitmodules b/taglib-sharp/.gitmodules deleted file mode 100644 index da559475..00000000 --- a/taglib-sharp/.gitmodules +++ /dev/null @@ -1,3 +0,0 @@ -[submodule "tests/raw-samples"] - path = tests/raw-samples - url = git://gitorious.org/taglib-sharp/raw-samples.git diff --git a/taglib-sharp/AUTHORS b/taglib-sharp/AUTHORS deleted file mode 100644 index 615e9abd..00000000 --- a/taglib-sharp/AUTHORS +++ /dev/null @@ -1,29 +0,0 @@ -Maintainer: - Gabriel Burt - -Contributors: - Aaron Bockover - Alexander Kojevnikov - Andrés G. Aragoneses - Andy Beal - Bernd Niedergesaess - Bertrand Lorentz - Colin Turner - Eamon Nerbonne - Félix Velasco - Gregory S. Chudov - Helmut Wahrmann - Jeffrey Stedfast - Jeroen Asselman - John Millikin - Julien Moutte - Marek Habersack - Mike Gemünde - Patrick Dehne - Paul Lange - Ruben Vermeersch - Stephane Delcroix - Tim Howard - -Creator, past maintainer: - Brian Nickel diff --git a/taglib-sharp/COPYING b/taglib-sharp/COPYING deleted file mode 100644 index 8add30ad..00000000 --- a/taglib-sharp/COPYING +++ /dev/null @@ -1,504 +0,0 @@ - GNU LESSER GENERAL PUBLIC LICENSE - Version 2.1, February 1999 - - Copyright (C) 1991, 1999 Free Software Foundation, Inc. - 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA - Everyone is permitted to copy and distribute verbatim copies - of this license document, but changing it is not allowed. - -[This is the first released version of the Lesser GPL. It also counts - as the successor of the GNU Library Public License, version 2, hence - the version number 2.1.] - - Preamble - - The licenses for most software are designed to take away your -freedom to share and change it. By contrast, the GNU General Public -Licenses are intended to guarantee your freedom to share and change -free software--to make sure the software is free for all its users. - - This license, the Lesser General Public License, applies to some -specially designated software packages--typically libraries--of the -Free Software Foundation and other authors who decide to use it. You -can use it too, but we suggest you first think carefully about whether -this license or the ordinary General Public License is the better -strategy to use in any particular case, based on the explanations below. - - When we speak of free software, we are referring to freedom of use, -not price. Our General Public Licenses are designed to make sure that -you have the freedom to distribute copies of free software (and charge -for this service if you wish); that you receive source code or can get -it if you want it; that you can change the software and use pieces of -it in new free programs; and that you are informed that you can do -these things. - - To protect your rights, we need to make restrictions that forbid -distributors to deny you these rights or to ask you to surrender these -rights. These restrictions translate to certain responsibilities for -you if you distribute copies of the library or if you modify it. - - For example, if you distribute copies of the library, whether gratis -or for a fee, you must give the recipients all the rights that we gave -you. You must make sure that they, too, receive or can get the source -code. If you link other code with the library, you must provide -complete object files to the recipients, so that they can relink them -with the library after making changes to the library and recompiling -it. And you must show them these terms so they know their rights. - - We protect your rights with a two-step method: (1) we copyright the -library, and (2) we offer you this license, which gives you legal -permission to copy, distribute and/or modify the library. - - To protect each distributor, we want to make it very clear that -there is no warranty for the free library. Also, if the library is -modified by someone else and passed on, the recipients should know -that what they have is not the original version, so that the original -author's reputation will not be affected by problems that might be -introduced by others. - - Finally, software patents pose a constant threat to the existence of -any free program. We wish to make sure that a company cannot -effectively restrict the users of a free program by obtaining a -restrictive license from a patent holder. Therefore, we insist that -any patent license obtained for a version of the library must be -consistent with the full freedom of use specified in this license. - - Most GNU software, including some libraries, is covered by the -ordinary GNU General Public License. This license, the GNU Lesser -General Public License, applies to certain designated libraries, and -is quite different from the ordinary General Public License. We use -this license for certain libraries in order to permit linking those -libraries into non-free programs. - - When a program is linked with a library, whether statically or using -a shared library, the combination of the two is legally speaking a -combined work, a derivative of the original library. The ordinary -General Public License therefore permits such linking only if the -entire combination fits its criteria of freedom. The Lesser General -Public License permits more lax criteria for linking other code with -the library. - - We call this license the "Lesser" General Public License because it -does Less to protect the user's freedom than the ordinary General -Public License. It also provides other free software developers Less -of an advantage over competing non-free programs. These disadvantages -are the reason we use the ordinary General Public License for many -libraries. However, the Lesser license provides advantages in certain -special circumstances. - - For example, on rare occasions, there may be a special need to -encourage the widest possible use of a certain library, so that it becomes -a de-facto standard. To achieve this, non-free programs must be -allowed to use the library. A more frequent case is that a free -library does the same job as widely used non-free libraries. In this -case, there is little to gain by limiting the free library to free -software only, so we use the Lesser General Public License. - - In other cases, permission to use a particular library in non-free -programs enables a greater number of people to use a large body of -free software. For example, permission to use the GNU C Library in -non-free programs enables many more people to use the whole GNU -operating system, as well as its variant, the GNU/Linux operating -system. - - Although the Lesser General Public License is Less protective of the -users' freedom, it does ensure that the user of a program that is -linked with the Library has the freedom and the wherewithal to run -that program using a modified version of the Library. - - The precise terms and conditions for copying, distribution and -modification follow. Pay close attention to the difference between a -"work based on the library" and a "work that uses the library". The -former contains code derived from the library, whereas the latter must -be combined with the library in order to run. - - GNU LESSER GENERAL PUBLIC LICENSE - TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION - - 0. This License Agreement applies to any software library or other -program which contains a notice placed by the copyright holder or -other authorized party saying it may be distributed under the terms of -this Lesser General Public License (also called "this License"). -Each licensee is addressed as "you". - - A "library" means a collection of software functions and/or data -prepared so as to be conveniently linked with application programs -(which use some of those functions and data) to form executables. - - The "Library", below, refers to any such software library or work -which has been distributed under these terms. A "work based on the -Library" means either the Library or any derivative work under -copyright law: that is to say, a work containing the Library or a -portion of it, either verbatim or with modifications and/or translated -straightforwardly into another language. (Hereinafter, translation is -included without limitation in the term "modification".) - - "Source code" for a work means the preferred form of the work for -making modifications to it. For a library, complete source code means -all the source code for all modules it contains, plus any associated -interface definition files, plus the scripts used to control compilation -and installation of the library. - - Activities other than copying, distribution and modification are not -covered by this License; they are outside its scope. The act of -running a program using the Library is not restricted, and output from -such a program is covered only if its contents constitute a work based -on the Library (independent of the use of the Library in a tool for -writing it). Whether that is true depends on what the Library does -and what the program that uses the Library does. - - 1. You may copy and distribute verbatim copies of the Library's -complete source code as you receive it, in any medium, provided that -you conspicuously and appropriately publish on each copy an -appropriate copyright notice and disclaimer of warranty; keep intact -all the notices that refer to this License and to the absence of any -warranty; and distribute a copy of this License along with the -Library. - - You may charge a fee for the physical act of transferring a copy, -and you may at your option offer warranty protection in exchange for a -fee. - - 2. You may modify your copy or copies of the Library or any portion -of it, thus forming a work based on the Library, and copy and -distribute such modifications or work under the terms of Section 1 -above, provided that you also meet all of these conditions: - - a) The modified work must itself be a software library. - - b) You must cause the files modified to carry prominent notices - stating that you changed the files and the date of any change. - - c) You must cause the whole of the work to be licensed at no - charge to all third parties under the terms of this License. - - d) If a facility in the modified Library refers to a function or a - table of data to be supplied by an application program that uses - the facility, other than as an argument passed when the facility - is invoked, then you must make a good faith effort to ensure that, - in the event an application does not supply such function or - table, the facility still operates, and performs whatever part of - its purpose remains meaningful. - - (For example, a function in a library to compute square roots has - a purpose that is entirely well-defined independent of the - application. Therefore, Subsection 2d requires that any - application-supplied function or table used by this function must - be optional: if the application does not supply it, the square - root function must still compute square roots.) - -These requirements apply to the modified work as a whole. If -identifiable sections of that work are not derived from the Library, -and can be reasonably considered independent and separate works in -themselves, then this License, and its terms, do not apply to those -sections when you distribute them as separate works. But when you -distribute the same sections as part of a whole which is a work based -on the Library, the distribution of the whole must be on the terms of -this License, whose permissions for other licensees extend to the -entire whole, and thus to each and every part regardless of who wrote -it. - -Thus, it is not the intent of this section to claim rights or contest -your rights to work written entirely by you; rather, the intent is to -exercise the right to control the distribution of derivative or -collective works based on the Library. - -In addition, mere aggregation of another work not based on the Library -with the Library (or with a work based on the Library) on a volume of -a storage or distribution medium does not bring the other work under -the scope of this License. - - 3. You may opt to apply the terms of the ordinary GNU General Public -License instead of this License to a given copy of the Library. To do -this, you must alter all the notices that refer to this License, so -that they refer to the ordinary GNU General Public License, version 2, -instead of to this License. (If a newer version than version 2 of the -ordinary GNU General Public License has appeared, then you can specify -that version instead if you wish.) Do not make any other change in -these notices. - - Once this change is made in a given copy, it is irreversible for -that copy, so the ordinary GNU General Public License applies to all -subsequent copies and derivative works made from that copy. - - This option is useful when you wish to copy part of the code of -the Library into a program that is not a library. - - 4. You may copy and distribute the Library (or a portion or -derivative of it, under Section 2) in object code or executable form -under the terms of Sections 1 and 2 above provided that you accompany -it with the complete corresponding machine-readable source code, which -must be distributed under the terms of Sections 1 and 2 above on a -medium customarily used for software interchange. - - If distribution of object code is made by offering access to copy -from a designated place, then offering equivalent access to copy the -source code from the same place satisfies the requirement to -distribute the source code, even though third parties are not -compelled to copy the source along with the object code. - - 5. A program that contains no derivative of any portion of the -Library, but is designed to work with the Library by being compiled or -linked with it, is called a "work that uses the Library". Such a -work, in isolation, is not a derivative work of the Library, and -therefore falls outside the scope of this License. - - However, linking a "work that uses the Library" with the Library -creates an executable that is a derivative of the Library (because it -contains portions of the Library), rather than a "work that uses the -library". The executable is therefore covered by this License. -Section 6 states terms for distribution of such executables. - - When a "work that uses the Library" uses material from a header file -that is part of the Library, the object code for the work may be a -derivative work of the Library even though the source code is not. -Whether this is true is especially significant if the work can be -linked without the Library, or if the work is itself a library. The -threshold for this to be true is not precisely defined by law. - - If such an object file uses only numerical parameters, data -structure layouts and accessors, and small macros and small inline -functions (ten lines or less in length), then the use of the object -file is unrestricted, regardless of whether it is legally a derivative -work. (Executables containing this object code plus portions of the -Library will still fall under Section 6.) - - Otherwise, if the work is a derivative of the Library, you may -distribute the object code for the work under the terms of Section 6. -Any executables containing that work also fall under Section 6, -whether or not they are linked directly with the Library itself. - - 6. As an exception to the Sections above, you may also combine or -link a "work that uses the Library" with the Library to produce a -work containing portions of the Library, and distribute that work -under terms of your choice, provided that the terms permit -modification of the work for the customer's own use and reverse -engineering for debugging such modifications. - - You must give prominent notice with each copy of the work that the -Library is used in it and that the Library and its use are covered by -this License. You must supply a copy of this License. If the work -during execution displays copyright notices, you must include the -copyright notice for the Library among them, as well as a reference -directing the user to the copy of this License. Also, you must do one -of these things: - - a) Accompany the work with the complete corresponding - machine-readable source code for the Library including whatever - changes were used in the work (which must be distributed under - Sections 1 and 2 above); and, if the work is an executable linked - with the Library, with the complete machine-readable "work that - uses the Library", as object code and/or source code, so that the - user can modify the Library and then relink to produce a modified - executable containing the modified Library. (It is understood - that the user who changes the contents of definitions files in the - Library will not necessarily be able to recompile the application - to use the modified definitions.) - - b) Use a suitable shared library mechanism for linking with the - Library. A suitable mechanism is one that (1) uses at run time a - copy of the library already present on the user's computer system, - rather than copying library functions into the executable, and (2) - will operate properly with a modified version of the library, if - the user installs one, as long as the modified version is - interface-compatible with the version that the work was made with. - - c) Accompany the work with a written offer, valid for at - least three years, to give the same user the materials - specified in Subsection 6a, above, for a charge no more - than the cost of performing this distribution. - - d) If distribution of the work is made by offering access to copy - from a designated place, offer equivalent access to copy the above - specified materials from the same place. - - e) Verify that the user has already received a copy of these - materials or that you have already sent this user a copy. - - For an executable, the required form of the "work that uses the -Library" must include any data and utility programs needed for -reproducing the executable from it. However, as a special exception, -the materials to be distributed need not include anything that is -normally distributed (in either source or binary form) with the major -components (compiler, kernel, and so on) of the operating system on -which the executable runs, unless that component itself accompanies -the executable. - - It may happen that this requirement contradicts the license -restrictions of other proprietary libraries that do not normally -accompany the operating system. Such a contradiction means you cannot -use both them and the Library together in an executable that you -distribute. - - 7. You may place library facilities that are a work based on the -Library side-by-side in a single library together with other library -facilities not covered by this License, and distribute such a combined -library, provided that the separate distribution of the work based on -the Library and of the other library facilities is otherwise -permitted, and provided that you do these two things: - - a) Accompany the combined library with a copy of the same work - based on the Library, uncombined with any other library - facilities. This must be distributed under the terms of the - Sections above. - - b) Give prominent notice with the combined library of the fact - that part of it is a work based on the Library, and explaining - where to find the accompanying uncombined form of the same work. - - 8. You may not copy, modify, sublicense, link with, or distribute -the Library except as expressly provided under this License. Any -attempt otherwise to copy, modify, sublicense, link with, or -distribute the Library is void, and will automatically terminate your -rights under this License. However, parties who have received copies, -or rights, from you under this License will not have their licenses -terminated so long as such parties remain in full compliance. - - 9. You are not required to accept this License, since you have not -signed it. However, nothing else grants you permission to modify or -distribute the Library or its derivative works. These actions are -prohibited by law if you do not accept this License. Therefore, by -modifying or distributing the Library (or any work based on the -Library), you indicate your acceptance of this License to do so, and -all its terms and conditions for copying, distributing or modifying -the Library or works based on it. - - 10. Each time you redistribute the Library (or any work based on the -Library), the recipient automatically receives a license from the -original licensor to copy, distribute, link with or modify the Library -subject to these terms and conditions. You may not impose any further -restrictions on the recipients' exercise of the rights granted herein. -You are not responsible for enforcing compliance by third parties with -this License. - - 11. If, as a consequence of a court judgment or allegation of patent -infringement or for any other reason (not limited to patent issues), -conditions are imposed on you (whether by court order, agreement or -otherwise) that contradict the conditions of this License, they do not -excuse you from the conditions of this License. If you cannot -distribute so as to satisfy simultaneously your obligations under this -License and any other pertinent obligations, then as a consequence you -may not distribute the Library at all. For example, if a patent -license would not permit royalty-free redistribution of the Library by -all those who receive copies directly or indirectly through you, then -the only way you could satisfy both it and this License would be to -refrain entirely from distribution of the Library. - -If any portion of this section is held invalid or unenforceable under any -particular circumstance, the balance of the section is intended to apply, -and the section as a whole is intended to apply in other circumstances. - -It is not the purpose of this section to induce you to infringe any -patents or other property right claims or to contest validity of any -such claims; this section has the sole purpose of protecting the -integrity of the free software distribution system which is -implemented by public license practices. Many people have made -generous contributions to the wide range of software distributed -through that system in reliance on consistent application of that -system; it is up to the author/donor to decide if he or she is willing -to distribute software through any other system and a licensee cannot -impose that choice. - -This section is intended to make thoroughly clear what is believed to -be a consequence of the rest of this License. - - 12. If the distribution and/or use of the Library is restricted in -certain countries either by patents or by copyrighted interfaces, the -original copyright holder who places the Library under this License may add -an explicit geographical distribution limitation excluding those countries, -so that distribution is permitted only in or among countries not thus -excluded. In such case, this License incorporates the limitation as if -written in the body of this License. - - 13. The Free Software Foundation may publish revised and/or new -versions of the Lesser General Public License from time to time. -Such new versions will be similar in spirit to the present version, -but may differ in detail to address new problems or concerns. - -Each version is given a distinguishing version number. If the Library -specifies a version number of this License which applies to it and -"any later version", you have the option of following the terms and -conditions either of that version or of any later version published by -the Free Software Foundation. If the Library does not specify a -license version number, you may choose any version ever published by -the Free Software Foundation. - - 14. If you wish to incorporate parts of the Library into other free -programs whose distribution conditions are incompatible with these, -write to the author to ask for permission. For software which is -copyrighted by the Free Software Foundation, write to the Free -Software Foundation; we sometimes make exceptions for this. Our -decision will be guided by the two goals of preserving the free status -of all derivatives of our free software and of promoting the sharing -and reuse of software generally. - - NO WARRANTY - - 15. BECAUSE THE LIBRARY IS LICENSED FREE OF CHARGE, THERE IS NO -WARRANTY FOR THE LIBRARY, TO THE EXTENT PERMITTED BY APPLICABLE LAW. -EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR -OTHER PARTIES PROVIDE THE LIBRARY "AS IS" WITHOUT WARRANTY OF ANY -KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE -IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR -PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE -LIBRARY IS WITH YOU. SHOULD THE LIBRARY PROVE DEFECTIVE, YOU ASSUME -THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION. - - 16. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN -WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY -AND/OR REDISTRIBUTE THE LIBRARY AS PERMITTED ABOVE, BE LIABLE TO YOU -FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR -CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE -LIBRARY (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING -RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A -FAILURE OF THE LIBRARY TO OPERATE WITH ANY OTHER SOFTWARE), EVEN IF -SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH -DAMAGES. - - END OF TERMS AND CONDITIONS - - How to Apply These Terms to Your New Libraries - - If you develop a new library, and you want it to be of the greatest -possible use to the public, we recommend making it free software that -everyone can redistribute and change. You can do so by permitting -redistribution under these terms (or, alternatively, under the terms of the -ordinary General Public License). - - To apply these terms, attach the following notices to the library. It is -safest to attach them to the start of each source file to most effectively -convey the exclusion of warranty; and each file should have at least the -"copyright" line and a pointer to where the full notice is found. - - - Copyright (C) - - This library is free software; you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either - version 2.1 of the License, or (at your option) any later version. - - This library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with this library; if not, write to the Free Software - Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA - -Also add information on how to contact you by electronic and paper mail. - -You should also get your employer (if you work as a programmer) or your -school, if any, to sign a "copyright disclaimer" for the library, if -necessary. Here is a sample; alter the names: - - Yoyodyne, Inc., hereby disclaims all copyright interest in the - library `Frob' (a library for tweaking knobs) written by James Random Hacker. - - , 1 April 1990 - Ty Coon, President of Vice - -That's all there is to it! - - diff --git a/taglib-sharp/ChangeLog b/taglib-sharp/ChangeLog deleted file mode 100644 index 490a9fb2..00000000 --- a/taglib-sharp/ChangeLog +++ /dev/null @@ -1,7032 +0,0 @@ - -commit 3f6c8a5a3dabfb335ab67259e258bc747219a9ae -Author: Ruben Vermeersch -Date: Sat Aug 7 09:43:59 2010 - - [IFD] Fix parsing with non-null delimited strings. - - There was an interesting off-by-one parsing error for strings that were - not delimited by a null byte. This commit makes sure we read the entire - byte array and then cut of everything up to the null byte. - - https://bugzilla.gnome.org/show_bug.cgi?id=493530 - -commit dbad977936d4efc6187767b9ae1cec1edfa288f1 -Author: Ruben Vermeersch -Date: Thu Jul 22 08:26:13 2010 - - [Jpeg] Don't complain if the stream Length can't be read. - - https://bugzilla.gnome.org/show_bug.cgi?id=624671 - -commit be510696d1b0d7eee1e8947c29ff0d7949e4f543 -Author: Ruben Vermeersch -Date: Thu Jul 22 08:08:32 2010 - - Detect IFD entry type 0 corruption. - - https://bugzilla.gnome.org/show_bug.cgi?id=625009 - -commit 8d44e11a5473417f3bbf2590260c57257ec8d7ab -Author: Ruben Vermeersch -Date: Thu Jul 22 08:08:04 2010 - - Ignore compiled helper binaries. - -commit ce41ae6314ab5a891140856e6b7c7d1c50b8d91d -Author: Ruben Vermeersch -Date: Thu Jul 22 07:50:17 2010 - - Comment out unused lines. - -commit a1161e8b901ca73f56a3984a23f64379c6522dbb -Author: Ruben Vermeersch -Date: Thu Jul 22 07:48:14 2010 - - Update unit tests, the used XMP tags do not contain the Orientation. - -commit 2bdf23c46adff2d46a58694005a8e5beb3063f38 -Author: Ruben Vermeersch -Date: Thu Jul 22 07:47:13 2010 - - Don't throw exception on invalid IFD offsets. - - Mark as corrupt instead. - -commit e88f64ec9c9953037ff6aad0d3d8dcc4ec432473 -Author: Mike Gemünde -Date: Tue Jul 20 05:52:08 2010 - - Fix CopyFromTest to be unsensitive to different formats of ToString for DateTime - -commit ecfe021ae3549140067de5ea7fd990bf606d4d91 -Author: Mike Gemünde -Date: Tue Jul 20 05:50:02 2010 - - Add default value for ImageOrientation (None = 0) - - It was not possible to distinguish wether a orientation is not set - or it is set to TopLeft, because TopLeft was used as the default. - This caused problems when determining the orientation in CombinedImageTag. - Therfore, a default is now added to get the correct value. - -commit 486632c7bc8ef86c41a60680272481c3e5fdee24 -Author: Mike Gemünde -Date: Sun Jul 18 02:51:05 2010 - - Fix typo in mime type of cr2 files - -commit 8c922c0387d32176ef940791f25ec9db533ac0cf -Author: Ruben Vermeersch -Date: Tue Jul 13 13:31:27 2010 - - Cycle detection to avoid endless IFD loops. - - https://bugzilla.gnome.org/show_bug.cgi?id=391671 - -commit 0bf4c68da62ad73a927b127d9d61571a68cbd43c -Author: Ruben Vermeersch -Date: Tue Jul 13 11:47:55 2010 - - Parse and detect corruption in Olympus makernotes. - - https://bugzilla.gnome.org/show_bug.cgi?id=555340 - -commit 634a55d461819277f1cd032e602b0468e5c71870 -Author: Ruben Vermeersch -Date: Tue Jul 13 10:47:24 2010 - - Handle all space comments. - - https://bugzilla.gnome.org/show_bug.cgi?id=397002 - -commit 9ac4daf03c50f697aea45333692d9d0e51396095 -Author: Ruben Vermeersch -Date: Tue Jul 13 10:46:31 2010 - - Support generating fixtures for Olympus files. - -commit 5b595bef6bdf74f70239248bf46a8a8193c5b085 -Author: Ruben Vermeersch -Date: Tue Jul 13 10:34:30 2010 - - Add support for empty comments consisting of only spaces. - -commit fb8e08b00909eea17cf2c08553c3c5aaf165dd5a -Author: Ruben Vermeersch -Date: Tue Jul 13 10:22:07 2010 - - Add SVG support via NoMetadata, for now. - -commit a67a562149925fd0862b9d3858c401f4f5d97ddb -Author: Ruben Vermeersch -Date: Mon Jul 12 10:48:24 2010 - - Refuse to write files with unknown corruptions. - - Certain Nikon files can have strange corruptions which we're not sure - how to parse (nor do other metadata libraries). This may be a bug or a - feature. We detect it and refuse to write in such cases. - - https://bugzilla.gnome.org/show_bug.cgi?id=624097 - -commit 6c3ce99097a13e6194a755dfeec8ab82aeec23a1 -Author: Ruben Vermeersch -Date: Sun Jul 11 06:05:01 2010 - - Validate remaining XmpTag values. - -commit 785e4cb1bbfccc3a2d4a2d2258b69937abf3f524 -Author: Ruben Vermeersch -Date: Sun Jul 11 05:42:59 2010 - - Start validating ImageTag implementations. - - Fixes some bugs in XmpTag and adds some fallbacks. - -commit 0659501225f66d8e22df141502fc1a897d797067 -Author: Ruben Vermeersch -Date: Tue Jul 6 17:33:26 2010 - - Parse embedded JpgFromRaw in RW2 files. - -commit a58728170f54fd7823df1bca318cf2a6214f9c02 -Author: Ruben Vermeersch -Date: Mon Jul 5 12:08:27 2010 - - Remove debug statements. - -commit fa81e725cd7104e12a75b92c622d302780713892 -Author: Ruben Vermeersch -Date: Thu Jul 1 12:30:21 2010 - - Add Rw2 files to Monodevelop projects. - -commit c8964265eebde4e623716e4e9ef906f3a505eef0 -Author: Ruben Vermeersch -Date: Sun Jun 27 10:39:10 2010 - - First incomplete attempt at RW2 support. - - Different approach is needed, but I'm too frustrated with Panasonics - horrible format for now. - -commit adddbacf46b928c207e1104be98c5ed584d58b53 -Author: Ruben Vermeersch -Date: Tue Jul 6 12:28:13 2010 - - Fix build breakage. - -commit 4a6f66c806c0f725778e4fb091c674bf6434cc62 -Author: Ruben Vermeersch -Date: Mon Jul 5 16:20:27 2010 - - Add initial DNG support. - - Gets the size wrong, but I'll fix that soon, when I start adding a - simple API test for each file type. - -commit 97668fecb6f55ec15610c39f58c81608f9caa015 -Author: Ruben Vermeersch -Date: Mon Jul 5 12:50:35 2010 - - Add Sony ARW support. - -commit dd99430ab167520497e584eb9a562eceadf269c6 -Author: Ruben Vermeersch -Date: Fri Jul 2 16:17:50 2010 - - Add PCX support to NoMetadata. - -commit f96cca366b0d34a76a9679df69de8868d435df33 -Author: Ruben Vermeersch -Date: Fri Jul 2 16:12:42 2010 - - Add mime types and extensions for Netpbm to NoMetadata. - -commit 454ae09e6cb5f5d6d1815bb5d3ed2785b2de0c5a -Author: Ruben Vermeersch -Date: Fri Jul 2 16:09:43 2010 - - Add mime types for bitmaps. - -commit 9f7bdc3a04a89cd339dbe647198cbcb1f9536c78 -Author: Ruben Vermeersch -Date: Fri Jul 2 15:37:43 2010 - - Add bitmap as a non-metadata type. - -commit a96174f6eae4eabeeda59b427afe7d9ba1f5d76b -Author: Ruben Vermeersch -Date: Fri Jul 2 15:31:13 2010 - - Add a fallback type for images without metadata. - -commit 3e2f3819ad7ce424672e2127c5894a33ab372573 -Author: Ruben Vermeersch -Date: Fri Jul 2 03:32:31 2010 - - Make a list copy to avoid out-of-sync enumerators. - -commit 8445fc0927f14607f0c4a32d4233ec2f1e9f703d -Author: Ruben Vermeersch -Date: Fri Jul 2 03:29:55 2010 - - Remove empty Sub IFDs before rendering. - -commit 7d632cc334efea165190c19863363252bf2b6539 -Author: Ruben Vermeersch -Date: Fri Jul 2 03:23:14 2010 - - Revert "Don't render empty Sub IFDs" - - This reverts commit 359bf87df97b991d9e9de53d0e63ba02424796ab. - - Not the right way to fix it. - -commit aa93264a11e5b994c829d57521860d62bac58191 -Author: Ruben Vermeersch -Date: Fri Jul 2 03:17:11 2010 - - Don't render empty Sub IFDs - -commit 0c1bf35b0cf9f68dbb96df6501ae1cd3144daa08 -Author: Ruben Vermeersch -Date: Fri Jul 2 03:04:30 2010 - - Fix handling of nullable assignments. - -commit d4ab524264c5defe57046950697ba41c9dc96715 -Author: Ruben Vermeersch -Date: Thu Jul 1 18:25:53 2010 - - Add metadata copying between images. - - Only copies the values from ImageTag. Good enough. - - https://bugzilla.gnome.org/show_bug.cgi?id=618770 - -commit f8bc4a360d158cbc76852d94f5e0ab8baddfb976 -Author: Ruben Vermeersch -Date: Thu Jul 1 11:14:02 2010 - - Update MonoDevelop support. - -commit 3a625b1054f3cb1eed898471dbb4406783d94142 -Author: Ruben Vermeersch -Date: Sun Jun 27 10:11:51 2010 - - Indent values in ParsePhoto. - -commit 00a049969c3428e06c81422afa0ed8258ef117fc -Author: Ruben Vermeersch -Date: Sat Jun 26 17:54:55 2010 - - Remove stray file from build. - - This shouldn't have been committed. - -commit 80942aae30028a919022c26ae117296fc0912c3a -Author: Ruben Vermeersch -Date: Sat Jun 26 17:08:10 2010 - - Make the Tiff Codec type reusable. - - Avoid having to define a new one for each new Tiff-derived type. - -commit f5a98009508fc8961eff1cb5c0c18447dfaf7af7 -Author: Ruben Vermeersch -Date: Sat Jun 26 16:54:58 2010 - - Move Tiff-based RAW types into Tiff namespace. - - There will be a lot of them, don't want to clutter the main source tree. - -commit dd7c59b844ee8c840b544b7bffb60935f1b1409e -Author: Ruben Vermeersch -Date: Sat Jun 26 16:19:08 2010 - - Don't crash when writing empty XMP collections. - -commit 06211a9fc78172fb7bce88136d268391c11c974f -Author: Ruben Vermeersch -Date: Thu Jun 24 13:27:59 2010 - - Expand Nikon format support. - - Nikon encodes a ton of info into byte arrays. These are not parsed yet. - Perhaps we should do so at some point, or at least pull the interesting - bits out. - -commit 6d75fdc99e004d0b1e24e15474d163c638d3ffb6 -Author: Ruben Vermeersch -Date: Thu Jun 24 13:26:43 2010 - - Add support for SubIFDs and SubImages. - -commit 737857b640e60a0424e9317b83d768685ca096a7 -Author: Ruben Vermeersch -Date: Thu Jun 24 13:11:04 2010 - - Update to test repository with NEF file. - -commit 8fe3d0ee40610d78e27da996d3a379a022eeadb3 -Author: Ruben Vermeersch -Date: Thu Jun 24 11:26:36 2010 - - Don't inherit file type attributes. - - This makes it possible to make an inherited TIFF type for NEF files. - -commit 40af7636c446833561d203b64e47e961e51cb973 -Author: Ruben Vermeersch -Date: Wed Jun 23 04:36:09 2010 - - Add initial NEF support. - -commit 7b1311a55c9a2d4173ac3f3c472007f87668a827 -Author: Ruben Vermeersch -Date: Wed Jun 23 04:09:40 2010 - - Fix copy/paste error in comments. - -commit 5c986c18a831105556aff482cd75be6e6ba213d9 -Author: Ruben Vermeersch -Date: Sun Jun 20 08:29:27 2010 - - Compare visual data based on hashes. - - Slightly faster. - -commit 5d39e3d9dbe06cf357469335a9f698a4afefe1cf -Author: Mike Gemünde -Date: Thu Jun 17 06:14:34 2010 - - Add Canon CR2 test - -commit 405d847b7ac611cbe07555987096df6a9ab0d692 -Author: Ruben Vermeersch -Date: Sun Jun 20 08:55:09 2010 - - Add IFD tags for a bunch of Canon fields. - -commit 731f2e0b76e79b8587c8ea1d9c1f53e336cccbe8 -Author: Ruben Vermeersch -Date: Sun Jun 20 08:22:45 2010 - - Compare very large values by MD5. - -commit 640714afe48fe208dbdd7f8366db4757192f859e -Author: Mike Gemünde -Date: Thu Jun 17 06:13:30 2010 - - Extend ImageTest - - ImageTest is extended to handle image files in different locations and to allow - read-only images tested. - -commit 51ceeb695ba0d42bfc06cea67c8e8b2d269efc5a -Author: Mike Gemünde -Date: Thu Jun 17 06:12:33 2010 - - Extend test generation tool - - The test generation tool now handles all namespaces from exiv2 for - Canon makernotes. - -commit 6e214001a1815f4f725b0453b97d1fc7eec1b09e -Author: Mike Gemünde -Date: Mon Jun 14 03:28:13 2010 - - Extend the ParsePhoto example to also show the image size - - https://bugzilla.gnome.org/show_bug.cgi?id=621508 - -commit b664ec978484b78805e71a88c6fdf8d589564039 -Author: Mike Gemünde -Date: Mon Jun 14 03:13:22 2010 - - Add support for Canon CR2 raw files - - This commits adds support to parse Canon CR2 RAW files. Since this - format is based on the TIFF structure, reading is mostly based on - this code. - - https://bugzilla.gnome.org/show_bug.cgi?id=621508 - -commit e43bf7115c00f0f81f086e11b4eef69d9cd47143 -Author: Mike Gemünde -Date: Mon Jun 14 03:05:03 2010 - - Add Property Writeable to Image.File - - Since we start supporting some file formats just for reading - (at least for now) the property Writeable is added to Image.File - to indicate if a file can be written back or not. - - https://bugzilla.gnome.org/show_bug.cgi?id=621508 - -commit c8832c3dcaa62098e120eb52bb2a8b0394f6b412 -Author: Mike Gemünde -Date: Mon Jun 14 03:03:24 2010 - - Introduce the class BaseTiffFile as base for all Tiff-based file formats - - The class BaseTiffFile is introduced to factor out some behavior which is - common for all Tiff-based file formats. - - https://bugzilla.gnome.org/show_bug.cgi?id=621508 - -commit aa090622f9d0221af5014570b4e0bb1ccf98372e -Author: Ruben Vermeersch -Date: Fri Jun 18 12:01:48 2010 - - Add XMP node replacement, which will be used for sidecar support. - -commit 3dd2d467cbbb6556a26e8673f5161124c8554dbd -Author: Ruben Vermeersch -Date: Mon Jun 14 17:50:51 2010 - - Add stubs for hooking in RAW tests. - -commit b19bac3b7ed4e3ed258d4da55215b492a90d1b7c -Author: Ruben Vermeersch -Date: Mon Jun 14 17:36:06 2010 - - Only enable "make test" for git builds. - -commit e849883343b2b7c1f77af696946a6aed40ca4a2a -Author: Ruben Vermeersch -Date: Mon Jun 14 17:31:19 2010 - - Don't ship test suite in tarball. - - Only built from git. - -commit 83693068bcf0c98d6b27c2244f6eae41ea8325e4 -Author: Ruben Vermeersch -Date: Sat Jun 12 09:43:00 2010 - - Fix XMP initialization and fixture test. - -commit 00f130e287724be3dbe806136c6989b610854cb1 -Author: Ruben Vermeersch -Date: Sat Jun 12 09:18:55 2010 - - Add prism namespace. - -commit d460c17c4edf90b8d08ac2fb4db669c2d59a0c9f -Author: Mike Gemünde -Date: Thu Jun 3 03:10:56 2010 - - Add support for compressed PNG chunks - - Support for compressed PNG chunks is added by using - ICSharpCode.SharpZipLib.dll. Configure and compilation - is conditional whether ICSharpCode.SharpZipLib.dll is - available or not. - - https://bugzilla.gnome.org/show_bug.cgi?id=620438 - -commit 56b2fa9e773bb39f78c34ce623b633ae37378e9e -Author: Ruben Vermeersch -Date: Sun May 30 15:51:12 2010 - - Fix some typos in the comments. - -commit b2abb6b51f8718fadb9245824c848de6ff054a14 -Author: Mike Gemünde -Date: Thu May 27 03:27:37 2010 - - Add tests for PNG support - - This commit adds a bunch of tests for the PNG support. The sample files - are created with GIMP and modified with exiftool. - - https://bugzilla.gnome.org/show_bug.cgi?id=619921 - -commit 94b8bfc406bda2231a0239782bdc0b8a819487e0 -Author: Mike Gemünde -Date: Thu May 27 03:25:04 2010 - - Introduce support for PNG files - - This commit introduces support for PNG files. A PNG file is parsed - completely and XMP metdata and PNG keywords are extracted. Additionally, - some image properties such as height and with are determined. - - https://bugzilla.gnome.org/show_bug.cgi?id=619921 - -commit d1e8903491c89c7a015c748358084ba61f15c200 -Author: Mike Gemünde -Date: Tue May 25 14:34:07 2010 - - Create class ImageBlockFile for image files organized with data blocks - - Some image file formats are organized as data blocks which can be reordered. - Those block are called 'segments' for Jpeg/Jfif files, or 'blocks' for Gif - files. Some of the blocks are metadata and handled by TagLib#. When metadata - is saved back to file, the following must be typically done: - (1) some of the blocks have to be deleted - (2) other blocks are overwritten with the new metadata - - The new class ImageBlockFile allows to mark some blocks in the file as - metadata. When metadata is written back to file, the blocks which can be reused - are overwritten, the others are deleted. The File-classes for Jpeg and - Gif can now share this functionality. - Currently, ImageBlockFile only supports saving one data block (which - may contain multiple metadata blocks) and removing all other marked - blocks in file. That is fine for the currently implemented file formats, but - may be changed in future. - - https://bugzilla.gnome.org/show_bug.cgi?id=619921 - -commit 6c5c56ca76d6bc4c976dfbf5a18eab324bcac390 -Author: Ruben Vermeersch -Date: Sun May 30 10:54:21 2010 - - Fix unused variable warning. - -commit 014eeaaaa25629aae1589f5c346bcda4dccc2375 -Author: Mike Gemünde -Date: Fri May 28 03:38:44 2010 - - Remove CommentTest for jpeg test without metadata - - It does not make sense to have that test here, because a comment - cannot be added, when no tag is present. And it is against the current - taglib policy to add tags without a request from the user. - - https://bugzilla.gnome.org/show_bug.cgi?id=619920 - -commit 6446fd2116446e67335c0e5c21b2ceda854a7667 -Author: Mike Gemünde -Date: Thu May 27 09:05:59 2010 - - Add Function which ensures that all possible image tags for an image file are in place - - https://bugzilla.gnome.org/show_bug.cgi?id=619920 - -commit 20c02ec406477c39edf57d90605c784e6f3e41fc -Author: Mike Gemünde -Date: Thu May 27 09:06:43 2010 - - Add Test to ensure that the ImageTag properties work correctly - - https://bugzilla.gnome.org/show_bug.cgi?id=619920 - -commit d11b9bfe861b47e0bbfd3a999376bdeb265cb802 -Author: Mike Gemünde -Date: Thu May 27 08:46:29 2010 - - Add more flexible PropertyModificationValidator - - The new class PropertyModificationValidator allows to test modifications for - every property defined in ImageTag. This makes it more flexible to test them - all. - - https://bugzilla.gnome.org/show_bug.cgi?id=619920 - -commit a8651759588cc587b20dad4a2cabf1a189925f8d -Author: Mike Gemünde -Date: Thu May 27 03:07:09 2010 - - Add some properties which are usefull for image tags - - The property Creator is added to ImageTag. The properties - Copyright, Comment and Title are implemented in CombinedImageTag - to reuse them from Audio/Video. - - https://bugzilla.gnome.org/show_bug.cgi?id=619920 - -commit 2f27f26fc3aad9f256942c4ea64e4a00f6a0384c -Author: Mike Gemünde -Date: Thu May 27 08:11:04 2010 - - JpegComment need not to be terminated by 0 - - Some programs set an jpeg comment which is not terminated by a 0. Therfore, - we cannot remove the last character in every case. Rather, check for - a terminated string. - - https://bugzilla.gnome.org/show_bug.cgi?id=619920 - -commit f3309790ba158f3c0b460c87260b74876dfa2a10 -Author: Ruben Vermeersch -Date: Sun May 23 08:02:07 2010 - - Remove a bit of unreadable code. - -commit c71ae99fe735b4a07387360a561554a597a0be56 -Author: Mike Gemünde -Date: Sun May 23 07:23:38 2010 - - Add tests for GIF support - - This commit adds a bunch of tests for the GIF support. The sample files - are created with GIMP and modified with exiftool. Some sample files are - hand-edited to provide input data for some special tests. - - https://bugzilla.gnome.org/show_bug.cgi?id=619432 - -commit da6378ddd68eccc82c478f4da66399d912e413ac -Author: Mike Gemünde -Date: Sun May 23 07:21:53 2010 - - Add Validator to test removal of tags from files - - A new Validator for the image tests is added which can be used to - test if tags are correctly removed from files. - - https://bugzilla.gnome.org/show_bug.cgi?id=619432 - -commit 63ccf602c6523d1aa66b9f506b16a7d9f4c4018b -Author: Mike Gemünde -Date: Sun May 23 07:06:24 2010 - - Extend Validators to specify an own comment string for the test - - The current implementation of CommentModificationValidator and - TagCommentModificationValidator uses a fixed comment for testing. - This commit extends the Validators that the comment string can be - changed and an arbitrary comment can be used for the test. - - https://bugzilla.gnome.org/show_bug.cgi?id=619432 - -commit d731abbab07c83242fd63ddb67ebd215f02bb8a5 -Author: Mike Gemünde -Date: Sun May 23 07:03:07 2010 - - Introduce support for GIF files - - This commit introduces support for GIF files. A GIF file is parsed - completely and XMP metadata and GIF comments are extracted. Additionally, - the size of the image is extracted. Since GIF files can be used as - an animation, it would be reasonable to determine some Properties - which are related to Audio/Video files. This is currently not covered. - - https://bugzilla.gnome.org/show_bug.cgi?id=619432 - -commit 68722264132abced296ccfa049d90b6549fecddf -Author: Mike Gemünde -Date: Thu May 20 09:32:54 2010 - - Remove uneccessary if condition in CombinedImageTag - - https://bugzilla.gnome.org/show_bug.cgi?id=619200 - -commit 9c321e650273c9f890d706a5599d8c813a2b201d -Author: Ruben Vermeersch -Date: Sun Apr 11 08:17:40 2010 - - Make the initialization of XmpTag thread-safe. - -commit ecb22bf31b518a54f085b86a8f96d8a69c1d5548 -Author: Ruben Vermeersch -Date: Sat Apr 3 08:21:26 2010 - - Fix warning, add docs. - -commit d63b87f909fdb92e3cdb75d7c31d91f0b73d9269 -Author: Ruben Vermeersch -Date: Sat Apr 3 08:21:13 2010 - - Add missing Dispose () doc block. - -commit 0ef04eaab535d1baa030fef0042f766fb9ce8b61 -Author: Ruben Vermeersch -Date: Sat Apr 3 07:30:18 2010 - - Ignore monodevelop test results. - -commit 13a407f2a8e8a4731787cb7068047135bcc4d1ea -Author: Ruben Vermeersch -Date: Sat Apr 3 07:28:23 2010 - - Skip visual comparison on large TIFFs. - - Running unit tests became too slow on my netbook. Remember that you can run the - full set of validators by running: - - make run COMPARE_LARGE_FILES=1 - - Should be done before each merge/release. - -commit 3d176ca43b1dea87b6ba0e3667416909d4059d13 -Author: Ruben Vermeersch -Date: Sat Apr 3 07:26:12 2010 - - Add support for value pairs in unit test generator. - - Exiv2 has the stupid habit of printing a list of values joined by a comma. - - This means that a field that looks like this: - - [ "a, b", "c, d" ] - - Is printed as: - - "a, b, c, d" - - Fortunately we can use the length field to detect this and do the right thing. - -commit 1ea7a011e2de479320a3948a359ccf276969afe9 -Author: Ruben Vermeersch -Date: Sat Apr 3 07:24:56 2010 - - Fix exception for files without orientation entry. - - Trying to cast null to an ImageOrientation enum member throws an exception. - Fall back to TopLeft to avoid it. Unit test added to test this. - -commit eeb815ed8e04671a0a429261859d42af030cb61b -Author: Ruben Vermeersch -Date: Sat Apr 3 07:06:07 2010 - - Add aux XMP namespace. - -commit dbd404b4a025f0c6e11b2df825ab03bd5fe0e805 -Author: Ruben Vermeersch -Date: Sat Mar 20 13:05:00 2010 - - Fix XMP unit test failure. - - We disagree with exiv2 on the meaning of Struct. In Taglib#, struct is meant to - denote parseType=Resource types only, not the shorthand equivalent. Also see - XmpNode.RenderInto() - -commit dd7d2ded96bdf310b8e96f08bcf654aba2b153e5 -Author: Mike Gemünde -Date: Fri Mar 5 04:39:21 2010 - - regenerate basic tiff test with generation tool - -commit 901cab9d0d27d0428f098d49f7a8bc9775f30bda -Author: Mike Gemünde -Date: Thu Feb 11 16:17:40 2010 - - Add a bunch of new tests for tiff and jpeg - -commit 0c164d4e844aacb8b449d380b11db0b18f61c641 -Author: Mike Gemünde -Date: Thu Feb 11 16:14:13 2010 - - Extend GenerateTestFixture - -commit 8640ef4e11e9a2ba107bf98edac9b3394b364408 -Author: Mike Gemünde -Date: Thu Feb 11 16:13:11 2010 - - First implementation of tiff-writing - -commit fd87a160d8f5238db3d1ee7d4845a2a2f439b8f9 -Author: Ruben Vermeersch -Date: Tue Feb 9 09:14:13 2010 - - Replace fubar namespace - -commit 92bc4a1b40aeebf23cfdbb5fcec9da216eaface5 -Author: Ruben Vermeersch -Date: Sat Feb 20 10:17:51 2010 - - Monodevelop build fixes. - -commit 90b7c1527bedf4b738940b7e5ab4da2f1cec62a6 -Author: Ruben Vermeersch -Date: Sat Feb 20 09:41:51 2010 - - Use autotools to build src/ - -commit 32e16e3a90ef37854ed5896e78f2122f661d9b63 -Author: Ruben Vermeersch -Date: Sat Feb 20 09:41:28 2010 - - Make NamespacePrefixes public. - - Needed for the unit test generator. - -commit 40dbaee8956348bb8b7fb491e4a3985c733a521d -Author: Ruben Vermeersch -Date: Tue Feb 16 12:18:45 2010 - - Kill all warnings - - This now means we can build without any warnings! - -commit 9230695e84e8f7f414728816ab08439e63579442 -Author: Ruben Vermeersch -Date: Sat Feb 13 09:55:35 2010 - - Fix build in Monodevelop. - - This was done against a Monodevelop version from trunk, but it should work with - any reasonably new version. Unit tests are synchronized with the Makefile, the - main assembly uses a special .sources file which does not allow that trick. - Might deprecate that one at some point. - - The tests makefile was modified to allow building in Monodevelop. - -commit fd429ea366b095cf8d67294e721c2efb85b3e5e2 -Author: Ruben Vermeersch -Date: Sat Jan 23 11:26:55 2010 - - Replace JpegEmptyTest. - - This new test highlights one of the problems that CombinedImageTag currently - has: if there's no metadata tag capable of storing the field, the change will - be lost. We should try to accomodate that. - -commit 8ab09e06b6e810794681e9fc43e40fcf647ce149 -Author: Ruben Vermeersch -Date: Sat Jan 23 09:55:31 2010 - - Remove compile warning. - -commit e705fd4ecbd723efbb8e5eaf00cd4248118b4581 -Author: Ruben Vermeersch -Date: Sat Jan 23 09:53:03 2010 - - Use String.Empty as the default value for Keywords in CombinedImageTag. - -commit fc04c52a18fdcba1c58a6bff20696414c77f6acd -Author: Ruben Vermeersch -Date: Sat Jan 23 09:49:56 2010 - - Ignore three failing tests. - - This doesn't mean that we don't need to fix them, but I got tired of parsing - them every time I compile my code. - -commit 443a43c7fe516d3017396c48fb631b7d3e1282d3 -Author: Ruben Vermeersch -Date: Sat Jan 23 09:47:02 2010 - - Replace Panasonic test by much expanded version. - -commit 92995954ce437aeccc95e56bd7f0df7bee364bdd -Author: Ruben Vermeersch -Date: Sat Jan 23 09:36:02 2010 - - Add a bunch of Panasonic makernote entry tags. - -commit cb3300243013283c8f6d5ce06f9c0fefeb4363aa -Author: Ruben Vermeersch -Date: Sat Jan 23 09:28:47 2010 - - Replace the Nikon1 test with a generated one. - - This one tests all the original assumptions (including properties), but also - all the fields that weren't checked. - -commit 93fda71c1833ac30d95d7ad1471b4b4192eec88c -Author: Ruben Vermeersch -Date: Sat Jan 23 09:23:34 2010 - - Add a ton of Nikon3 IFD entry tags. - -commit 0cd061e536fc54cdee747a4a7288566eaf16292a -Author: Ruben Vermeersch -Date: Sat Jan 23 08:58:36 2010 - - Add support for generating test fixtures for Panasonic files. - -commit 33880f7723388699fc8cfd00abc62ca8aa2eedad -Author: Ruben Vermeersch -Date: Sat Jan 23 08:43:29 2010 - - Add conditional for running slow image comparisons. - - Comparing huge files is slow. Therefor, we don't do that by default. If you - want to run the full tests, you'll need to pass the COMPARE_LARGE_IMAGES flag: - - make test COMPARE_LARGE_IMAGES=1 - - It's best to do this occasionally for sanity reasons, but you probably don't - want to do this every time you compile your code. - -commit 5e4a20af289c2ed2b5148641331e25174dd3170d -Author: Ruben Vermeersch -Date: Sat Jan 23 08:42:53 2010 - - Make sure GDK is initialized. - -commit 50ffad60a1362c091a5d632b2bc13677bda5ee70 -Author: Ruben Vermeersch -Date: Sat Jan 23 07:05:39 2010 - - Implement visual validation of image data. - - This means that not only the metadata is checked pre/post write, but also the - image data itself. This is done by reading the image using GdkPixbuf (RAW - support still TODO) and then rendering it to a PNG without metadata. - This byte dump is then compared for the original and the modified file. - - This makes the tests a bit slower. I don't care. - -commit a19e70680880efbafc9853e1624fa7dcb3202779 -Author: Ruben Vermeersch -Date: Sat Jan 23 07:04:12 2010 - - Add missing Nikon3 makernote tag. - - Tons of them left to do. - -commit 9a8b89588c1dae7c1a80958feee27d32379faa7f -Author: Ruben Vermeersch -Date: Sat Jan 23 06:09:39 2010 - - Always reuse the same NoModificationValidator in unit tests. - -commit 828a6c147f6dfb38267b847063d37a36284e1a19 -Author: Ruben Vermeersch -Date: Sat Jan 23 05:25:57 2010 - - Let GenerateTestFixture use Nikon3MakerNoteEntryTag. - -commit 62f1af61fef25d02e116dda01f7b1b42e0ec3601 -Author: Ruben Vermeersch -Date: Sat Jan 23 05:25:33 2010 - - Fix wrong value for the Preview tag. - -commit aba2b7b59ca3658b00cf7ea2c25469ea7e63e6b5 -Author: Ruben Vermeersch -Date: Sat Jan 23 05:20:34 2010 - - Add missing IFD tags for ratings. - -commit 6d39456992c538993ec89cfa030eda8fab55d51f -Author: Ruben Vermeersch -Date: Sat Jan 23 05:05:30 2010 - - Add some comments to Nikon3MakernoteReader. - -commit e0ca4fe802b209fc7916f1f6e06e02c198461502 -Author: Ruben Vermeersch -Date: Sat Jan 23 05:00:16 2010 - - Add Nikon3MakerNoteEntryTag to remove hex value in Nikon3MakernoteReader. - -commit 286b1e327ed657b860c2d088c3bcdbb8eb6c7131 -Author: Ruben Vermeersch -Date: Sat Jan 23 04:49:23 2010 - - Split IFD entry types out into separate files. - - Moved these into a new namespace and updated all files accordingly (unit test - generator included). - -commit 87edb107fe6a373c44ac7102bd77bb2378caafbf -Author: Ruben Vermeersch -Date: Sat Jan 23 04:30:49 2010 - - Clean up the IFD-offset fix a bit and add some docs. - -commit f7c8f24e435268aa3430af1f60140435fc1595b4 -Author: Mike Gemünde -Date: Tue Jan 12 15:06:23 2010 - - Fix for the Nikon makernote preview image - - The jpeg file of the nikon2 contains a preview image referenced - by the makernote but not stored along with the other makernote data. - Additionally, the preview image ifd does not contain a next-ifd - pointer. This commits handles that and parses the preview image - ifd. - -commit b95dbadf74d1a7dd8ba605c52cab1dfbff869673 -Author: Ruben Vermeersch -Date: Mon Dec 28 18:38:28 2009 - - Fix XapTest naming. - -commit 5d535fc8a949b111155b24d432868927ca70382a -Author: Ruben Vermeersch -Date: Mon Dec 28 18:37:14 2009 - - Expand JpegCanonZoombrowserTest with all available values. - -commit c0f135011487ab5c297fcda9c21a4b4d27afb0ca -Author: Ruben Vermeersch -Date: Mon Dec 28 18:25:55 2009 - - Add a ton of missing IFDEntryTags, handle them. - -commit 76ef1952856d46aa5c12c7b95542503aab358bb3 -Author: Ruben Vermeersch -Date: Mon Dec 28 13:42:39 2009 - - Split out UserComment code into a separate IFD entry. - - This allows it to be tested with generated test cases. - -commit bacff80016206092652bc9c3e4c7ce2041856f78 -Author: Ruben Vermeersch -Date: Mon Dec 28 12:05:37 2009 - - Add custom exiv2 data-extraction programs. - - This adds two custom c++ programs that allow for much better data extraction. - Bad characters in the output of exiv2 caused certain keys to be missed. - -commit 5c81b09a7566d6c87799308c4984f60b8c874844 -Author: Ruben Vermeersch -Date: Mon Dec 28 08:26:45 2009 - - Fix CanonSi handling as well. - - Canon MakerNotes get validated correctly now. This means that they are - preserved when writing. Awesome. - -commit 3e2113e0d84470799e0990b974953c1293e5a756 -Author: Ruben Vermeersch -Date: Mon Dec 28 08:23:11 2009 - - Fix handling of CanonCs directories from exiv2. - -commit ce8e07334dbf7d0e7e9e42089d8fc66f99901f52 -Author: Ruben Vermeersch -Date: Mon Dec 28 05:53:45 2009 - - Trim output for empty strings. - - Due to exiv2's output not having delimiters, there is no way we can figure out - how long an empty string is (some fields in Nikon makernotes are 12 empty - spaces or 15 empty spaces). Therefor we trim the parsed value from Taglib# and - hope it equals to the empty string. This is one of those cases where generated - unit tests will not be 100% correct, yet still decently sufficient. Note that - trimming only happens if the expected output is empty. Otherwise, values are - compared as-is. - -commit 1e1238a6f9cc49559ae09c89ad743bea6333838c -Author: Ruben Vermeersch -Date: Mon Dec 28 04:58:38 2009 - - Fix MakerNote handling in unit test generator a bit. - - This includes: - * Correctly identifying the Nikon preview as a SubIFD - * Ignoring the exiv2 made-up entries. - -commit 2977064ce5625bad91e17e64ecda83cd4954df35 -Author: Ruben Vermeersch -Date: Mon Dec 28 04:57:37 2009 - - Add custom IFD reader for Nikon3 MakerNotes. - - Nikon makernotes have a special sub-ifd for previews. This reader picks up on - the relevant tag and makes sure it's parsed. - -commit 6eac0efb479d1e73f4a37f422c8da5f6c7214bdb -Author: Ruben Vermeersch -Date: Mon Dec 28 04:02:26 2009 - - Verify that simple XMP text nodes don't have children. - -commit c54627eff721c8c8114188b5e93bb7f62b608b78 -Author: Ruben Vermeersch -Date: Mon Dec 28 04:01:25 2009 - - Replace XapTest with a generated fixture. - - This version has a much better coverage of the metadata and features half a - dozen of modification tests. - -commit cd087e86d4c62f10ca6375cf1a820ef7c80113ce -Author: Ruben Vermeersch -Date: Mon Dec 28 02:45:31 2009 - - Add empty constructor for files that don't have a comment yet. - -commit 3171805c57a9078f083c905e0275c6d4d75e687b -Author: Ruben Vermeersch -Date: Mon Dec 28 02:31:07 2009 - - Ensure correct naming of GPSInfo and Thumbnail members. - -commit ec8ac47259a16e009871fb0b7427d4d14cf0850e -Author: Ruben Vermeersch -Date: Sat Dec 26 14:17:09 2009 - - Fix some exiv2 quirks. - -commit c49002b6025b69fdf8eea07d038906fabae80f27 -Author: Ruben Vermeersch -Date: Sat Dec 26 14:02:27 2009 - - Also generate XMP fixtures. - -commit 6ef39781c3389cdf6b8f35ed7de08a598e2131ff -Author: Ruben Vermeersch -Date: Sat Dec 26 11:52:52 2009 - - Add a ton of missing namespaces for XMP rendering. - -commit 5c2d5d4ecf57dc70a374e2a610716ebc84b3f29a -Author: Ruben Vermeersch -Date: Sat Dec 26 11:34:48 2009 - - Correctly test Byte arrays. - -commit 608e6912a809f284dbdddc4b50e8ff2680f59fa0 -Author: Ruben Vermeersch -Date: Sat Dec 26 11:34:25 2009 - - Fix Thumbnail test case generation. - -commit febde3d56b47b7c8804fd8ff1a1bf98dc5840ab5 -Author: Ruben Vermeersch -Date: Sat Dec 26 10:57:19 2009 - - Generate test cases for the GPS IFD. - -commit b0a8f76e54fddc1b4a4a572e8ca73b7869018662 -Author: Ruben Vermeersch -Date: Sat Dec 26 07:57:52 2009 - - Initial version of unit test generator. - - This uses data from exiv2 to create a test case. Should be taken with a grain - of salt though, I'm suspecting to have found a bug in exiv2 while testing this. - -commit 668ec86b5f3636524533d53cdab417816795fee7 -Author: Ruben Vermeersch -Date: Sat Dec 26 07:56:59 2009 - - Also test a write with no changes in JpegCanonZoombrowserTest. - -commit 092ead732bd54504a0e56197dc5784d35f5623d8 -Author: Ruben Vermeersch -Date: Fri Dec 25 07:28:52 2009 - - Validate orientation. - -commit c437c647898aa38ec2f69bb35d2c9ed1fa7784a9 -Author: Ruben Vermeersch -Date: Fri Dec 25 07:24:52 2009 - - Add a new validator based testing framework. - - This gives us a much better coverage of write/rewrite testing. - -commit 0c87736cf6c349136d794e2c697b34d24baffeed -Author: Ruben Vermeersch -Date: Thu Dec 24 11:26:22 2009 - - Register the MicrosoftPhoto namespace and correct it. - - Some files get written with an invalid namespace (according to the XMP specs, - namespaces should end with '/' or '#'). - -commit 1d7bcaa386e91e387be65338a099006dcc852af2 -Author: Ruben Vermeersch -Date: Thu Dec 24 11:14:21 2009 - - Factor out a common method. - -commit d437ce4ef8bf7571cdc041328171a197cd0d3f14 -Author: Mike Gemünde -Date: Mon Dec 7 08:15:18 2009 - - Add tests for Rational and SRational - -commit 0082efab1c5937e2b5ba93da3c2144fbfceca12d -Author: Mike Gemünde -Date: Mon Dec 7 07:20:26 2009 - - add Comments to IFD namespace and remove a bunch of warnings - -commit d52d71f52fb679babc7a73f4aca94425a00eb0dd -Author: Mike Gemünde -Date: Sun Dec 6 10:58:05 2009 - - fix Jpeg strip tool to substitue greates found data segment - -commit 1d06c80962c1140be37daa1f1594d9920bdddb26 -Author: Mike Gemünde -Date: Sun Dec 6 10:20:38 2009 - - Fix some documentation warnings - -commit 272d92e551fbe5996580247bebf387a0e0514886 -Author: Mike Gemünde -Date: Wed Dec 2 15:12:50 2009 - - do not read data in other segments even if it is referenced - - This is a quick hack to fixes the Sony makernotes, where some data - is stored in other segments than in the exif segment, but referenced - by an makernote entry. - -commit 105a95741ce0ce117506208320ac66ecda11a26f -Author: Mike Gemünde -Date: Wed Dec 2 14:10:47 2009 - - complete property tests - -commit 590907408af1618907266513ccec7edbafe8eb40 -Author: Mike Gemünde -Date: Wed Dec 2 13:17:29 2009 - - add support to read Sony makernotes - -commit 8f7b44ef7032dde19cf7834dd1964bb4a9a67eab -Author: Mike Gemünde -Date: Wed Dec 2 08:15:08 2009 - - Do not render jpeg segments if they are too big - -commit 0fb069d15f964df17ed12405097cb45c65d9ee4e -Author: Mike Gemünde -Date: Wed Dec 2 08:02:23 2009 - - add test for the case the metadata segments are too big to fit into a jpeg segment - -commit 17cfef37d3bdbc368cbfe0e2064be87c4f858aea -Author: Mike Gemünde -Date: Sun Dec 6 11:13:01 2009 - - Cleanup Jpeg related stuff - -commit 796754e6c5a685382f7c094ae233efd967cbe050 -Author: Mike Gemünde -Date: Mon Nov 30 14:14:24 2009 - - preserve existing JFIF header in jpegs - -commit 88f372927cb23c852da42f89051468110410731b -Author: Mike Gemünde -Date: Sun Dec 6 11:12:32 2009 - - Add support to write XMP data in jpegs together with some basic tests - -commit 207592ab98fd6dc5f672b5724921518fc026aef8 -Author: Mike Gemünde -Date: Sun Nov 29 05:21:55 2009 - - complete some copyright notice - -commit f7702f8b0d3159e4cbbebee039831888d77365ab -Author: Mike Gemünde -Date: Tue Dec 1 02:14:55 2009 - - Use own class for Makernotes to take care about some special things - -commit 2b8c587afde382f4cb7848777020aad11ab8b987 -Author: Mike Gemünde -Date: Sun Nov 29 04:04:06 2009 - - Add tests for File.Find and File.RFind which fail for current implementation - - The test cannot succeed for current imlementation of Find and RFind - because those methods only consider the greatest partial match and - do not take care about smaller ones. - -commit dd00c6327b28948fdb403b1c61434f7b4af591f6 -Author: Mike Gemünde -Date: Sun Nov 29 03:50:56 2009 - - Fix File.RFind partly and add a test - - RFind is fixed to do not crash when file size is smaller than the read buffer. - A test is added to take care about RFind and Find methods of the class File. - However, there is still an issue with matches spread above different buffer - reads. - -commit 5b15309936b714426715c5769ddab92d91753ecb -Author: Paul Lange -Date: Fri Dec 4 08:32:04 2009 - - Update MonoDevelop project files - - This commit updates the MonoDevelop projects files and makes it possible to build in MonoDevelop. - Furthermore it creates a project which includes all tests and runs nunit-console2 after a successful build for them. - -commit 066624c09e92fb3561d3639d7733a6289de9504e -Author: Paul Lange -Date: Sun Dec 6 09:16:31 2009 - - Fix filename in header - -commit 33cf614f999eb20a60e44b5c1c1ffe7ce6604639 -Author: Paul Lange -Date: Sat Dec 5 13:25:11 2009 - - Document ImageOrientation items - -commit ed9e22f2db4372a3bd368aee13feaa563e5790fd -Author: Paul Lange -Date: Sat Dec 5 07:13:55 2009 - - Remove ImageOrientation.Unknown value - -commit 672933310089a18b594205d4b463b854f6bde053 -Author: Paul Lange -Date: Sat Dec 5 05:59:31 2009 - - Add documentation to ImageOrientation - -commit 7d2416aa1f394dfc547a5586a35908139260b860 -Author: Paul Lange -Date: Sat Dec 5 05:56:20 2009 - - Convert the Orientation property to an enumeration. - -commit cb4c85fcb1e247f8b15e25665c963edc1fee31b3 -Author: Paul Lange -Date: Thu Dec 3 17:16:57 2009 - - Documentation fixes - -commit 063e41e52afbb71d6763f98da64564f47a439e29 -Author: Paul Lange -Date: Thu Dec 3 16:59:47 2009 - - Update test to test latest properties - -commit 7f56151dfc9e7108accdb3da57aea36f187cd558 -Author: Paul Lange -Date: Thu Dec 3 16:58:26 2009 - - Implement Orientation property - -commit a8a2f8a8888bd9dc9e90aae1e453f09268617e36 -Author: Paul Lange -Date: Thu Dec 3 10:44:06 2009 - - Add FocalLengthIn35mm Tag - -commit fd8c2f912e75d8072799f6763397fa7d9b998408 -Author: Ruben Vermeersch -Date: Sun Nov 29 17:00:27 2009 - - Register stDim namespace. - - Also fix crap spelling in unit test. - -commit aa967c6431e74d7d1feb0568dadf8ab0b693138b -Author: Ruben Vermeersch -Date: Sun Nov 29 16:48:51 2009 - - Add XMP rendering for most spec samples. - - Handles most of the spec samples correctly, except for the one I still have to fix. - - Fixed bugs in the parser along the way. This includes the fact that I'm not keeping - track of a new type of node called Struct. This is always rendered into a parseType - Resource. - -commit ad8163f097f9337e60699689a241cc239d7b0849 -Author: Ruben Vermeersch -Date: Sun Nov 29 14:18:52 2009 - - Add some documentation. - -commit b69b78b64b118fb5752a9d4faed3f3f9761fcb01 -Author: Ruben Vermeersch -Date: Sun Nov 29 14:18:39 2009 - - Fix some malformed XML comments. - -commit 5cb8ccfe8448ead95872a6b566da4e8afa10e4b9 -Author: Ruben Vermeersch -Date: Sun Nov 29 14:12:27 2009 - - Register the xmpTPg namespace. - - Makes the rendering of files that use this namespace nicer, it means they will - get xmpTPg:element nodes instead of ns1:element nodes. Off-course, all of this - doesn't matter when you use a proper namespaced-XML parser (like our code), but - I bet there are a ton of stupid implementations out there. - -commit 49f5de819a962dbcd63026cf75d71577737c8029 -Author: Ruben Vermeersch -Date: Sun Nov 29 14:09:48 2009 - - Initial XMP writing! - - Breaks a ton of stuff, since only simple values are supported for now. - -commit 559781fd057913e77cd913b56ed712bf43292582 -Author: Ruben Vermeersch -Date: Sun Nov 29 10:01:22 2009 - - Add comment from last commit message, serves as good explanation. - -commit fe9396868ad844de9aa00021ebd1964555d0cbbf -Author: Ruben Vermeersch -Date: Sun Nov 29 09:09:00 2009 - - Convert the XMP tests into idempotency tests during XMP rendering. - - This makes every test do the following: - * Parse the string and validate if all expected data is there. - * Render back into a string, parse that new string and revalidate. - - It's important to note that I'm testing for semantical idempotency: data that - was in will stay in. The representation might change though. This is okay, - nearly all XMP libraries do this. Doing the reparse and revalidate ensures - that whatever it generated is valid XMP and contains the same information. - -commit 423bc7bfbbd5bfb272039a2b0389847b51574e09 -Author: Paul Lange -Date: Sat Nov 28 13:46:59 2009 - - Remove old file - -commit 1506cb5c70aa01865583efbfe9ffc7c451f1b5af -Author: Paul Lange -Date: Sat Nov 28 13:42:00 2009 - - Add Makernote test to Sony test. - -commit f4b811a449dd66ed9eae3dde56afcec39b4ab1cd -Author: Paul Lange -Date: Wed Nov 25 17:56:41 2009 - - Create test for Sony Alpha 200. - -commit a27ea7cbc1795fb637d4daed8bac3df8a326ecfa -Author: Stephane Delcroix -Date: Wed Nov 25 10:11:47 2009 - - Guesstimate the jpeg quality from DQT tables - -commit 02e4eab345ac9fd33b1230f8a9a2f4be5e0acb23 -Author: Stephane Delcroix -Date: Wed Nov 25 04:36:37 2009 - - Define std tables - -commit b360005357e9b2b5c38ce45ce604072314be091d -Author: Stephane Delcroix -Date: Wed Nov 25 09:57:34 2009 - - unit test for image width and height - -commit 3d647645881d5f2d3ef71c4691b31a89fa2a7b12 -Author: Stephane Delcroix -Date: Wed Nov 25 09:45:39 2009 - - Read width and height from SOFn segment - - Parse SOFn segment, retrieve WxH, use them to set the properties - -commit c37b12648f7e48bfcd9aa627a171924f07e180ff -Author: Stephane Delcroix -Date: Wed Nov 25 03:48:10 2009 - - replace if/elif/elif by a switch - -commit 9728f102cd9716b27a834c6e933592d4449e7c5e -Author: Stephane Delcroix -Date: Wed Nov 25 03:45:06 2009 - - only call ReadSegmentMarker once - -commit 88c3005d9470e5df8c8a17c0b20d97727543ccb1 -Author: Stephane Delcroix -Date: Wed Nov 25 03:27:09 2009 - - complete the Marker table - - Add missing markers, use the TagLib.Jpeg.Marker type instead of byte in Jpeg.File - -commit abb724e102fff70baa5841ddb9be02d4bdea374a -Author: Ruben Vermeersch -Date: Fri Nov 20 16:32:47 2009 - - Fix a ton of warnings. - -commit 055de25226d4f1179e7b95bd5496972f3d343c91 -Author: Ruben Vermeersch -Date: Fri Nov 20 16:24:36 2009 - - Split XmpNodeType into another file. - -commit e71b79d06b6593d5a98f32e369ea60b74974c2dd -Author: Mike Gemünde -Date: Sun Nov 15 14:28:56 2009 - - ... and remove the SkipDataSegment - - We only recognize metadata segments occuring before the data segment in - the file. This is the same way exiv2 handles it. - -commit 17d4042cd39490c54e1cc97c33103395b3f52698 -Author: Mike Gemünde -Date: Sun Nov 15 13:37:38 2009 - - Substitute SkipDataSegment() with a much faster implementation - -commit 1314b55a9bae19f9e582438f1ca7ae45f47adc02 -Author: Mike Gemünde -Date: Sun Nov 15 14:16:04 2009 - - Added test for reading and writing tangled Jpeg files - - Mostly, the image metadata is stored in Jpegs in the segments at the beginning of the - file. Some tests are added for files, where the metadata segments are tangled around - the file. Also a bug for writing such files back is fixed. - - Conflicts: - - tests/Makefile.am - -commit a67c36600bf8d9a3bf08e2e3c6b8600c448bbccd -Author: Ruben Vermeersch -Date: Sun Nov 15 14:03:38 2009 - - Disable a stray debug dump. - -commit 0b21d567869b31bcdb94e83d9ce19521f996ec58 -Author: Ruben Vermeersch -Date: Sun Nov 15 13:57:12 2009 - - Add a lot of XMP spec compliance tests. - - This uncovered a bug, which is now fixed and a bug that still has to be fixed. - -commit 014a77ae24536e215d46576c91ce5d0fe5c1dfd5 -Author: Ruben Vermeersch -Date: Sun Nov 15 11:21:00 2009 - - Move the XMP test to another test file. - -commit 4d7dc8a74e9daa2c698215d5c68fafeb93d21671 -Author: Ruben Vermeersch -Date: Sun Nov 15 11:20:08 2009 - - Drop a useless parameter on XmpTag and use string instead of ByteVector. - - This will allow me to write unit tests easier. - -commit bf5747d7bf5ee86979db797eedfd3147e5fc6ce0 -Author: Ruben Vermeersch -Date: Sat Nov 14 14:03:03 2009 - - Minimize sample, using tiggers awesome tool. - -commit 43658ce3ac52183a8fc26b4604077d9e19565909 -Author: Ruben Vermeersch -Date: Sat Nov 14 13:54:57 2009 - - Implement a missing XMP dialect, additional test. - -commit 839aa430542a495a89f8bccd3de45c43753c90db -Author: Ruben Vermeersch -Date: Mon Nov 9 11:46:37 2009 - - Ignore XML comments. - -commit 255d53a969a783beced00a726a3ac05be2060c75 -Author: Ruben Vermeersch -Date: Mon Nov 9 11:46:10 2009 - - Old versions of XMP were called XAP, also look for those tags. - - Unit test will follow. - -commit 501464daa156195c2005706aa5e0373915a93438 -Author: Mike Gemünde -Date: Sat Nov 7 05:15:27 2009 - - add very rudimentary support for Olympus makernotes - -commit f5edd229d8392dffde630d42fb3404729a6f4dc6 -Author: Mike Gemünde -Date: Sat Nov 7 05:13:43 2009 - - add very basic example to substitute the image data in a jpeg file with some (very small) dummy data - -commit 05f51cc1e883a6ce61573c881613d14e87d77742 -Author: Mike Gemünde -Date: Sat Nov 7 05:12:43 2009 - - add another Nikon jpeg test - -commit e4d3394d33f1dafccf0eb4cef565a6ba7a3c114d -Author: Mike Gemünde -Date: Thu Nov 5 17:13:17 2009 - - first introduction of reading and writing of nikon makernotes - -commit eb1f30ce21194fe7c30c661ae72818562d3c5cf9 -Author: Mike Gemünde -Date: Thu Nov 5 16:43:56 2009 - - Add more information to unit tests to easier find an error - -commit 1ea38571eada751b29fd95a49942f0fb37bfc608 -Author: Mike Gemünde -Date: Wed Nov 4 16:51:48 2009 - - remove comment tags if a null is set for comment - -commit 87f3bb32953b657a01e98476082458e9ee77afdb -Author: Mike Gemünde -Date: Tue Nov 3 17:26:28 2009 - - reduce warnings by adding some comments to IFDStructure methods - -commit 7b5b2d47f8a36c1b33ec0422b2f8bf5427f8c38a -Author: Mike Gemünde -Date: Tue Nov 3 02:15:00 2009 - - remove comment property from ImageTag - - The Comment property is also included as virtual member in Tag. So we - do not need to provide another default implementation. - -commit f85e1e1829b0adc27259e00af5ed0097266ab7d1 -Author: Mike Gemünde -Date: Tue Nov 3 02:13:10 2009 - - implement Comment property for JpegComment - -commit 79bbf6dbe4d577ff6212cd7b63da4025fec7e23a -Author: Mike Gemünde -Date: Tue Nov 3 17:29:24 2009 - - Rating in ImageTag should also be a Nullable type to allow removing the rating. - -commit cadcc5e60db30887bc60e25ed5fecb6ffa55a1c2 -Author: Mike Gemünde -Date: Tue Nov 3 17:09:30 2009 - - add support for the Altitude property in IFDTag - -commit 50313af3a3395e5d21da55eb051c222cda0a83ff -Author: Mike Gemünde -Date: Tue Nov 3 16:13:24 2009 - - change plain values to Nullable in ImageTag - - For a lot of properties, a scalar value does not make sense, since the default value has also a meaning. - To allow to express that a tag is not existant, we use now nullable types. This is the case e.g. - for ExposureTime or FocalLength. - - Conflicts: - - src/TagLib/IFD/IFDTag.cs - -commit 4db7440a13a33cd6dff37ad2df6425bd57101513 -Author: Mike Gemünde -Date: Mon Nov 2 17:47:10 2009 - - fix GPS stuff to allow also negative longitude values - -commit 1b4bd6c144ed2e35a98698547c88b7607ef035b6 -Author: Ruben Vermeersch -Date: Mon Nov 2 17:26:23 2009 - - Kill two more warnings. - -commit 32629b5f3b9b3755701b6b73a397c7ba889e81c6 -Author: Ruben Vermeersch -Date: Mon Nov 2 17:24:17 2009 - - Kill warnings due to incorrect usage of keywords. - -commit 8acb7b766891c03bbcd574f2d4f51de6b71804fd -Author: Ruben Vermeersch -Date: Mon Nov 2 17:02:43 2009 - - Fix a crash at XMP parsing due to nonstandard placement of xmlns attributes. - -commit 749c14e82cb7f72e6ffef81f98fb0ebeef96c508 -Author: Ruben Vermeersch -Date: Sun Nov 1 13:37:45 2009 - - Kill two warnings. - -commit afa443e0136c3babf51c864b9d88ad8cd2d59dc0 -Author: Ruben Vermeersch -Date: Sun Nov 1 03:52:29 2009 - - Kill more warnings. - -commit 82cc9ac2d66f77900ada7ede075d6a68993e1d92 -Author: Mike Gemünde -Date: Sun Nov 1 07:35:48 2009 - - add support to read and write GPS inforamtion in exif. - -commit 521d45753525830ca9656a345cef7139453210a9 -Author: Mike Gemünde -Date: Sun Nov 1 04:53:47 2009 - - use the values directly for an IFD array entry instead - -commit 920585b928b058332cf59b411aefa63ffafcd114 -Author: Mike Gemünde -Date: Sun Nov 1 04:44:06 2009 - - add support to write makernotes of Canon and Panasonic back to file - -commit 799b2aa1daa55bc8c8f3a65777bdb40df09966ad -Author: Mike Gemünde -Date: Sun Nov 1 03:02:57 2009 - - move image tests in own namespace - - The image tests are now contained in an own namespace. This is to not - flood the existing one with a bunch of image tests comming in the future. - -commit 875779f9e5d34e19478d739a454699a62bab8947 -Author: Ruben Vermeersch -Date: Sun Nov 1 02:57:38 2009 - - Cut down on the number of warnings. - -commit 2e5e7800de5726cc7695737271b2c3f80d723e76 -Author: Mike Gemünde -Date: Wed Oct 28 15:43:18 2009 - - fix warnings on use of obsolete methods in Bytevector - -commit cbc20f221e139c5cbd0b755bde2bb7a5ea93e887 -Author: Mike Gemünde -Date: Wed Oct 28 14:07:14 2009 - - add ThumbnailIFDEntry to handle thumbnail data correctly - -commit 3a19b17396873cc253a25fe46b23358b68222135 -Author: Mike Gemünde -Date: Wed Oct 28 13:10:49 2009 - - the id of on IFD entry type is also an unsigned short - -commit a6f8d00aec73cb73d024c7871d4d4d5445d84838 -Author: Mike Gemünde -Date: Wed Oct 28 13:07:15 2009 - - a tag of an IFD Entry is an unsigned short, so take an usnigned short for representation, too - -commit 3cb1a37881778072cc74835cdfa8cf1017d0dc7e -Author: Mike Gemünde -Date: Wed Oct 28 12:59:47 2009 - - move some of the renderer code to the IFD Entries itself - -commit c32734b0f03dcb8f541014df98ab9888ada5646f -Author: Mike Gemünde -Date: Wed Oct 28 12:26:38 2009 - - add Rational and SRational struct for IFD Entries - -commit ad18345b7f417e4b59a16582c3246b60bb342cea -Author: Mike Gemünde -Date: Tue Oct 27 17:53:47 2009 - - add unit test for Panasonic file (Exif, Makernote) - -commit bce29cacf6603d39f7847dda4695633dd9130e51 -Author: Mike Gemünde -Date: Tue Oct 27 17:51:35 2009 - - add support for some other Makernotes (Panasonic, Pentax) - -commit 2724f556a6d8a73249d384cfac65889b27b55325 -Author: Mike Gemünde -Date: Tue Oct 27 17:47:56 2009 - - add support for more entry types - -commit 557f95441d25bcaee3f14411d28790380422135a -Author: Mike Gemünde -Date: Tue Oct 27 16:42:18 2009 - - take care of restart marker in data segment of jpeg - - The markers 0xFFD0 ... 0xFFD7 are used as restart marker within the data segment. - So we must keep searching for the end of data instead of returning the marker. - -commit 9f17499d32f2dbdc02f5e2f2d35cd5bed4b0d3e8 -Author: Mike Gemünde -Date: Mon Oct 26 17:02:44 2009 - - add support for reading XMP keywords - -commit 41c56e19c0eac6b396193ef1370b7be842e2d961 -Author: Mike Gemünde -Date: Mon Oct 26 15:13:05 2009 - - adding GPS support in ImageTag - -commit 655de1f5442721a192a87fd42da21608880248bd -Author: Ruben Vermeersch -Date: Sun Oct 25 09:58:24 2009 - - Add an example (and test) app for photos. - -commit fbbff6a6716ffe37a9b04629cbb1da48f3346fbf -Author: Ruben Vermeersch -Date: Sun Oct 25 09:05:42 2009 - - Cut back on the number of warnings. - -commit 6cf5ab452f9fbc42f734f0e8ec7d76b18789c50f -Author: Mike Gemünde -Date: Tue Oct 20 16:31:17 2009 - - Extend UserComment handling for undefined data - - We can now handle undefined entries in the UserComment field. Since the program - CanonZoomBrowser decides to not fill the 8 byte correctly for an undefined entry, - we have to be more liberal for parsing it. - -commit ece09bcf9cb44b7ef47574d0e105c4695b33e003 -Author: Mike Gemünde -Date: Tue Oct 20 16:29:02 2009 - - Extend Reading of ASCII text fields - - Keep Adobe practice for reading ASCII field and only read it to the first '\0'. - Since more than one value can be stored and some programs fills the fields with - '\0's, this seems to be a reasonable choice to keep trouble away. - -commit 95520e015a2d2659eae04af7e21b1c51bfa47b97 -Author: Mike Gemünde -Date: Tue Oct 20 14:23:33 2009 - - Change also Model to IFD0 instead of ExifIfd - -commit 6e47449ef9fae5b06a9b4f8c9e74a77b95663d48 -Author: Mike Gemünde -Date: Tue Oct 20 14:11:03 2009 - - ImageDescription is part of IFD0 and not the ExifIFD - -commit 7e84a12193e17714aa9ea64b910719c46ce7b76a -Author: Mike Gemünde -Date: Tue Oct 20 13:47:28 2009 - - complete IFD entry tag ids - - The tag ids are fetched from http://www.awaresystems.be/imaging/tiff/tifftags.html. - Since the GPS IFD and the Interoperability IFD uses the same tag-id (1), we take - this change to split the ids into different enums, according to the IFDs or subIFDs - they occur. - -commit 8662c7a95c1c6fe551912493e1fd974974ecb682 -Author: Ruben Vermeersch -Date: Sun Oct 18 10:58:51 2009 - - Restructure IFD. Able to represent everything now. - -commit a43b49180ff0803cfc4cae5e6e26235d5d00b3b6 -Author: Ruben Vermeersch -Date: Sun Oct 18 08:20:42 2009 - - Prevent writing empty sub-IFDs. - -commit 403c87c10f6ff215eeb78d088ea4be4b0437b210 -Author: Ruben Vermeersch -Date: Sun Oct 18 07:16:39 2009 - - Add bits of the convenience API. - - Imposes ordering: Xmp before Exif before all the rest. - -commit 8dc9997baefbb92f7ddf68e3d339a053a0e74e79 -Author: Ruben Vermeersch -Date: Sun Oct 18 05:50:30 2009 - - Split IFD reading and rendering code into Readers and Renderers. - -commit eff47010115a487deaabc6217a38ae963c269764 -Author: Ruben Vermeersch -Date: Sat Oct 17 10:57:04 2009 - - Fix a couple of warnings. - -commit 21dc3e088e5fb8c0d6de86888aa65389fdc86830 -Author: Ruben Vermeersch -Date: Sat Oct 17 10:18:26 2009 - - Only expose tag types that make sense, move stuff around. - -commit c387fdb40d86c4de06b47646ef4e31b6f51136c8 -Author: Ruben Vermeersch -Date: Sat Oct 17 04:45:11 2009 - - Add common Image.File base class for image types. - - And some cleanups. - -commit db77414ae3974a58cc73e564139382a54bce8674 -Author: Mike Gemünde -Date: Wed Oct 14 17:28:31 2009 - - add support to read write some image properties by the ExifTag class - -commit 838f7d1d596add212957aa5fb9ff9b06a2156b88 -Author: Mike Gemünde -Date: Wed Oct 14 17:27:41 2009 - - add support to merge image properties in CombinedImageTag - -commit 4fbf51e36caa72285462f54912b172fe23b81c1d -Author: Mike Gemünde -Date: Wed Oct 14 12:41:31 2009 - - possibility to add new tags (Exif, GPS, IFD) to Jpegs - -commit a3ff09e1447c05ef8651af6195953b66beeb60e9 -Author: Mike Gemünde -Date: Wed Oct 14 08:36:29 2009 - - introducing Image.ImageTag and Image.CombinedImageTag - - The both classes are used to provide a unified access to - all types of image metadata. - -commit 5c1c307318c23f0f582204bd9424b542924d7567 -Author: Mike Gemünde -Date: Tue Oct 13 18:23:31 2009 - - support to add JpegComment to Jpeg File - -commit 4827d042e87d0b7c25c89adc66adaa5105edb633 -Author: Mike Gemünde -Date: Tue Oct 13 16:42:06 2009 - - Add support for reading and writing the GPS Directory - -commit c995075b4191fe47929e96cdd0f77d64d1ecd3cc -Author: Mike Gemünde -Date: Tue Oct 13 16:38:18 2009 - - remove unused private methods from Tiff.File - -commit dc6f6196a3304e12f67874f8bdbd5f772eb9b39c -Author: Mike Gemünde -Date: Tue Oct 13 15:57:54 2009 - - fix comment - -commit a87f24e12453a3bab1e6acf49d6fc5d71cb80ca0 -Author: Ruben Vermeersch -Date: Sun Oct 11 06:09:24 2009 - - 2009-10-11 Ruben Vermeersch - - * src/TagLib/TagLib.sources: - * src/TagLib/FileTypes.cs: - * src/TagLib/Jpeg/Codec.cs: - * src/TagLib/Jpeg/File.cs: - * src/TagLib/Jpeg/JpegCommentTag.cs: - * src/TagLib/Jpeg/JpegTag.cs: - * src/TagLib/Jpeg/Marker.cs: - Jpeg support, extracts XMP and exif, initial write support. - - * tests/Makefile.am: - * tests/fixtures/TagLib.Tests.FileFormats/JpegFormatTest.cs: - * tests/samples/sample.jpg: - Jpeg parsing test cases. - - Patch written by: - Ruben Vermeersch (Initial work) - Mike Gemünde (Significant improvements) - -commit b6bd1379eca52d504bf3e1f67533c5469c4ceedd -Author: Ruben Vermeersch -Date: Sun Oct 11 06:04:13 2009 - - 2009-10-11 Mike Gemuende - - This commit adds EXIF parsing support, by reusing most of IFD. - - * src/TagLib/Exif/CanonMakerNoteTag.cs: - * src/TagLib/Exif/ExifTag.cs: - * src/TagLib/Exif/GPSTag.cs: - * src/TagLib/Exif/IOPTag.cs: - * src/TagLib/Exif/ThumbnailTag.cs: - Exif data tags. - - * src/TagLib/Tag.cs: - * src/TagLib/TagLib.sources: - * src/TagLib/IFD/IFDTag.cs: - Recognize most important special case tags. - - * tests/Makefile.am: - * tests/fixtures/TagLib.Tests.FileFormats/StandardExifTests.cs: - * tests/fixtures/TagLib.Tests.FileFormats/TiffFormatTest.cs: - Adapt test cases to handle the newly recognized Exif SubIFDEntry. - -commit 339bae5d5465d2dec2f2832e31352ed11f88e679 -Author: Ruben Vermeersch -Date: Sun Oct 11 05:59:06 2009 - - 2009-10-11 Ruben Vermeersch - - * src/TagLib/TagLib.sources: - * src/TagLib/Xmp/XmlNodeExtensions.cs: - * src/TagLib/Xmp/XmpNode.cs: - * src/TagLib/Xmp/XmpNodeVisitor.cs: - * src/TagLib/Xmp/XmpTag.cs: - XMP parser, according to the implementation notes in the XMP specification. - Uses a NameTable to speed up string comparison. Not fully finished yet, but - handles most common XMP formats. - - * src/TagLib/Tiff/TiffTag.cs: - Extract XMP blocks from the relevant IFD entry for TIFF files. - - * tests/fixtures/TagLib.Tests.FileFormats/TiffFormatTest.cs: - Test case for XMP extraction. - -commit c5b357416f1ad71befabad8272975f0abb6f3b5d -Author: Ruben Vermeersch -Date: Sun Oct 11 05:43:08 2009 - - 2009-10-11 Ruben Vermeersch - - * src/TagLib/FileTypes.cs: - * src/TagLib/TagLib.sources: - * src/TagLib/Tiff/Codec.cs: - * src/TagLib/Tiff/File.cs: - * src/TagLib/Tiff/TiffTag.cs: - Support for TIFF decoding. - - * src/TagLib/IFD/Entries/ByteVectorIFDEntry.cs: - * src/TagLib/IFD/Entries/LongArrayIFDEntry.cs: - * src/TagLib/IFD/Entries/LongIFDEntry.cs: - * src/TagLib/IFD/Entries/RationalIFDEntry.cs: - * src/TagLib/IFD/Entries/SRationalIFDEntry.cs: - * src/TagLib/IFD/Entries/ShortArrayIFDEntry.cs: - * src/TagLib/IFD/Entries/ShortIFDEntry.cs: - * src/TagLib/IFD/Entries/StringIFDEntry.cs: - * src/TagLib/IFD/Entries/SubIFDEntry.cs: - * src/TagLib/IFD/Entries/UndefinedIFDEntry.cs: - * src/TagLib/IFD/IFDEntry.cs: - * src/TagLib/IFD/IFDEntryTag.cs: - * src/TagLib/IFD/IFDTag.cs: - TIFF IFD support. This is the metadata encoding structure in TIFF, which is - also used in other formats such as EXIF and multiple RAW formats. Hence the - separate namespace. - - * tests/Makefile.am: - * tests/fixtures/TagLib.Tests.FileFormats/TiffFormatTest.cs: - * tests/samples/sample.tiff: - Add tests for TIFF reading. - - Patch written by: - Ruben Vermeersch - Mike Gemünde - -commit e2b13c97822f6f63b0aa7d26394b5acf1d7a15ec -Author: Ruben Vermeersch -Date: Sun Oct 11 04:03:58 2009 - - 2009-10-11 Ruben Vermeersch - - * src/TagLib/ByteVector.cs: - * tests/fixtures/TagLib.Tests.Collections/ByteVectorTest.cs: - Add new FromInt and ToInt methods to ByteVector, which will be used in - image metadata processing. Update unit tests with test cases. - - * src/TagLib/ICodec.cs: - Introduce a new Photo content type and IPhotoCodec, which encapsulates - photo properties such as it's width and height. - - * src/TagLib/Image/Codec.cs: - Abstract base type for image codecs, as most fields are common for all - image types. - - * src/TagLib/Properties.cs: - Extended with support for IPhotoCodec. - - * src/TagLib/Tag.cs: - Add a number of tag types related to image metadata. - - Patch written by: - Ruben Vermeersch - Mike Gemünde - -commit 680892aa0534508d687b2436576f7dbea4f996d5 -Author: Gabriel Burt -Date: Sat Mar 20 12:06:37 2010 - - 2010-03-20 Gabriel Burt - - * README: Add svn info - - svn path=/trunk/taglib-sharp/; revision=153940 - -commit 9c0969f779c01dc7c3bc4ec97890898d2f4cc5e8 -Author: Gabriel Burt -Date: Sat Mar 20 12:02:38 2010 - - 2010-03-20 Gabriel Burt - - * README: add some real, useful info - - svn path=/trunk/taglib-sharp/; revision=153939 - -commit 160841bfafef60da2d0be6830ea03a5483bebafd -Author: Gabriel Burt -Date: Sat Mar 20 11:54:05 2010 - - 2010-03-20 Gabriel Burt - - * configure.ac: - * NEWS: Update for 2.0.3.7 release - - svn path=/trunk/taglib-sharp/; revision=153938 - -commit 857c9a84b60c232e334bdd118dbd237c69f2419b -Author: Alexander Kojevnikov -Date: Sat Mar 20 02:49:42 2010 - - 2010-03-20 Alexander Kojevnikov - - * configure.ac: - * src/Makefile.am: Patch from Bertrand Lorentz adding a check - for the `al` tool (bgo#575303) - - svn path=/trunk/taglib-sharp/; revision=153935 - -commit f657f9ff312b28f52f7be93dfff4df67ee84aa7a -Author: Alexander Kojevnikov -Date: Sat Mar 20 02:34:13 2010 - - 2010-03-20 Alexander Kojevnikov - - * configure.ac: Patch from Ruben Vermeersch adding a fall back - to nunit-console if nunit-console2 is not found (bgo#593673) - - svn path=/trunk/taglib-sharp/; revision=153934 - -commit c815c88583f625ca3ab1e247a696c0a2ac87cb36 -Author: Alexander Kojevnikov -Date: Sat Mar 20 02:06:30 2010 - - 2010-03-20 Alexander Kojevnikov - - * src/TagLib/Id3v2/Frames/RelativeVolumeFrame.cs: - * tests/fixtures/TagLib.Tests.TaggingFormats/Id3V2Test.cs: - Don't throw an exception if RVA2 data is partially incorrect - - svn path=/trunk/taglib-sharp/; revision=153933 - -commit 01cb5415eaa5017a0b24b96fc0cf24f76fe33608 -Author: Alexander Kojevnikov -Date: Fri Mar 19 23:51:38 2010 - - 2010-03-20 Alexander Kojevnikov - - * Makefile.am: - * src/Makefile.am: Fix `make distcheck` - - svn path=/trunk/taglib-sharp/; revision=153931 - -commit 27db4ba286399349af7596f18217adc3828a315e -Author: Alexander Kojevnikov -Date: Fri Mar 19 22:10:52 2010 - - 2010-03-20 Alexander Kojevnikov - - * src/TagLib/File.cs: Make TagLib.File IDisposable - - svn path=/trunk/taglib-sharp/; revision=153929 - -commit 356094ea343dbb85de183c875672b979bd175a9d -Author: Alexander Kojevnikov -Date: Fri Mar 19 22:04:28 2010 - - 2010-03-20 Alexander Kojevnikov - - * src/TagLib/Id3v2/ExtendedHeader.cs: - * tests/fixtures/TagLib.Tests.FileFormats/Id3V2FormatTest.cs: - * tests/samples/sample_v2_3_ext_header.mp3: Fix ID3v2.3 extended - header size calculation (bgo#604488) - - svn path=/trunk/taglib-sharp/; revision=153928 - -commit b2fb500435776fe685b3dd7f894232e03403a70c -Author: Alexander Kojevnikov -Date: Fri Mar 19 21:53:58 2010 - - 2010-03-20 Alexander Kojevnikov - - * src: - * docs: - * tests: - * tests/samples: - * .gitignore: - * examples: Add svn:ignore and .gitignore - - - svn path=/trunk/taglib-sharp/; revision=153927 - -commit a589453d5e842e7e161d5cbca9721e4e9c3924fe -Author: Alexander Kojevnikov -Date: Fri Mar 19 21:31:42 2010 - - 2010-03-20 Alexander Kojevnikov - - * src/TagLib/Id3v2/Tag.cs: - * tests/Makefile.am: - * tests/fixtures/TagLib.Tests.FileFormats/Id3V24FormatTest.cs: - * tests/samples/sample_v2_4_unsynch.mp3: - * tests/tests.csproj: Patch and unit tests from Eamon Nerbonne - fixing ID3v2 unsyncing (bgo#593138) - - svn path=/trunk/taglib-sharp/; revision=153926 - -commit 9beda4fbb27e255d8eafc496a81fb49dd13fe16f -Author: Andrés G. Aragoneses -Date: Wed Mar 3 17:59:47 2010 - - 2010-03-02 Andrés G. Aragoneses - - * src/TagLib/Aac/AudioHeader.cs: Fix all warnings not related - to XML documentation. - - - svn path=/trunk/taglib-sharp/; revision=152975 - -commit df439f8529b7194b5424358fca9490e791e7a073 -Author: Andrés G. Aragoneses -Date: Tue Mar 2 05:01:39 2010 - - forgot changelog - - svn path=/trunk/taglib-sharp/; revision=152820 - -commit f175da0d302b18f2d3296da64e8f7f5ad30ccb1b -Author: Andrés G. Aragoneses -Date: Tue Mar 2 04:58:48 2010 - - * tests/tests.mdp: - * taglib-sharp.mds: - * taglib-sharp.sln: - * tests/tests.csproj: - * src/taglib-sharp.mdp: - * src/taglib-sharp.csproj: - * examples/ReadFromUri.mdp: - * examples/SetPictures.mdp: - * examples/ReadFromUri.csproj: - * examples/SetPictures.csproj: Projects/solution format migration, - deleting deprecated MD1.0 format. - - svn path=/trunk/taglib-sharp/; revision=152819 - -commit 63ff2db7fc275c88d018cc2cb751053986e7ff96 -Author: Gabriel Burt -Date: Wed Feb 24 12:57:13 2010 - - 2010-02-24 Gabriel Burt - - * configure.ac: - * NEWS: Update for 2.0.3.6 release - - svn path=/trunk/taglib-sharp/; revision=152385 - -commit 9f8664ec69ee36046be5e8070a0463e3fea403d7 -Author: Gabriel Burt -Date: Wed Feb 24 12:51:42 2010 - - 2010-02-24 Gabriel Burt - - * src/TagLib/Riff/WaveFormatEx.cs: Fix API break in 2.0.3.5. - - svn path=/trunk/taglib-sharp/; revision=152384 - -commit 6902a83d09086ac84884ff72dd99f1af9e771bdc -Author: Gabriel Burt -Date: Tue Feb 23 16:57:51 2010 - - 2010-02-23 Gabriel Burt - - * NEWS: Update for 2.0.3.5 release - - svn path=/trunk/taglib-sharp/; revision=152310 - -commit aeb2315f921fb7c854966b2f206ff67793ca7bcd -Author: Gabriel Burt -Date: Sun Feb 21 16:31:23 2010 - - 2010-02-21 Gabriel Burt - - * src/TagLib/Riff/WaveFormatEx.cs: - * src/TagLib/ICodec.cs: - * src/TagLib/Properties.cs: - * src/TagLib/Flac/StreamHeader.cs: - * src/TagLib/Ape/StreamHeader.cs: - * src/TagLib/Aiff/StreamHeader.cs: - * src/TagLib/WavPack/StreamHeader.cs: Patch from Alexander Kojevnikov - adding BitsPerSample property to TagLib.Properties (BGO #610585) - - svn path=/trunk/taglib-sharp/; revision=152153 - -commit 0cf7cde9011e9f2d5a548f4b88198a9e8ff18c67 -Author: Gabriel Burt -Date: Wed Feb 3 19:40:03 2010 - - 2010-02-03 Gabriel Burt - - * src/TagLib/Ogg/XiphComment.cs: - * tests/fixtures/TagLib.Tests.TaggingFormats/XiphTest.cs: Patch and unit - tests from Alexander Kojevnikov adding support for COMPILATION to - Vorbis/XiphComments (eg for ogg and flac files) (BGO #586336) - - svn path=/trunk/taglib-sharp/; revision=150805 - -commit 939ae5abdb8757f438a72050bbac262a56b5f964 -Author: Gabriel Burt -Date: Mon Feb 1 18:28:56 2010 - - 2010-02-01 Gabriel Burt - - * src/TagLib/NonContainer/EndTag.cs: - * src/TagLib/NonContainer/StartTag.cs: - * tests/fixtures/TagLib.Tests.FileFormats/Id3BothFormatTest.cs: Patch and - unit tests from Helmut Wahrmann (with assistance from Alexander - Kojevnikov) fixing bug with removing some/all tag-types from a file (BGO - #574653) - - svn path=/trunk/taglib-sharp/; revision=150687 - -commit 21458f4451b57d10e373817cbee58101f9501579 -Author: Gabriel Burt -Date: Tue Jan 26 19:07:50 2010 - - 2010-01-26 Gabriel Burt - - * configure.ac: - * NEWS: Bump to 2.0.3.5 in prep for next release - - svn path=/trunk/taglib-sharp/; revision=150265 - -commit a2a8010c2830c163af693231d7d6893c8ede4409 -Author: Gabriel Burt -Date: Wed Jan 20 18:30:16 2010 - - 2010-01-20 Gabriel Burt - - * src/TagLib/Id3v2/Frames/CommentsFrame.cs: - * tests/fixtures/TagLib.Tests.TaggingFormats/Id3V2Test.cs: Patch from - Alexander Kojevnikov fixing IndexOutOfRangeException (BGO #607376) - - svn path=/trunk/taglib-sharp/; revision=149945 - -commit 466e24d5340be9653e538168526557f49b0fbd96 -Author: Gabriel Burt -Date: Thu Jan 7 16:56:22 2010 - - 2010-01-07 Gabriel Burt - - * NEWS: - * configure.ac: Bump to 2.0.3.4 for upcoming release. - - svn path=/trunk/taglib-sharp/; revision=149201 - -commit df89366fb2a7365bf11767e2bf746c5c34e0c1fd -Author: Gabriel Burt -Date: Thu Jan 7 14:31:48 2010 - - 2010-01-07 Gabriel Burt - - * src/TagLib/Id3v2/Tag.cs: - * src/TagLib/Id3v2/FrameHeader.cs: Fix multiple issues with converting - release data metadata. Was converting (renaming) TDAT to TDRC, but - that's mapping MMDD onto YYYY which doesn't make sense. Now it will - map only TYER to TDRC, and then append the TDAT and TIME info to the TDRC - if they exist. Fixes BGO #606283 - - * tests/fixtures/TagLib.Tests.FileFormats/AiffFormatTest.cs: Fix test that - depended on the incorrect behavior above. - - svn path=/trunk/taglib-sharp/; revision=149189 - -commit 5e0e952df97bc485f5fcf4411b785c6251ae24cc -Author: Gabriel Burt -Date: Sun Dec 13 16:00:43 2009 - - 2009-12-13 Gabriel Burt - - * src/TagLib/Mpeg4/BoxTypes.cs: - * src/TagLib/Mpeg4/BoxFactory.cs: Support the 'alis' handler code/track - type, found in the wild in an iTunes-ripped .m4a file (BGO #584193) - - svn path=/trunk/taglib-sharp/; revision=148357 - -commit 6f160becd6baf821b65f5f6ba6ac71d29b909f83 -Author: Aaron Bockover -Date: Wed Sep 30 18:53:22 2009 - - Fix NEWS uploading - - svn path=/trunk/taglib-sharp/; revision=143089 - -commit 28a2feb8ffdd78e687d2200c678b88a3234b9168 -Author: Aaron Bockover -Date: Wed Sep 30 18:48:14 2009 - - 2009-09-30 Aaron Bockover - - * NEWS: Update for 2.0.3.3 release - * configure.ac: Bump to 2.0.3.3 - - - svn path=/trunk/taglib-sharp/; revision=143088 - -commit 713ed6438ba96810cdcdef29d90b1b5e5f6efb95 -Author: Gabriel Burt -Date: Mon May 18 14:23:36 2009 - - 2009-05-18 Gabriel Burt - - * src/TagLib/ByteVector.cs: - * tests/fixtures/TagLib.Tests.Collections/ByteVectorTest.cs: Patch from - Alexander Kojevnikov fixing ArgumentOutOfRangeException when parsing some - comment frames (BGO #582735) - - svn path=/trunk/taglib-sharp/; revision=134348 - -commit bf2aaa4c8f68da49fe24088f4b56e9b8be58b987 -Author: Gabriel Burt -Date: Fri May 15 10:48:50 2009 - - 2009-05-15 Gabriel Burt - - * src/TagLib/Riff/File.cs: - * src/TagLib/FileTypes.cs: - * src/TagLib/Aac/File.cs: - * src/TagLib/Aac/AudioHeader.cs: - * src/TagLib/Aac/BitStream.cs: - * src/TagLib/TagLib.sources: - * src/taglib-sharp.mdp: - * docs/Package.en.xml.in: - * tests/tests.mdp: - * tests/fixtures/TagLib.Tests.FileFormats/AacFormatTest.cs: - * tests/Makefile.am: - * taglib-sharp.csproj: Patch from Patrick Dehne adding support for ADTS AAC - files (BGO #580553) - - svn path=/trunk/taglib-sharp/; revision=134211 - -commit 13b29dabc38a4258fbb66ca24b0ce20ed71582b3 -Author: Gabriel Burt -Date: Thu May 14 15:23:56 2009 - - 2009-05-14 Gabriel Burt - - * src/TagLib/Aiff/File.cs: - * src/TagLib/Aiff/StreamHeader.cs: - * src/TagLib/FileTypes.cs: - * src/TagLib/TagLib.sources: - * src/taglib-sharp.mdp: - * docs/Package.en.xml.in: - * tests/tests.mdp: - * tests/fixtures/TagLib.Tests.FileFormats/AiffFormatTest.cs: - * tests/Makefile.am: - * taglib-sharp.csproj: Patch from Helmut Wahrmann adding support for the - AIFF file format (BGO #579261) - - svn path=/trunk/taglib-sharp/; revision=134161 - -commit 2207974d1385133c910e2d352bcbd9f858ebbdf4 -Author: Gabriel Burt -Date: Mon Apr 20 14:10:43 2009 - - Correct a couple 2008s that should be 2009 - - svn path=/trunk/taglib-sharp/; revision=132204 - -commit b5d885b5ef0458fd0d2ea707ec3bbd38a60a4829 -Author: Gabriel Burt -Date: Wed Mar 25 18:15:23 2009 - - 2009-03-25 Gabriel Burt - - * src/TagLib/Ogg/XiphComment.cs: Patch from Helmut Wahrmann adding two - fallback options for the album artist getter (BGO #574652) - - - svn path=/trunk/taglib-sharp/; revision=130253 - -commit 6f22bf46936fa62d8dc4f9ea01fff8de5921e486 -Author: Gabriel Burt -Date: Thu Mar 19 23:54:24 2009 - - 2009-03-19 Gabriel Burt - - * src/TagLib/Ape/Tag.cs: Patch from Gregory S. Chudov fixing bug with - Ape.Tag's Pictures setter (BGO #575943) - - - svn path=/trunk/taglib-sharp/; revision=129858 - -commit f70f7b27b2e9bf923a8f907aa1dec61599121168 -Author: Gabriel Burt -Date: Wed Mar 18 22:21:23 2009 - - 2009-03-18 Gabriel Burt - - * tests/Makefile.am: - * examples/Makefile.am: Patch from Bertrand Lorentz fixing issue with - random files slipping into the tarball/dist (BGO #575302). make distcheck - and running ./configure && make && make test work on the tarball - - - svn path=/trunk/taglib-sharp/; revision=129762 - -commit 446b14bd5997c51d0a6edd31988058837a1fc283 -Author: Gabriel Burt -Date: Tue Mar 10 14:41:12 2009 - - 2009-03-10 Gabriel Burt - - * src/TagLib/Mpeg/File.cs: - * src/TagLib/Mpeg/AudioFile.cs: - Patch from Andy Beal adding support for m2v and m2v files (BGO #574411) - - - svn path=/trunk/taglib-sharp/; revision=129008 - -commit f9ccf65c85d4dc1f1b1924a52e8b59cb902480e7 -Author: Gabriel Burt -Date: Tue Mar 10 00:01:00 2009 - - 2009-03-09 Gabriel Burt - - * src/TagLib/Ape/Tag.cs: Patch from Bernd Niedergesaess adding support for - Sort* values in Ape tags (BGO #571421) - - - svn path=/trunk/taglib-sharp/; revision=128940 - -commit 877b873e2aa8e999a1ffd451f55c78b677c3b5ed -Author: Gabriel Burt -Date: Mon Mar 9 23:53:30 2009 - - 2009-03-09 Gabriel Burt - - * src/TagLib/Ogg/GroupedComment.cs: Patch from Bernd Niedergesaess and - Andy Beal improving code consistency (BGO #571443) - - - svn path=/trunk/taglib-sharp/; revision=128939 - -commit 96e698124f34e42b85d1c0618af1900ad156843e -Author: Gabriel Burt -Date: Mon Mar 9 23:47:07 2009 - - 2009-03-09 Gabriel Burt - - * src/TagLib/Riff/AviHeaderList.cs: Patch from Bernd Niedergesaess to not - use obsolete ctor (BGO #571452) - - - svn path=/trunk/taglib-sharp/; revision=128938 - -commit 74e848482a4adb6ea951d3ca60429295ddf33c4a -Author: Gabriel Burt -Date: Mon Mar 9 23:37:09 2009 - - 2009-03-09 Gabriel Burt - - * docs/Makefile.am: Reduce the verbosity of docs build output. - - - svn path=/trunk/taglib-sharp/; revision=128937 - -commit a5c66dedc41e14ea667da68804391f574cbb2a5a -Author: Gabriel Burt -Date: Mon Mar 9 23:25:40 2009 - - 2009-03-09 Gabriel Burt - - Patch from Andy Beal adding new properties: MusicBrainz -ArtistId, - -ReleaseId, -ReleaseArtistId, -TrackId, -DiscId, -ReleaseStatus, -ReleaseType, - -ReleaseCountry, MusicIpId, and AmazonId (BGO #563170) - - * src/TagLib/CombinedTag.cs: - * src/TagLib/Tag.cs: - * src/TagLib/Id3v2/Tag.cs: - * src/TagLib/Ape/Tag.cs: - * src/TagLib/Mpeg4/AppleTag.cs: - * src/TagLib/Asf/Tag.cs: - * src/TagLib/Ogg/XiphComment.cs: - * src/TagLib/Ogg/GroupedComment.cs: - * tests/fixtures/TagLib.Tests.TaggingFormats/Mpeg4Test.cs: - * tests/fixtures/TagLib.Tests.TaggingFormats/ApeTest.cs: - * tests/fixtures/TagLib.Tests.TaggingFormats/Id3V2Test.cs: - * tests/fixtures/TagLib.Tests.TaggingFormats/XiphTest.cs: - * tests/fixtures/TagLib.Tests.TaggingFormats/AsfTest.cs: Add and test the - new properties. - - svn path=/trunk/taglib-sharp/; revision=128936 - -commit 2822fea172a0ce858bfb96bbb4a1520f7e6c399a -Author: Gabriel Burt -Date: Wed Mar 4 10:25:48 2009 - - 2009-03-04 Gabriel Burt - - * src/TagLib/Id3v2/Frames/TextIdentificationFrame.cs: Patch from John - Millikin to be more robust in the face of tags with NULL bytes in the - middle of them by truncating the value before the first one (BGO #558123) - - * tests/samples/corrupt/null_title_v2.mp3: - * tests/fixtures/TagLib.Tests.FileFormats/Id3V2FormatTest.cs: New corrupt - file with NULL bytes in the title field, and a test that we handle it ok. - - - svn path=/trunk/taglib-sharp/; revision=128567 - -commit adfc5f7ee25c53f6a95d0849441957cb1f0a55f0 -Author: Gabriel Burt -Date: Thu Feb 19 20:37:59 2009 - - 2009-02-19 Gabriel Burt - - * src/TagLib/Flac/File.cs: Patch from Gregory S. Chudov fixing NRE thrown - when calling GetTag on a flac File (BGO #572380) - - * tests/fixtures/TagLib.Tests.FileFormats/FlacFormatTest.cs: Add a unit - test written by me that fails without Gregory's patch, passes with it. - - - svn path=/trunk/taglib-sharp/; revision=127496 - -commit 447239a8964b6637cf570635fff2071098f20430 -Author: Gabriel Burt -Date: Thu Feb 19 20:29:07 2009 - - 2009-02-19 Gabriel Burt - - * src/TagLib/Ogg/XiphComment.cs: Patch from Gregory S. Chudov fixing typo - in the Ogg DiscNumber setter that wrote the TrackCount to the DISCTOTAL - field (BGO #572381) - - - svn path=/trunk/taglib-sharp/; revision=127492 - -commit 179f20ff6731f59250b71bc95c4c58fe52fb1818 -Author: Gabriel Burt -Date: Thu Feb 19 20:25:49 2009 - - 2009-02-19 Gabriel Burt - - * src/TagLib/Tag.cs: Patch from Gregory S. Chudov fixing bug in the CopyTo - method that copied the Copyright into the Conductor tag (BGO #572382) - - - svn path=/trunk/taglib-sharp/; revision=127491 - -commit d7431fc9c8b22cac2f65317c7df44329ab5a912f -Author: Gabriel Burt -Date: Thu Feb 19 20:21:55 2009 - - 2009-02-19 Gabriel Burt - - * src/TagLib/File.cs: Patch from Félix Velasco fixing a bug in our XML - documentation (BGO #572253) - - - svn path=/trunk/taglib-sharp/; revision=127490 - -commit 9c76cd75a24589edcf63249d65b5b670412c3182 -Author: Gabriel Burt -Date: Thu Feb 19 20:18:11 2009 - - 2009-02-19 Gabriel Burt - - * configure.ac: Patch from Bertrand Lorentz using $(prefix)/lib in - GACUTIL_FLAGS instead of $(libdir) (BGO #572259) - - - svn path=/trunk/taglib-sharp/; revision=127489 - -commit 1dacd700bfe4aef4f7acbc440b59099579bac308 -Author: Gabriel Burt -Date: Thu Feb 19 13:00:12 2009 - - 2009-02-19 Gabriel Burt - - * docs/Makefile.am: Patch from Bertrand Lorentz fixing hardcoded mcs - reference (BGO #572450) - - - svn path=/trunk/taglib-sharp/; revision=127441 - -commit a17a7339518964ff719d38eb59a98b2f9c941b93 -Author: Gabriel Burt -Date: Mon Feb 16 17:07:25 2009 - - 2009-02-16 Gabriel Burt - - * NEWS: Update for 2.0.3.2 release - - - svn path=/trunk/taglib-sharp/; revision=127078 - -commit bfc0685985ad6ea2c6c84d7d83181a68cee206ed -Author: Gabriel Burt -Date: Mon Feb 16 16:39:12 2009 - - Forgot to credit Bernd in last commit - - svn path=/trunk/taglib-sharp/; revision=127077 - -commit c680ca61d0fb2056885d3c9fd3896fd8a968d119 -Author: Gabriel Burt -Date: Mon Feb 16 15:48:27 2009 - - 2009-02-16 Gabriel Burt - - * src/TagLib/Ape/Tag.cs: Patch from Andy Beal fixing our APE tag writing - from writing out all uppercase tags to writing the recommended tag casing. - But we support reading in any casing. Also, use BPM instead of TEMPO, and - use Album Artist instead of AlbumArtist, but read/write the latter for - compabibility (BGO #571563) - - - svn path=/trunk/taglib-sharp/; revision=127070 - -commit 96664cc7e3eea268fb6ec5e9ca50842323a672c4 -Author: Gabriel Burt -Date: Mon Feb 16 15:24:58 2009 - - 2009-02-16 Gabriel Burt - - * src/TagLib/Id3v2/Tag.cs: - * src/TagLib/Ape/Tag.cs: - * docs/Package.en.xml.in: - * docs/Makefile.am: Patch from Bertrand Lorentz fixing build issue - with docs (BGO #571368) - - - svn path=/trunk/taglib-sharp/; revision=127066 - -commit 29a97a8d909075306da240d9c96b8420afbe0ce6 -Author: Gabriel Burt -Date: Thu Feb 12 13:01:51 2009 - - 2009-02-12 Gabriel Burt - - * src/TagLib/Mpeg/AudioFile.cs: Patch from Bernd Niedergesaess with style - help from Andy Beal, adding mp1/mp2 extensions/mimetypes (BGO #571466) - - - svn path=/trunk/taglib-sharp/; revision=126743 - -commit 17b4c1e010f3c02b140d7c95dfbf0e7fb3166df1 -Author: Gabriel Burt -Date: Thu Feb 12 12:46:03 2009 - - 2009-02-12 Gabriel Burt - - * src/TagLib/Mpeg4/AppleTag.cs: Patch from Bernd Niedergesaess fixing - mpeg4 writing of BPM to file (BGO #571411) - - - svn path=/trunk/taglib-sharp/; revision=126741 - -commit 12b894385f4194df2f865c20d2b4483ddcaac698 -Author: Gabriel Burt -Date: Wed Feb 11 18:54:19 2009 - - 2009-02-11 Gabriel Burt - - Patches from Bertrand Lorentz. - - * tests/Makefile.am: fixes the typo that caused the test source files not - to be included in the tarball (BGO #569299) - - * configure.ac: remove the call to AC_CANONICAL_SYSTEM (BGO #571361) - - - svn path=/trunk/taglib-sharp/; revision=126670 - -commit fc1d68289f28ca1a02f884922eaa714c6e9f9bd2 -Author: Gabriel Burt -Date: Tue Feb 10 21:53:05 2009 - - 2009-02-10 Gabriel Burt - - * src/TagLib/Mpeg/File.cs: Patch from Andy Beal fixing issue where offset - was not being advanced when trying to read a GOP video packet inside a - video sequence (BGO #568964) - - - svn path=/trunk/taglib-sharp/; revision=126547 - -commit 2af0d2725ea1d5269b46810e2d2d712944fcf8e9 -Author: Gabriel Burt -Date: Tue Feb 10 20:54:37 2009 - - 2009-02-10 Gabriel Burt - - * configure.ac: Bump in prep for the next release. - - * examples/ReadFromUri.cs: Refactor a bit, and print out the *Sort - properties. - - - svn path=/trunk/taglib-sharp/; revision=126546 - -commit 6a1db30cd8ca012c76e7575e9adf2e44d505e1b9 -Author: Gabriel Burt -Date: Tue Feb 10 11:09:56 2009 - - 2009-02-10 Gabriel Burt - - * src/TagLib/Riff/File.cs: Patch from Andy Beal fixing bug where within a - while clause we would 'continue', but the actual counter incrementing - happened later in the while clause so the while condition was always true, - causing a freezing while writing video files (BGO #570892) - - - svn path=/trunk/taglib-sharp/; revision=126477 - -commit 11ed49d59e0f37bf1567f1dec514cd5df1fcf031 -Author: Gabriel Burt -Date: Tue Feb 10 11:07:03 2009 - - 2009-02-10 Gabriel Burt - - * tests/Makefile.am: - * tests/samples/sample.avi: - * tests/fixtures/TagLib.Tests.FileFormats/AviFormatTest.cs: Patch from - Andy Beal adding unit testing for AVI files; currently gets stuck in - infinite loop because of bug with writing to AVI files. - - - svn path=/trunk/taglib-sharp/; revision=126476 - -commit 98289c9e8c02faa9ef194108c4908fd0c7ae1931 -Author: Gabriel Burt -Date: Fri Feb 6 12:02:38 2009 - - 2009-02-06 Gabriel Burt - - * src/TagLib/Properties.cs: Patch from Andy Beal fixing VideoWidth getter, - was incorrectly returning height (BGO #570745) - - - svn path=/trunk/taglib-sharp/; revision=126082 - -commit dfa9ddd46fdcd6e486f9493e6569cfe8b9190196 -Author: Gabriel Burt -Date: Fri Feb 6 11:54:30 2009 - - 2009-02-06 Gabriel Burt - - * src/TagLib/Id3v2/Frame.cs: Patch from Andy Beal, fixing bug with not - skipping over Data Length Indicator field properly (BGO #568946) - - - svn path=/trunk/taglib-sharp/; revision=126081 - -commit ff43233d912b071852b1698754889f70a3087f29 -Author: Aaron Bockover -Date: Fri Jan 23 14:27:11 2009 - - 2009-01-23 Aaron Bockover - - * Makefile.am: Install .pc file to datadir since we're noarch - - - svn path=/trunk/taglib-sharp/; revision=124369 - -commit ddd55a94f0b8e66896e172d344386ba1da5e943a -Author: Gabriel Burt -Date: Thu Jan 22 18:17:54 2009 - - 2009-01-22 Gabriel Burt - - * src/TagLib/CombinedTag.cs: - * src/TagLib/Id3v2/Tag.cs: - * src/TagLib/Id3v2/FrameTypes.cs: - * src/TagLib/Mpeg4/AppleTag.cs: - * src/TagLib/Mpeg4/BoxTypes.cs: - * src/TagLib/Tag.cs: - * src/TagLib/Asf/Tag.cs: - * src/TagLib/Ogg/XiphComment.cs: - * src/TagLib/Ogg/GroupedComment.cs: Patch from John Millikin and Andy Beal - adding support for PerformerSort, AlbumArtistSort, ComposerSort, - TitleSort, and AlbumSort to TagLib.Tag, with backends for Ogg, ID3, mpeg4, - and asf (BGO #567657). - - - svn path=/trunk/taglib-sharp/; revision=124277 - -commit c47ade767d2b3d2a8f372b5c8974c727fad337da -Author: Aaron Bockover -Date: Tue Jan 20 16:32:25 2009 - - Fix tag name - - svn path=/trunk/taglib-sharp/; revision=123953 - -commit 0961c724b29468a9f5107b02286d3b614545442e -Author: Aaron Bockover -Date: Tue Jan 20 16:29:28 2009 - - Missing \ - - svn path=/trunk/taglib-sharp/; revision=123952 - -commit 8db9530ed1873d0246acb84f561176dcca8f9ee1 -Author: Aaron Bockover -Date: Tue Jan 20 16:27:07 2009 - - 2009-01-20 Aaron Bockover - - * configure.ac: Bumped version to 2.0.3.1, output bz2 and gz - - * Makefile.am: Added a push-release target - - * NEWS: Updated for 2.0.3.1 release - - - svn path=/trunk/taglib-sharp/; revision=123950 - -commit ff9b5afa5a3ef8b9a79edde5343faffa482d7f7c -Author: Gabriel Burt -Date: Tue Jan 20 15:23:25 2009 - - Update for release - - svn path=/trunk/taglib-sharp/; revision=123928 - -commit 7a518bd93334ec93a5414e4e0d0c14642cf76702 -Author: Aaron Bockover -Date: Tue Jan 20 15:21:21 2009 - - SUBDIRS tests - - svn path=/trunk/taglib-sharp/; revision=123926 - -commit 9288a468d586e88533ebd380ba0eabe71e90a254 -Author: Aaron Bockover -Date: Tue Jan 20 15:21:11 2009 - - Fix use of obsolete API - - svn path=/trunk/taglib-sharp/; revision=123925 - -commit f46fbd1bf53a1d2eeee5f6fb3604d93907c542e2 -Author: Aaron Bockover -Date: Tue Jan 20 15:18:20 2009 - - 2009-01-20 Aaron Bockover - - * configure.ac: Bumped version to 2.0.3.1 - - * NEWS: Updated for 2.0.3.1 release - - - svn path=/trunk/taglib-sharp/; revision=123923 - -commit e09402baf120df02b4aadbfff46d600f6699d640 -Author: Gabriel Burt -Date: Thu Jan 15 20:12:17 2009 - - 2009-01-15 Gabriel Burt - - * tests/fixtures/TagLib.Tests.TaggingFormats/XiphTest.cs: Update unit test - to reflect that we do now support writing cover art to ogg files. - - - svn path=/trunk/taglib-sharp/; revision=123568 - -commit ac160cc7839f31263fe8500fd693ff19b881dabb -Author: Gabriel Burt -Date: Thu Jan 15 20:08:16 2009 - - 2009-01-15 Gabriel Burt - - * src/TagLib/Ogg/XiphComment.cs: Patch from John Millikin adding cover art - reading and writing support to Ogg (BGO #563168) - - svn path=/trunk/taglib-sharp/; revision=123567 - -commit 48f6a94a29ae04e6adc5a514c208b890106bfbd2 -Author: Gabriel Burt -Date: Thu Jan 15 13:06:00 2009 - - 2009-01-15 Gabriel Burt - - * src/TagLib/Ape/File.cs: - * src/TagLib/Asf/File.cs: - * src/TagLib/Ogg/File.cs: Add more mimetypes and file extensions including - .oga and .ogv (BGO #532561) - - * examples/ReadFromUri.cs: Avoid NRE crash - - - svn path=/trunk/taglib-sharp/; revision=123522 - -commit 21daae26e341c14c833a433f5c88533dac04f495 -Author: Gabriel Burt -Date: Thu Jan 15 13:01:15 2009 - - 2008-01-15 Gabriel Burt - - * src/TagLib/Mpeg4/file.cs: Patch from Andy Beal to recognize .m4b - files (Audiobook extention) in mpeg4 (BGO #567826) - - - svn path=/trunk/taglib-sharp/; revision=123520 - -commit 721fb8fc79715c34f7a06ced460ef7e1891888d1 -Author: Gabriel Burt -Date: Tue Jan 13 12:26:16 2009 - - 2008-01-13 Gabriel Burt - - Patch from Andy Beal adding support for Dash atoms, used primarily for - storing extra text tags, such as the MusicBrainz tags. The equivalent in - ID3 are the UserTextInfo frames. - - * src/TagLib/Mpeg4/Boxes/AppleAdditionalInfoBox.cs: Add Constructor to - enable Instantiating a new AdditionalInfoBox without reading from file. - - * src/TagLib/Mpeg4/AppleTag.cs: Add Methods for reading and writing - values to/from Dash Boxes (----) - - - svn path=/trunk/taglib-sharp/; revision=123227 - -commit b6ff6f306fcedb04acf01c18eb3689f50fb1bad1 -Author: Gabriel Burt -Date: Fri Dec 19 15:24:40 2008 - - Whoops, didn't mean to revert this, got confused about what was the new patch and what was there before - - svn path=/trunk/taglib-sharp/; revision=121890 - -commit f1b527ed4a8da14eb73e1965a37cdb9ca9e8dfd5 -Author: Gabriel Burt -Date: Mon Dec 15 19:41:48 2008 - - 2008-12-15 Gabriel Burt - - * src/TagLib/Id3v2/Tag.cs: - * src/TagLib/Id3v2/FrameFactory.cs: Add an alreadyUnsynched argument to - CreateFrame that is true when the overall id3v2 Tag has the Unsync flag - set, and used to ensure we don't double-synchronize the data for a frame. - - * src/TagLib/Id3v2/FrameHeader.cs: Fix typo - - * src/TagLib/Id3v2/Frame.cs: Fix typo, use the new CreateFrame - - * src/TagLib/File.cs: Remove unnecessary (and buggy) position/length - adjustments in ReadBlock method. - - * src/TagLib/NonContainer/StartTag.cs: Fix typos, ensure that ReadTag - returns the valid start value even if there is an exception creating it, - and write any tag-creation exceptions to Console.Error. - - - svn path=/trunk/taglib-sharp/; revision=121568 - -commit d043e77cd667c924d51fe5fc252d798e30d50ca5 -Author: Gabriel Burt -Date: Thu Dec 11 17:45:44 2008 - - 2008-12-11 Gabriel Burt - - * tests/ConsoleUi.cs: - * tests/Makefile.am: - * configure.ac: Remove ConsoleUi in favor of system-installed - nunit-console2. Make the tests depend on the taglib-sharp.dll, and rename - the target 'test'. - - * Makefile.am: Add 'test' target that calls make test in tests/ - - - svn path=/trunk/taglib-sharp/; revision=121368 - -commit 96541ba2588aef666d6c9a8b09def2252e5a1161 -Author: Gabriel Burt -Date: Thu Dec 11 17:43:56 2008 - - Actually commit Jeff's patch, already mentioned in the ChangeLog - - svn path=/trunk/taglib-sharp/; revision=121365 - -commit 6da96266229c1ed419d77a23d9ddc0e446a6958b -Author: Gabriel Burt -Date: Thu Dec 11 17:24:42 2008 - - 2008-12-11 Gabriel Burt - - * src/AssemblyInfo.cs.in: remove the if #SIGN - always sign - - * tests/Makefile.am: Fix up source files list. - - * tests/tests.mdp: enable Makefile integration - - * configure.ac: Uncomment the nunit check and generate tests/Makefile - - svn path=/trunk/taglib-sharp/; revision=121363 - -commit ca2086339d75e17841227ae5045bd093630081bb -Author: Rusty Howell -Date: Wed Jul 16 20:42:11 2008 - - Fixed syntax error in xml doc strings - - svn path=/trunk/taglib-sharp/; revision=108108 - -commit dada5252ec43f0824226bb906a6a55c83d22cfd2 -Author: Jeffrey Stedfast -Date: Tue Jan 29 16:08:55 2008 - - 2008-01-16 Jeffrey Stedfast - - * src/TagLib/Mpeg/AudioHeader.cs (AudioHeader): Do a bit more - thorough bitwise examination of the second byte in the MPEG sync - header. - - - svn path=/trunk/taglib-sharp/; revision=94328 - -commit 492f1e407d1d1b6769edfabf5a20db118dff2d89 -Author: Brian Nickel -Date: Thu Jan 10 17:28:46 2008 - - 2008-01-10 Brian Nickel - - * NEWS: Updated for new release. - - * configure.ac: Now 2.0.3.0 - - svn path=/trunk/taglib-sharp/; revision=92635 - -commit 0f23f4b07d569b4a447d95b29a9a693d93f96fe4 -Author: Brian Nickel -Date: Wed Jan 9 19:30:11 2008 - - 2008-01-09 Brian Nickel - - This commit does the following: - - Finishes XML documentation. - - Makes ASF tags enumerable. - - Allows saving RelativeVolumeFrames in 2.2 and 2.3 via - semi-standard XRV and XRVA names. - - Prevents duplicates when genres are stored in "(0)Blues" - format. - - * src/TagLib/Id3v2/Tag.cs: - * src/TagLib/Id3v2/Footer.cs: - * src/TagLib/Id3v2/FrameFactory.cs: - * src/TagLib/Id3v2/Header.cs: - * src/TagLib/Id3v2/Frames/UnsynchronisedLyricsFrame.cs: - * src/TagLib/Id3v2/Frames/CommentsFrame.cs: - * src/TagLib/Id3v2/Frames/SynchronizedLyricsFrame.cs: - * src/TagLib/Id3v2/Frames/AttachedPictureFrame.cs: - * src/TagLib/Id3v2/Frames/UniqueFileIdentifierFrame.cs: - * src/TagLib/Id3v2/Frames/TermsOfUseFrame.cs: - * src/TagLib/Id3v2/Frames/GeneralEncapsulatedObjectFrame.cs: - * src/TagLib/Id3v2/Frames/UnknownFrame.cs: - * src/TagLib/Id3v2/Frame.cs: - * src/TagLib/ListBase.cs: - * src/TagLib/Ogg/Codecs/Theora.cs: - * src/TagLib/Ogg/Codecs/Vorbis.cs: - * src/TagLib/Ogg/Codec.cs: - * src/TagLib/Ogg/Bitstream.cs: Finish documentation. - - * src/TagLib/Asf/Tag.cs: - * src/TagLib/Asf/ExtendedContentDescriptionObject.cs: - * src/TagLib/Asf/MetadataLibraryObject.cs: Make enumerable. - - * src/TagLib/Id3v2/Frames/TextIdentificationFrame.cs: If genre index is - followed by genre text, don't store it twice. - - * src/TagLib/Id3v2/Frames/RelativeVolumeFrame.cs: - * src/TagLib/Id3v2/FrameHeader.cs: - * tests/fixtures/TagLib.Tests.TaggingFormats/Id3V2Test.cs: Save RVA2 as - XRVA and XRV in older versions. - - * configure.ac: Now 2.0.2.22. - - svn path=/trunk/taglib-sharp/; revision=92562 - -commit e38d5652387c1225ccdd709c982f5cb43b19a3b2 -Author: Brian Nickel -Date: Thu Jan 3 01:59:47 2008 - - 2008-01-03 Brian Nickel - - * src/Makefile.am: Generate taglib-sharp.dll.xml instead. - * docs/Package.en.xml.in: Contains missing documentation and rules for - XmlInjector.exe. - - * docs/XmlInjector.cs: A new XML manager which can remove, replace, and - insert nodes into an XML document based on XPath queries. - - * docs/Makefile.am: Build XML from the slashdoc and use XmlInjector.exe - to insert missing parts into documentation as well as modify monodoc.xml - - * docs/Package.en.xml: Depreciated by docs/Package.en.xml.in. - - * docs/MonodocNodeConfig.cs: Depreciated by docs/XmlInjector.cs. - - * configure.ac: Generate docs/Package.en.xml from - docs/Package.en.xml.in - - svn path=/trunk/taglib-sharp/; revision=92157 - -commit 44578d8d281dbe301464180fcb272d0a703463df -Author: Brian Nickel -Date: Wed Jan 2 20:43:28 2008 - - 2008-01-02 Brian Nickel - - * src/Makefile.am: Generate taglib-sharp-docs.xml when building docs. - * docs/en/: Deleted. Will be replaced with autogeneration after this - update. - - * docs/Makefile.am: Add docs/Packages.en.xml do DIST_EXTRA - * docs/Package.en.xml: Contains values not in slashdocs. - - svn path=/trunk/taglib-sharp/; revision=92148 - -commit 5932a1adfb5a243de2d0f70f3ae4fa4cc8d9e583 -Author: Brian Nickel -Date: Wed Jan 2 19:05:18 2008 - - 2008-01-02 Brian Nickel - - * src/TagLib/CombinedTag.cs: - * src/TagLib/ByteVectorList.cs: - * src/TagLib/Id3v1/Tag.cs: - * src/TagLib/Id3v1/StringHandler.cs: - * src/TagLib/Riff/List.cs: - * src/TagLib/Riff/File.cs: - * src/TagLib/Riff/BitmapInfoHeader.cs: - * src/TagLib/Riff/AviHeaderList.cs: - * src/TagLib/Riff/DivXTag.cs: - * src/TagLib/Riff/ListTag.cs: - * src/TagLib/Riff/InfoTag.cs: - * src/TagLib/Riff/MovieIdTag.cs: - * src/TagLib/Riff/WaveFormatEx.cs: - * src/TagLib/Genres.cs: - * src/TagLib/Id3v2/Tag.cs: - * src/TagLib/Id3v2/Frames/TextIdentificationFrame.cs: - * src/TagLib/Id3v2/ExtendedHeader.cs: - * src/TagLib/Mpeg/File.cs: - * src/TagLib/Mpeg/VideoHeader.cs: - * src/TagLib/Mpeg/AudioFile.cs: - * src/TagLib/Mpeg/AudioHeader.cs: - * src/TagLib/ByteVector.cs: - * src/TagLib/SupportedMimeType.cs: - * src/TagLib/Flac/Picture.cs: - * src/TagLib/Flac/File.cs: - * src/TagLib/Flac/StreamHeader.cs: - * src/TagLib/Ape/Tag.cs: - * src/TagLib/Ape/Footer.cs: - * src/TagLib/Ape/File.cs: - * src/TagLib/ListBase.cs: - * src/TagLib/Mpeg4/Boxes/FullBox.cs: - * src/TagLib/Mpeg4/Boxes/IsoChunkLargeOffsetBox.cs: - * src/TagLib/Mpeg4/Boxes/IsoHandlerBox.cs: - * src/TagLib/Mpeg4/Boxes/IsoChunkOffsetBox.cs: - * src/TagLib/Mpeg4/Boxes/IsoMetaBox.cs: - * src/TagLib/Mpeg4/FileParser.cs: - * src/TagLib/Mpeg4/AppleTag.cs: - * src/TagLib/Mpeg4/File.cs: - * src/TagLib/Mpeg4/BoxHeader.cs: - * src/TagLib/Mpeg4/Box.cs: - * src/TagLib/Picture.cs: - * src/TagLib/Tag.cs: - * src/TagLib/Mpc/File.cs: - * src/TagLib/Mpc/StreamHeader.cs: - * src/TagLib/File.cs: - * src/TagLib/WavPack/File.cs: - * src/TagLib/WavPack/StreamHeader.cs: - * src/TagLib/NonContainer/Tag.cs: - * src/TagLib/NonContainer/File.cs: - * src/TagLib/NonContainer/EndTag.cs: - * src/TagLib/NonContainer/StartTag.cs: - * src/TagLib/Asf/Tag.cs: - * src/TagLib/Asf/HeaderExtensionObject.cs: - * src/TagLib/Asf/File.cs: - * src/TagLib/Asf/HeaderObject.cs: - * src/TagLib/Asf/FilePropertiesObject.cs: - * src/TagLib/Asf/ExtendedContentDescriptionObject.cs: - * src/TagLib/Asf/UnknownObject.cs: - * src/TagLib/Asf/MetadataLibraryObject.cs: - * src/TagLib/Asf/PaddingObject.cs: - * src/TagLib/Asf/StreamPropertiesObject.cs: - * src/TagLib/Asf/ContentDescriptionObject.cs: - * src/TagLib/Asf/Object.cs: - * src/TagLib/Ogg/XiphComment.cs: - * src/TagLib/Ogg/Page.cs: - * src/TagLib/Ogg/File.cs: - * src/TagLib/Ogg/Paginator.cs: - * src/TagLib/Ogg/PageHeader.cs: - * src/TagLib/Ogg/GroupedComment.cs: More docs, corrected some typos. - - - svn path=/trunk/taglib-sharp/; revision=92141 - -commit 6893f5fca42ac8df165a4d7147f6b7ebf62fed8c -Author: Brian Nickel -Date: Tue Jan 1 21:30:34 2008 - - 2008-01-01 Brian Nickel - - I'm working to finish up the xmldocs so I can get rid of the aging docs - directory. - - * src/TagLib/Riff/List.cs: - * src/TagLib/Riff/AviStream.cs: - * src/TagLib/Riff/File.cs: - * src/TagLib/Riff/BitmapInfoHeader.cs: - * src/TagLib/Riff/AviHeaderList.cs: - * src/TagLib/Riff/DivXTag.cs: - * src/TagLib/Riff/ListTag.cs: - * src/TagLib/Riff/InfoTag.cs: - * src/TagLib/Riff/MovieIdTag.cs: - * src/TagLib/Riff/WaveFormatEx.cs: - * src/TagLib/Id3v2/Tag.cs: - * src/TagLib/Id3v2/Frames/UnsynchronisedLyricsFrame.cs: - * src/TagLib/Id3v2/Frames/RelativeVolumeFrame.cs: - * src/TagLib/Id3v2/Frames/CommentsFrame.cs: - * src/TagLib/Id3v2/Frames/SynchronizedLyricsFrame.cs: - * src/TagLib/Id3v2/Frames/PopularimeterFrame.cs: - * src/TagLib/Id3v2/Frames/AttachedPictureFrame.cs: - * src/TagLib/Id3v2/Frames/UniqueFileIdentifierFrame.cs: - * src/TagLib/Id3v2/Frames/PrivateFrame.cs: - * src/TagLib/Id3v2/Frames/MusicCdIdentifierFrame.cs: - * src/TagLib/Id3v2/Frames/TermsOfUseFrame.cs: - * src/TagLib/Id3v2/Frames/GeneralEncapsulatedObjectFrame.cs: - * src/TagLib/Id3v2/Frames/TextIdentificationFrame.cs: - * src/TagLib/Id3v2/Frames/PlayCountFrame.cs: - * src/TagLib/Id3v2/ExtendedHeader.cs: - * src/TagLib/Id3v2/Frame.cs: - * src/TagLib/ByteVector.cs: - * src/TagLib/Flac/BlockHeader.cs: - * src/TagLib/Ape/Tag.cs: - * src/TagLib/Ape/Item.cs: - * src/TagLib/Picture.cs: - * src/TagLib/Ogg/XiphComment.cs: A little documentation and - reformatting. - - * examples/BatchSet.cs: Add support for setting the ID3v2 version. - - svn path=/trunk/taglib-sharp/; revision=92094 - -commit 7fc0f6bd46e6e34224c57a4842ca3e155e8dd4c8 -Author: Brian Nickel -Date: Sun Dec 30 03:50:36 2007 - - 2007-12-30 Brian Nickel - - This commit does the following: - - Makes Id3v2 skip iTunes settings-style comments. - - Makes ; the separator for multivalue fields in Mpeg4, rather - than storing in multiple boxes. - - Cleans up Mpeg4 genre logic. - - Uses System.Globalization to choose the default language in - Id3v2. - - Moves the comment written when Id3v2.Tag.Comment to be the - first COMM in the frame so it is the first one recognized by - other programs. - - * src/TagLib/Id3v2/Tag.cs: Move the written comment to be the first - COMM frame if it isn't. Make " " the fallback comment per instructions - on id3.org. Get the default language from CultureInfo.CurrentCulture - .ThreeLetterISOLanguageName. - - * src/TagLib/Id3v2/Frames/CommentsFrame.cs: Skip iTunes comments if - they are set. There's no need for gibberish to show up as the comment. - - * src/TagLib/Mpeg4/AppleTag.cs: Instead of adding multiple data boxes - for multi-string values, use `;' as a separator. It wasn't working out - in iTunes. (TagLib# can still read the tags is wrote earlier just fine.) - Use `@gnr' or `gnre', but don't attempt a weird mix of both at the same - time. - - * tests/tests.mdp: Automatic changes by MonoDevelop 0.18. - - * configure.ac: Now 2.0.2.21. - - svn path=/trunk/taglib-sharp/; revision=92033 - -commit 4b09fb0a7d34cb10272090e98d982dfe29d7047e -Author: Brian Nickel -Date: Sat Dec 29 20:50:29 2007 - - 2007-12-29 Brian Nickel - - This commit introduces some powerful new tests. They add more intensive - checking of saving and rendering and have lead to the preemptive - correction of several bugs. - - * tests/tests.mdp: - * tests/fixtures/Helpers.cs: - * tests/fixtures/TagLib.FormatTests/FlacFormatTest.cs: - * tests/fixtures/TagLib.FormatTests/Id3V1FormatTest.cs: - * tests/fixtures/TagLib.FormatTests/Id3V2FormatTest.cs: - * tests/fixtures/TagLib.FormatTests/IFormatTest.cs: - * tests/fixtures/TagLib.FormatTests/AsfFormatTest.cs: - * tests/fixtures/TagLib.FormatTests/Id3BothFormatTest.cs: - * tests/fixtures/TagLib.FormatTests/OggFormatTest.cs: - * tests/fixtures/TagLib.FormatTests/MpcFormatTest.cs: - * tests/fixtures/TagLib.FormatTests/M4aFormatTest.cs: - * tests/fixtures/TagLib.Tests.FileFormats/FlacFormatTest.cs: - * tests/fixtures/TagLib.Tests.FileFormats/Id3V1FormatTest.cs: - * tests/fixtures/TagLib.Tests.FileFormats/Id3V2FormatTest.cs: - * tests/fixtures/TagLib.Tests.FileFormats/IFormatTest.cs: - * tests/fixtures/TagLib.Tests.FileFormats/AsfFormatTest.cs: - * tests/fixtures/TagLib.Tests.FileFormats/StandardTests.cs: - * tests/fixtures/TagLib.Tests.FileFormats/Id3BothFormatTest.cs: - * tests/fixtures/TagLib.Tests.FileFormats/OggFormatTest.cs: - * tests/fixtures/TagLib.Tests.FileFormats/MpcFormatTest.cs: - * tests/fixtures/TagLib.Tests.FileFormats/M4aFormatTest.cs: - * tests/fixtures/TagLib.Tests.TaggingFormats/Mpeg4Test.cs: - * tests/fixtures/TagLib.Tests.TaggingFormats/ApeTest.cs: - * tests/fixtures/TagLib.Tests.TaggingFormats/Id3V1Test.cs: - * tests/fixtures/TagLib.Tests.TaggingFormats/Id3V2Test.cs: - * tests/fixtures/TagLib.Tests.TaggingFormats/InfoTagTest.cs: - * tests/fixtures/TagLib.Tests.TaggingFormats/XiphTest.cs: - * tests/fixtures/TagLib.Tests.TaggingFormats/MovieIdTagTest.cs: - * tests/fixtures/TagLib.Tests.TaggingFormats/AsfTest.cs: - * tests/fixtures/TagLib.Tests.TaggingFormats/DivXTest.cs: Replaced unit - tests with new versions. - - svn path=/trunk/taglib-sharp/; revision=92025 - -commit 74de4b8edad100c3f460afac42aa36506f683347 -Author: Brian Nickel -Date: Sat Dec 29 19:26:31 2007 - - 2007-12-29 Brian Nickel - - This commit does the following: - - Fixes support for IsCompilation when saving as ID3v2.2. - - Makes Id3v2.Tag clonable. - - Fixes the project files. - - Fixes cloning UserTextInformationFrame. - - - CHANGES THE DEFAULT ID3v2 VERSION TO 3. While this may result - in some boos from people who consider ID3v2.4 to be the perfect - tagging format (myself included), the number of applications - that hiccup on ID3v2.4 is too astounding. This will not cause - tags already encoded at 2.4 to be reencoded at 2.3, but if new - tags are added to the file, they will be 2.3. - - * src/TagLib/Id3v2/Tag.cs: Make Tag cloneable. Make default version 3. - - * src/TagLib/Id3v2/FrameHeader.cs: Add version 2 mapping for TCMP so - IsComposer is saved in Id3v2.2. - - * src/TagLib/Id3v2/Frames/TextIdentificationFrame.cs: If the frame - is a User*, create a User* when cloning. - - * src/TagLib/Id3v2/ExtendedHeader.cs: Make cloneable. - - * src/TagLib/Id3v2/FrameTypes.cs: - * src/TagLib/Mpeg4/BoxTypes.cs: Add description of why these classes - exist, why they are internal, and why they aren't necessary for third - party programmers. - - * src/taglib-sharp.mdp: - * taglib-sharp.csproj: Add VBRIHeader.cs - - svn path=/trunk/taglib-sharp/; revision=92024 - -commit e93bf6fdf5d818197cfdc7518e76f2bdfea4192d -Author: Brian Nickel -Date: Fri Dec 28 15:19:09 2007 - - 2007-12-28 Brian Nickel - - This commit does the following: - - Adds IsCompilation to Id3v2. - - Adds support for deep CopyTo with Id3v2. - - Fixes support for deep CopyTo with Ape. - - Adds support for Fraunhofer VBRI headers in MPEG audio. - - Fixes a bug in reading XiphComments. - - Other trivial changes. - - * src/TagLib/Id3v2/Tag.cs: Added IsCompilation and CopyTo. - - * src/TagLib/Id3v2/FrameTypes.cs: Added TCMP. - - * src/TagLib/Id3v2/Frames/UnsynchronisedLyricsFrame.cs: - * src/TagLib/Id3v2/Frames/RelativeVolumeFrame.cs: - * src/TagLib/Id3v2/Frames/CommentsFrame.cs: - * src/TagLib/Id3v2/Frames/SynchronizedLyricsFrame.cs: - * src/TagLib/Id3v2/Frames/PopularimeterFrame.cs: - * src/TagLib/Id3v2/Frames/AttachedPictureFrame.cs: - * src/TagLib/Id3v2/Frames/UniqueFileIdentifierFrame.cs: - * src/TagLib/Id3v2/Frames/PrivateFrame.cs: - * src/TagLib/Id3v2/Frames/MusicCdIdentifierFrame.cs: - * src/TagLib/Id3v2/Frames/TermsOfUseFrame.cs: - * src/TagLib/Id3v2/Frames/GeneralEncapsulatedObjectFrame.cs: - * src/TagLib/Id3v2/Frames/TextIdentificationFrame.cs: - * src/TagLib/Id3v2/Frames/PlayCountFrame.cs: - * src/TagLib/Id3v2/Frame.cs: Made clonable. - - * src/TagLib/TagLib.sources: - * src/TagLib/Mpeg/VBRIHeader.cs: - * src/TagLib/Mpeg/AudioHeader.cs: Added support for Fraunhofer VBRI - header. This improves coverage of VBR files. (Thanks to hwahrmann for - proposing and authoring the changes.) - - * src/TagLib/Ape/Tag.cs: Fixed CopyTo to actually override - TagLib.Tag.CopyTo. - - * src/TagLib/Ape/Item.cs: Trivial formatting. - - * src/TagLib/Picture.cs: Try to make ObsoleteAttributes a bit clearer. - - * src/TagLib/Debugger.cs: Much nicer DumpHex. - - * src/TagLib/Ogg/XiphComment.cs: Don't fail when a bad comment (one - without a = is encountered, just ignore that field. (Thanks to hwahrmann - for the bug report and authoring the changes.) - - * examples/BatchSet.cs: Allow setting pictures. - - * configure.ac: Now 2.0.2.20. - - svn path=/trunk/taglib-sharp/; revision=92001 - -commit bc9aa22b56ec39127f7ff7ae9e5954d948462f42 -Author: Brian Nickel -Date: Thu Dec 27 01:11:19 2007 - - 2007-12-27 Brian Nickel - - This commit does the following: - - Adds support for .divx extension. (Just an AVI) - - Adds Tag.CopyTo to obsolete Tag.Duplicate. The difference is - that Tag.CopyTo is overridable, so tags and implement their - own, better, copying. - - Several small bugfixes correcting Mpeg4.Tag.IsCompilation, - GIF images, reading Mpeg4 pictures without flags, and - NonContainer.EndTag reading small files. - - - COMPLETE REWORK of OGG pagination to handle multipage comments - and saving that results in the creation of new pages. This - fixes a bug posted by kurros on the forum and Banshee bug - #502628. - - * src/TagLib/Riff/File.cs: Recognize the .divx extension. (Thanks to - sukhjinder for the feature request and jocker for confirming the fix.) - Use Tag.CopyTo instead of Tag.Duplicate. - - * src/TagLib/Flac/File.cs: Use Tag.CopyTo instead of Tag.Duplicate. - - * src/TagLib/Ape/Tag.cs: Add first real implementation of Tag.CopyTo. - - * src/TagLib/Ape/Item.cs: Make clonable. - - * src/TagLib/Mpeg4/AppleTag.cs: Don't check for image format flags, just - use data to identify the image type. iTunes apparently doesn't use the - flags anymore. (Thanks to DavidT@Imerge for the bug report.) Use 1 byte - rather than 4 to store the compilation setting. (Thanks to DavidT@Imerge - for the fix.) - - * src/TagLib/Picture.cs: Was setting mime-type to "image/png" for GIF. - - * src/TagLib/Tag.cs: Mark Tag.Duplicate as obsolete and replace with - overridable Tag.CopyTo. This will provide the option for better copying - from one tag to another if their types match rather than just doing the - simply copy available in Tag.Duplicate. See Ape.Tag for an - implemenation. More coming soon. - - * src/TagLib/NonContainer/File.cs: Don't read tags at the end of the - file if the tags at the start of the file are the entire file. (No - double dipping.) - - * src/TagLib/NonContainer/EndTag.cs: Don't crash if start < 128 when - reading. (Thanks to jonx for the bug report.) Use Tag.CopyTo instead of - Tag.Duplicate. - - * src/TagLib/NonContainer/StartTag.cs: Use Tag.CopyTo instead of - Tag.Duplicate. - - * src/TagLib/Ogg/File.cs: Use changes in Page and Paginator classes to - handle situations where the number of pages in the stream changes. - - * src/TagLib/Ogg/Page.cs: Add method for updating all Ogg pages after a - certain position with new page numbers. This is necessary if new pages - are inserted to avoid corrupting the file. Part of sweeping changes to - Ogg support. - - * src/TagLib/Ogg/Paginator.cs: Instead of just saving a single page, - properly paginate using a single page for the first packet in the file. - Optimally, produce the same number of pages as were in the file before, - but allow for creating more pages if the situation warrents it. - - * src/TagLib/Ogg/PageHeader.cs: Add a constructor which clones a header - but offsets page sequence by a specified number. - - * src/TagLib/Ogg/Bitstream.cs: Fix typo that was preventing multi-page - packets from reading correctly. What a difference a negation makes. - - * configure.ac: Now 2.0.2.19. - - svn path=/trunk/taglib-sharp/; revision=91915 - -commit 9f3974dc78e45cf027155302c8496535ea6e4feb -Author: Brian Nickel -Date: Tue Dec 25 06:12:52 2007 - - 2007-12-25 Brian Nickel - - * src/TagLib/Riff/File.cs: - * src/TagLib/Flac/File.cs: - * src/TagLib/Mpeg4/File.cs: - * src/TagLib/NonContainer/File.cs: - * src/TagLib/Asf/File.cs: - * src/TagLib/Ogg/File.cs: Wrap constructors and save operations in - try/finally to ensure the streams get closed. (Thanks to oliphant for - the bug report.) - - svn path=/trunk/taglib-sharp/; revision=91875 - -commit 250683919fee9b9dcc82825aba075215ed22df9a -Author: Brian Nickel -Date: Tue Dec 25 04:09:22 2007 - - 2007-12-25 Brian Nickel - - * src/TagLib/Id3v1/Tag.cs: Added constructor to create from data. Added - documentation. Fixed properties to produce correct output when empty. - Removed broken IsEmpty property. - - * src/TagLib/Riff/List.cs: Make sure fields are cleared when SetValue - is called with any type of empty result. - - * src/TagLib/Riff/DivXTag.cs: Added constructor to create from data. - Added documentation. Fixed properties to produce correct output when - empty. Make Clear() clear `title'. Resize fields after encoding rather - than before to avoid possible sizing problems. - - * src/TagLib/Riff/MovieIdTag.cs: Read genre from correct position. - - * src/TagLib/Riff/WaveFormatEx.cs: Reformat and complete codec - descriptions. - - * src/TagLib/Id3v2/Tag.cs: Add constructor to create from data. Fixed - properties to produce correct output when empty. - - * src/TagLib/Id3v2/Frames/UnsynchronisedLyricsFrame.cs: Correct file - header. - - * src/TagLib/Id3v2/Frames/SynchronizedLyricsFrame.cs: Use alignment when - searching for delimiter to avoid breakage with UTF16BE. - - * src/TagLib/Id3v2/Frames/UniqueFileIdentifierFrame.cs: Tidy up a bit. - Add constructor with only owner as argument. - - * src/TagLib/Id3v2/Frames/PrivateFrame.cs: Throw NotImplementedException - when version is less than 3, rather than just outputting an empty tag. - - * src/TagLib/Id3v2/Frames/GeneralEncapsulatedObjectFrame.cs: Add size - of delimiter rather than 1 to avoid breakage with UTF16. - - * src/TagLib/Id3v2/Frames/TextIdentificationFrame.cs: Use delimiter - rather than single byte in a rejection method to avoid breakage. Have - genres produce "/" separated values after first non-indexable value is - encountered. eg. {"Blues", "Country", "Foobar", "Jazz"} becomes - "(0)(2)Foobar/Jazz". This format is completely recoverable. Add - constructor for User* which accepts just a description. - - * src/TagLib/Mpeg/AudioHeader.cs: Correct some documentation. - - * src/TagLib/ByteVector.cs: Pass generated BOM to StringTypeToEncoding - to make sure the correct encoding is used. - - * src/TagLib/Flac/File.cs: Correct documentation typo. - - * src/TagLib/Ape/Tag.cs: Add support for one of each type of picture - rather than just one front cover. Allow parsing of years not 4 digits - in length. - - * src/TagLib/Mpeg4/FileParser.cs: Prevent a crash if there isn't - sufficient data for reading the first block in parsers. Fix typo which - caused UtdaTree to not be filled, resulting in written tags not being - readable. - - * src/TagLib/Mpeg4/AppleTag.cs: Allow parsing of years not 4 digits - in length. Correctly clear zeroed values. - - * src/TagLib/Tag.cs: Use semicolons, rather than commas in Joined* to - reflect behavior of WMP. - - * src/TagLib/Picture.cs: Fix documentation typo. - - * src/TagLib/WavPack/StreamHeader.cs: Add some docs. - - * src/TagLib/Asf/Tag.cs: Remove "WM/GenreID" when a new genre is stored. - - * src/TagLib/Asf/ExtendedContentDescriptionObject.cs: Loop through names - rather than descriptors first when getting descriptors. That way the - first matching name is chosen rather than the first descriptor of any - name. - - * src/TagLib/Asf/ContentDescriptor.cs: Fix rendering bug that broke - storing values. - - * configure.ac: Now 2.0.2.18. - - svn path=/trunk/taglib-sharp/; revision=91872 - -commit 38c6838456f6ca92a292f90d2cf763914a8857f0 -Author: Brian Nickel -Date: Tue Oct 2 13:27:31 2007 - - 2007-10-02 Brian Nickel - - * src/TagLib/Riff/List.cs: - * src/TagLib/Riff/DivXTag.cs: - * src/TagLib/Id3v2/Frames/UnsynchronisedLyricsFrame.cs: - * src/TagLib/Id3v2/Frames/RelativeVolumeFrame.cs: - * src/TagLib/Id3v2/Frames/CommentsFrame.cs: - * src/TagLib/Id3v2/Frames/SynchronizedLyricsFrame.cs: - * src/TagLib/Id3v2/Frames/AttachedPictureFrame.cs: - * src/TagLib/Id3v2/Frames/TermsOfUseFrame.cs: - * src/TagLib/Id3v2/Frames/GeneralEncapsulatedObjectFrame.cs: - * src/TagLib/Id3v2/Frames/TextIdentificationFrame.cs: - * src/TagLib/Flac/Picture.cs: - * src/TagLib/Ape/Tag.cs: - * src/TagLib/Ape/Item.cs: - * src/TagLib/Mpeg4/Boxes/IsoHandlerBox.cs: - * src/TagLib/Ogg/XiphComment.cs: Use ToString (StringType,int,int) - instead of ToString(StringType) - - * src/TagLib/Mpeg/AudioHeader.cs: Remove AudioHeader.position as it is - no longer needed. - - * src/TagLib/ByteVector.cs: Use ToString(StringType,int,int) in - ToStrings, mark ToString(StringType,int) as obsolete, add - ToString(StringType,int,int), add documentation. Relax exception - exception checking in ToString as it was causing unnecessary exceptions - when reading some zero byte strings. (Thanks to sambeckett for the bug - report.) - - * src/TagLib/Asf/Tag.cs: Use ContentDescriptionObject.Copyright instead - of an extended content descriptor. (Thanks to Dakuja for the bug - report.) - - * src/TagLib/Id3v2/Frames/PopularimeterFrame.cs: Add nil separator when - rendering. Was causing tag to be unreadable. (Thanks to cody for the bug - report.) - - * configure.ac: Now 2.0.2.17. - - svn path=/trunk/taglib-sharp/; revision=86763 - -commit 900eee2508821d22f9627ef7b1ad11b8468a6d6c -Author: Brian Nickel -Date: Thu Sep 20 15:54:40 2007 - - 2007-09-20 Brian Nickel - - * src/TagLib/ByteVector.cs: Fix overflow problem introduced last - release. (Thanks to hwahrmann for the bug report.) - - * src/TagLib/Asf/HeaderObject.cs: Switch the order of play_duration and - send_duration. Standard implementation is backwards from the - specification. (Thanks to hwahrmann for the bug report.) - - * src/TagLib/Asf/FilePropertiesObject.cs: Subtract preroll from - duration. (Thanks to hwahrmann for the bug report.) - - * configure.ac: Now 2.0.2.16. - - svn path=/trunk/taglib-sharp/; revision=86112 - -commit 3d7097038b0aefac9481f4c18a7528050b4830b8 -Author: Brian Nickel -Date: Tue Sep 18 15:07:18 2007 - - 2007-09-18 Brian Nickel - - * src/TagLib/Riff/BitmapInfoHeader.cs: Reformat. - - * src/TagLib/Id3v2/FrameHeader.cs: Remove 'using System.Collections' - - * src/TagLib/Mpeg/AudioHeader.cs: Don't double-count position when - counting frames. (Thanks to hwahrmann for the bug report.) - - * src/TagLib/ByteVector.cs: Add UseBrokenLatin1Behavior to emulate bad - behavior of many taggers. When true, TagLib# will read Latin1 strings as - the system default encoding. - - * src/TagLib/Asf/ContentDescriptionObject.cs: - * src/TagLib/Ape/Tag.cs: Documented. - - * src/TagLib/Riff/File.cs: - * src/TagLib/Mpeg4/Boxes/IsoHandlerBox.cs: - * src/TagLib/Asf/DescriptionRecord.cs: - * src/TagLib/Asf/ContentDescriptor.cs: - * src/TagLib/ReadOnlyByteVector.cs: Use ToString(StringType). - - * configure.ac: Now 2.0.2.15. - - svn path=/trunk/taglib-sharp/; revision=85987 - -commit 80926fc841ac9bf4df8ff726a5c33dcc37488b39 -Author: Brian Nickel -Date: Mon Sep 17 01:44:06 2007 - - 2007-09-17 Brian Nickel - - * src/TagLib/Id3v2/Tag.cs: New logic for SetFrameText was backwards, - causing frames to disappear. (Thanks to hwahrmann for the bug report.) - - * src/TagLib/Id3v2/FrameHeader.cs: Fix the reading of version 2 and 3 - headers. They weren't being converted to the new headers. Add - FrameFlags.None. - - * src/TagLib/Id3v2/Header.cs: Add HeaderFlags.None. - - * configure.ac: Now 2.0.2.14. - - svn path=/trunk/taglib-sharp/; revision=85861 - -commit fb12bfc4ca89e46a1b3024170f3e436a4a6b28ec -Author: Brian Nickel -Date: Sun Sep 16 17:23:22 2007 - - 2007-09-16 Brian Nickel - - * src/TagLib/Id3v2/SynchData.cs: - * src/TagLib/Id3v2/FrameTypes.cs: - * src/TagLib/Id3v2/FrameHeader.cs: - * src/TagLib/Id3v2/Header.cs: - * src/TagLib/ByteVector.cs: - * src/TagLib/Ape/StreamHeader.cs: Documentation. - - svn path=/trunk/taglib-sharp/; revision=85860 - -commit c172f173c6f06518c7323c14d43bd273b58e1392 -Author: Brian Nickel -Date: Wed Sep 5 19:25:26 2007 - - 2007-09-05 Brian Nickel - - * src/TagLib/Flac/Block.cs: Completed docs. - - * src/TagLib/Id3v2/Tag.cs: GetItemAsUInt32 was fubar and always - returning zero. (Thanks to renzska for the bug report.) Always set the - encoding to the default when setting the contents of a frame. This - should hopefully prevent bad encoding. (Thanks to evgeni for the bug - report.) - - * src/TagLib/Ape/Tag.cs: GetItemAsUInt32 was fubar and always returning - zero. - - * configure.ac: Now 2.0.2.13. - - - - svn path=/trunk/taglib-sharp/; revision=85387 - -commit 7073f245a80d975f37c51d0d21b3f5da68dd6057 -Author: Brian Nickel -Date: Tue Sep 4 02:17:55 2007 - - 2007-09-04 Brian Nickel - - Only 713 public members away from doing away with MonoDoc. - - * src/TagLib/Flac/File.cs: Completed docs. - - * src/TagLib/ByteVectorList.cs: - * src/TagLib/Id3v1/Tag.cs: - * src/TagLib/Id3v1/StringHandler.cs: - * src/TagLib/Riff/List.cs: - * src/TagLib/Riff/AviStream.cs: - * src/TagLib/Riff/File.cs: - * src/TagLib/Riff/BitmapInfoHeader.cs: - * src/TagLib/Riff/AviHeaderList.cs: - * src/TagLib/Riff/DivXTag.cs: - * src/TagLib/Riff/ListTag.cs: - * src/TagLib/Riff/InfoTag.cs: - * src/TagLib/Riff/MovieIdTag.cs: - * src/TagLib/Riff/WaveFormatEx.cs: - * src/TagLib/Genres.cs: - * src/TagLib/Id3v2/Tag.cs: - * src/TagLib/Id3v2/Footer.cs: - * src/TagLib/Id3v2/SynchData.cs: - * src/TagLib/Id3v2/FrameTypes.cs: - * src/TagLib/Id3v2/FrameFactory.cs: - * src/TagLib/Id3v2/FrameHeader.cs: - * src/TagLib/Id3v2/Header.cs: - * src/TagLib/Id3v2/Frames/UnsynchronisedLyricsFrame.cs: - * src/TagLib/Id3v2/Frames/RelativeVolumeFrame.cs: - * src/TagLib/Id3v2/Frames/CommentsFrame.cs: - * src/TagLib/Id3v2/Frames/SynchronizedLyricsFrame.cs: - * src/TagLib/Id3v2/Frames/AttachedPictureFrame.cs: - * src/TagLib/Id3v2/Frames/UniqueFileIdentifierFrame.cs: - * src/TagLib/Id3v2/Frames/TermsOfUseFrame.cs: - * src/TagLib/Id3v2/Frames/GeneralEncapsulatedObjectFrame.cs: - * src/TagLib/Id3v2/Frames/TextIdentificationFrame.cs: - * src/TagLib/Id3v2/Frames/UnknownFrame.cs: - * src/TagLib/Id3v2/ExtendedHeader.cs: - * src/TagLib/Id3v2/Frame.cs: - * src/TagLib/ByteVector.cs: - * src/TagLib/Properties.cs: - * src/TagLib/SupportedMimeType.cs: - * src/TagLib/Flac/Picture.cs: - * src/TagLib/Flac/BlockHeader.cs: - * src/TagLib/Flac/StreamHeader.cs: - * src/TagLib/Flac/Block.cs: - * src/TagLib/Ape/Tag.cs: - * src/TagLib/Ape/Footer.cs: - * src/TagLib/StringList.cs: - * src/TagLib/FileTypes.cs: - * src/TagLib/ListBase.cs: - * src/TagLib/Mpeg4/Boxes/IsoSampleTableBox.cs: - * src/TagLib/Mpeg4/Boxes/AppleItemListBox.cs: - * src/TagLib/Mpeg4/Boxes/IsoUserDataBox.cs: - * src/TagLib/Mpeg4/Boxes/IsoAudioSampleEntry.cs: - * src/TagLib/Mpeg4/Boxes/AppleAnnotationBox.cs: - * src/TagLib/Mpeg4/Boxes/IsoSampleDescriptionBox.cs: - * src/TagLib/Mpeg4/Boxes/IsoMetaBox.cs: - * src/TagLib/Mpeg4/FileParser.cs: - * src/TagLib/Mpeg4/AppleTag.cs: - * src/TagLib/Mpeg4/Box.cs: - * src/TagLib/Picture.cs: - * src/TagLib/Tag.cs: - * src/TagLib/File.cs: - * src/TagLib/Debugger.cs: - * src/TagLib/Asf/Tag.cs: - * src/TagLib/Asf/HeaderExtensionObject.cs: - * src/TagLib/Asf/HeaderObject.cs: - * src/TagLib/Asf/File.cs: - * src/TagLib/Asf/ExtendedContentDescriptionObject.cs: - * src/TagLib/Asf/Guid.cs: - * src/TagLib/Asf/MetadataLibraryObject.cs: - * src/TagLib/Ogg/XiphComment.cs: - * src/TagLib/Ogg/Page.cs: - * src/TagLib/Ogg/Codecs/Theora.cs: - * src/TagLib/Ogg/Codecs/Vorbis.cs: - * src/TagLib/Ogg/Codec.cs: - * src/TagLib/Ogg/File.cs: - * src/TagLib/Ogg/Paginator.cs: - * src/TagLib/Ogg/PageHeader.cs: - * src/TagLib/Ogg/GroupedComment.cs: - * src/TagLib/Ogg/Bitstream.cs: - * src/AssemblyInfo.cs.in: Replaced headers and use cref="T:...`1" - instead of "...{T}" until gmcs is fixed. This reduces warnings to - strictly CS1591. - - svn path=/trunk/taglib-sharp/; revision=85255 - -commit 4721677e816f851bc30009cd35145ad4c3610c9a -Author: Brian Nickel -Date: Mon Sep 3 15:57:36 2007 - - 2007-09-03 Brian Nickel - - * src/TagLib/Id3v2/Tag.cs: Renamed private method. Tidied up Read. - - * src/TagLib/Ape/Item.cs: Fixed some documentation. - - * src/TagLib/Ape/Tag.cs: - * src/TagLib/Ape/Footer.cs: - * src/TagLib/Asf/Tag.cs: - * src/TagLib/Asf/HeaderExtensionObject.cs: - * src/TagLib/Asf/File.cs: - * src/TagLib/Asf/HeaderObject.cs: - * src/TagLib/Asf/DescriptionRecord.cs: - * src/TagLib/Asf/FilePropertiesObject.cs: - * src/TagLib/Asf/ExtendedContentDescriptionObject.cs: - * src/TagLib/Asf/UnknownObject.cs: - * src/TagLib/Asf/Guid.cs: - * src/TagLib/Asf/MetadataLibraryObject.cs: - * src/TagLib/Asf/PaddingObject.cs: - * src/TagLib/Asf/StreamPropertiesObject.cs: - * src/TagLib/Asf/ContentDescriptionObject.cs: - * src/TagLib/Asf/Object.cs: - * src/TagLib/Asf/ContentDescriptor.cs: Completed docs. - - svn path=/trunk/taglib-sharp/; revision=85245 - -commit e99b1e6e4727bfe7babe83c31a0a21686e356d22 -Author: Brian Nickel -Date: Fri Aug 31 12:05:20 2007 - - 2007-08-31 Brian Nickel - - * src/TagLib/Ape/File.cs: - * src/TagLib/Ape/StreamHeader.cs: - * src/TagLib/FileTypes.cs: Added support for reading APE files. (Thanks - to hwahrmann for authoring the classes.) - - * src/TagLib/Id3v2/Tag.cs: Fixed docs. - - * src/TagLib/Ape/Item.cs: Completed docs. - - * src/TagLib/Id3v2/Frames/RelativeVolumeFrame.cs: Prevent - ArgumentOutOfRangeException when a corrupt frame is encountered. (Thanks - to jms for the bug report.) - - * src/TagLib/Id3v1/Tag.cs: - * src/TagLib/Riff/List.cs: - * src/TagLib/Riff/DivXTag.cs: - * src/TagLib/Riff/ListTag.cs: - * src/TagLib/Riff/InfoTag.cs: - * src/TagLib/Riff/MovieIdTag.cs: - * src/TagLib/ByteVector.cs: - * src/TagLib/Properties.cs: - * src/TagLib/Ape/Tag.cs: - * src/TagLib/Mpeg4/AppleTag.cs: - * src/TagLib/Tag.cs: - * src/TagLib/Asf/Tag.cs: - * src/TagLib/Ogg/XiphComment.cs: Removed StringCollection usage (and - replaced some collections with arrays. - - * src/TagLib/TagLib.sources: - * src/taglib-sharp.mdp: - * taglib-sharp.csproj: Added files. - - * configure.ac: Now 2.0.2.12. - - svn path=/trunk/taglib-sharp/; revision=85146 - -commit aa88901e9133c8632e00673af9f1d784ea41fdb0 -Author: Brian Nickel -Date: Tue Aug 28 19:36:24 2007 - - 2007-08-28 Brian Nickel - - * src/TagLib/Ape/Tag.cs: Stop parsing when a corrupt item is detected. - - * src/TagLib/Ape/Item.cs: UTF-8 encoded length != string.Length. Was - messing up with Chinese titles. (Thanks to jms for the bug report.) - - * src/TagLib/CombinedTag.cs: Fix header. - - * src/TagLib/Id3v2/Tag.cs: Document, add generic GetFrames() - - * src/TagLib/Id3v2/Frames/TextIdentificationFrame.cs: - * src/TagLib/Id3v2/Frame.cs: - * src/TagLib/Mpeg/File.cs: Document. - - * src/TagLib/Mpeg/VideoHeader.cs: Fix copyright info. - - * src/TagLib/Mpeg/AudioFile.cs: Fix some typos. - - * src/TagLib/Properties.cs: - * src/TagLib/SupportedMimeType.cs: - * src/TagLib/StringList.cs: - * src/TagLib/FileTypes.cs: - * src/TagLib/Mpeg4/Boxes/IsoSampleTableBox.cs: - * src/TagLib/Mpeg4/Boxes/AppleItemListBox.cs: - * src/TagLib/Mpeg4/Boxes/IsoUserDataBox.cs: - * src/TagLib/Mpeg4/Boxes/IsoAudioSampleEntry.cs: - * src/TagLib/Mpeg4/Boxes/IsoVisualSampleEntry.cs: - * src/TagLib/Mpeg4/Boxes/AppleAnnotationBox.cs: - * src/TagLib/Mpeg4/Boxes/IsoSampleDescriptionBox.cs: - * src/TagLib/Mpeg4/Boxes/IsoMetaBox.cs: - * src/TagLib/Mpeg4/FileParser.cs: - * src/TagLib/Mpeg4/AppleTag.cs: - * src/TagLib/Mpeg4/Box.cs: Fixed generics documentation. - - * src/TagLib/Mpeg4/File.cs: Accidentally marked constructors as - protected when copy/pasting code from NonContainer.File. (Thanks to - hwahrmann for the bug report.) - - * configure.ac: Now 2.0.2.11. - - svn path=/trunk/taglib-sharp/; revision=84985 - -commit 51805c32c8855c0c1d1b8f2feaba2d96cc066b24 -Author: Brian Nickel -Date: Fri Aug 24 19:19:12 2007 - - 2007-08-24 Brian Nickel - - * src/TagLib/Mpeg/AudioHeader.cs: Restore copyright notice. - - * src/TagLib/ICodec.cs: Wording Change. - - * src/TagLib/Mpeg/XingHeader.cs: - * src/TagLib/Mpeg/VideoHeader.cs: - * src/TagLib/Mpeg/AudioFile.cs: - * src/TagLib/Mpeg4/Boxes/FullBox.cs: - * src/TagLib/Mpeg4/Boxes/IsoMovieHeaderBox.cs: - * src/TagLib/Mpeg4/Boxes/IsoSampleTableBox.cs: - * src/TagLib/Mpeg4/Boxes/IsoSampleEntry.cs: - * src/TagLib/Mpeg4/Boxes/IsoChunkLargeOffsetBox.cs: - * src/TagLib/Mpeg4/Boxes/AppleAdditionalInfoBox.cs: - * src/TagLib/Mpeg4/Boxes/IsoFreeSpaceBox.cs: - * src/TagLib/Mpeg4/Boxes/AppleItemListBox.cs: - * src/TagLib/Mpeg4/Boxes/IsoUserDataBox.cs: - * src/TagLib/Mpeg4/Boxes/IsoAudioSampleEntry.cs: - * src/TagLib/Mpeg4/Boxes/IsoHandlerBox.cs: - * src/TagLib/Mpeg4/Boxes/AppleElementaryStreamDescriptor.cs: - * src/TagLib/Mpeg4/Boxes/IsoVisualSampleEntry.cs: - * src/TagLib/Mpeg4/Boxes/IsoChunkOffsetBox.cs: - * src/TagLib/Mpeg4/Boxes/AppleDataBox.cs: - * src/TagLib/Mpeg4/Boxes/AppleAnnotationBox.cs: - * src/TagLib/Mpeg4/Boxes/UnknownBox.cs: - * src/TagLib/Mpeg4/Boxes/IsoSampleDescriptionBox.cs: - * src/TagLib/Mpeg4/Boxes/IsoMetaBox.cs: - * src/TagLib/Mpeg4/FileParser.cs: - * src/TagLib/Mpeg4/AppleTag.cs: - * src/TagLib/Mpeg4/BoxTypes.cs: - * src/TagLib/Mpeg4/File.cs: - * src/TagLib/Mpeg4/BoxFactory.cs: - * src/TagLib/Mpeg4/BoxHeader.cs: - * src/TagLib/Mpeg4/Box.cs: Document completely. - - svn path=/trunk/taglib-sharp/; revision=84838 - -commit dec5cc67b4341608e15eb276a5c42c27c9277f15 -Author: Brian Nickel -Date: Mon Aug 20 02:08:28 2007 - - 2007-08-19 Brian Nickel - - * src/TagLib/Mpeg4/Boxes/IsoVisualSampleEntry.cs: - * src/TagLib/Mpeg4/Boxes/UnknownBox.cs: Document completely. - - * src/TagLib/Mpeg4/AppleTag.cs: Committed too soon. File didn't compile. - * src/TagLib/Mpeg4/BoxFactory.cs: Forgot a bunch of end tags. - - * src/TagLib/Mpeg4/Box.cs: Fix doc typo. - - * src/TagLib/Mpc/StreamHeader.cs: - * src/TagLib/WavPack/StreamHeader.cs: Slight change in wording. - - svn path=/trunk/taglib-sharp/; revision=84428 - -commit 858f6cfd4adbf14589d3e125b65b61196160a47e -Author: Brian Nickel -Date: Mon Aug 20 00:40:31 2007 - - 2007-08-19 Brian Nickel - - * src/TagLib/Id3v2/Frames/PopularimeterFrame.cs: Fix an exception when - saving a PopularimeterFrame with a play count of 0. - - * src/taglib-sharp.mdp: Remove BoxList.cs. It hasn't been used in - forever and is an empty file. - - * src/TagLib/Mpeg4/FileParser.cs: Started documentation. - - * src/TagLib/Mpeg4/BoxTypes.cs: - * src/TagLib/Mpeg4/File.cs: - * src/TagLib/Mpeg4/BoxFactory.cs: - * src/TagLib/Mpeg4/BoxHeader.cs: - * src/TagLib/Mpeg4/BoxList.cs: - * src/TagLib/Mpeg4/Box.cs: - * src/TagLib/Mpc/File.cs: - * src/TagLib/WavPack/File.cs: Completed documentation. - - * src/TagLib/Mpc/StreamHeader.cs: - * src/TagLib/WavPack/StreamHeader.cs: Completed documentation, except - for IEquitable overrides. - - * src/TagLib/Mpeg4/AppleTag.cs: Completed documentation, except for - IEnumerable overrides. - - * configure.ac: Now 2.0.2.10. - - svn path=/trunk/taglib-sharp/; revision=84426 - -commit 9bc89ce4e9eee861e891e30621b3e74f6f9d85f5 -Author: Brian Nickel -Date: Sun Aug 19 14:07:59 2007 - - 2007-08-19 Brian Nickel - - * src/TagLib/File.cs: Fix some typos in documentation. - - * src/TagLib/NonContainer/Tag.cs: - * src/TagLib/NonContainer/File.cs: - * src/TagLib/NonContainer/EndTag.cs: - * src/TagLib/NonContainer/StartTag.cs: Document completely. - - svn path=/trunk/taglib-sharp/; revision=84408 - -commit 72482ecc56ce43af5ec646017224da66006a30bb -Author: Brian Nickel -Date: Fri Aug 17 18:37:31 2007 - - 2007-08-17 Brian Nickel - - * src/TagLib/Mpeg/AudioHeader.cs: Go back to setting XingHeader early, - there are just too many things that depend on `this'. (Thanks to jmurphy - for the bug report.) - - * src/TagLib/Ape/Tag.cs: Support APEv2 cover pictures. (Thanks to - renzska for the feature request.) - - * src/TagLib/Picture.cs: Add new constructors, obsolete CreateFromFile - and CreateFromPath, detect GIF and BMP files. - - * src/TagLib/NonContainer/EndTag.cs: Check that the footer contains - sane values. - - * configure.ac: Now 2.0.2.9. Remove pkgconfig check for Mono. It isn't - really needed. - - 2007-08-16 Brian Nickel - - * src/TagLib/Asf/Tag.cs: - * src/TagLib/Asf/File.cs: - * src/TagLib/Asf/HeaderObject.cs: - * src/TagLib/Asf/DescriptionRecord.cs: - * src/TagLib/Asf/MetadataLibraryObject.cs: - * src/TagLib/Asf/ContentDescriptor.cs: Added support for the ASF - Metadata Library Object. This object supports content descriptors as big - as uint.MaxValue as opposed to ushort.MaxValue. Tag.Pictures now reads - from this source as well, and large pictures are now written to it. They - were previously ignored. (Thanks to renzska for the bug report.) - - * src/TagLib/TagLib.sources: - * src/taglib-sharp.mdp: - * taglib-sharp.csproj: Added new files. - - * configure.ac: Now 2.0.2.8 - - svn path=/trunk/taglib-sharp/; revision=84339 - -commit e924fe536ed5c029be3103f25fd0434ed9282635 -Author: Brian Nickel -Date: Thu Aug 16 16:28:34 2007 - - 2007-08-16 Brian Nickel - - * src/TagLib/Mpeg/AudioHeader.cs: Use non-property checks in public - constructor, assigning the XingHeader after sanity tests was causing - compiler problems on MS .NET. (Thanks to jmurphy for the bug report.) - - * configure.ac: Now 2.0.2.7 - - svn path=/trunk/taglib-sharp/; revision=84242 - -commit a2bb91062fccaf01b72f333aa5317b1291b233b2 -Author: Brian Nickel -Date: Tue Aug 14 16:50:47 2007 - - 2007-08-14 Brian Nickel - - * src/TagLib/Mpeg/XingHeader.cs: Add XingHeader.FileIdentifier to speed - things up. - - * src/TagLib/Mpeg/AudioHeader.cs: Fully document, reformat and add a - check for the Xing identifier before calling the constructor to avoid an - unnecessary exception/try/catch. - - * src/TagLib/ICodec.cs: Correct some documentation. - - * src/TagLib/Properties.cs: - * src/TagLib/SupportedMimeType.cs: - * src/TagLib/StringList.cs: - * src/TagLib/FileTypes.cs: Correct for documentation compiler warning. - - * taglib-sharp.csproj: Added PopularimeterFrame.cs - - svn path=/trunk/taglib-sharp/; revision=84123 - -commit 39f560e77794ae82c5662b9be3efec137793e1a1 -Author: Brian Nickel -Date: Sun Aug 12 21:54:49 2007 - - 2007-08-12 Brian Nickel - - * src/TagLib/Id3v2/FrameTypes.cs: Added POPM - - * src/TagLib/Id3v2/FrameFactory.cs: Added PopularimeterFrame - - * src/TagLib/Id3v2/Frames/PopularimeterFrame.cs: NEW. Supports ID3v2 - POPM (4.17) frame. (Thanks to renzska for the feature request.) - - * src/TagLib/Id3v2/Frames/PlayCountFrame.cs: Removed 'using - System.Collections; - - * src/TagLib/TagLib.sources: - * src/taglib-sharp.mdp: Added PopularimeterFrame.cs - - * configure.ac: Now 2.0.2.5 - - svn path=/trunk/taglib-sharp/; revision=83929 - -commit b73f68526f3f4b6387b2374a5859d0ab08f284e3 -Author: Brian Nickel -Date: Sun Aug 12 21:03:16 2007 - - 2007-08-12 Brian Nickel - - * src/TagLib/Riff/List.cs: Reordered operations. Was incrementing a - value after it would have made a difference. - - * src/TagLib/Id3v2/Tag.cs: Added static UseNumericGenres which can be - set to false to prevent genres from being stored as ID3v1 indices. - (Thanks to craig for the feature request.) - - * src/TagLib/Id3v2/Frames/TextIdentificationFrame.cs: Use a - StringBuilder instead of + operations when formatting genres. - - * src/TagLib/Mpeg4/Boxes/IsoHandlerBox.cs: Check that a negative length - is not being passed to Mid if '\0' is not found. - - * src/TagLib/Mpeg4/BoxTypes.cs: Add Mdat. - - * src/TagLib/Riff/File.cs: - * src/TagLib/Mpeg4/FileParser.cs: - * src/TagLib/Mpeg4/File.cs: - * src/TagLib/NonContainer/File.cs: - * src/TagLib/Asf/File.cs: - * src/TagLib/Ogg/File.cs: - * src/TagLib/File.cs: Added InvariantStartPosition and - InvariantEndPosition describing the invariant/media section of the file - that should be uneffected by TagLib# write operations. (Thanks to AgentS - and kajic for their feature requests.) - - * configure.ac: Now 2.0.2.4 - - svn path=/trunk/taglib-sharp/; revision=83928 - -commit 2a9900eb9e53f4981e69d7539ad9676e97337ecd -Author: Brian Nickel -Date: Thu Aug 2 14:11:17 2007 - - 2007-08-02 Brian Nickel - - * src/TagLib/Id3v2/Frame.cs: Files were throwing ArgumentOutOfRange - exceptions after the changes on 2007-07-29. It now checks that the - ByteVector contains enough bytes and if not throws a - CorruptFileException. (Caught in TagLib.Id3v2.Tag) - - * src/TagLib/Mpeg/AudioFile.cs: Limit scanning to only the first 0x4000 - bytes of the audio stream to avoid reading bad files forever. I got no - false negatives at 0x1000 so I'm hoping this is enough. If not, I can - throttle it up more. (Thanks to its-me for the bug report.) - - * configure.ac: Now 2.0.2.3 - - svn path=/trunk/taglib-sharp/; revision=83326 - -commit 10e4154a026075bd5d71bd037f420a29632fad42 -Author: Brian Nickel -Date: Sun Jul 29 19:13:12 2007 - - 2007-07-29 Brian Nickel - - * src/TagLib/CombinedTag.cs: Fully documented and replaced the protected - constructor with a public one, as it wasn't protecting anything and - causing a compiler error in Orcas. (Thanks to jmurphy for the bug - report.) - - * src/TagLib/ByteVectorList.cs: Reformatted code. I had beautiful - documentation, but MonoDevelop crashed. :( - - * src/TagLib/ByteVector.cs: Started documenting and adding some - exceptions rather than letting them occur in the underlying methods. - - * src/TagLib/ListBase.cs: Reformatted code. - - * src/TagLib/File.cs: Added total documentation. - - * src/TagLib/Debugger.cs: Reformatted code. - - * src/Makefile.am: - * Makefile.am: Added MonoDevelop files to EXTRA_DIST. (Thanks to jopsen - for pointing this out.) - - * configure.ac: Now 2.0.2.2 - - svn path=/trunk/taglib-sharp/; revision=82949 - -commit a97b7b6cb35ddf46e50ecd2f9b780ef884cb79f7 -Author: Brian Nickel -Date: Sun Jul 22 22:10:16 2007 - - 2007-07-22 Brian Nickel - - * src/TagLib/Id3v2/Tag.cs: - * src/TagLib/Ape/Tag.cs: - * src/TagLib/Ogg/XiphComment.cs: Parse beats per minute as floating - point numbers, round them, and then convert them to uints. Values were - showing up as 0 if a decimal point was present. (Thanks to nokturnal for - the bug report.) - - * src/TagLib/ByteVector.cs: Switch back from "_data" to "data" - - * src/TagLib/ICodec.cs: Minor reorganization. - - * src/TagLib/Genres.cs: - * src/TagLib/Properties.cs: - * src/TagLib/SupportedMimeType.cs: - * src/TagLib/StringList.cs: - * src/TagLib/FileTypes.cs: - * src/TagLib/Tag.cs: - * src/TagLib/Picture.cs: - * src/TagLib/File.cs: - * src/TagLib/ReadOnlyByteVector.cs: Documentation. - - * configure.ac: Now 2.0.2.1 - - svn path=/trunk/taglib-sharp/; revision=82456 - -commit 0e14c9adc24e5ac99750969221919deb9bf8e3c5 -Author: Brian Nickel -Date: Tue Jul 3 16:55:49 2007 - - 2007-07-03 Brian Nickel - - +-------------+ - | VERSON BUMP | - | 2.0.2 | - +-------------+ - - * src/TagLib/Id3v2/Frames/MusicCdIdentifierFrame.cs: Fix docs. - * src/TagLib/File.cs: Some doc work. - * src/AssemblyInfo.cs.in: Conditionally sign the assembly. - * src/AssemblyInfo-windows.cs: DELETED. AssemblyInfo.cs.in is all that's - necessary. - * src/Makefile.am: Add distwin target - - * windows-files/TagLibSharpDocs.chm: Added. - - * configure.ac: Don't use svn revision because it is greater than - ushort.MaxValue. - - * Makefile.am: Add distwin target. - - * NEWS: Updated for new release. - - * src/taglib-sharp.mdp: - * taglib-sharp.csproj: Use AssemblyInfo.cs. - - svn path=/trunk/taglib-sharp/; revision=81300 - -commit 79cfd2193845680ba33239ed8caebcc557baadc4 -Author: Brian Nickel -Date: Wed Jun 27 14:24:22 2007 - - 2007-06-27 Brian Nickel - - * src/TagLib/Id3v2/Frames/AttachedPictureFrame.cs: Fixed reading problem - with UTF-16 encoded descriptions. (Thanks to renzska for the bug - report.) - - * src/TagLib/Id3v2/Frames/RelativeVolumeFrame.cs: - * src/TagLib/Id3v2/Frames/CommentsFrame.cs: - * src/TagLib/Id3v2/Frames/GeneralEncapsulatedObjectFrame.cs: Use Mono - coding guidelines. - - * src/TagLib/Asf/File.cs: Added ReadObject and detection of - HeaderExtensionObject. - - * src/TagLib/TagLib.sources: Added HeaderExtensionObject.cs - - * src/TagLib/Asf/HeaderExtensionObject.cs: ADDED. This will be used to - store large objects in the future (pictures bigger than 64k). - - * src/TagLib/Asf/Guid.cs: Added GUID's for HeaderExtensionObject. - - * src/AssemblyInfo.cs.in: Cleaned up. - * src/AssemblyInfo-windows.cs: Cleaned up. - - * src/taglib-sharp.mdp: Added HeaderExtensionObject.cs - - * configure.ac: Removed extra line. - - * taglib-sharp.csproj: Added HeaderExtensionObject.cs - - svn path=/trunk/taglib-sharp/; revision=80908 - -commit d64cabf8b151ede0344b16993c3193bdf4a03faa -Author: Brian Nickel -Date: Tue Jun 26 17:18:51 2007 - - 2007-06-26 Brian Nickel - - * src/TagLib/Id3v2/Frames/CommentsFrame.cs: Readd ToString. - - * src/TagLib/Mpeg/XingHeader.cs: Don't throw an exception just because - the header doesn't contain everything we want. - - * src/TagLib/Mpeg/AudioHeader.cs: Prevent infinite loop. (Thanks to - sambeckett for the bug report.) Add "VBR" to the description if a Xing - header is present. - - * tests/fixtures/TagLib.FormatTests/FlacFormatTest.cs: - * tests/fixtures/TagLib.FormatTests/Id3V1FormatTest.cs: - * tests/fixtures/TagLib.FormatTests/Id3V2FormatTest.cs: - * tests/fixtures/TagLib.FormatTests/AsfFormatTest.cs: - * tests/fixtures/TagLib.FormatTests/Id3BothFormatTest.cs: - * tests/fixtures/TagLib.FormatTests/OggFormatTest.cs: - * tests/fixtures/TagLib.FormatTests/MpcFormatTest.cs: - * tests/fixtures/TagLib.FormatTests/M4aFormatTest.cs: Use Performers - instead of Artists. - - svn path=/trunk/taglib-sharp/; revision=80824 - -commit 57a64ea15651bdff2590e848019b5a5756ee620a -Author: Brian Nickel -Date: Tue Jun 26 15:03:02 2007 - - 2007-06-26 Brian Nickel - - * src/TagLib/CorruptFileException.cs: - * src/TagLib/Id3v2/Frames/CommentsFrame.cs: - * src/TagLib/Id3v2/Frames/AttachedPictureFrame.cs: - * src/TagLib/Id3v2/Frames/PrivateFrame.cs: - * src/TagLib/Id3v2/Frames/MusicCdIdentifierFrame.cs: - * src/TagLib/Id3v2/Frames/PlayCountFrame.cs: - * src/TagLib/UnsupportedFormatException.cs: Added XML documentation. - - * src/TagLib/Tag.cs: Started XML documentation. Artists was pointing - nowhere. Pointed at Performers. - - * src/TagLib/ByteVector.cs: ByteVector.Find was not returning -1 if - searching at (data.Count == pattern.Count + offset). Caused extra '\0' - to appear in comment frames. (Thanks to gozza11 for the bug report.) - - * src/taglib-sharp.mdp: - - * configure.ac: Work with "make distcheck" - - * Makefile.am: Include "svn-version" in dist. - - svn path=/trunk/taglib-sharp/; revision=80813 - -commit 3d8229605f78912b8bc388caead7477d10a79075 -Author: Brian Nickel -Date: Mon Jun 25 04:14:11 2007 - - 2007-06-25 Brian Nickel - - * src/TagLib/Id3v2/Frames/PrivateFrame.cs: Set to this.data instead of - data in constructor. Thanks to pipes for the bug report.) - - * configure.ac: Make the fourth part of the assembly version equal to - the SVN revision. - - svn path=/trunk/taglib-sharp/; revision=80676 - -commit 47b75955913dfaf484f41a67cc5e4e884c6acd23 -Author: Brian Nickel -Date: Mon Jun 25 00:00:24 2007 - - 2007-06-24 Brian Nickel - - +-------------+ - | VERSON BUMP | - | 2.0.1 | - +-------------+ - - * src/AssemblyInfo.cs.in: - * configure.ac: - * src/Makefile.am: - * src/policy.2.0.taglib-sharp.config.in: Install a policy in GAC so - assemblies compiled against older versions use 2.0.1.0. - * src/AssemblyInfo-windows.cs: Version bump. - * NEWS: Information on new release. - - svn path=/trunk/taglib-sharp/; revision=80664 - -commit 9a88cb7cb9b4eae8420bdd20027d897b2d9e0a33 -Author: Brian Nickel -Date: Sun Jun 24 13:25:16 2007 - - 2007-06-24 Brian Nickel - - * src/TagLib/Id3v2/Tag.cs: Fixed bug in commit from 2007-06-20. - TPE2 and TPE1 were being swapped when they were stored. (Thanks to - jmurphy for the but report.) - - svn path=/trunk/taglib-sharp/; revision=80640 - -commit 6d4d454d1c8b261e5727f76ef8ccdb5c2f63b194 -Author: Brian Nickel -Date: Sun Jun 24 13:09:19 2007 - - 2007-06-24 Brian Nickel - - * src/TagLib/Id3v2/Frames/CommentsFrame.cs: Split the string into 3 - pieces instead of 2. This way nil delimiters and badly formatted strings - don't mess up the value. (Thanks to gozza11 for the but report.) - - svn path=/trunk/taglib-sharp/; revision=80639 - -commit 9822af3a64b57f64c4371657a27a7d9aac65182d -Author: Brian Nickel -Date: Fri Jun 22 13:55:23 2007 - - 2007-06-22 Brian Nickel - - * src/TagLib/Id3v2/Tag.cs: Remove picture frames if Picture is set to - null or an empty array. (Thanks to wilson for the but report.) - - svn path=/trunk/taglib-sharp/; revision=80569 - -commit c93afd260939a6fd9616e7ba22a186c0e13e3514 -Author: Brian Nickel -Date: Wed Jun 20 16:12:06 2007 - - 2007-06-20 Brian Nickel - - * src/TagLib/Mpeg4/AppleTag.cs: - * src/TagLib/Asf/Tag.cs: Don't return Performers if AlbumArtists is not - found. This, provided with the second to last commit should resolve - inconsistancies in the behaviour. (Thanks to JustinC for the bug - report, otherwise that travesty that is the previous implementation may - have gone on forever.) - - * src/TagLib/Tag.cs: Fix typos. - - svn path=/trunk/taglib-sharp/; revision=80366 - -commit aebd6b8ec644a70946a1d880ffc2cd16f0752004 -Author: Brian Nickel -Date: Wed Jun 20 15:49:35 2007 - - 2007-06-20 Brian Nickel - - * src/TagLib/Id3v2/Frames/UnsynchronisedLyricsFrame.cs: - * src/TagLib/Id3v2/Frames/RelativeVolumeFrame.cs: - * src/TagLib/Id3v2/Frames/CommentsFrame.cs: - * src/TagLib/Id3v2/Frames/SynchronizedLyricsFrame.cs: - * src/TagLib/Id3v2/Frames/AttachedPictureFrame.cs: - * src/TagLib/Id3v2/Frames/UniqueFileIdentifierFrame.cs: - * src/TagLib/Id3v2/Frames/PrivateFrame.cs: - * src/TagLib/Id3v2/Frames/GeneralEncapsulatedObjectFrame.cs: - * src/TagLib/Id3v2/Frames/TextIdentificationFrame.cs: Use - ByteVector.TextDelimiter instead of Frame.TextDelimiter. - - * src/TagLib/Id3v2/Frame.cs: Mark TextDelimiter as obsolete. - * src/TagLib/ByteVector.cs: Add TextDelimiter method. - - * src/TagLib/Asf/Tag.cs: Discard new pictures if their rendered size is - greater than 64KB to avoid corrupting files. (Thanks to renzska for the - bug report.) - - svn path=/trunk/taglib-sharp/; revision=80364 - -commit 0825a9eff914087b1140c62510af9d5e52233ad6 -Author: Brian Nickel -Date: Wed Jun 20 13:53:22 2007 - - 2007-06-20 Brian Nickel - - * src/TagLib/Id3v1/Tag.cs: Rework to match Picard specs. - - * src/TagLib/Riff/DivXTag.cs: Rework to match Picard specs. - - * src/TagLib/Riff/MovieIdTag.cs: Rework to match Picard specs. - - * src/TagLib/Id3v2/Tag.cs: Rework to match Picard specs. - - * src/TagLib/Ape/Tag.cs: Rework to match Picard specs. - - * src/TagLib/Ogg/XiphComment.cs: Rework to match Picard specs. - - * src/TagLib/Tag.cs: Added JoinedAlbumArtists and FirstAlbumArtist. - Changed JoinedArtists and FirstArtist to point to Performers (marked as - obsolete), and added Artists which points to Performers (also obsolete). - This should aleviate confusion. - - svn path=/trunk/taglib-sharp/; revision=80346 - -commit 53d5e285be01c51179b2efdd3043c096d5b7aa12 -Author: Brian Nickel -Date: Tue Jun 12 22:06:22 2007 - - 2007-06-12 Brian Nickel - - * src/TagLib/Mpeg4/File.cs: Fix support for writing files that don't - have UTDA tags. (Thanks to renzska for the bug report.) - - * src/TagLib/Mpeg4/Box.cs: Fix support for clearing boxes. (Thanks to - maciej for the bug report.) Calculate padding size based on DataSize - rather than header.DataSize. Fixes problem where 4 bytes are added on - every save. (Discovered in bug report by lindea.) - - * src/TagLib/Riff/WaveFormatEx.cs: Recognize WMA Lossless. (Thanks to - JustinC for the patch.) - - * ALSO: Thanks to JustinC for reminding me to credit people for their - contributions. With the countless audio and video files in existence, - TagLib# would be far less complete and considerably buggier if not for - everyone's contributions. Thank you! - - svn path=/trunk/taglib-sharp/; revision=79373 - -commit ade972de4e7356cdc8cf795f7ba53e50362cc556 -Author: Brian Nickel -Date: Mon Jun 11 11:25:26 2007 - - 2007-06-11 Brian Nickel - - * src/TagLib/Ogg/Paginator.cs: Fix save support in OGG. Thanks to - maciej for pointing this out. - - * NEWS: Added NEWS file. - - svn path=/trunk/taglib-sharp/; revision=79189 - -commit c0ddc28818c88bf1233c08f5b3eec7636b457fcb -Author: Brian Nickel -Date: Sun Jun 10 23:17:48 2007 - - This one got away. - - svn path=/trunk/taglib-sharp/; revision=79141 - -commit 2d1b94fdcae2bb96ae99b8d92ede76785be36a16 -Author: Brian Nickel -Date: Sun Jun 10 23:16:26 2007 - - 2007-06-10 Brian Nickel - - +-------------+ - | VERSON BUMP | - | 2.0.0 | - +-------------+ - - The official announcement, tarballs, and excessive drinking will come - tomorrow after I get Windows documentation in order. In the mean time - I'll tidy up the site a bit. - - * src/TagLib/Id3v2/Tag.cs: Combine TYER, TDAT, and TIME into a single - TDRC, rather than discarding TDAT and TIME. - - * src/TagLib/Id3v2/FrameTypes.cs: Add some more types. - - * src/TagLib/Id3v2/FrameFactory.cs: Change for renamed frames. - - * src/TagLib/Id3v2/FrameHeader.cs: Don't discard TIME and TDAT. - - * src/TagLib/Id3v2/Frames/UnsynchronisedLyricsFrame.cs: Remove SetText. - It is redundant and identical to set_Text. - - * src/TagLib/Id3v2/Frames/CommentsFrame.cs: Remove SetText. It is - redundant and identical to set_Text. - - * src/TagLib/Id3v2/Frames/MusicCdIdentifierFrame.cs: Rename - MusicCdIdentifier to MusicCdIdentiferFrame. I don't know how I made that - mistake. - - * src/TagLib/Id3v2/Frames/TermsOfUseFrame.cs: Remove SetText. It is - redundant and identical to set_Text. - - * src/TagLib/Id3v2/Frames/TextIdentificationFrame.cs: Rename to - TextInformationFrame to better reflect specification. (Text - Identification frame is a subset of Text Information Frame). Split TDRC - into TYER, TDAT, and TIME if saving as version 2.3. - - * src/TagLib/Id3v2/Frame.cs: Make Render virtual to allow for more - robust features. (Applied in TextInformationFrame.) - - * src/TagLib/ByteVector.cs: Fix typo. - - * src/TagLib/Ape/Tag.cs: Make enumerable. - - * src/TagLib/Mpeg4/Box.cs: Remove GetChild(System.Type), as all other - System.Type based functionality has been removed. - - * src/AssemblyInfo-windows.cs: Version bump. - - * configure.ac: Version bump. Remove unit tests to shrink tarball. - - * Makefile.am: Remove unit tests to shrink tarball. - - svn path=/trunk/taglib-sharp/; revision=79140 - -commit 431bae630b26d16cf932513a1ecb6363c13ee3d8 -Author: Brian Nickel -Date: Sun Jun 10 23:03:03 2007 - - 2007-06-10 Brian Nickel - - * docs/*: Get 100% caught up. - - svn path=/trunk/taglib-sharp/; revision=79138 - -commit c64d9fe099276baf58844658bf55b24cf00d39a9 -Author: Brian Nickel -Date: Thu Jun 7 16:35:01 2007 - - 2007-06-07 Brian Nickel - - * src/TagLib/CombinedTag.cs: Add Tag.Clear, Tag.IsEmpty - * src/TagLib/Id3v1/Tag.cs: Add Tag.Clear, Tag.IsEmpty - * src/TagLib/Riff/File.cs: Use ReadOnlyByteVector. - * src/TagLib/Riff/DivXTag.cs: Add Tag.Clear, Tag.IsEmpty - * src/TagLib/Riff/ListTag.cs: Add Tag.Clear, Tag.IsEmpty - * src/TagLib/Id3v2/Tag.cs: - * src/TagLib/Id3v2/Footer.cs: - * src/TagLib/Id3v2/FrameTypes.cs: - * src/TagLib/Id3v2/FrameFactory.cs: - * src/TagLib/Id3v2/FrameHeader.cs: - * src/TagLib/Id3v2/Header.cs: - * src/TagLib/Id3v2/Frames/UnsynchronisedLyricsFrame.cs: - * src/TagLib/Id3v2/Frames/RelativeVolumeFrame.cs: - * src/TagLib/Id3v2/Frames/CommentsFrame.cs: - * src/TagLib/Id3v2/Frames/SynchronizedLyricsFrame.cs: - * src/TagLib/Id3v2/Frames/AttachedPictureFrame.cs: - * src/TagLib/Id3v2/Frames/UniqueFileIdentifierFrame.cs: - * src/TagLib/Id3v2/Frames/PrivateFrame.cs: - * src/TagLib/Id3v2/Frames/MusicCdIdentifierFrame.cs: - * src/TagLib/Id3v2/Frames/TermsOfUseFrame.cs: - * src/TagLib/Id3v2/Frames/GeneralEncapsulatedObjectFrame.cs: - * src/TagLib/Id3v2/Frames/TextIdentificationFrame.cs: - * src/TagLib/Id3v2/Frames/PlayCountFrame.cs: - * src/TagLib/Id3v2/Frame.cs: Use TagLib.Id3v2.FrameType instead of hard- - coding. Cuts out a lot of read time. - * src/TagLib/Flac/File.cs: Use ReadOnlyByteVector. - * src/TagLib/Flac/Block.cs: BlockSize instead of Size. - * src/TagLib/Ape/Tag.cs: Add Tag.Clear, Tag.IsEmpty - * src/TagLib/Ape/Footer.cs: Use ReadOnlyByteVector. - * src/TagLib/Ape/Item.cs: Use ReadOnlyByteVector. - * src/TagLib/Mpeg4/Boxes/AppleAdditionalInfoBox.cs:Don't parse text - before its needed. - * src/TagLib/Mpeg4/Boxes/IsoMovieHeaderBox.cs: - * src/TagLib/Mpeg4/Boxes/IsoChunkLargeOffsetBox.cs: - * src/TagLib/Mpeg4/Boxes/AppleElementaryStreamDescriptor.cs: - * src/TagLib/Mpeg4/Boxes/IsoChunkOffsetBox.cs: - * src/TagLib/Mpeg4/Boxes/IsoSampleDescriptionBox.cs: Don't do extra seeks. - * src/TagLib/Mpeg4/FileParser.cs: Use do/while instead of for. Was doing - extra reading. - * src/TagLib/Mpeg4/AppleTag.cs: Add Tag.Clear, Tag.IsEmpty - * src/TagLib/Mpeg4/BoxTypes.cs: Make internal. - * src/TagLib/Mpeg4/File.cs: - * src/TagLib/Mpeg4/BoxFactory.cs: - * src/TagLib/Mpeg4/BoxHeader.cs: - * src/TagLib/Mpeg4/Box.cs: Rename "BoxTypes" to "BoxType" - * src/TagLib/Mpc/StreamHeader.cs: Use ReadOnlyByteVector - * src/TagLib/Tag.cs: Add Tag.Clear - * src/TagLib/File.cs: Do away with ReadBlock(uint) - * src/TagLib/WavPack/StreamHeader.cs: Use ReadOnlyByteVector. - * src/TagLib/Asf/Tag.cs: Add Tag.Clear, Tag.IsEmpty - * src/TagLib/Asf/ContentDescriptionObject.cs: Add IsEmpty - * src/TagLib/Asf/ExtendedContentDescriptionObject.cs: Add IsEmpty - * src/TagLib/Ogg/XiphComment.cs: Add Tag.Clear - * src/TagLib/Ogg/PageHeader.cs: Use ReadBlock(int) - * src/TagLib/Ogg/GroupedComment.cs: Add Tag.Clear - * docs/en/TagLib.Riff/DivXTag.xml - * docs/en/TagLib.Riff/File.xml - * docs/en/TagLib.Id3v1/Tag.xml - * docs/en/TagLib.Id3v2/Header.xml - * docs/en/TagLib.Id3v2/Frame.xml - * docs/en/TagLib.Id3v2/Footer.xml - * docs/en/TagLib.Id3v2/FrameHeader.xml - * docs/en/TagLib.Mpeg/AudioFile.xml - * docs/en/TagLib.Mpeg/File.xml - * docs/en/TagLib.WavPack/StreamHeader.xml - * docs/en/TagLib.WavPack/File.xml - * docs/en/TagLib/Tag.xml - * docs/en/TagLib/File.xml - * docs/en/index.xml - * docs/en/TagLib.Flac/Metadata.xml - * docs/en/TagLib.Flac/Block.xml - * docs/en/TagLib.Flac/File.xml - * docs/en/TagLib.Ape/Tag.xml - * docs/en/TagLib.Ape/Footer.xml - * docs/en/TagLib.MusePack/StreamHeader.xml - * docs/en/TagLib.MusePack/File.xml - * docs/en/TagLib.Asf/ContentDescriptionObject.xml - * docs/en/TagLib.Asf/ExtendedContentDescriptionObject.xml - * docs/en/TagLib.Asf/Tag.xml - * docs/en/TagLib.Asf/File.xml - * docs/en/TagLib.Ogg/GroupedComment.xml - * docs/en/TagLib.Ogg/XiphComment.xml - * docs/en/TagLib.Ogg/File.xml - * docs/en/TagLib.Mpeg4/Box.xml - * docs/en/TagLib.Mpeg4/AppleTag.xml - * docs/en/TagLib.Mpeg4/BoxTypes.xml - * docs/en/TagLib.Mpeg4/File.xml: Synched docs. - - svn path=/trunk/taglib-sharp/; revision=78896 - -commit 781f167791ed0fcb5ebae418ca57b1721b66a847 -Author: Brian Nickel -Date: Mon Jun 4 13:12:47 2007 - - 2007-06-04 Brian Nickel - - * src/TagLib/Mpeg/File.cs: Prevent overflow. - * src/TagLib/Mpc/File.cs: Add support for "mpp" extention. - - svn path=/trunk/taglib-sharp/; revision=78577 - -commit f912417fdc8ba070b5ab92bf17e7432cf3140fd9 -Author: Brian Nickel -Date: Fri Jun 1 19:32:07 2007 - - 2007-06-01 Brian Nickel - - +-------------+ - | VERSON BUMP | - | 1.9.99995 | - +-------------+ - - * examples/SetPictures.cs: Fix for API changes. - * src/TagLib/ByteVector.cs: - * src/TagLib/Mpeg4/AppleTag.cs: - * src/TagLib/Mpeg4/BoxTypes.cs: - * src/TagLib/TagLib.sources: - * src/TagLib/ReadOnlyByteVector.cs: - * src/taglib-sharp.mdp: - * docs/en/TagLib/ReadOnlyByteVector.xml: - * docs/en/TagLib/ByteVector.xml: - * docs/en/index.xml: - * docs/en/TagLib.Mpeg4/BoxTypes.xml: - * taglib-sharp.csproj: Add immutable ReadOnlyByteVector. - - svn path=/trunk/taglib-sharp/; revision=78468 - -commit 080958d362c0a7da9fe1dea205f7d38a5e87bf34 -Author: Brian Nickel -Date: Wed May 30 23:38:18 2007 - - 2007-05-30 Brian Nickel - - Redid a lot of the internals of FLAC to make them cleaner. Reverted the - change to TagLib.Mpeg4.BoxTypes. The change was safer but slowed things - down by 1.7329ms. Perhaps the addition of a superclass, - ImmutableByteVector, would help. - - * src/TagLib/Flac/Picture.cs - * src/TagLib/Flac/File.cs - * src/TagLib/Flac/BlockHeader.cs - * src/TagLib/Flac/Block.cs - * src/TagLib/Mpeg4/BoxTypes.cs - * docs/en/index.xml - * docs/en/TagLib.Flac/Metadata.xml - * docs/en/TagLib.Flac/BlockHeader.xml - * docs/en/TagLib.Flac/Block.xml - * docs/en/TagLib.Mpeg4/BoxTypes.xml: - - svn path=/trunk/taglib-sharp/; revision=78296 - -commit 0f13f9425a1cbb030e8bdf295fe4c580adb71eee -Merge: 9bb2e24 ca311e4 -Author: Brian Nickel -Date: Wed May 30 18:47:16 2007 - - 2007-05-30 Brian Nickel - - Major API changes. The API has been changed a bunch to accommodate - Microsoft naming rules, globalization rules, etc. Hundreds of issues - brought to light by FxCop. Nothing like throwing a hundred - ArgumentNullExceptions, changing "h" to "Header", - "last_absolute_granular_position" to "lastAbsoluteGranularPosition", - "StringList" to "StringCollection", etc. - - Another major change is the dropping of - TagLib.File.{Push|Pop|Set|Default}FileAbstractionCreator. Now if you - want to create a local file, use TagLib.File.Create (string) and if you - want to use a stream, or a VFS, or whatever, use - TagLib.File.Create(File.IFileAbstraction). This should save a lot of - headache and make things a lot safer and cleaner. Sorry to those of you - who were using the old API. - - I've got a few hundred docs to fill in, but then it's 2.0 RC2. - - * src/TagLib/Mpc/File.cs - * src/TagLib/Mpc/StreamHeader.cs - * src/TagLib/Tag.cs - * src/TagLib/Picture.cs - * src/TagLib/CombinedTag.cs - * src/TagLib/CorruptFileException.cs - * src/TagLib/File.cs - * src/TagLib/UnsupportedFormatException.cs - * src/TagLib/TagLib.sources - * src/TagLib/ByteVectorList.cs - * src/TagLib/Id3v1/Tag.cs - * src/TagLib/Id3v1/StringHandler.cs - * src/TagLib/Riff/List.cs - * src/TagLib/Riff/AviStream.cs - * src/TagLib/Riff/File.cs - * src/TagLib/Riff/BitmapInfoHeader.cs - * src/TagLib/Riff/AviHeaderList.cs - * src/TagLib/Riff/DivXTag.cs - * src/TagLib/Riff/ListTag.cs - * src/TagLib/Riff/InfoTag.cs - * src/TagLib/Riff/MovieIdTag.cs - * src/TagLib/Riff/WaveFormatEx.cs - * src/TagLib/Genres.cs - * src/TagLib/Id3v2/Tag.cs - * src/TagLib/Id3v2/Footer.cs - * src/TagLib/Id3v2/SynchData.cs - * src/TagLib/Id3v2/FrameFactory.cs - * src/TagLib/Id3v2/FrameHeader.cs - * src/TagLib/Id3v2/Header.cs - * src/TagLib/Id3v2/Frames/UnsynchronisedLyricsFrame.cs - * src/TagLib/Id3v2/Frames/RelativeVolumeFrame.cs - * src/TagLib/Id3v2/Frames/CommentsFrame.cs - * src/TagLib/Id3v2/Frames/SynchronizedLyricsFrame.cs - * src/TagLib/Id3v2/Frames/AttachedPictureFrame.cs - * src/TagLib/Id3v2/Frames/UniqueFileIdentifierFrame.cs - * src/TagLib/Id3v2/Frames/PrivateFrame.cs - * src/TagLib/Id3v2/Frames/MusicCdIdentifierFrame.cs - * src/TagLib/Id3v2/Frames/TermsOfUseFrame.cs - * src/TagLib/Id3v2/Frames/GeneralEncapsulatedObjectFrame.cs - * src/TagLib/Id3v2/Frames/TextIdentificationFrame.cs - * src/TagLib/Id3v2/Frames/PlayCountFrame.cs - * src/TagLib/Id3v2/Frames/UnknownFrame.cs - * src/TagLib/Id3v2/ExtendedHeader.cs - * src/TagLib/Id3v2/Frame.cs - * src/TagLib/Debugger.cs - * src/TagLib/Mpeg/XingHeader.cs - * src/TagLib/Mpeg/File.cs - * src/TagLib/Mpeg/VideoHeader.cs - * src/TagLib/Mpeg/AudioFile.cs - * src/TagLib/Mpeg/AudioHeader.cs - * src/TagLib/ByteVector.cs - * src/TagLib/IntList.cs - * src/TagLib/ICodec.cs - * src/TagLib/WavPack/File.cs - * src/TagLib/WavPack/StreamHeader.cs - * src/TagLib/NonContainer/File.cs - * src/TagLib/NonContainer/EndTag.cs - * src/TagLib/NonContainer/StartTag.cs - * src/TagLib/Properties.cs - * src/TagLib/SupportedMimeType.cs - * src/TagLib/Ape/Tag.cs - * src/TagLib/Ape/Footer.cs - * src/TagLib/Ape/Item.cs - * src/TagLib/Flac/Picture.cs - * src/TagLib/Flac/File.cs - * src/TagLib/Flac/BlockHeader.cs - * src/TagLib/Flac/StreamHeader.cs - * src/TagLib/Flac/Block.cs - * src/TagLib/StringList.cs - * src/TagLib/Asf/Tag.cs - * src/TagLib/Asf/File.cs - * src/TagLib/Asf/HeaderObject.cs - * src/TagLib/Asf/StreamPropertiesObject.cs - * src/TagLib/Asf/FilePropertiesObject.cs - * src/TagLib/Asf/ContentDescriptionObject.cs - * src/TagLib/Asf/Object.cs - * src/TagLib/Asf/UnknownObject.cs - * src/TagLib/Asf/ContentDescriptor.cs - * src/TagLib/ListBase.cs - * src/TagLib/Mpeg4/Boxes/FullBox.cs - * src/TagLib/Mpeg4/Boxes/IsoMovieHeaderBox.cs - * src/TagLib/Mpeg4/Boxes/IsoSampleTableBox.cs - * src/TagLib/Mpeg4/Boxes/IsoChunkLargeOffsetBox.cs - * src/TagLib/Mpeg4/Boxes/IsoSampleEntry.cs - * src/TagLib/Mpeg4/Boxes/AppleAdditionalInfoBox.cs - * src/TagLib/Mpeg4/Boxes/IsoFreeSpaceBox.cs - * src/TagLib/Mpeg4/Boxes/AppleItemListBox.cs - * src/TagLib/Mpeg4/Boxes/IsoUserDataBox.cs - * src/TagLib/Mpeg4/Boxes/IsoAudioSampleEntry.cs - * src/TagLib/Mpeg4/Boxes/IsoHandlerBox.cs - * src/TagLib/Mpeg4/Boxes/IsoVisualSampleEntry.cs - * src/TagLib/Mpeg4/Boxes/AppleElementaryStreamDescriptor.cs - * src/TagLib/Mpeg4/Boxes/IsoChunkOffsetBox.cs - * src/TagLib/Mpeg4/Boxes/AppleDataBox.cs - * src/TagLib/Mpeg4/Boxes/AppleAnnotationBox.cs - * src/TagLib/Mpeg4/Boxes/UnknownBox.cs - * src/TagLib/Mpeg4/Boxes/IsoSampleDescriptionBox.cs - * src/TagLib/Mpeg4/Boxes/IsoMetaBox.cs - * src/TagLib/Mpeg4/FileParser.cs - * src/TagLib/Mpeg4/AppleTag.cs - * src/TagLib/Mpeg4/BoxTypes.cs - * src/TagLib/Mpeg4/File.cs - * src/TagLib/Mpeg4/BoxFactory.cs - * src/TagLib/Mpeg4/BoxHeader.cs - * src/TagLib/Mpeg4/BoxList.cs - * src/TagLib/Mpeg4/Box.cs - * src/TagLib/Ogg/XiphComment.cs - * src/TagLib/Ogg/Page.cs - * src/TagLib/Ogg/Codecs/Theora.cs - * src/TagLib/Ogg/Codecs/Vorbis.cs - * src/TagLib/Ogg/Codec.cs - * src/TagLib/Ogg/File.cs - * src/TagLib/Ogg/Paginator.cs - * src/TagLib/Ogg/PageHeader.cs - * src/TagLib/Ogg/GroupedComment.cs - * src/TagLib/Ogg/Bitstream.cs - * src/AssemblyInfo.cs.in - * src/AssemblyInfo-windows.cs - * src/taglib-sharp.mdp - * docs/en/TagLib.Riff/BitmapInfoHeader.xml - * docs/en/TagLib.Riff/AviHeaderList.xml - * docs/en/TagLib.Riff/DivXTag.xml - * docs/en/TagLib.Riff/ListTag.xml - * docs/en/TagLib.Riff/WaveFormatEx.xml - * docs/en/TagLib.Riff/AviStream.xml - * docs/en/TagLib.Riff/List.xml - * docs/en/TagLib.Riff/File.xml - * docs/en/TagLib.Id3v1/StringHandler.xml - * docs/en/TagLib.Id3v1/Tag.xml - * docs/en/TagLib.Id3v2/UniqueFileIdentifierFrame.xml - * docs/en/TagLib.Id3v2/AttachedPictureFrame.xml - * docs/en/TagLib.Id3v2/PrivateFrame.xml - * docs/en/TagLib.Id3v2/Header.xml - * docs/en/TagLib.Id3v2/PlayCountFrame.xml - * docs/en/TagLib.Id3v2/Frame.xml - * docs/en/TagLib.Id3v2/MusicCdIdentifier.xml - * docs/en/TagLib.Id3v2/Footer.xml - * docs/en/TagLib.Id3v2/CommentsFrame.xml - * docs/en/TagLib.Id3v2/TermsOfUseFrame.xml - * docs/en/TagLib.Id3v2/GeneralEncapsulatedObjectFrame.xml - * docs/en/TagLib.Id3v2/UserTextIdentificationFrame.xml - * docs/en/TagLib.Id3v2/SynchronisedLyricsFrame.xml - * docs/en/TagLib.Id3v2/TextIdentificationFrame.xml - * docs/en/TagLib.Id3v2/UnknownFrame.xml - * docs/en/TagLib.Id3v2/Tag.xml - * docs/en/TagLib.Id3v2/UnsynchronisedLyricsFrame.xml - * docs/en/TagLib.Id3v2/RelativeVolumeFrame.xml - * docs/en/TagLib.Mpeg/Marker.xml - * docs/en/TagLib.Mpeg/AudioFile.xml - * docs/en/TagLib.Mpeg/Version.xml - * docs/en/TagLib.Mpeg/AudioHeader.xml - * docs/en/TagLib.Mpeg/XingHeader.xml - * docs/en/TagLib.Mpeg/VideoHeader.xml - * docs/en/TagLib.Mpeg/File.xml - * docs/en/TagLib.WavPack/StreamHeader.xml - * docs/en/TagLib.WavPack/File.xml - * docs/en/TagLib.NonContainer/File.xml - * docs/en/TagLib/UnsupportedFormatException.xml - * docs/en/TagLib/Genres.xml - * docs/en/TagLib/IntList.xml - * docs/en/TagLib/ListBase`1.xml - * docs/en/TagLib/SupportedMimeType.xml - * docs/en/TagLib/File+LocalFileAbstraction.xml - * docs/en/TagLib/ByteVectorCollection.xml - * docs/en/TagLib/MediaTypes.xml - * docs/en/TagLib/Picture.xml - * docs/en/TagLib/File.xml - * docs/en/TagLib/ByteVectorList.xml - * docs/en/TagLib/StringCollection.xml - * docs/en/TagLib/ByteVector.xml - * docs/en/TagLib/TagTypes.xml - * docs/en/TagLib/StringList.xml - * docs/en/TagLib/PictureType.xml - * docs/en/TagLib/CorruptFileException.xml - * docs/en/TagLib/File+FileTypeResolver.xml - * docs/en/index.xml - * docs/en/TagLib.Flac/BlockHeader.xml - * docs/en/TagLib.Flac/StreamHeader.xml - * docs/en/TagLib.Flac/Block.xml - * docs/en/TagLib.Flac/BlockType.xml - * docs/en/TagLib.Flac/File.xml - * docs/en/TagLib.Ape/Tag.xml - * docs/en/TagLib.Ape/FooterFlags.xml - * docs/en/TagLib.Ape/Footer.xml - * docs/en/TagLib.Ape/Item.xml - * docs/en/TagLib.MusePack/StreamHeader.xml - * docs/en/TagLib.MusePack/File.xml - * docs/en/TagLib.Asf/Object.xml - * docs/en/TagLib.Asf/ContentDescriptor.xml - * docs/en/TagLib.Asf/StreamPropertiesObject.xml - * docs/en/TagLib.Asf/HeaderObject.xml - * docs/en/TagLib.Asf/File.xml - * docs/en/TagLib.Ogg/PageHeader.xml - * docs/en/TagLib.Ogg/GroupedComment.xml - * docs/en/TagLib.Ogg/Bitstream.xml - * docs/en/TagLib.Ogg/XiphComment.xml - * docs/en/TagLib.Ogg/Page.xml - * docs/en/TagLib.Ogg/Codec.xml - * docs/en/TagLib.Ogg/File.xml - * docs/en/TagLib.Mpeg4/BoxFactory.xml - * docs/en/TagLib.Mpeg4/IsoFreeSpaceBox.xml - * docs/en/TagLib.Mpeg4/BoxList.xml - * docs/en/TagLib.Mpeg4/AppleItemListBox.xml - * docs/en/TagLib.Mpeg4/Box.xml - * docs/en/TagLib.Mpeg4/IsoUserDataBox.xml - * docs/en/TagLib.Mpeg4/FileParser.xml - * docs/en/TagLib.Mpeg4/AppleTag.xml - * docs/en/TagLib.Mpeg4/AppleDataBox+FlagTypes.xml - * docs/en/TagLib.Mpeg4/IsoAudioSampleEntry.xml - * docs/en/TagLib.Mpeg4/BoxHeader.xml - * docs/en/TagLib.Mpeg4/IsoHandlerBox.xml - * docs/en/TagLib.Mpeg4/IsoVisualSampleEntry.xml - * docs/en/TagLib.Mpeg4/AppleElementaryStreamDescriptor.xml - * docs/en/TagLib.Mpeg4/IsoChunkOffsetBox.xml - * docs/en/TagLib.Mpeg4/AppleDataBox.xml - * docs/en/TagLib.Mpeg4/AppleAnnotationBox.xml - * docs/en/TagLib.Mpeg4/UnknownBox.xml - * docs/en/TagLib.Mpeg4/IsoSampleDescriptionBox.xml - * docs/en/TagLib.Mpeg4/IsoMetaBox.xml - * docs/en/TagLib.Mpeg4/FullBox.xml - * docs/en/TagLib.Mpeg4/AppleDataBox+FlagType.xml - * docs/en/TagLib.Mpeg4/IsoMovieHeaderBox.xml - * docs/en/TagLib.Mpeg4/IsoSampleTableBox.xml - * docs/en/TagLib.Mpeg4/BoxTypes.xml - * docs/en/TagLib.Mpeg4/IsoChunkLargeOffsetBox.xml - * docs/en/TagLib.Mpeg4/IsoSampleEntry.xml - * docs/en/TagLib.Mpeg4/AppleAdditionalInfoBox.xml - * docs/en/TagLib.Mpeg4/File.xml - * tests/tests.mdp - * tests/fixtures/TagLib.CollectionTests/ByteVectorListTest.cs - * tests/fixtures/TagLib.CollectionTests/StringListTest.cs - * tests/fixtures/TagLib.CollectionTests/ByteVectorCollectionTest.cs - * tests/fixtures/TagLib.CollectionTests/StringCollectionTest.cs - * tests/fixtures/TagLib.CollectionTests/ByteVectorTest.cs - * configure.ac - * taglib-sharp.csproj - * examples/ReadFromUri.cs - * examples/muine-use-taglibsharp.patch: Aye Aye Aye! - - svn path=/trunk/taglib-sharp/; revision=78279 - -commit 9bb2e24e3d665c8bb5e258104148765603f650fd -Author: Brian Nickel -Date: Fri May 25 15:20:09 2007 - - 2007-05-25 Brian Nickel - - +-------------+ - | VERSON BUMP | - | 1.9.99994 | - +-------------+ - - * src/TagLib/TagLib.sources: Remove debugger. - * src/TagLib/Mpeg/AudioHeader.cs: Compile on Windows. - * docs/en/TagLib.Riff/File.xml: - * docs/en/TagLib.Mpeg/AudioFile.xml: - * docs/en/TagLib.Mpeg/File.xml: - * docs/en/TagLib.WavPack/File.xml: - * docs/en/index.xml: - * docs/en/TagLib.Flac/File.xml: - * docs/en/TagLib.MusePack/File.xml: - * docs/en/TagLib.Asf/File.xml: - * docs/en/TagLib.Ogg/File.xml: - * docs/en/TagLib.Mpeg4/File.xml: Fixed tpos. - * docs/Makefile.am: Change target. - * configure.ac: Version bump. - * taglib-sharp.csproj: Add missing files. - - svn path=/trunk/taglib-sharp/; revision=77970 - -commit 0a1d5a196b71588470cc829bd8d91ceae7b35c63 -Author: Brian Nickel -Date: Fri May 25 06:03:46 2007 - - 2007-05-25 Brian Nickel - - There were changes to 153 files in the last three days. I can't vouch for - everything that happened, as I may have blacked out for some portions, but tags - now have an abstract Tag.TagTypes property, Everything that should be a struct - is, there were a bunch of tiny cleanups, "private Flac.File+PictureTag" is now - "public Flac.Metadata"... And as of 3:55 AM (Arizona Time), THERE IS NOT ONE - FREAKIN' INSTANCE OF "To be added." IN THE ENTIRE docs/en DIRECTORY. I really - must love you guys, 'cause that was really, really painful. - - * src/TagLib/Tag.cs: - * src/TagLib/CombinedTag.cs: - * src/TagLib/File.cs: - * src/TagLib/Id3v1/Tag.cs: - * src/TagLib/Riff/AviStream.cs: - * src/TagLib/Riff/File.cs: - * src/TagLib/Riff/DivXTag.cs: - * src/TagLib/Riff/InfoTag.cs: - * src/TagLib/Riff/MovieIdTag.cs: - * src/TagLib/Id3v2/Tag.cs: - * src/TagLib/Id3v2/Frames/PlayCountFrame.cs: - * src/TagLib/Id3v2/ExtendedHeader.cs: - * src/TagLib/Mpeg/XingHeader.cs: - * src/TagLib/Mpeg/File.cs: - * src/TagLib/Mpeg/AudioFile.cs: - * src/TagLib/Mpeg/AudioHeader.cs: - * src/TagLib/NonContainer/Tag.cs: - * src/TagLib/NonContainer/File.cs: - * src/TagLib/NonContainer/EndTag.cs: - * src/TagLib/NonContainer/StartTag.cs: - * src/TagLib/Ape/Tag.cs: - * src/TagLib/Flac/Picture.cs: - * src/TagLib/Flac/File.cs: - * src/TagLib/Flac/StreamHeader.cs: - * src/TagLib/Asf/Tag.cs: - * src/TagLib/Asf/File.cs: - * src/TagLib/Mpeg4/Boxes/FullBox.cs: - * src/TagLib/Mpeg4/Boxes/IsoMovieHeaderBox.cs: - * src/TagLib/Mpeg4/Boxes/IsoSampleEntry.cs: - * src/TagLib/Mpeg4/Boxes/IsoChunkLargeOffsetBox.cs: - * src/TagLib/Mpeg4/Boxes/IsoAudioSampleEntry.cs: - * src/TagLib/Mpeg4/Boxes/IsoHandlerBox.cs: - * src/TagLib/Mpeg4/Boxes/IsoVisualSampleEntry.cs: - * src/TagLib/Mpeg4/Boxes/IsoChunkOffsetBox.cs: - * src/TagLib/Mpeg4/Boxes/AppleDataBox.cs: - * src/TagLib/Mpeg4/Boxes/IsoSampleDescriptionBox.cs: - * src/TagLib/Mpeg4/FileParser.cs: - * src/TagLib/Mpeg4/AppleTag.cs: - * src/TagLib/Mpeg4/File.cs: - * src/TagLib/Mpeg4/BoxFactory.cs: - * src/TagLib/Mpeg4/BoxHeader.cs: - * src/TagLib/Mpeg4/BoxList.cs: - * src/TagLib/Mpeg4/Box.cs: - * src/TagLib/Ogg/XiphComment.cs: - * src/TagLib/Ogg/Page.cs: - * src/TagLib/Ogg/Codecs/Theora.cs: - * src/TagLib/Ogg/Codecs/Vorbis.cs: - * src/TagLib/Ogg/Codec.cs: - * src/TagLib/Ogg/File.cs: - * src/TagLib/Ogg/Paginator.cs: - * src/TagLib/Ogg/GroupedComment.cs: - * src/TagLib/Ogg/Bitstream.cs: - * src/taglib-sharp.mdp: 53 C# files changed. - * docs/en/*: 100 XML files filled in. - - svn path=/trunk/taglib-sharp/; revision=77938 - -commit ac6636ace1213b12802e5e72f1ccf16024712c11 -Author: Brian Nickel -Date: Tue May 22 18:54:32 2007 - - 2007-05-22 Brian Nickel - - * src/TagLib/Tag.cs: Make abstract. - * src/TagLib/Mpc/File.cs: Make namespace "MusePack". - * src/TagLib/Mpc/StreamHeader.cs: Convert to struct. - * src/TagLib/File.cs: Store TagTypes as uint. Remove unused read styles. - Add File.TagTypes and File.TagTypesOnDisk. Add CloseStream to - IFileAbstraction for SilverLight support. - * src/TagLib/Riff/File.cs: Add TagTypes. - * src/TagLib/ByteVectorList.cs: Remove ToByteVector() - * src/TagLib/Id3v2/Tag.cs: - * src/TagLib/Id3v2/Footer.cs: - * src/TagLib/Id3v2/SynchData.cs: - * src/TagLib/Id3v2/FrameFactory.cs: - * src/TagLib/Id3v2/FrameHeader.cs: - * src/TagLib/Id3v2/Header.cs: - * src/TagLib/Id3v2/Frames/PlayCountFrame.cs: - * src/TagLib/Id3v2/Frames/UnsynchronisedLyricsFrame.cs: - * src/TagLib/Id3v2/Frames/RelativeVolumeFrame.cs: - * src/TagLib/Id3v2/Frames/CommentsFrame.cs: - * src/TagLib/Id3v2/Frames/SynchronizedLyricsFrame.cs: - * src/TagLib/Id3v2/Frames/AttachedPictureFrame.cs: - * src/TagLib/Id3v2/Frames/UniqueFileIdentifierFrame.cs: - * src/TagLib/Id3v2/Frames/PrivateFrame.cs: - * src/TagLib/Id3v2/Frames/GeneralEncapsulatedObjectFrame.cs: - * src/TagLib/Id3v2/Frames/TextIdentificationFrame.cs: - * src/TagLib/Id3v2/Frames/UnknownFrame.cs: - * src/TagLib/Id3v2/Frame.cs: Significant refactoring. Use byte for - version. Use enums for header and frame flags. Use string for language. - Unsupported frames and frame properties throw NotImplementedException. - Added PlayCountFrame. - * src/TagLib/Mpeg/XingHeader.cs: Make struct. - * src/TagLib/Mpeg/File.cs: - * src/TagLib/Mpeg/VideoHeader.cs: Make struct. - * src/TagLib/Mpeg/AudioFile.cs: - * src/TagLib/Mpeg/AudioHeader.cs: Make struct. - * src/TagLib/Debugger.cs: Make internal. - * src/TagLib/ByteVector.cs: Clean up constructors. - * src/TagLib/IntList.cs: Clean up constructors. - * src/TagLib/WavPack/StreamHeader.cs: Convert to struct. - * src/TagLib/NonContainer/Tag.cs: Add TagTypes. - * src/TagLib/NonContainer/File.cs: Add TagTypes. - * src/TagLib/NonContainer/EndTag.cs: Add TagTypes. - * src/TagLib/NonContainer/StartTag.cs: Add TagTypes. - * src/TagLib/Ape/Tag.cs: - * src/TagLib/Ape/Footer.cs: Make struct. Use enum for flags. - * src/TagLib/Flac/File.cs: - * src/TagLib/Flac/BlockHeader.cs: Make struct. - * src/TagLib/Flac/StreamHeader.cs: Make struct. - * src/TagLib/StringList.cs: Clean up constructors. - * src/TagLib/FileTypes.cs: Add support for registering types. - * src/TagLib/Asf/File.cs: Add TagTypes. - * src/TagLib/Asf/HeaderObject.cs: - * src/TagLib/Asf/StreamPropertiesObject.cs: - * src/TagLib/Asf/FilePropertiesObject.cs: - * src/TagLib/Asf/ContentDescriptionObject.cs: - * src/TagLib/Asf/Object.cs: - * src/TagLib/Asf/Guid.cs: Use System.Guid. - * src/TagLib/Asf/ContentDescriptor.cs: Use unsigned types. - * src/TagLib/ListBase.cs: Clean up constructors. - * src/TagLib/Mpeg4/File.cs: Add TagTypes. - * src/TagLib/Ogg/GroupedComment.cs: Add IsEmpty. - * src/TagLib/Ogg/File.cs: Add TagTypes. - * src/TagLib/Ogg/Page.cs: - * src/TagLib/Ogg/Paginator.cs: - * src/TagLib/Ogg/Bitstream.cs: - * src/TagLib/Ogg/PageHeader.cs: Make PageHeader a struct and add - PageFlags. - * docs/en/*: Thousands more docs filled out. - - svn path=/trunk/taglib-sharp/; revision=77818 - -commit ca311e4c9a676b7e8169eb9f831acfe2eff3ef05 -Author: Brian Nickel -Date: Sun May 20 05:38:01 2007 - - 2007-05-20 Brian Nickel - - * src/TagLib/ByteVector.cs: - * src/TagLib/Id3v2/Frames/SynchronizedLyricsFrame.cs: Remove accidental - System.Console.WriteLine lines. - * src/TagLib/File.cs: Make constructor protected. - * src/TagLib/Ogg/File.cs: - * src/TagLib/Riff/File.cs: Add File(string) constructor. - * src/TagLib/Riff/BitmapInfoHeader.cs: - * src/TagLib/Riff/ListTag.cs: - * src/TagLib/Riff/WaveFormatEx.cs: Tidy up. - * src/TagLib/Id3v2/Frame.cs: Parse was redundant. - * src/TagLib/Mpeg/AudioHeader.cs: Make stream_length private. - * src/TagLib/Ogg/Codecs/Theora.cs: - * src/TagLib/Ogg/Codecs/Vorbis.cs: Make constructors private. - * docs/en/TagLib.Mpc/StreamHeader.xml: - * docs/en/TagLib.Mpc/File.xml: - * docs/en/TagLib.Riff.xml: - * docs/en/TagLib.Riff/BitmapInfoHeader.xml: - * docs/en/TagLib.Riff/InfoTag.xml: - * docs/en/TagLib.Riff/ListTag.xml: - * docs/en/TagLib.Riff/AviHeader.xml: - * docs/en/TagLib.Riff/MovieIdTag.xml: - * docs/en/TagLib.Riff/WaveFormatEx.xml: - * docs/en/TagLib.Riff/List.xml: - * docs/en/TagLib.Riff/File.xml: - * docs/en/TagLib.Id3v2/UniqueFileIdentifierFrame.xml: - * docs/en/TagLib.Id3v2/AttachedPictureFrame.xml: - * docs/en/TagLib.Id3v2/PrivateFrame.xml: - * docs/en/TagLib.Id3v2/Frame.xml: - * docs/en/TagLib.Id3v2/CommentsFrame.xml: - * docs/en/TagLib.Id3v2/UserTextIdentificationFrame.xml: - * docs/en/TagLib.Id3v2/GeneralEncapsulatedObjectFrame.xml: - * docs/en/TagLib.Id3v2/SynchronisedLyricsFrame.xml: - * docs/en/TagLib.Id3v2/TextIdentificationFrame.xml: - * docs/en/TagLib.Id3v2/UnknownFrame.xml: - * docs/en/TagLib.Id3v2/UnsynchronisedLyricsFrame.xml: - * docs/en/TagLib.Id3v2/RelativeVolumeFrame.xml: - * docs/en/TagLib.Mpeg/AudioFile.xml: - * docs/en/TagLib.Mpeg/AudioHeader.xml: - * docs/en/TagLib.Mpeg/VideoHeader.xml: - * docs/en/TagLib.Mpeg/File.xml: - * docs/en/TagLib.WavPack/StreamHeader.xml: - * docs/en/TagLib.WavPack/File.xml: - * docs/en/TagLib.NonContainer/File.xml: - * docs/en/TagLib/ICodec.xml: - * docs/en/TagLib/Properties.xml: - * docs/en/TagLib/IAudioCodec.xml: - * docs/en/TagLib/IVideoCodec.xml: - * docs/en/TagLib/File.xml: - * docs/en/TagLib.Flac/StreamHeader.xml: - * docs/en/TagLib.Flac/File.xml: - * docs/en/TagLib.Asf/File.xml: - * docs/en/TagLib.Ogg.Codecs/Theora.xml: - * docs/en/TagLib.Ogg.Codecs/Vorbis.xml: - * docs/en/TagLib.Ogg/Codec.xml: - * docs/en/TagLib.Ogg/File.xml: - * docs/en/TagLib.Mpeg4/IsoAudioSampleEntry.xml: - * docs/en/TagLib.Mpeg4/IsoVisualSampleEntry.xml: - * docs/en/TagLib.Mpeg4/IsoMovieHeaderBox.xml: - * docs/en/TagLib.Mpeg4/File.xml: Filled out some docs, baby. - - svn path=/trunk/taglib-sharp/; revision=77712 - -commit 8006975cc50d25c3e256d64b9778c6eb76840231 -Author: Brian Nickel -Date: Sat May 19 01:39:32 2007 - - 2007-05-18 Brian Nickel - - +-------------+ - | VERSON BUMP | - | 1.9.99993 | - +-------------+ - - * src/TagLib/TagLib.sources: Fixed typo. - * src/TagLib/ByteVector.cs: Fix for reading nil-separated UTF-16 - strings. Now StringTypeToEncoding assumes the previously used UTF-16 - endianness if a BOM is not found. Additionally, Find and RFind now base - byte align on distance from the original offset, not offset from start. - * src/TagLib/WavPack/File.cs: - * src/TagLib/WavPack/StreamHeader.cs: Reformat code. - * src/TagLib/NonContainer/StartTag.cs: Make sure APE tags have headers - when placed at the front of a file. - * src/TagLib/Ape/Tag.cs: - * src/TagLib/Ape/Footer.cs: - * src/TagLib/Ape/Item.cs: API changes to improve clarity and - functionality. - * docs/en/TagLib.Riff/WaveFormatEx.xml: - * docs/en/TagLib.WavPack/StreamHeader.xml: - * docs/en/TagLib.WavPack/File.xml: - * docs/en/TagLib.Ape.xml: - * docs/en/TagLib.Ape/ItemType.xml: - * docs/en/TagLib.Ape/Tag.xml: - * docs/en/TagLib.Ape/Footer.xml: - * docs/en/TagLib.Ape/Item.xml: - * docs/en/TagLib.Ogg.Codecs/Vorbis.xml: Some solid documentation. - TagLib.Ape and TagLib.WavPack namespaces are 100% documented. - * docs/Makefile.am: docdir is a bad name, using monodocdir. - * configure.ac: Version bump. - * taglib-sharp.csproj: Fixed typos. - - svn path=/trunk/taglib-sharp/; revision=77682 - -commit 211aa93107e3e49839e40f49a648a696e922107b -Author: Brian Nickel -Date: Fri May 18 16:52:18 2007 - - 2007-05-18 Brian Nickel - - * src/TagLib/File.cs: Reprivatize file_stream. - * src/TagLib/Id3v2/Footer.cs: Remove SetData. - * src/TagLib/Id3v2/Tag.cs: - * src/TagLib/Id3v2/FrameFactory.cs: Don't load compressed or encrypted - frames rather than corrupting them. - * src/TagLib/Id3v2/FrameHeader.cs: Handle flags properly. - * src/TagLib/Id3v2/Header.cs: Remove SetData. - * src/TagLib/Id3v2/Frames/UnsynchronisedLyricsFrame.cs: - * src/TagLib/Id3v2/Frames/RelativeVolumeFrame.cs: - * src/TagLib/Id3v2/Frames/CommentsFrame.cs: - * src/TagLib/Id3v2/Frames/SynchronizedLyricsFrame.cs: - * src/TagLib/Id3v2/Frames/AttachedPictureFrame.cs: - * src/TagLib/Id3v2/Frames/UniqueFileIdentifierFrame.cs: - * src/TagLib/Id3v2/Frames/PrivateFrame.cs: - * src/TagLib/Id3v2/Frames/GeneralEncapsulatedObjectFrame.cs: - * src/TagLib/Id3v2/Frames/TextIdentificationFrame.cs: - * src/TagLib/Id3v2/Frames/UnknownFrame.cs: Tidy up source. - * src/TagLib/Id3v2/ExtendedHeader.cs: Replace SetData with constructor. - * src/TagLib/Id3v2/Frame.cs: Improve support for frame flags. - * src/TagLib/ByteVector.cs: Privitize SetData. - * src/TagLib/Asf/Tag.cs: Provide easy access to multi-string - descriptors. - * src/TagLib/Mpeg4/AppleTag.cs: If AlbumArtists is empty, use - Performers. (The aART data box is pretty new and underused.) - * docs/en/*: Updated docs. Stripped duplicates. Filled some out. - - svn path=/trunk/taglib-sharp/; revision=77671 - -commit 1801717875bb1f8ac8610324224c0c8a121085cb -Author: Aaron Bockover -Date: Tue May 15 19:28:35 2007 - - Fix filename spelling error - - svn path=/trunk/taglib-sharp/; revision=77447 - -commit e3e4085b2579a64f68112bc86c125307151cd7c3 -Author: Brian Nickel -Date: Tue May 15 16:19:18 2007 - - 2007-05-15 Brian Nickel - - * src/TagLib/Id3v2/Tag.cs: Fix BPM storage. - * src/TagLib/Tag.cs: - * src/TagLib/CombinedTag.cs: - * src/TagLib/Riff/InfoTag.cs: - * src/TagLib/Ape/Tag.cs: - * src/TagLib/Asf/Tag.cs: - * src/TagLib/Mpeg4/AppleTag.cs: - * src/TagLib/Ogg/XiphComment.cs: - * src/TagLib/Ogg/GroupedComment.cs: Rename BPM to BeatsPerMinute. - * examples/ReadFromUri.cs: Push/Pop abstractor. Add new tags to output. - - svn path=/trunk/taglib-sharp/; revision=77441 - -commit f8bd361bf79fc32e15fb624881e909121ffd96e0 -Author: Brian Nickel -Date: Tue May 15 02:46:59 2007 - - 2007-05-15 Brian Nickel - - * src/TagLib/Tag.cs: - * src/TagLib/CombinedTag.cs: - * src/TagLib/Riff/InfoTag.cs: - * src/TagLib/Id3v2/Tag.cs - * src/TagLib/Ape/Tag.cs: - * src/TagLib/Asf/Tag.cs: - * src/TagLib/Mpeg4/AppleTag.cs: - * src/TagLib/Mpeg4/BoxTypes.cs: - * src/TagLib/Ogg/XiphComment.cs: - * src/TagLib/Ogg/GroupedComment.cs: Added support for Copyright, BPM, - Composer, and Grouping. - - svn path=/trunk/taglib-sharp/; revision=77393 - -commit 1621bd2f4bcb7886eea116cfeb273b7ae7c3cd8b -Author: Brian Nickel -Date: Tue May 15 00:50:19 2007 - - 2007-05-14 Brian Nickel - - * src/TagLib/Id3v2/Frames/SynchronizedLyricsFrame.cs: Include TextType - in Get, GetPreferred, and constructors. - - svn path=/trunk/taglib-sharp/; revision=77389 - -commit 11d59b0b728dcbc78088cebc0808582bc2f133d2 -Author: Brian Nickel -Date: Tue May 15 00:25:31 2007 - - 2007-05-14 Brian Nickel - - Feature Request: http://forum.taglib-sharp.com/viewtopic.php?f=4&t=12 - - * src/TagLib/File.cs: Support pushing and poping file abstractors. - * src/TagLib/Id3v2/Frames/UnsynchronisedLyricsFrame.cs: - * src/TagLib/Id3v2/Frames/CommentsFrame.cs: - * src/TagLib/Id3v2/Tag.cs: Be a little bit smarter when storing lyrics - and comments. GetPreferred shouldn't be used for storing, because we - want to store in exactly what we want, not a best guess. - * src/TagLib/Id3v2/FrameFactory.cs: - * src/TagLib/Id3v2/Frames/SynchronizedLyricsFrame.cs: Support - synchronized lyrics. - * src/TagLib/TagLib.sources: - * src/taglib-sharp.mdp: - * taglib-sharp.csproj: Added file. - - svn path=/trunk/taglib-sharp/; revision=77388 - -commit 1c35339ce18bfe692bd084957935d727456ccfd2 -Author: Brian Nickel -Date: Thu May 10 16:51:32 2007 - - 2007-05-10 Brian Nickel - - * src/TagLib/Mpeg/Properties.cs: - * src/TagLib/Asf/Properties.cs: - * src/TagLib/Ogg/Properties.cs: - * src/TagLib/Ogg/Vorbis/File.cs: - * src/TagLib/Ogg/Flac/File.cs: - * src/TagLib/Mpeg4/Properties.cs: Deleted. I thought MonoDevelop did - this automatically. My bad. - - svn path=/trunk/taglib-sharp/; revision=77167 - -commit 8231c1b7d8f99e3b19ff8ecd820f5ad9e8668b19 -Author: Brian Nickel -Date: Wed May 9 22:21:15 2007 - - 2007-05-09 Brian Nickel - - * src/TagLib/Mpeg/AudioFile.cs: Throw a proper CorruptFileException if - AudioHeader isn't found. - * src/TagLib/File.cs: - * src/TagLib/ICodec.cs: Use FlagsAttribute for sexy output. - * docs/taglib-sharp-docs.source: - * docs/Makefile.am: - * docs/MonodocNodeConfig.cs: Doc stuff mysteriously vanished from SVN - a while back. Returning. - * examples/ReadFromUri.cs: Cleaned up a bit. - * examples/ReadFromUri.boo: First boo example. Would have an IronPython - one, but I'm having some issues with inheritance. - - svn path=/trunk/taglib-sharp/; revision=77104 - -commit dec6901184e786c5e50fb1f350cce4eedfee404c -Author: Brian Nickel -Date: Wed May 9 12:58:56 2007 - - 2007-05-09 Brian Nickel - - +-------------+ - | VERSON BUMP | - | 1.9.99992 | - +-------------+ - - * src/TagLib/Id3v2/Tag.cs: Use new TextIdentificationFrame.Get - * configure.ac: Version bump. - - - svn path=/trunk/taglib-sharp/; revision=77072 - -commit eb8e3555c05797ad4330e7e348cff509f941ca8f -Author: Aaron Bockover -Date: Tue May 8 13:17:50 2007 - - Removed - - svn path=/trunk/taglib-sharp/; revision=76955 - -commit 22ef266a4a8fc1d98e54da8be504cb89afaf68c0 -Author: Aaron Bockover -Date: Tue May 8 13:16:30 2007 - - 2007-05-07 Aaron Bockover - - * src/TagLib/TagLib.sources: Added a separate file to define what sources - to build so that applications bundling TagLib don't have to worry about - keeping the list in sync - they can just include the file in their build - - * src/Makefile.am: Include TagLib/TagLib.sources - - * docs/Makefile.am: Added an empty/stub file to fix the build for now - - - svn path=/trunk/taglib-sharp/; revision=76954 - -commit dfe9c553fe1bb09b1410b9b30c595e8c33fb3a5b -Author: Brian Nickel -Date: Mon May 7 04:11:30 2007 - - 2007-05-07 Brian Nickel - - * src/TagLib/Riff/File.cs: Add support for WAVE files. Better improve - "Read ()" to handle other extensions. (Still pretty ugly.) - * src/TagLib/Riff/AviStream.cs: - * src/TagLib/Riff/BitmapInfoHeader.cs: - * src/TagLib/Riff/AviHeaderList.cs: - * src/TagLib/Riff/WaveFormatEx.cs: - * src/TagLib/Asf/StreamPropertiesObject.cs: De-stupidify. Make - WaveFormatEx and BitmapInfoHeader inheric I*Codec and remove excess - formats. - - svn path=/trunk/taglib-sharp/; revision=76811 - -commit 5d72c831f294e17dfd10747dca4380b97ce4a562 -Author: Brian Nickel -Date: Sun May 6 22:25:10 2007 - - 2007-05-04 Brian Nickel - - * src/TagLib/Id3v2/Frames/RelativeVolumeFrame.cs: - * src/TagLib/Id3v2/Frames/AttachedPictureFrame.cs: - * src/TagLib/Id3v2/Frames/UniqueFileIdentifierFrame.cs: - * src/TagLib/Id3v2/Frames/PrivateFrame.cs: - * src/TagLib/Id3v2/Frames/GeneralEncapsulatedObjectFrame.cs: - * src/TagLib/Id3v2/Frames/TextIdentificationFrame.cs: Added better type - checking in "Get" - * src/TagLib/ByteVector.cs: Fixed ToStrings align problem from previous - revision. - * docs/en/*/*.xml: Updated. - - svn path=/trunk/taglib-sharp/; revision=76805 - -commit 35595c85aac187b4fd0e3663d4ad4e6316fb0059 -Author: Brian Nickel -Date: Fri May 4 04:28:34 2007 - - 2007-05-04 Brian Nickel - - * src/TagLib/Riff/AviStream.cs: - * src/TagLib/Riff/BitmapInfoHeader.cs: - * src/TagLib/Riff/WaveFormatEx.cs: - * src/TagLib/Id3v2/Frames/RelativeVolumeFrame.cs: - * src/TagLib/Mpeg/File.cs: - * src/TagLib/Mpeg/VideoHeader.cs: - * src/TagLib/ByteVector.cs: - * src/TagLib/WavPack/StreamHeader.cs: - * src/TagLib/Ape/Footer.cs: - * src/TagLib/Asf/PaddingObject.cs: - * src/TagLib/Asf/File.cs: - * src/TagLib/Asf/HeaderObject.cs: - * src/TagLib/Asf/StreamPropertiesObject.cs: - * src/TagLib/Asf/FilePropertiesObject.cs: - * src/TagLib/Asf/ContentDescriptionObject.cs: - * src/TagLib/Asf/ExtendedContentDescriptionObject.cs: - * src/TagLib/Asf/Object.cs: - * src/TagLib/Asf/Guid.cs: - * src/TagLib/Asf/ContentDescriptor.cs: - * src/TagLib/Mpeg4/Boxes/IsoMovieHeaderBox.cs: - * src/TagLib/Mpeg4/Boxes/IsoSampleEntry.cs: - * src/TagLib/Mpeg4/Boxes/IsoChunkLargeOffsetBox.cs: - * src/TagLib/Mpeg4/Boxes/IsoAudioSampleEntry.cs: - * src/TagLib/Mpeg4/Boxes/AppleElementaryStreamDescriptor.cs: - * src/TagLib/Mpeg4/Boxes/IsoVisualSampleEntry.cs: - * src/TagLib/Mpeg4/AppleTag.cs: - * src/TagLib/Mpeg4/BoxHeader.cs: - * src/TagLib/Mpeg4/Box.cs: - * src/TagLib/Ogg/Codecs/Theora.cs: - * src/TagLib/Ogg/PageHeader.cs: Goodbye, short and long, hello ushort - and ulong. This should avoid those pesky OverflowExceptions. - - svn path=/trunk/taglib-sharp/; revision=76662 - -commit efa333489ab79f3ca9d5057fdafde428c97d7c5e -Merge: ef7278e 50c43d0 -Author: Brian Nickel -Date: Thu May 3 14:16:40 2007 - - 2007-05-03 Brian Nickel - - Revamped TagLib.Properties by making it non-overridable and having it read - ICodec, IAudioCodec, and IVideoCodec items. This provides support for reading - information strictly from an audio or video stream property, decreasing the - abstraction. - - * src/TagLib/Mpc/File.cs: - * src/TagLib/Mpc/StreamHeader.cs: - * src/TagLib/File.cs: - * src/TagLib/ByteVectorList.cs: - * src/TagLib/Riff/List.cs: - * src/TagLib/Riff/AviStream.cs: - * src/TagLib/Riff/File.cs: - * src/TagLib/Riff/BitmapInfoHeader.cs: - * src/TagLib/Riff/AviHeaderList.cs: - * src/TagLib/Riff/ListTag.cs: - * src/TagLib/Riff/InfoTag.cs: - * src/TagLib/Riff/MovieIdTag.cs: - * src/TagLib/Riff/WaveFormatEx.cs: - * src/TagLib/Mpeg/File.cs: - * src/TagLib/Mpeg/VideoHeader.cs: - * src/TagLib/Mpeg/AudioFile.cs: - * src/TagLib/Mpeg/AudioHeader.cs: - * src/TagLib/ICodec.cs: - * src/TagLib/WavPack/File.cs: - * src/TagLib/WavPack/StreamHeader.cs: - * src/TagLib/Properties.cs: - * src/TagLib/Flac/File.cs: - * src/TagLib/Flac/StreamHeader.cs: - * src/TagLib/Asf/File.cs: - * src/TagLib/Asf/HeaderObject.cs: - * src/TagLib/Asf/StreamPropertiesObject.cs: - * src/TagLib/ListBase.cs: - * src/TagLib/Mpeg4/Boxes/IsoMovieHeaderBox.cs: - * src/TagLib/Mpeg4/Boxes/IsoAudioSampleEntry.cs: - * src/TagLib/Mpeg4/Boxes/IsoVisualSampleEntry.cs: - * src/TagLib/Mpeg4/File.cs: - * src/TagLib/Ogg/Codecs/Theora.cs: - * src/TagLib/Ogg/Codecs/Vorbis.cs: - * src/TagLib/Ogg/Codec.cs: - * src/TagLib/Ogg/File.cs: - * examples/ReadFromUri.cs: Add support for new ICodec derivatives. - * src/TagLib/ByteVector.cs: Fix reading of UTF16 in certain cases. - * src/taglib-sharp.mdp: - * src/Makefile.am: - * taglib-sharp.csproj: New files. - * docs/en/*/*.xml: Updated docs. - - svn path=/trunk/taglib-sharp/; revision=76641 - -commit ef7278e7ac8544619e423fa14cea88ebe8eb3f6e -Author: Brian Nickel -Date: Thu Apr 26 04:41:21 2007 - - 2007-04-26 Brian Nickel - - * docs/en/*/*.xml: Updated docs. Removed bad files. - - - svn path=/trunk/taglib-sharp/; revision=76304 - -commit f965e2da293e9d5b756aed6bbe798f6bd4f39fab -Author: Brian Nickel -Date: Thu Apr 26 04:34:56 2007 - - Removing docs temporarily. - - - svn path=/trunk/taglib-sharp/; revision=76302 - -commit b5eca1f4a46f1a198e7108d14b998413f6228c1d -Author: Brian Nickel -Date: Wed Apr 25 18:25:33 2007 - - 2007-04-25 Brian Nickel - - taglib-sharp-1.9.99991 (2.0 beta 1) - - * src/TagLib/Riff/List.cs: - * src/TagLib/Riff/File.cs: RIFF abhors odd byte counts. - * src/TagLib/Asf/Tag.cs: Removed random extra Console.WriteLine. - * docs/en/*/*.xml: Synced - * configure.ac: Version bump - - - svn path=/trunk/taglib-sharp/; revision=76294 - -commit 50c43d0fc876694dfc582d3e8b835d6fe7e088b4 -Author: Brian Nickel -Date: Tue Apr 24 01:54:01 2007 - - 2007-04-23 Brian Nickel - - Added support for AVI video files! Revamped the GenreList for video genres. - - * src/TagLib/File.cs: New tag types. - * src/TagLib/Id3v1/Tag.cs: Clean up. - * src/TagLib/Riff/List.cs: - * src/TagLib/Riff/AviProperties.cs: - * src/TagLib/Riff/File.cs: - * src/TagLib/Riff/DivXTag.cs: - * src/TagLib/Riff/ListTag.cs: - * src/TagLib/Riff/InfoTag.cs: - * src/TagLib/Riff/MovieIdTag.cs: AVI support! - * src/TagLib/Genres.cs: Refactored GenreList. - * src/TagLib/Id3v2/Tag.cs: Clean up rendering. - * src/TagLib/Id3v2/Frames/UnknownFrame.cs: Expand support. - * src/TagLib/NonContainer/EndTag.cs: - * src/TagLib/NonContainer/StartTag.cs: Id3v2 changes. - * src/TagLib/FileTypes.cs: Added Riff type. - * src/TagLib/Asf/File.cs: - * src/TagLib/Asf/Tag.cs: - * src/TagLib/Asf/ExtendedContentDescriptionObject.cs: IEnumerable. - * src/TagLib/Mpeg4/FileParser.cs: - * src/TagLib/Mpeg4/AppleTag.cs: Use BoxList and IEnumerable. - * src/TagLib/Ogg/File.cs: AccessMode should be Write, not read. - * src/taglib-sharp.mdp: - * src/Makefile.am: - * taglib-sharp.csproj: New files. - - svn path=/trunk/taglib-sharp/; revision=76161 - -commit 1a6210a60dbf350488095ea0a234ba9ee808e133 -Merge: 545c1a4 e89151f -Author: Brian Nickel -Date: Tue Apr 17 20:57:51 2007 - - 2007-04-17 Brian Nickel - - Added support for MPEG-1/2 video files! Major API changes in TagLib.Mpeg - namespace. - - * src/TagLib/File.cs: Make BufferSize public. - * src/TagLib/Id3v2/Tag.cs: Accidentally accounted for footer twice. - * src/TagLib/Mpeg/Properties.cs: Support video, refractor code. - * src/TagLib/Mpeg/File.cs: Support complete MPEG-1/2 file. - * src/TagLib/Mpeg/VideoHeader.cs: Parses the content of a mpeg box. - * src/TagLib/Mpeg/AudioFile.cs: Renamed from File.cs as it is simply an - implementation of the audio stream rather than a complete file. - * src/TagLib/Mpeg/AudioHeader.cs: Renamed from Header.cs - * src/TagLib/NonContainer/EndTag.cs: Fix rendering of Id3v1 tags. Fix - prioritizing of tags. - * src/TagLib/FileTypes.cs: New file type Mpeg.AudioFile - * src/Makefile.am: - * src/taglib-sharp.mdp: - * taglib-sharp.csproj: New files. - - svn path=/trunk/taglib-sharp/; revision=75856 - -commit 545c1a48a735d8baf7650e6bc92a469d988aef55 -Author: Brian Nickel -Date: Sun Apr 15 21:16:12 2007 - - 2007-04-15 Brian Nickel - - Added support for MPEG-4 video! - - * src/TagLib/Tag.cs: - * src/TagLib/File.cs: - * src/TagLib/Mpeg/XingHeader.cs: - * src/TagLib/Properties.cs: Removed obsolete properties and methods. - * src/TagLib/Ape/Tag.cs: - * src/TagLib/Ape/Footer.cs: - * src/TagLib/Ape/Item.cs: Cleaned up formatting a bit. - * src/TagLib/Mpeg4/Boxes/IsoSampleEntry.cs: - * src/TagLib/Mpeg4/Boxes/IsoAudioSampleEntry.cs: - * src/TagLib/Mpeg4/Boxes/IsoVisualSampleEntry.cs: - * src/TagLib/Mpeg4/Boxes/AppleElementaryStreamDescriptor.cs: - * src/TagLib/Mpeg4/Boxes/IsoSampleDescriptionBox.cs: - * src/TagLib/Mpeg4/Properties.cs: - * src/TagLib/Mpeg4/FileParser.cs: - * src/TagLib/Mpeg4/File.cs: - * src/TagLib/Mpeg4/BoxFactory.cs: Added visual support. - * src/Makefile.am - * src/taglib-sharp.mdp - * taglib-sharp.csproj: Added new files. - * tests/fixtures/TagLib.FormatTests/AsfFormatTest.cs: The test did not - represent the field interpretation. - - svn path=/trunk/taglib-sharp/; revision=75741 - -commit 7f1c6a59af367729df95412be794af386878db94 -Author: Brian Nickel -Date: Sun Apr 15 15:57:03 2007 - - 2007-04-15 Brian Nickel - - * src/TagLib/Id3v2/Tag.cs: - * src/TagLib/Id3v2/FrameFactory.cs: Removed DefaultEncoding stuff from - FrameFactory and put it in Tag. Additionally, instead of enforcing the - default encoding at read time, it is enforced at render time. It has - also been changed so the tags save in the same version they were read in - by default. This should avoid the greatest number of problems without - the need for developer intervention. - * src/TagLib/Id3v2/Frames/UnsynchronisedLyricsFrame.cs: - * src/TagLib/Id3v2/Frames/RelativeVolumeFrame.cs: - * src/TagLib/Id3v2/Frames/CommentsFrame.cs: - * src/TagLib/Id3v2/Frames/AttachedPictureFrame.cs: - * src/TagLib/Id3v2/Frames/UniqueFileIdentifierFrame.cs: - * src/TagLib/Id3v2/Frames/PrivateFrame.cs: - * src/TagLib/Id3v2/Frames/GeneralEncapsulatedObjectFrame.cs: - * src/TagLib/Id3v2/Frames/TextIdentificationFrame.cs: Replace Find with - Get (Tag tag, ..., bool create). This new method will find a specified - frame if it exists, and can create it and append it if it doesn't. - * src/TagLib/Id3v2/Frame.cs: Enforce ForceDefaultEncoding. - * src/TagLib/Asf/Tag.cs: - * src/TagLib/Asf/File.cs: - * src/TagLib/Asf/HeaderObject.cs: - * src/TagLib/Asf/ExtendedContentDescriptionObject.cs: All generic. - * src/TagLib/Mpeg4/File.cs: - * src/TagLib/Mpeg4/Box.cs: AppleTag wasn't getting attached to .Tag - * tests/tests.mdp: Removed ApeFormatTest as it was unsupported. - * tests/fixtures/TagLib.FormatTests/FlacFormatTest.cs: - * tests/fixtures/TagLib.FormatTests/Id3V1FormatTest.cs: - * tests/fixtures/TagLib.FormatTests/Id3V2FormatTest.cs: - * tests/fixtures/TagLib.FormatTests/AsfFormatTest.cs: - * tests/fixtures/TagLib.FormatTests/Id3BothFormatTest.cs: - * tests/fixtures/TagLib.FormatTests/OggFormatTest.cs: - * tests/fixtures/TagLib.FormatTests/MpcFormatTest.cs: - * tests/fixtures/TagLib.FormatTests/M4aFormatTest.cs: Updated for new - API. - * configure.ac: Version bump. - - svn path=/trunk/taglib-sharp/; revision=75736 - -commit e89151f9fab8c2b1d1f2160c708319025dc91757 -Author: Brian Nickel -Date: Mon Apr 9 18:11:58 2007 - - 2007-04-09 Brian Nickel - - * src/AssemblyInfo-windows.cs: - * configure.ac: - * taglib-sharp.csproj: Apply version bump. Now 1.9.* - - - svn path=/trunk/taglib-sharp/; revision=75556 - -commit 6728903ef66fa53592b1cb9f993fd97cc66217a6 -Merge: 4183fba e7de1a7 -Author: Brian Nickel -Date: Fri Apr 6 04:54:26 2007 - - 2007-04-06 Brian Nickel - - MAJOR API CHANGES! COMPLETE NEW OGG BACKEND! VIDEO SUPPORT IN OGG AND ASF! - - * src/TagLib/Mpc/Properties.cs: - * src/TagLib/Mpc/File.cs: Support new "Properties". - * src/TagLib/File.cs: Support new "Properties". - * src/TagLib/Id3v2/Tag.cs: - * src/TagLib/Id3v2/FrameFactory.cs: - * src/TagLib/Id3v2/Frames/AttachedPictureFrame.cs: - * src/TagLib/Id3v2/Frames/PrivateFrame.cs: - * src/TagLib/Id3v2/Frames/GeneralEncapsulatedObjectFrame.cs: Better error - handling. - * src/TagLib/Mpeg/Properties.cs: Support new "Properties". - * src/TagLib/Mpeg/XingHeader.cs: Mark IsValid as obsolete. - * src/TagLib/Mpeg/File.cs: - * src/TagLib/WavPack/Properties.cs: - * src/TagLib/WavPack/File.cs: Support new "Properties". - * src/TagLib/NonContainer/File.cs: Support new "Properties". - * src/TagLib/NonContainer/EndTag.cs: - * src/TagLib/NonContainer/StartTag.cs: Better error handling. - * src/TagLib/Properties.cs: Abolish overly specific "AudioProperties" - * src/TagLib/Ape/Item.cs: Replace Debugger with Exception - * src/TagLib/Flac/Properties.cs: - * src/TagLib/Flac/File.cs: Support new "Properties". - * src/TagLib/FileTypes.cs: Remove dead file types. - * src/TagLib/Asf/Tag.cs: Allow tag clearing. - * src/TagLib/Asf/Properties.cs: - * src/TagLib/Asf/File.cs: Support new "Properties". Support video. - * src/TagLib/Asf/Guid.cs: Fix typo in GUID plain text. - * src/TagLib/Mpeg4/Properties.cs: - * src/TagLib/Mpeg4/AppleTag.cs: - * src/TagLib/Mpeg4/File.cs: Move saving out of the AppleTag. Will allow - future implimentation of ID3v2 boxes. - * src/TagLib/Ogg/XiphComment.cs: - * src/TagLib/Ogg/Page.cs: - * src/TagLib/Ogg/Codecs/Theora.cs: - * src/TagLib/Ogg/Codecs/Vorbis.cs: - * src/TagLib/Ogg/Properties.cs: - * src/TagLib/Ogg/Codec.cs: - * src/TagLib/Ogg/File.cs: - * src/TagLib/Ogg/Paginator.cs: - * src/TagLib/Ogg/PageHeader.cs: - * src/TagLib/Ogg/GroupedComment.cs: - * src/TagLib/Ogg/Bitstream.cs: Recoded for multistream files. - * src/Makefile.am: - * src/taglib-sharp.mdp: Updated for new files. - * docs/en/*: Updated docs to new API. - * examples/ReadFromUri.cs: Added video support. - - svn path=/trunk/taglib-sharp/; revision=75474 - -commit 4183fbac47082a49488a4d24369525b27c631fb9 -Author: Brian Nickel -Date: Fri Mar 23 16:56:30 2007 - - 2007-03-23 Brian Nickel - - * src/TagLib/File.cs: Don't catch exceptions on mode change. - * src/TagLib/Id3v1/Tag.cs: Use TryParse rather than try{Parse}. - * src/TagLib/Id3v2/Tag.cs: Remove "0" values rather than storing "0". Use - TryParse rather than try{Parse}. - * src/TagLib/Id3v2/Frames/TextIdentificationFrame.cs: Use TryParse rather - than try{Parse}. - * src/TagLib/Ape/Tag.cs: Remove "0" values rather than storing "0". Use - TryParse rather than try{Parse}. - * src/TagLib/Asf/Tag.cs: Remove "0" values rather than storing "0". Use - TryParse rather than try{Parse}. - * src/TagLib/Asf/ContentDescriptor.cs: Use TryParse rather than try{Parse}. - * src/TagLib/Mpeg4/AppleTag.cs: Use TryParse rather than try{Parse}. - * src/TagLib/Ogg/XiphComment.cs: Remove "0" values rather than storing "0". - Use TryParse rather than try{Parse}. - * src/TagLib/Ogg/Vorbis/File.cs: Don't catch exceptions on mode change. - - svn path=/trunk/taglib-sharp/; revision=74925 - -commit 2fa8af7af3c6de35cb9e1ce913bbf326bdaecedb -Author: Brian Nickel -Date: Thu Mar 22 19:12:55 2007 - - 2007-03-22 Brian Nickel - - * src/TagLib/Id3v2/Frames/TextIdentificationFrame.cs: Remove null termination - in ID3v2.3 and below. - * src/TagLib/WavPack/File.cs: - * src/TagLib/Mpc/File.cs: - * src/TagLib/Mpeg/File.cs: Include sane default tags. - * docs/en/*: Synched docs. - - - svn path=/trunk/taglib-sharp/; revision=74861 - -commit a19253ce77d06f7a4681faf5cefa16d6b7b02e45 -Author: Brian Nickel -Date: Wed Mar 14 16:23:42 2007 - - 2007-03-14 Brian Nickel - - * docs/en/*: Synced docs. - - - svn path=/trunk/taglib-sharp/; revision=74308 - -commit e7de1a714ef4336295c85bb0ca0e73b96c4a6b47 -Author: Brian Nickel -Date: Wed Mar 14 02:15:31 2007 - - 2007-03-13 Brian Nickel - - Lyrics support! Fixed write support in MPEG-4 and ASF. - - * src/TagLib/Tag.cs: - * src/TagLib/CombinedTag.cs: - * src/TagLib/Id3v2/Tag.cs: - * src/TagLib/Id3v2/FrameFactory.cs: - * src/TagLib/Id3v2/Frames/UnsynchronisedLyricsFrame.cs: - * src/TagLib/Ape/Tag.cs: - * src/TagLib/Asf/Tag.cs: - * src/TagLib/Mpeg4/Boxes/FullBox.cs: - * src/TagLib/Mpeg4/AppleTag.cs: - * src/TagLib/Mpeg4/BoxTypes.cs: - * src/TagLib/Mpeg4/Box.cs: - * src/TagLib/Ogg/XiphComment.cs: Lyrics support. Special thanks to Patrick - Laplante. - * src/TagLib/Id3v2/Frames/CommentsFrame.cs: - * src/TagLib/ByteVector.cs: Fix up UTF16 handling. - * src/TagLib/Asf/HeaderObject.cs: Fix writing. Wasn't writing header GUID! - * src/Makefile.am: - * src/taglib-sharp.mdp: - * taglib-sharp.csproj: Update project files. - * examples/BatchSet.cs: - * examples/ReadFromUri.cs: Support lyrics. - - svn path=/trunk/taglib-sharp/; revision=74237 - -commit f294436840eb53c3d2b28b7d62373af83cba478b -Merge: 720db6c 50d6746 -Author: Brian Nickel -Date: Tue Mar 13 21:13:29 2007 - - 2007-03-13 Brian Nickel - - Performance enhancement for MPEG-4 files. Stole an idea from Entagged#. - - * src/TagLib/Mpeg4/FileParser.cs: ADDED - * src/TagLib/Mpeg4/BoxTypes.cs: ADDED - * src/TagLib/Mpeg4/BoxFactory.cs: ADDED - * src/TagLib/Mpeg4/BoxList.cs: ADDED - * src/TagLib/Mpeg4/Box.cs: ADDED - * src/TagLib/Mpeg4/Boxes/FullBox.cs: - * src/TagLib/Mpeg4/Boxes/IsoMovieHeaderBox.cs: - * src/TagLib/Mpeg4/Boxes/IsoSampleTableBox.cs: - * src/TagLib/Mpeg4/Boxes/IsoChunkLargeOffsetBox.cs: - * src/TagLib/Mpeg4/Boxes/IsoSampleEntry.cs: - * src/TagLib/Mpeg4/Boxes/AppleAdditionalInfoBox.cs: - * src/TagLib/Mpeg4/Boxes/IsoFreeSpaceBox.cs: - * src/TagLib/Mpeg4/Boxes/AppleItemListBox.cs: - * src/TagLib/Mpeg4/Boxes/IsoUserDataBox.cs: - * src/TagLib/Mpeg4/Boxes/IsoHandlerBox.cs: - * src/TagLib/Mpeg4/Boxes/AppleElementaryStreamDescriptor.cs: - * src/TagLib/Mpeg4/Boxes/IsoChunkOffsetBox.cs: - * src/TagLib/Mpeg4/Boxes/AppleDataBox.cs: - * src/TagLib/Mpeg4/Boxes/AppleAnnotationBox.cs: - * src/TagLib/Mpeg4/Boxes/UnknownBox.cs: - * src/TagLib/Mpeg4/Boxes/IsoSampleDescriptionBox.cs: - * src/TagLib/Mpeg4/Boxes/IsoMetaBox.cs: - * src/TagLib/Mpeg4/Properties.cs: - * src/TagLib/Mpeg4/AppleTag.cs: - * src/TagLib/Mpeg4/File.cs: - * src/TagLib/Mpeg4/BoxHeader.cs: Adapted to new parser. - * src/TagLib/Mpeg4/Boxes/IsoTrackBox.cs: DELETED - * src/TagLib/Mpeg4/Boxes/Box.cs: DELETED - * src/TagLib/Mpeg4/Boxes/FileBox.cs: DELETED - * src/TagLib/Mpeg4/Boxes/IsoMovieBox.cs: DELETED - * src/TagLib/Mpeg4/Boxes/IsoMediaBox.cs: DELETED - * src/TagLib/Mpeg4/Boxes/IsoMediaInformationBox.cs: DELETED - - * src/TagLib/File.cs: Make ReadBlock make a a little more sense. - * src/TagLib/Id3v2/Tag.cs: Support tag-wide unsynchronization. - * src/TagLib/Id3v2/SynchData.cs: Add support for unsynching a bytevector. - * src/TagLib/Id3v2/FrameHeader.cs: We don't actually support frame tags. - Don't pretend that we do. - * src/TagLib/Debugger.cs: Fix typo and crasher in code timer. - * src/TagLib/ByteVector.cs: Make Mid a little faster. - * src/TagLib/NonContainer/EndTag.cs: - * src/TagLib/NonContainer/StartTag.cs: End tags should be at least version 4 - * src/Makefile.am: - * src/taglib-sharp.mdp: - * taglib-sharp.csproj: Update for new files. - - svn path=/trunk/taglib-sharp/; revision=74224 - -commit 720db6c2ce8a78239a0bb0733d8506106ba3b097 -Author: Brian Nickel -Date: Fri Mar 9 12:13:38 2007 - - 2007-03-09 Brian Nickel - * configure.ac: Fixed version information. - - svn path=/trunk/taglib-sharp/; revision=74020 - -commit 5e0401e40accf5da245ce7f8359f2ad05b00016b -Author: Brian Nickel -Date: Fri Mar 9 05:29:53 2007 - - 2007-03-09 Brian Nickel - - "I do not regret the things I've done, but those I did not do." - - * src/TagLib/Id3v2/Tag.cs: - * src/TagLib/Id3v2/FrameFactory.cs: - * src/TagLib/Id3v2/FrameHeader.cs: - * src/TagLib/Id3v2/Header.cs: - * src/TagLib/Id3v2/Frames/RelativeVolumeFrame.cs: - * src/TagLib/Id3v2/Frames/CommentsFrame.cs: - * src/TagLib/Id3v2/Frames/AttachedPictureFrame.cs: - * src/TagLib/Id3v2/Frames/UniqueFileIdentifierFrame.cs: - * src/TagLib/Id3v2/Frames/PrivateFrame.cs: - * src/TagLib/Id3v2/Frames/GeneralEncapsulatedObjectFrame.cs: - * src/TagLib/Id3v2/Frames/TextIdentificationFrame.cs: - * src/TagLib/Id3v2/Frames/UnknownFrame.cs: - * src/TagLib/Id3v2/Frame.cs: Reworked reading/writing code to better support - writing Id3v2.2 and Id2v2.3. This is the first go at it, and there is room - for cleanup in the code, but it works, and it works and it works well. - - svn path=/trunk/taglib-sharp/; revision=73998 - -commit 50d67469ce05d4ce7d17fce881439cc02508f0e8 -Author: Brian Nickel -Date: Thu Mar 8 19:54:47 2007 - - 2007-03-08 Brian Nickel - * src/TagLib/Mpc/File.cs: Inherit NonContainer.File - * src/TagLib/CombinedTag.cs: Add some useful features for NonContainer.* - * src/TagLib/Id3v1/Tag.cs: Add Tag.Size instead of repeated hardcoding of - 128. - * src/TagLib/Id3v2/Footer.cs: - * src/TagLib/Id3v2/Header.cs: Throw proper CorruptFileExceptions - * src/TagLib/Mpeg/File.cs: Inherit NonContainer.File - * src/TagLib/WavPack/File.cs: Inherit NonContainer.File - * src/TagLib/NonContainer: - * src/TagLib/NonContainer/Tag.cs: - * src/TagLib/NonContainer/File.cs: - * src/TagLib/NonContainer/EndTag.cs: - * src/TagLib/NonContainer/StartTag.cs: New generic abstracts for files - that can start/end with an assortment of tags. (FLAC, WV, MPC, MP3) - * src/TagLib/Ape/Tag.cs: Read backwards if a footer is found and forwards if - a header is found. - * src/TagLib/Ape/Footer.cs: FooterPresent and IsHeader were read - incorrectly. Also throw proper exceptions while reading. - * src/TagLib/Flac/File.cs: Inherit NonContainer.File - * src/TagLib/Flac/BlockHeader.cs: - * src/TagLib/Flac/Block.cs: Removed from Flac.File, made public. - * src/TagLib/Mpeg4/File.cs: Remove old commented code. - * src/Makefile.am: - * src/taglib-sharp.csproj: - * src/taglib-sharp.mdp: - * taglib-sharp.mds: - * tests/tests.mdp: - * examples/SetPictures.mdp: - * examples/ReadFromUri.mdp: Updates. - - svn path=/trunk/taglib-sharp/; revision=73980 - -commit 638a8773ef6babb4207fc17129b95da3c27d9c89 -Author: Brian Nickel -Date: Sun Mar 4 18:59:31 2007 - - 2007-03-04 Brian Nickel - - * src/TagLib/File.cs: We don't use file.file_types. Comment it out to avoid - the warning. - * src/TagLib/Tag.cs: - * src/TagLib/Id3v1/Tag.cs: - * src/TagLib/Id3v2/Tag.cs: - * src/TagLib/Id3v2/FrameFactory.cs: - * src/TagLib/Id3v2/Frames/GeneralEncapsulatedObjectFrame.cs: - * src/TagLib/Id3v2/Frames/TextIdentificationFrame.cs: - * src/TagLib/Debugger.cs: - * src/TagLib/Ape/Tag.cs: - * src/TagLib/Asf/Tag.cs: - * src/TagLib/Asf/ContentDescriptionObject.cs: - * src/TagLib/Mpeg4/AppleTag.cs: - * src/TagLib/Ogg/XiphComment.cs: - * docs/MonodocNodeConfig.cs: - * tests/fixtures/TagLib.CollectionTests/StringListTest.cs: - * tests/fixtures/TagLib.CollectionTests/IntListTest.cs: - * examples/ReadFromUri.cs: Use string.Empty instead of "". - * src/TagLib/Id3v2/Frames/CommentsFrame.cs: Support broken COMM frames that - don't contain a comment description string. - - svn path=/trunk/taglib-sharp/; revision=73697 - -commit 7edb701b614ced81d2cee17180197efb2e88c32c -Author: Brian Nickel -Date: Wed Feb 21 14:17:39 2007 - - 2007-02-12 Brian Nickel - - * src/TagLib/File.cs: Added support for read sharing in ReadStream. This - should eliminate a problem in Windows where files couldn't be read while - they were playing. Solution by Ion Todirel. - * src/TagLib/Id3v2/Frames/TextIdentificationFrame.cs: Strip all empty - strings from the end of the FieldList. This should fix strings that were - badly tagged, with either a nil character or the sum total of the ID3v1 - string attached. May fix banshee bug #410116. - * tests/Makefile.am: Removed line blocking distcheck - - svn path=/trunk/taglib-sharp/; revision=73276 - -commit 815bd6d7ac68b1629fd0be0b86194205fe2ef1cb -Author: Brian Nickel -Date: Mon Feb 12 21:56:10 2007 - - 2007-02-12 Brian Nickel - - * src/TagLib/ByteVector.cs: Fix support for Latin1. - * taglib-sharp.csproj: Work on Windows. - - svn path=/trunk/taglib-sharp/; revision=72728 - -commit 8756a473fa6c667fc55bfdf56b9eacab54c39b99 -Author: Brian Nickel -Date: Mon Feb 12 14:07:50 2007 - - 2007-02-12 Brian Nickel - - * src/TagLib/File.cs: Remove ReadOnly checking. This is to add compatability - with the .NET Compact Framework and to remove some ugly code. Libraries - using TagLib# should check file writability for themselves if they want - the writable status before Save() is called. Also use more compatable - Array.Copy(). - * src/TagLib/Mpeg/File.cs: Comment out unused method. - * src/TagLib/ByteVector.cs: Use more compatable Array.Copy() - * src/TagLib/ReadOnlyException.cs: Removed because unused. - * src/AssemblyInfo.cs.in: Update copyright. - * src/AssemblyInfo-windows.cs: Update version and copyright. - * src/Makefile.am: - * src/taglib-sharp.mdp: - * taglib-sharp.csproj: Update files. - - svn path=/trunk/taglib-sharp/; revision=72686 - -commit 3d0a431324e1913d77e79835a120b7f35b7b2b18 -Author: Brian Nickel -Date: Sun Feb 11 19:10:41 2007 - - 2007-02-10 Brian Nickel - - * src/TagLib/Id3v2/Tag.cs: - * src/TagLib/Id3v2/FrameFactory.cs: - * src/TagLib/Id3v2/Frames/RelativeVolumeFrame.cs: - * src/TagLib/Id3v2/Frames/CommentsFrame.cs: - * src/TagLib/Id3v2/Frames/AttachedPictureFrame.cs: - * src/TagLib/Id3v2/Frames/UniqueFileIdentifierFrame.cs: - * src/TagLib/Id3v2/Frames/PrivateFrame.cs: - * src/TagLib/Id3v2/Frames/GeneralEncapsulatedObjectFrame.cs: - * src/TagLib/Id3v2/Frames/TextIdentificationFrame.cs: - * src/TagLib/Id3v2/Frames/UnknownFrame.cs: - * src/TagLib/Id3v2/Frame.cs: - * src/TagLib/ByteVector.cs: VASTLY improved the loading of ID3v2 tags by - breaking API compatability. (This isn't a major concern at the moment.) - Removed a major piece of code which was causing about 80% of the read time. - * src/TagLib/Debugger.cs: Added new way to test for slow code blocks. - - - svn path=/trunk/taglib-sharp/; revision=72636 - -commit 316a7c6ca649172d5c4056462b57b0de5f0ddb0e -Author: Brian Nickel -Date: Sat Feb 10 13:09:52 2007 - - 2007-02-10 Brian Nickel - - * src/TagLib/Mpeg/File.cs: Fix bug introduced on 2007-01-26. If a file - lacked an Id3v2 tag, TagLib read the whole file. Initial analysis shows this - being marginally faster than the even older version. - * src/TagLib/Id3v2/Frames/RelativeVolumeFrame.cs: - * src/TagLib/Ape/Tag.cs: - * src/TagLib/Ogg/XiphComment.cs: - * src/TagLib/Ogg/File.cs: Abolish Hashtable. ArrayList is next. - - svn path=/trunk/taglib-sharp/; revision=72582 - -commit 46b8662f783314ca5821473484137f04eb93c6cc -Author: Brian Nickel -Date: Mon Jan 29 13:41:33 2007 - - 2007-01-29 Brian Nickel - - * examples/ReadFromUri.cs: Remove accidental commenting out. - - svn path=/trunk/taglib-sharp/; revision=71907 - -commit 745e88d2b9f894d23ef22f285fafe10c285c9f42 -Author: Brian Nickel -Date: Sat Jan 27 00:11:01 2007 - - 2007-01-26 Brian Nickel - - CLEANUPS! For the most part, internal code has been cleaned up to be less - hackish. One major feature is the obsoleting of SetValid and IsValid. If - a file is invalid, it will now throw a CorruptFileException. - - * src/TagLib/Mpc/Properties.cs: - * src/TagLib/Mpc/File.cs: Better search functions. - * src/TagLib/File.cs: Clean out and Obsolete bad code. - * src/TagLib/Id3v1/Tag.cs: Cleaner functions. - * src/TagLib/Mpeg/Properties.cs: - * src/TagLib/Mpeg/XingHeader.cs: - * src/TagLib/Mpeg/File.cs: - * src/TagLib/Mpeg/Header.cs: Better search functions, calculations, and - exceptions. - * src/TagLib/WavPack/Properties.cs: - * src/TagLib/WavPack/File.cs: Use better search functions. - * src/TagLib/Ape/Footer.cs: Throw better exception. - * src/TagLib/Flac/File.cs: Fix padding calculation. - * src/TagLib/Asf/PaddingObject.cs: - * src/TagLib/Asf/File.cs: - * src/TagLib/Asf/HeaderObject.cs: - * src/TagLib/Asf/FilePropertiesObject.cs: - * src/TagLib/Asf/ContentDescriptionObject.cs: - * src/TagLib/Asf/ExtendedContentDescriptionObject.cs: Throw better - exceptions. - * src/TagLib/Mpeg4/Boxes/FullBox.cs: - * src/TagLib/Mpeg4/Boxes/IsoMovieHeaderBox.cs: - * src/TagLib/Mpeg4/Boxes/IsoSampleEntry.cs: - * src/TagLib/Mpeg4/Boxes/FileBox.cs: - * src/TagLib/Mpeg4/Boxes/Box.cs: - * src/TagLib/Mpeg4/Boxes/IsoSampleDescriptionBox.cs: - * src/TagLib/Mpeg4/File.cs: Read bigger blocks and less often. - * src/TagLib/Ogg/XiphComment.cs: Support "XX/XX" values in Track and Disc. - * src/TagLib/Ogg/File.cs: - * src/TagLib/Ogg/Vorbis/Properties.cs: - * src/TagLib/Ogg/Vorbis/File.cs: - * src/TagLib/Ogg/Flac/File.cs: Obsolete Set/IsValid and throw useful - exceptions. - * docs/en/TagLib.Id3v1/Tag.xml: - * docs/en/TagLib.Id3v2/FrameFactory.xml: - * docs/en/TagLib.Mpeg/Header.xml: - * docs/en/TagLib.Mpeg/Properties.xml: - * docs/en/TagLib.Mpeg/File.xml: - * docs/en/TagLib/UnsupportedFormatException.xml: - * docs/en/TagLib/ByteVector.xml: - * docs/en/TagLib/ReadOnlyException.xml: - * docs/en/TagLib/SupportedMimeType.xml: - * docs/en/TagLib/AudioProperties.xml: - * docs/en/TagLib/File.xml: - * docs/en/index.xml: - * docs/en/TagLib.Asf/FilePropertiesObject.xml: - * docs/en/TagLib.Asf/StreamPropertiesObject.xml: - * docs/en/TagLib.Mpeg4/Box.xml: - * docs/en/TagLib.Mpeg4/Properties.xml: - * docs/en/TagLib.Mpeg4/IsoMovieHeaderBox.xml: - * docs/en/TagLib.Mpeg4/File.xml: Doc updates. - * examples/ReadFromUri.cs: Add timer, clean output, and avoid crash. - - svn path=/trunk/taglib-sharp/; revision=71776 - -commit 3d6a2ae571c6d109d0e9ee1815cb5adddac694c6 -Author: Brian Nickel -Date: Mon Jan 8 00:10:51 2007 - - 2007-01-07 Brian Nickel - - * src/TagLib/File.cs: Throw ReadOnlyException when it makes sense. - * src/TagLib/Id3v2/Frames/AttachedPictureFrame.cs: Fix for UTF16. - * src/TagLib/Id3v2/Frames/GeneralEncapsulatedObjectFrame.cs: - * src/TagLib/Id3v2/FrameFactory.cs: - * src/TagLib/Id3v1/Tag.cs: - * src/TagLib/Id3v2/Frames/TextIdentificationFrame.cs: - * src/TagLib/Mpeg/XingHeader.cs: - * src/TagLib/Mpeg/Header.cs: Improvements from TagLib. - * src/TagLib/Flac/Picture.cs: - * src/TagLib/Flac/File.cs: Massive code rewrite. Added support for Picture - Block. - * src/TagLib/Mpeg4/Boxes/IsoHandlerBox.cs: Fix typo. - * src/Makefile.am: Add new files. - * examples/ReadFromUri.cs: Update for changes in TagLib.Tag - - - svn path=/trunk/taglib-sharp/; revision=70624 - -commit ec64c4c5a5d703015c47f374e8fa07de824ca1ab -Author: Miguel de Icaza -Date: Sun Dec 31 15:21:07 2006 - - Ran through the Monodoc updater, and exclude compiler generated types - - svn path=/trunk/taglib-sharp/; revision=70295 - -commit 40e8172b550e081a5279855a26a3caa8a6d88f06 -Author: Aaron Bockover -Date: Tue Dec 26 17:28:45 2006 - - 2006-12-26 Aaron Bockover - - * src/TagLib/CorruptFileException.cs: Added new exception - - * src/TagLib/Mpeg4/File.cs: - * src/TagLib/Ogg/Vorbis/File.cs: Guard against nullrefs, if necessary - parts are null, throw a CorruptFileException instead to avoid seg violation - - * tests/fixtures/TagLib.FormatTests/IFormatTest.cs: Added interface for - the format test - - * tests/fixtures/TagLib.FormatTests/*.cs: Implement IFormatTest, - added TestCorruptionResistance - - * tests/samples/corrupt/*: Added some 'corrupt' samples - - - svn path=/trunk/taglib-sharp/; revision=70098 - -commit 47a28d7d84a4a070ff8f52a66de345927d5de489 -Author: Brian Nickel -Date: Fri Dec 15 10:51:10 2006 - - 2006-12-15 Brian Nickel - - * src/TagLib/Mpeg/Properties.cs: - * src/TagLib/Mpeg/Header.cs: Made some changes based on KDE bug 135459, - which should hopefully improve the accuracy of length reporting. - - svn path=/trunk/taglib-sharp/; revision=69535 - -commit 37f793eeeec12ac5c8f75bcd370bac0a7a1e9804 -Author: Brian Nickel -Date: Thu Dec 14 14:44:42 2006 - - 2006-12-14 Brian Nickel - - * src/TagLib/Mpeg/Header.cs: Fixed typo causing MP3 channels to always - equal 1. - - - svn path=/trunk/taglib-sharp/; revision=69510 - -commit b684f5efafcc62372b175ff517d50c278ca9dbe1 -Author: Aaron Bockover -Date: Mon Nov 13 23:04:04 2006 - - 2006-11-13 Aaron Bockover - - * src/TagLib/SupportedMimeType.cs: Load mime types in static constructor - - * src/TagLib/FileTypes.cs: File type loader that initializes the - SupportedMimeType support - - * src/TagLib/File.cs: Use FileTypes.AvailableTypes - - * src/Makefile.am: Added src/TagLib/FileTypes.cs - - - svn path=/trunk/taglib-sharp/; revision=67813 - -commit b4024f8550657e7dffbac1b9a736b7b76c086228 -Author: Brian Nickel -Date: Mon Nov 6 14:15:19 2006 - - 2006-11-06 Brian Nickel - - * src/TagLib/Id3v2/Tag.cs: - * src/TagLib/Id3v2/FrameHeader.cs: - * src/TagLib/Id3v2/Frame.cs: - * src/TagLib/ByteVector.cs: - * src/TagLib/Ape/Tag.cs: - * src/TagLib/Flac/File.cs: - * src/TagLib/Asf/Tag.cs: - * src/TagLib/Asf/HeaderObject.cs: - * src/TagLib/Asf/StreamPropertiesObject.cs: - * src/TagLib/Asf/FilePropertiesObject.cs: - * src/TagLib/Asf/ContentDescriptionObject.cs: - * src/TagLib/Asf/ExtendedContentDescriptionObject.cs: - * src/TagLib/Asf/Object.cs: - * src/TagLib/Asf/Guid.cs: - * src/TagLib/Asf/ContentDescriptor.cs: - * src/TagLib/Mpeg4/Boxes/FullBox.cs: - * src/TagLib/Mpeg4/Boxes/IsoChunkLargeOffsetBox.cs: - * src/TagLib/Mpeg4/Boxes/Box.cs: - * src/TagLib/Mpeg4/Boxes/IsoHandlerBox.cs: - * src/TagLib/Mpeg4/Boxes/IsoChunkOffsetBox.cs: - * src/TagLib/Mpeg4/AppleTag.cs: - * src/TagLib/Mpeg4/BoxHeader.cs: Improve performance by not using plus - operator so much. Less allocations. - * tests/fixtures/TagLib.FormatTests/Id3BothFormatTest.cs: Fixed multiformat - tests. Removed Tag Count test. - - - svn path=/trunk/taglib-sharp/; revision=67413 - -commit 34d49ce11c840b8b90abcd73b424943b17e47baa -Author: Brian Nickel -Date: Fri Nov 3 18:21:47 2006 - - 2006-11-03 Brian Nickel - - * src/TagLib/ByteVector.cs: Use Boyer-Moore String Searching Algorithm - to speed things up a little. (Very little.) - - - svn path=/trunk/taglib-sharp/; revision=67335 - -commit 503227407e544c3d58c5ffb4afa88ad73f026fbe -Author: Aaron Bockover -Date: Mon Oct 30 20:17:59 2006 - - 2006-10-30 Aaron Bockover - - * src/TagLib/IntList.cs: - * src/TagLib/ByteVector.cs: - * src/TagLib/StringList.cs: - * src/TagLib/ByteVectorList.cs: Use generics, refactored code, massive - optimizations; all collections except ByteVector derives new ListBase - - * src/TagLib/ListBase.cs: New generic base collection - - * src/Makefile.am: Updated - - * tests/fixtures/PerformanceTest.cs: Updated - - - svn path=/trunk/taglib-sharp/; revision=67170 - -commit 342ba48b943df40d1fdbacb6f0e9388cb0d33e8e -Author: Brian Nickel -Date: Mon Oct 30 18:04:23 2006 - - 2006-10-20 Brian Nickel - - * src/TagLib/Mpc/Properties.cs: Fix property reading. - * src/TagLib/Mpc/File.cs: Fix total brokenness. - * src/TagLib/Mpeg/File.cs: Fix reading with no ID3v2 Tag. - * src/TagLib/Mpeg4/AppleTag.cs: Fix reading of ID3v1 Genres. - * tests/fixtures/TagLib.FormatTests/MpcFormatTest.cs: Fixed test. (I think.) - - - svn path=/trunk/taglib-sharp/; revision=67165 - -commit 63599534be2ed6e644bea1706c887c660e19a718 -Author: Aaron Bockover -Date: Sun Oct 29 14:33:01 2006 - - Updated - - svn path=/trunk/taglib-sharp/; revision=67109 - -commit 764ea91e974856e2c8661019df9ee7ed7c8695d2 -Author: Aaron Bockover -Date: Sun Oct 29 14:31:02 2006 - - 2006-10-29 Aaron Bockover - - * tests/: Added more tests (IntList, StringList), restructured layout - - - svn path=/trunk/taglib-sharp/; revision=67108 - -commit fb2068e7b1366a1bd18fb47ed2ec8535a5f79b6d -Author: Aaron Bockover -Date: Sun Oct 29 14:13:34 2006 - - Updated header - - svn path=/trunk/taglib-sharp/; revision=67104 - -commit 64de9fb6c4ad4d1603d6ae357e69e59a1e5c79d7 -Author: Aaron Bockover -Date: Sun Oct 29 10:52:30 2006 - - 2006-10-29 Aaron Bockover - - * src/TagLib/File.cs: Do not use reflection (Assembly.GetTypes) to find - file formats, instead use a static type table. Assembly.GetTypes leaks - types on the heap that will never be GCed (saves about 200KB of heap); - this means that if a new type is added, it must be entered in the static - type table for it to be available. Also this improves startup time. - - * src/TagLib/Asf/Properties.cs: Suppress unused variable warning - - - svn path=/trunk/taglib-sharp/; revision=67099 - -commit 63e440b62f8d11a35d2323de13c563793869828b -Author: Aaron Bockover -Date: Sun Oct 29 10:46:18 2006 - - 2006-10-29 Aaron Bockover - - * tests/samples: Organized into supported and unsupported formats, added - vector.bin as data for a checksum test of ByteVector - - * tests/Makefile.am: Set up NUnit console test driver, can be - run with 'make run-test' - - * tests/AssemblyInfo.cs: - * tests/ConsoleUi.cs: NUnit console test driver - - * tests/CodeTimer.cs: Timing utility - - * tests/fixtures/*FormatTest.cs: File format reading test fixtures - - * tests/fixtures/ByteVectorTests.cs: Extensive tests for ByteVector - - * tests/tests.mdp: MonoDevelop project for tests that allows running - NUnit tests with in the IDE for graphical results, recommended for - running tests as history is logged here (preferred over 'make run-test') - - * configure.ac: NUnit detection, optional - - * examples/tangerine-use-taglibsharp.patch: Removed, tangerine now - uses taglib-sharp instead of entagged-sharp - - * examples/Makefile.am: - * examples/ListSupportedMimeTypes.cs: New example - - * taglib-sharp.mds: Restored MonoDevelop solution - - - svn path=/trunk/taglib-sharp/; revision=67098 - -commit a387cfa83f5b0122408d9e77df076c5712d333b1 -Author: Brian Nickel -Date: Fri Oct 20 17:08:05 2006 - - 2006-10-20 Brian Nickel - - * src/TagLib/File.cs: Include the name of the file throwing the exception - in LocalFileAbstraction. - * src/TagLib/Mpeg/Header.cs: Make frame length logic match Lame (from - TagLib Devel List). - * examples/ReadFromUri.cs: Read multiple files. - - - svn path=/trunk/taglib-sharp/; revision=66851 - -commit 7c65b1e3359c80ae3e00f165a9457c7fa3725b42 -Author: Brian Nickel -Date: Thu Oct 12 14:45:23 2006 - - 2006-10-12 Brian Nickel - - * src/TagLib/Mpeg4/Boxes/IsoChunkLargeOffsetBox.cs: - * src/TagLib/Mpeg4/Boxes/IsoChunkOffsetBox.cs: - * src/TagLib/Mpeg4/AppleTag.cs: Fixed a bug where changing tag size would - devalidate offsets for data before the tag. - * examples/BatchSet.cs: - * examples/Makefile.am: Add a simple program to update tags on multiple - files. - - - svn path=/trunk/taglib-sharp/; revision=66637 - -commit 4968b78314405e4b878faf0a9d5b47a771714e48 -Author: Aaron Bockover -Date: Sun Oct 8 11:32:19 2006 - - Marked as static, whoops - - svn path=/trunk/taglib-sharp/; revision=66417 - -commit 026beee347579dc34c26e516125f96ff052e01f5 -Author: Aaron Bockover -Date: Sun Oct 8 11:31:27 2006 - - Marked as static, whoops - - svn path=/trunk/taglib-sharp/; revision=66416 - -commit 127da072a6b41f50bb93fdddbbab6ba20bd1c4fa -Author: Aaron Bockover -Date: Sun Oct 8 11:30:59 2006 - - Marked as static, whoops - - svn path=/trunk/taglib-sharp/; revision=66415 - -commit 7f2a0783af2cbec5e268214e61ee64c59734da68 -Author: Aaron Bockover -Date: Sun Oct 8 11:12:14 2006 - - 2006-10-08 Aaron Bockover - - * src/TagLib/SupportedMimeType.cs: Added extension support - - - svn path=/trunk/taglib-sharp/; revision=66413 - -commit 6b20faff04a2c0689dc5ac4c7b0b2c8bcc46f263 -Author: Aaron Bockover -Date: Sun Oct 8 10:54:08 2006 - - 2006-10-08 Aaron Bockover - - * src/TagLib/SupportedMimeType.cs: Added AllMimeTypes static enumerator - - - svn path=/trunk/taglib-sharp/; revision=66411 - -commit 987e2f6423e6299e3f99a7ba2385f7d7889faec5 -Author: Brian Nickel -Date: Mon Sep 25 14:38:15 2006 - - 2006-09-25 Brian Nickel - - * src/TagLib/CombinedTag.cs: Fixed a bug in CombinedTag.get_Pictures - * configure.ac: Don't break the gac on binary compatable versions. - - - svn path=/trunk/taglib-sharp/; revision=65890 - -commit 38c1059d8556f642d33c5f90726b6d062a4efdaf -Author: Brian Nickel -Date: Wed Sep 20 14:49:25 2006 - - 2006-09-20 Brian Nickel - - * src/TagLib/Mpc/File.cs: Added mime types. - * src/TagLib/Wavpack/File.cs: Added mime types. - - - svn path=/trunk/taglib-sharp/; revision=65739 - -commit 32df28a7eb4dd136b60ec5f1e0289eca88a9bde8 -Author: Brian Nickel -Date: Wed Sep 20 14:23:29 2006 - - 2006-09-20 Brian Nickel - - * src/TagLib/ByteVector.cs: Fixed big endian StringType.UTF16 - not to fail on big endian. (Confusing naming scheme by Microsoft.) - - - svn path=/trunk/taglib-sharp/; revision=65737 - -commit dfc58a4e6b53aca6e7b4c6b000f53703bf9d10e4 -Author: Brian Nickel -Date: Sun Sep 17 18:51:09 2006 - - 2006-09-17 Brian Nickel - - * src/TagLib/Asf/Tag.cs: Added generic picture support. - * docs/en/*: Updated docs. - - - svn path=/trunk/taglib-sharp/; revision=65556 - -commit 41b7226a730f12a5852ca0507ab4e7dcff1fcc23 -Author: Brian Nickel -Date: Fri Sep 15 04:15:08 2006 - - 2006-09-15 Brian Nickel - * src/TagLib/Picture.cs: - * src/TagLib/Tag.cs: - * src/TagLib/CombinedTag.cs: - * src/TagLib/File.cs: - * src/TagLib/Id3v2/Tag.cs: - * src/TagLib/Id3v2/Frames/AttachedPictureFrame.cs: - * src/TagLib/ByteVector.cs: - * src/TagLib/Mpeg4/Boxes/Box.cs: - * src/TagLib/Mpeg4/Boxes/IsoHandlerBox.cs: - * src/TagLib/Mpeg4/Boxes/AppleDataBox.cs: - * src/TagLib/Mpeg4/AppleTag.cs: - * src/TagLib/Ogg/XiphComment.cs: Add generic picture support to TagLib#. This - currently supports MP3 and M4A tags although support can and will be added - for other tag types in the future. - * src/Makefile.am: - * taglib-sharp.mds: - * taglib-sharp.csproj: - * examples/ReadFromUri.cs: - * examples/Makefile.am: - * examples/SetPictures.mdp: - * examples/SetPictures.cs: - * examples/ReadFromUri.mdp: New examples from Aaron Bockover. - * src/TagLib/Mpeg4/Boxes/IsoChunkLargeOffsetBox.cs: - * src/TagLib/Mpeg4/Boxes/IsoChunkOffsetBox.cs: Eliminate a nasty bug where - changes to 'mdat' offsets, ie. any file size change, broke MP4 files. - - svn path=/trunk/taglib-sharp/; revision=65440 - -commit 958b10a1f238c8dc931f236a708178d5eb9b3e34 -Author: Brian Nickel -Date: Mon Sep 11 17:45:30 2006 - - 2006-09-11 Brian Nickel - - * src/TagLib/Mpeg4/File.cs: Added "audio/mp4" to types. - - - svn path=/trunk/taglib-sharp/; revision=65256 - -commit eb2bb5eb1d9a79c3e8939509b854bac2fb9ebc9e -Author: Aaron Bockover -Date: Fri Sep 1 22:27:10 2006 - - 2006-09-01 Aaron Bockover - - * examples/covers/: Added sample cover art files - - - svn path=/trunk/taglib-sharp/; revision=64751 - -commit f4b2d423ddd4a78e991606b7d557003fb9df7fa7 -Author: Aaron Bockover -Date: Fri Sep 1 22:25:24 2006 - - 2006-09-01 Aaron Bockover - - * tests/: Added test sample audio files - - - svn path=/trunk/taglib-sharp/; revision=64750 - -commit f61e41ec8ef34c86017b2a51acdde203769c3cc3 -Author: Aaron Bockover -Date: Fri Sep 1 12:56:56 2006 - - 2006-09-01 Aaron Bockover - - * configure.ac: Added ASM_VERSION; added DISTCHECK_CONFIGURE_FLAGS so - distcheck target works properly as user (--disable-docs is passed on - distcheck now) - - * src/AssemblyInfo.cs.in: Use ASM_VERSION instead of VERSION to get - build revisions in version string - - * examples/Makefile.am: Added EXTRA_DIST, fixed distcheck build bug - - - svn path=/trunk/taglib-sharp/; revision=64730 - -commit e1eba14cc33103bbe9e7a2710355b3a02ab3b3a7 -Author: Brian Nickel -Date: Thu Aug 31 17:22:26 2006 - - Corrected an invalid frame conversion and attempting a better method for - populating ByteVectors. - - - svn path=/trunk/taglib-sharp/; revision=64669 - -commit 9126fb7e24dabaabdf2b86bdb8a8d0ba50b75594 -Author: Brian Nickel -Date: Mon Aug 28 21:48:25 2006 - - Fixed up the reading of WM/PartOfSet to avoid crashes. - - svn path=/trunk/taglib-sharp/; revision=64505 - -commit cc7f29b882471f8c31bb430af7b95f61b28cd2c9 -Author: Aaron Bockover -Date: Sun Aug 27 21:12:07 2006 - - 2006-08-27 Aaron Bockover - - * src/TagLib/ReadOnlyException.cs: New exception - - * src/TagLib/File.cs: - * src/TagLib/Mpc/File.cs: - * src/TagLib/Mpeg/File.cs: - * src/TagLib/WavPack/File.cs: - * src/TagLib/Flac/File.cs: - * src/TagLib/Asf/File.cs: - * src/TagLib/Mpeg4/AppleTag.cs: - * src/TagLib/Mpeg4/File.cs: - * src/TagLib/Ogg/File.cs: - * src/TagLib/Ogg/Vorbis/File.cs: - * src/TagLib/Ogg/Flac/File.cs: Save is now void, throws exceptions - when a problem has arisen instead of eventually returning false, masking - the source of the problem - - * taglib-sharp.csproj: - * src/Makefile.am: Updated - - - svn path=/trunk/taglib-sharp/; revision=64456 - -commit 42bdfaa70eeca125a269416619dd8d6f7ebe0b92 -Author: Aaron Bockover -Date: Fri Aug 25 19:33:46 2006 - - 2006-08-25 Aaron Bockover - - * examples/Makefile.am: Added Makefile.am, was missing from forge - repository - - - svn path=/trunk/taglib-sharp/; revision=64396 - -commit ed83b1cacfd4339faaeb9bba0a7052695708d38b -Author: Aaron Bockover -Date: Fri Aug 25 19:25:52 2006 - - Initial import of taglib-sharp; moved from forge - - svn path=/trunk/taglib-sharp/; revision=64394 diff --git a/taglib-sharp/Makefile.am b/taglib-sharp/Makefile.am deleted file mode 100644 index e1d95a4b..00000000 --- a/taglib-sharp/Makefile.am +++ /dev/null @@ -1,76 +0,0 @@ -SUBDIRS = \ - src \ - examples \ - docs - -if !IN_DIST -SUBDIRS += tests -endif - -DIST_SUBDIRS = \ - src \ - examples \ - docs - -pkgconfig_in_files = taglib-sharp.pc.in -pkgconfigdir = $(datadir)/pkgconfig -pkgconfig_DATA = $(pkgconfig_in_files:.pc.in=.pc) - -EXTRA_DIST = \ - $(pkgconfig_in_files) \ - taglib-sharp.snk \ - taglib-sharp.sln - -DISTCLEANFILES = taglib-sharp.pc - -MAINTAINERCLEANFILES = \ - compile \ - INSTALL \ - config.h.in \ - aclocal.m4 \ - ltmain.sh \ - Makefile.in \ - depcomp \ - missing \ - install-sh \ - configure \ - config.sub \ - config.guess \ - mkinstalldirs - -if !IN_DIST -test: - cd tests; make test; cd ..; -endif - -distwin: all - mkdir -p $(srcdir)/$(WINDIR) - cp $(srcdir)/NEWS $(srcdir)/$(WINDIR)/NEWS.txt - cp $(srcdir)/ChangeLog $(srcdir)/$(WINDIR)/ChangeLog.txt - cp $(srcdir)/COPYING $(srcdir)/$(WINDIR)/COPYING.txt - cp $(srcdir)/README $(srcdir)/$(WINDIR)/README.txt - cp $(srcdir)/AUTHORS $(srcdir)/$(WINDIR)/AUTHORS.txt - if [ -e $(srcdir)/windows-files ]; \ - then cp -r $(srcdir)/windows-files/* $(srcdir)/$(WINDIR); \ - fi - cd $(srcdir)/src && make distwin - zip -9 -r $(srcdir)/$(WINDIR).zip $(srcdir)/$(WINDIR) - rm -rf $(srcdir)/$(WINDIR) - -UPLOAD_HOST = "$$BANSHEE_USER@banshee.fm" -UPLOAD_PATH = "web/download.banshee.fm/taglib-sharp" -push-release: distcheck distwin - [[ -z "$$BANSHEE_USER" ]] && { echo "Set BANSHEE_USER"; exit 1; } || true - [[ -z "$$MONO_USER" ]] && { echo "Set MONO_USER"; exit 1; } || true - mkdir -p release - mv $(WINDIR).zip release - mv $(PACKAGE)-$(VERSION).tar.* release - cp ChangeLog release/$(PACKAGE)-$(VERSION).changes - cp NEWS release/$(PACKAGE)-$(VERSION).news - pushd release; sha256sum * > $(PACKAGE)-$(VERSION).sha256sum; popd - scp -r release $(UPLOAD_HOST):$(UPLOAD_PATH)/$(VERSION) - rm -rf release - ssh $(UPLOAD_HOST) rm -f $(UPLOAD_PATH)/LATEST-IS\* - ssh $(UPLOAD_HOST) touch $(UPLOAD_PATH)/LATEST-IS-$(VERSION) - git tag -a -m "Tag for taglib-sharp release ${VERSION}" taglib-sharp-${VERSION} || bail "Could not create tag" - git push origin taglib-sharp-${VERSION} || bail "Failed to push tag to remote" diff --git a/taglib-sharp/NEWS b/taglib-sharp/NEWS deleted file mode 100644 index a008b5fe..00000000 --- a/taglib-sharp/NEWS +++ /dev/null @@ -1,333 +0,0 @@ -Version 2.0.4.0 -April 13, 2011 - -Fixes and Features in this release include: - * Support for Photo metadata - + read/write for EXIF, XMP, PNG, JPEG, TIFF - + read support for many RAW formats - + see examples/ParsePhoto.cs - * Support for Matroska metadata reading (eg WebM and .mkv) - * Fix File.ReadBlock for slow connections (bgo#639817) - -Contributors to this release: - Alexander Kojevnikov, Colin Turner, Gabriel Burt, Jeroen Asselman, - Julien Moutte, Marek Habersack, Mike Gemünde, Paul Lange, - Ruben Vermeersch, Stephane Delcroix, Tim Howard - --------------------------------------------------------------------------------- - -Version 2.0.3.7 -March 20, 2010 - -TagLib# bugs are now tracked at http://bugzilla.gnome.org. - -Fixes and Features in this release include: - * Solution/projects migrated to VS format - * Fix ID3v2 unsyncing (bgo#593138) - * Fix ID3v2.3 exetended header size calculation (bgo#604488) - * Make TagLib.File IDisposable (closes any open streams) - * Don't throw an exception if RVA2 data is partially incorrect - * Fall back to nunit-console is nunit-console2 not found (bgo#593673) - * Add build check for `al` tool (bgo#575303) - -Contributors to this release: - Alexander Kojevnikov, Andrés G. Aragoneses, Bertrand Lorentz, - Eamon Nerbonne, Ruben Vermeersch - --------------------------------------------------------------------------------- - -Version 2.0.3.6 -February 24, 2010 - -TagLib# bugs are now tracked at http://bugzilla.gnome.org. - -Fixes and Features in this release include: - * Reverse small API break introduced in 2.0.3.5 - -Contributors to this release: - Gabriel Burt - --------------------------------------------------------------------------------- - -Version 2.0.3.5 -February 23, 2010 - -TagLib# bugs are now tracked at http://bugzilla.gnome.org. - -Fixes and Features in this release include: - * Add BitsPerSample property (bgo#610585) - * Support COMPILATION in ogg (bgo#586336) - * Fix removing some/all tag-types (bgo#574653) - -Contributors to this release: - Alexander Kojevnikov, Helmut Wahrmann - --------------------------------------------------------------------------------- - -Version 2.0.3.4 -January 26, 2010 - -TagLib# bugs are now tracked at http://bugzilla.gnome.org. - -Get releases from http://download.banshee-project.org/taglib-sharp/ - -Fixes and Features in this release include: - * Fix IndexOutOfRangeException (bgo#607376) - * Fix issue with converting/parsing year (bgo#606283) - * Support the 'alis' handler code/track type (bgo#584193) - --------------------------------------------------------------------------------- - -Version 2.0.3.3 -September 30, 2009 - -TagLib# bugs are now tracked at http://bugzilla.gnome.org. - -Get releases from http://download.banshee-project.org/taglib-sharp/ - -Fixes and Features in this release include: - * Be more robust with tags with NULL bytes in the middle (bgo#558123) - * Support AIFF file format (bgo#579261) - * Support ADTS AAC files (bgo#580553) - * Support for m2v files (bgo#574411) - * Support for Sort* values in Ape tags (bgo#571421) - * Add new properties: MusicBrainz, ArtistId, ReleaseId, ReleaseArtistId, - TrackId, DiscId, ReleaseStatus, ReleaseType, ReleaseCountry, MusicIpId, - and AmazonId (bgo#563170) - * Add fallback options for album artist getter (bgo#574652) - * Fixed bug with Ape.Tag's Pictures setter (bgo#575943) - * Fix crashing when parsing some comment frames (bgo#582735) - * Fixed CopyTo method (bgo#572382) - * Fixed typo in Ogg DiscNumber setter that wrote TrackCount - to the DISCTOTAL field (bgo#572382) - * Fixed NRE when calling GetTag on FLAC file (bgo#572380) - * Build improvements - * API documentation fixes - -Contributors to this release: - Alexander Kojevnikov, Andy Beal, Bernd Niedergesaess, Bertrand Lorentz, - Félix Velasco, Gabriel Burt, Gregory S. Chudov, Helmut Wahrmann, - John Millikin, Patrick Dehne - --------------------------------------------------------------------------------- - -Version 2.0.3.2 -February 16, 2009 - -TagLib# bugs are now tracked at http://bugzilla.gnome.org. - -Get releases from http://download.banshee-project.org/taglib-sharp/ - -Contributors to this release: - Aaron Bockover, Andy Beal, Bernd Niedergesaess, - Bertrand Lorentz, Gabriel Burt, John Millikin - -Fixes in this release include: - * Fix infinite loops when reading/writing video files - * Fix parsing ID3v2 with Data Length Indicator set - * Fix install/build issues with the docs - * Fix casing of APE tags - * Add support for *Sort values for artist, album, etc - * Install .pc file to datadir since we're noarch - * New unit tests for AVI files - * Recognize mp1/mp2 extensions and mimetypes - --------------------------------------------------------------------------------- - -Version 2.0.3.1 -January 20, 2009 - -TagLib# bugs are now tracked at http://bugzilla.gnome.org. - -Contributors to this release: - Andy Beal, Gabriel Burt, Jeffrey Stedfast, John Millikin - -Fixes in this release include: - * Add support for artwork in ogg files - * Recognize .oga, ogv, .m4b, and some other mimetypes - * Add support for Mpeg4 dash atoms - * Fix bug with parsing ID3v2 w/ the tag-wide Unsync flag set - --------------------------------------------------------------------------------- - -Version 2.0.3.0 -January 10, 2008 - -This release of TagLib# features many bug fixes and a complete rework of the -documentation to better serve the Windows community. Fixes include: - * Make Asf.Tag enumerable. - * Don't duplicate genres stored in "(0)Blues" format. - * Save Id3v2.RelativeVolumeFrame as XRVA and XRV in ID3v2.3 and ID3v2.2. - * Insert new comments before other comment frames in Id3v2.Tag - * Use CultureInfo.CurrentCulture to get the correct comment language in - Id3v2.Tag. - * Skip iTunes comments in Id3v2.CommentsFrame. - * Save multi-string values as a single box with a semicolon separator - in Mpeg4.AppleTag to improve compatability with iTunes. - * Make the Id3v2.Tag.DefaultVersion = 3 because most commercial programs - have some crippling ID3v2.4 problem. - * Added Id3v2.Tag.IsCompilation - * Don't crash on misformatted field in XiphComment. - * Recognize the .divx extension as a RIFF file. - * Use one byte rather than four to store compilation in Mpeg4.AppleTag. - * Don't check the image format flags anymore in Mpeg4.AppleTag, just use - the file contents. - * Don't crash in NonContainer.EndTag when the file is less than 128 - bytes. - * Allow saving of multi-page comment packets in Ogg through massive - rewrite of pagination. - * Allow correct reading of multi-page comment packets in Ogg.Bitstream. - * Use try/finally on all load and save operations to prevent files from - being left open. - * Produce correct output on empty ID3v1 tag. - * Remove broken Id3v1.Tag.IsEmpty. - * src/TagLib/Riff/List.cs: Make sure fields are cleared when SetValue - * Clear value when null is passed in Riff.List.SetValue. - * Make Riff.DivXTag.Clear clear the title. - * Read genres correctly in Riff.MovieIdTag. - * Complete codec descriptions for RIFF and ASF files. - * Fix reading of UTF16-BE Id3v2.SynchronizedLyricsFrames. - * Throw NotImplementedException for private frames in ID3v2.2. - * Fix writing Id3v2.GeneralEncapulatedObjectFrame in UTF16. - * Added support for multiple non-indexed artists in ID3v2.3 - * Correctly parse nil separated UTF-16BE strings. - * Allow parsing of variable length years in Ape.Tag. - * Fix writing of Mpeg4 files by correctly reading in values to - Mpeg4.FileParser.UtdaTree. - * Allow parsing of all year lengths in Mpeg4.AppleTag and correctly - clear zeroed values. - * Use Semicolons rather than commas in Tag.Joined* to reflect the - behavior of Windows Media Player. - * Remove "WM/GenreID" from Asf.Tag when storing a new genre. - * Switch ordering of check in looking for ASF content descriptors to - emphasize name rather than order. - * Don't throw exception on zero byte strings in ByteVector.ToString (). - * Use ContentDescriptionObject.Copyright in Asf.Tag. - * Switch order of play_duration and send_duration in Asf.HeaderObject. - This is backwards from the specification but conforms to actual files. - * Don't count preroll in ASF durations. - * Don't double-count position when counting frames. - * Ensure Id3v2.FrameHeader is converting headers from versions 2 and 3. - * Always set the encoding to default in Id3v2.Tag when writing a frame - to prevent misencoding. - * Stopped ArgumentOutOfRangeExceptions from occuring when corrupt - RelativeVolumeframe is encountered. - * Fixed rendering of Ape.Item on non-latin characters. - * Added new constructors to Picture to obsolete CreateFromFile, - CreateFromPath. - * Changed Asf.Tag to write large pictures to the ASF Metadata Library - Object rather than ignoring them. - * Changed the way Mpeg.AudioHeader checked for Xing identifier to - prevent first change exception if none was found. - * Use StringBuilder instead of string addition. - * Don't crash if Mpeg4.IsoHandlerBox does not contain a nil delimiter. - * Limit scanning in Mpeg.AudioFile to 4096 bytes of audio stream to - prevent reading whole file if corrupt. - * Replace protected CombinedTag constructor with public one to allow - compiling in Orcas. - * Include MonoDevelop files in distributed package. - * Correctly parse beats per minute when they contain floating point - numbers. - -Added features: - * Added support for Fraunhofer VBRI header. (Authored by hwahrmann.) - * Obsoleted Tag.Duplicate in favor of Tag.CopyTo which can be extended - to provide better support for copying between matching tag types. - * Added ByteVector.UseBrokenLatin1Behavior that when true reads tags - from the system encoding instead of Latin1. - * Added support for reading APE files. (Authored by hwahrmann.) - * Added generic Id3v2.GetFrames() to reduce casting. - * Added support for one of each type of cover image in Ape.Tag - * Added recognition of BMP and GIF images in Picture. - * Added Id3v2.PopularimeterFrame capable of handling ratings from - Windows Media Player. - * Added Id3v2.Tag.UseNumericGenres which can be disabled to prevent - genres from being written as indices. - * Added File.InvariantStartPosition and File.InvariantEndPosition to - mark the edges of the media portion of the file. - -Special thanks to those who contributed since the last release: - AgentS, codi, craig, Dakuja, DavidT@Imerge, evgeni, hwahrmann, jms, - jmurphy, jocker, jonx, jposen, kajic, kurros, nokturnal, oliphant, - renzska, sambeckett, sukhjinder, and anyone else who I may have - forgotten. - --------------------------------------------------------------------------------- - -Version 2.0.2.0 -July 3, 2007 - -This is the second bug fix release for TagLib#. Fixes include: - * Read AttachedPictureFrame correctly when UTF-16 encoded. - * Stop infinite recursion with rare Xing header. - * Add "VBR" to the MPEG Audio description if a Xing header is present. - * Update unit tests for changes in 2.0.1. - * Fix Artists (added in 2.0.1) to point to Performers. Was pointing - nowhere. - * Make ByteVector.Find return correctly if (data.Count == pattern.Count - + offset). - * Set to this.data instead of data in PrivateFrame constructor. - -Outstanding bugs: - * MPEG-4 tags do not show up in Nokia N95 Phone. - * Large pictures should be stored in the ASF HeaderExtensionObject. - -Outstanding feature requests: - * Add slow read support to get correct information from VBR MP3's - lacking Xing headers. - * Add TagLib.Tag.Key - * Add TagLib.Id3v2.PopularimeterFrame - * Support ID3v2 chapters. - * Return invariant data sections for a file. - -Special thanks to those who contributed in some way to the project over the past -year: - Aaron Bockover, Alan, Alexander Hixon, Andrés Gómez Aragoneses, - Clint Banzhaf, D Bera, David Wu, Da_FileServer, Dennis Cranston, - Fabrice Deshayes aka Xtream, Gabriel Rosenhouse, gozza11, Gustavo Rubio, - Herman Mahone, HugoPalma, Ilya Konstantinov, Ion Todirel, jc BAUDHUIN, - jmurphy, JustinC, lindea, Michael Monreal, maciej, mikec, mtampe, - Patrick Laplante, pipes, renzska, sambeckett, Sebastian Dröge, - Timm Preetz, wilson, and anyone else who I may have forgotten. - --------------------------------------------------------------------------------- - -Version 2.0.1 -June 24, 2007 - -This is the first bug fix release for TagLib#. Fixes include: - * Use Picard Tag mapping for all tags to improve constistency. - * Add JoinedAlbumArtists and FirstAlbumArtist for clarity. - * Add Artist pointing to Performers with an ObsoleteAttribute. - * Handle ID3v2 comments ending with text delimiters better. - * Clear ID3v2 pictures when Pictures is set to null. - * Don't try storing pictures larger than 64K in ASF files. - * Don't throw an exception when saving MPEG-4 files without UTDA boxes. - * Fix the clearing of MPEG-4 boxes. - * Use Box.DataSize instead of Header.DataSize when calculating the - MPEG-4 padding. - * Recognize WMA Lossless in the codec description. - -Outstanding bugs: - * MPEG-4 tags do not show up in Nokia N95 Phone. - -Special thanks to those who contributed in some way to the project over the past -year: - Aaron Bockover, Alan, Alexander Hixon, Andrés Gómez Aragoneses, - Clint Banzhaf, D Bera, David Wu, Da_FileServer, Dennis Cranston, - Fabrice Deshayes aka Xtream, Gabriel Rosenhouse, gozza11, Gustavo Rubio, - Herman Mahone, HugoPalma, Ilya Konstantinov, Ion Todirel, jc BAUDHUIN, - jmurphy, JustinC, lindea, Michael Monreal, maciej, mikec, mtampe, - Patrick Laplante, renzska, Sebastian Dröge, Timm Preetz, wilson, and - anyone else who I may have forgotten. - --------------------------------------------------------------------------------- - -Version 2.0.0 -June 11, 2007 - -This is the first stable release of TagLib#. TagLib# is a .NET 2.0 library for -reading and writing tagging data from audio and video files. In addition it -supports the reading of audio and video properties and can be used for media -validation. Special thanks to Aaron Bockover and Da_FileServer their help, and -everyone who has submitted a bug report or feature request. diff --git a/taglib-sharp/README b/taglib-sharp/README deleted file mode 100644 index a82af0ce..00000000 --- a/taglib-sharp/README +++ /dev/null @@ -1,29 +0,0 @@ -TagLib# (aka taglib-sharp) is a library for reading and writing -metadata in media files, including video, audio, and photo formats. - -It is API stable, with only API additions (not changes or removals) -occuring in the 2.0 series. - - * Bugs: http://bugzilla.gnome.org/browse.cgi?product=taglib-sharp - * Tarballs: http://download.banshee.fm/taglib-sharp/ - * IRC: Several TagLib# developers are often in #banshee on irc.gnome.org - * Git: http://github.com/mono/taglib-sharp - git://github.com/mono/taglib-sharp.git - -TagLib# is free/open source software, released under the LGPL. -We welcome contributions! Please try to match our coding style, -and include unit tests with any patches. Patches can be submitted -by filing a bug and attaching the diff to it. - -To Build From Git: -git clone git://github.com/mono/taglib-sharp.git -cd taglib-sharp -./autogen.sh && make - -To Build From Tarball: -./configure && make - -You can also build from MonoDevelop or Visual Studio using taglib-sharp.sln - -To Test: -make test diff --git a/taglib-sharp/autogen.sh b/taglib-sharp/autogen.sh deleted file mode 100644 index bce3a516..00000000 --- a/taglib-sharp/autogen.sh +++ /dev/null @@ -1,136 +0,0 @@ -#!/bin/sh -# Run this to generate all the initial makefiles, etc. -# Ripped off from GNOME macros version - -DIE=0 - -srcdir=`dirname $0` -test -z "$srcdir" && srcdir=. - -if [ -n "$MONO_PATH" ]; then - # from -> /mono/lib:/another/mono/lib - # to -> /mono /another/mono - for i in `echo ${MONO_PATH} | tr ":" " "`; do - i=`dirname ${i}` - if [ -n "{i}" -a -d "${i}/share/aclocal" ]; then - ACLOCAL_FLAGS="-I ${i}/share/aclocal $ACLOCAL_FLAGS" - fi - if [ -n "{i}" -a -d "${i}/bin" ]; then - PATH="${i}/bin:$PATH" - fi - done - export PATH -fi - -(autoconf --version) < /dev/null > /dev/null 2>&1 || { - echo - echo "**Error**: You must have \`autoconf' installed to compile Mono." - echo "Download the appropriate package for your distribution," - echo "or get the source tarball at ftp://ftp.gnu.org/pub/gnu/" - DIE=1 -} - -if [ -z "$LIBTOOL" ]; then - LIBTOOL=`which glibtool 2>/dev/null` - if [ ! -x "$LIBTOOL" ]; then - LIBTOOL=`which libtool` - fi -fi - -(grep "^AM_PROG_LIBTOOL" $srcdir/configure.ac >/dev/null) && { - ($LIBTOOL --version) < /dev/null > /dev/null 2>&1 || { - echo - echo "**Error**: You must have \`libtool' installed to compile Mono." - echo "Get ftp://ftp.gnu.org/pub/gnu/libtool-1.2d.tar.gz" - echo "(or a newer version if it is available)" - DIE=1 - } -} - -grep "^AM_GNU_GETTEXT" $srcdir/configure.ac >/dev/null && { - grep "sed.*POTFILES" $srcdir/configure.ac >/dev/null || \ - (gettext --version) < /dev/null > /dev/null 2>&1 || { - echo - echo "**Error**: You must have \`gettext' installed to compile Mono." - echo "Get ftp://alpha.gnu.org/gnu/gettext-0.10.35.tar.gz" - echo "(or a newer version if it is available)" - DIE=1 - } -} - -(automake --version) < /dev/null > /dev/null 2>&1 || { - echo - echo "**Error**: You must have \`automake' installed to compile Mono." - echo "Get ftp://ftp.gnu.org/pub/gnu/automake-1.3.tar.gz" - echo "(or a newer version if it is available)" - DIE=1 - NO_AUTOMAKE=yes -} - - -# if no automake, don't bother testing for aclocal -test -n "$NO_AUTOMAKE" || (aclocal --version) < /dev/null > /dev/null 2>&1 || { - echo - echo "**Error**: Missing \`aclocal'. The version of \`automake'" - echo "installed doesn't appear recent enough." - echo "Get ftp://ftp.gnu.org/pub/gnu/automake-1.3.tar.gz" - echo "(or a newer version if it is available)" - DIE=1 -} - -if test "$DIE" -eq 1; then - exit 1 -fi - -if test -z "$*"; then - echo "**Warning**: I am going to run \`configure' with no arguments." - echo "If you wish to pass any to it, please specify them on the" - echo \`$0\'" command line." - echo -fi - -case $CC in -xlc ) - am_opt=--include-deps;; -esac - - -if grep "^AM_PROG_LIBTOOL" configure.ac >/dev/null; then - if test -z "$NO_LIBTOOLIZE" ; then - echo "Running libtoolize..." - ${LIBTOOL}ize --force --copy - fi -fi - -echo "Running aclocal $ACLOCAL_FLAGS ..." -aclocal $ACLOCAL_FLAGS || { - echo - echo "**Error**: aclocal failed. This may mean that you have not" - echo "installed all of the packages you need, or you may need to" - echo "set ACLOCAL_FLAGS to include \"-I \$prefix/share/aclocal\"" - echo "for the prefix where you installed the packages whose" - echo "macros were not found" - exit 1 -} - -if grep "^AM_CONFIG_HEADER" configure.ac >/dev/null; then - echo "Running autoheader..." - autoheader || { echo "**Error**: autoheader failed."; exit 1; } -fi - -echo "Running automake --gnu $am_opt ..." -automake --add-missing --gnu $am_opt || - { echo "**Error**: automake failed."; exit 1; } -echo "Running autoconf ..." -autoconf || { echo "**Error**: autoconf failed."; exit 1; } - - -conf_flags="--enable-maintainer-mode --enable-compile-warnings" #--enable-iso-c - -if test x$NOCONFIGURE = x; then - echo Running $srcdir/configure $conf_flags "$@" ... - $srcdir/configure $conf_flags "$@" \ - && echo Now type \`make\' to compile $PKG_NAME || exit 1 -else - echo Skipping configure process. -fi diff --git a/taglib-sharp/configure.ac b/taglib-sharp/configure.ac deleted file mode 100644 index 4114783e..00000000 --- a/taglib-sharp/configure.ac +++ /dev/null @@ -1,153 +0,0 @@ -AC_INIT([taglib-sharp], [2.0.4.0]) -AM_INIT_AUTOMAKE([1.9 dist-bzip2 tar-ustar]) -AM_MAINTAINER_MODE - -ASSEMBLY_NAME="$PACKAGE" -ASSEMBLY_VERSION="$VERSION" - -POLICY_2_0_VERSIONS="2.0.0.0-$ASSEMBLY_VERSION" -AC_SUBST(POLICY_2_0_VERSIONS) - -AC_SUBST(VERSION) -AC_SUBST(ASSEMBLY_VERSION) -AC_SUBST(ASSEMBLY_NAME) - -AC_PROG_INSTALL -AC_PROG_GREP - -MONODOC_REQUIRED=1.1.9 - -WINDIR="$ASSEMBLY_NAME-$VERSION-windows" -AC_SUBST(WINDIR) - -DISTCHECK_CONFIGURE_FLAGS="--disable-docs" -AC_SUBST(DISTCHECK_CONFIGURE_FLAGS) - -dnl Check for Mono -AC_PATH_PROG(MCS, gmcs) -if test x$MCS = x; then - AC_MSG_ERROR(You need mcs) -fi - -AC_PATH_PROG(MONO, mono) -if test x$MONO = x; then - AC_MSG_ERROR(You need mono) -fi - -MCS_FLAGS="-codepage:utf8 -debug" -MONO_FLAGS= - -if test $USE_MAINTAINER_MODE = yes; then - MONO_FLAGS="$MONO_FLAGS --debug" -fi - -AC_SUBST(MCS_FLAGS) -AC_SUBST(MONO_FLAGS) - -AC_PATH_PROG(AL, al) -if test "x$AL" = "x"; then - AC_MSG_ERROR([No al tool found. You need to install mono]) -fi - -dnl GAC -AC_PATH_PROG(GACUTIL, gacutil) -if test x$GACUTIL = x; then - AC_MSG_ERROR(You need gacutil) -fi - -GACUTIL_FLAGS='/package $(ASSEMBLY_NAME) /gacdir $(prefix)/lib /root $(DESTDIR)$(prefix)/lib' -AC_SUBST(GACUTIL_FLAGS) -GACUTIL_POLICY_FLAGS='/gacdir $(prefix)/lib /root $(DESTDIR)$(prefix)/lib' -AC_SUBST(GACUTIL_POLICY_FLAGS) - -AC_ARG_ENABLE(docs, AC_HELP_STRING([--disable-docs], [Do not build documentation]), with_docs=no, with_docs=yes) - -PKG_PROG_PKG_CONFIG - -dnl Monodoc -if test "x$with_docs" = "xyes"; then - AC_PATH_PROG(MONODOCER, monodocer, no) - if test "x$MONODOCER" = "xno"; then - AC_MSG_ERROR([You need to install monodoc, or pass --disable-docs to configure to skip documentation installation]) - fi - - AC_PATH_PROG(MDASSEMBLER, mdassembler, no) - if test "x$MDASSEMBLER" = "xno"; then - AC_MSG_ERROR([You need to install mdassembler, or pass --disable-docs to configure to skip documentation installation]) - fi - - DOCDIR=`$PKG_CONFIG monodoc --variable=sourcesdir` - AC_SUBST(DOCDIR) - AM_CONDITIONAL(BUILD_DOCS, true) -else - AC_MSG_NOTICE([not building Banshee API documentation]) - AM_CONDITIONAL(BUILD_DOCS, false) -fi - -# checking for ICSharpCode.SharpZipLib.dll -AC_MSG_CHECKING([Mono GAC for ICSharpCode.SharpZipLib.dll]) -if $GACUTIL -l | $GREP -q ICSharpCode.SharpZipLib; \ - then \ - AC_MSG_RESULT([found]) - AM_CONDITIONAL(HAVE_SHARPZIPLIB, true) -else - AC_MSG_RESULT([not found]) - AM_CONDITIONAL(HAVE_SHARPZIPLIB, false) -fi - - -PKG_CHECK_MODULES(GNOME_SHARP, gnome-sharp-2.0, have_gnome_sharp=yes, have_gnome_sharp=no) -if test "x$have_gnome_sharp" = "xyes"; then - AC_SUBST(GNOME_SHARP_LIBS) - AM_CONDITIONAL(HAVE_GNOME_SHARP, true) -else - AM_CONDITIONAL(HAVE_GNOME_SHARP, false) -fi - -PKG_CHECK_MODULES(EXIV2, exiv2, have_exiv2=yes, have_exiv2=no) -if test "x$have_exiv2" = "xyes"; then - AC_SUBST(EXIV2_LIBS) - AM_CONDITIONAL(HAVE_EXIV2, true) -else - AM_CONDITIONAL(HAVE_EXIV2, false) -fi - -PKG_CHECK_MODULES(MONO_NUNIT, mono-nunit >= 1.0, do_tests="yes", do_tests="no") AC_SUBST(MONO_NUNIT_LIBS) -AM_CONDITIONAL(ENABLE_TESTS, test "x$do_tests" = "xyes") -if test "x$do_tests" = "xno"; then - AC_MSG_WARN([Could not find mono-nunit: tests will not be available.]) -else - AC_PATH_PROG(NUNIT_CMD, nunit-console2, nunit-console) - AC_SUBST(NUNIT_CMD) -fi - -AC_ARG_ENABLE(raw-tests, AC_HELP_STRING([--enable-raw-tests], [Enable RAW image files NUnit tests]), - enable_raw_tests=$enableval, enable_raw_tests="no") -if test "x$enable_raw_tests" = "xno"; then - AC_MSG_WARN([RAW image file tests disabled.]) - AM_CONDITIONAL(ENABLE_RAW_TESTS, false) -else - AM_CONDITIONAL(ENABLE_RAW_TESTS, true) -fi - -AC_CONFIG_FILES([ -Makefile -taglib-sharp.pc -src/Makefile -src/AssemblyInfo.cs -src/policy.2.0.taglib-sharp.config -examples/Makefile -docs/Makefile -docs/Package.en.xml -]) - -# Test suite is not shipped, only builds from git. -if test -d tests; then - AC_CONFIG_FILES([tests/Makefile]) - AM_CONDITIONAL(IN_DIST, false) -else - AM_CONDITIONAL(IN_DIST, true) -fi -AC_OUTPUT - -echo "TagLib# ($ASSEMBLY_NAME-$ASSEMBLY_VERSION) is ready to be compiled." diff --git a/taglib-sharp/docs/Makefile.am b/taglib-sharp/docs/Makefile.am deleted file mode 100644 index 67cdbb59..00000000 --- a/taglib-sharp/docs/Makefile.am +++ /dev/null @@ -1,66 +0,0 @@ -DOC_UPDATER = @MONODOCER@ -delete -pretty -DOC_ASSEMBLER = @MDASSEMBLER@ --out taglib-sharp-docs --ecma - -ASSEMBLY = $(top_builddir)/src/$(ASSEMBLY_NAME).dll -SLASHDOC = $(ASSEMBLY).xml - -if BUILD_DOCS -all: XmlInjector.exe - -XmlInjector.exe: XmlInjector.cs - $(MCS) -out:$@ -r:System.Xml $< - -monodocdir = $(DOCDIR) -monodoc_DATA = \ - taglib-sharp-docs.zip \ - taglib-sharp-docs.tree \ - taglib-sharp-docs.source - -en/index.xml: $(ASSEMBLY) $(SLASHDOC) XmlInjector.exe Package.en.xml -# monodocer will create duplicate tags if run multiple times. Delete the whole -# directory and start over. - if [ -d en ]; then \ - rm -rf en; \ - fi - $(DOC_UPDATER) -assembly:$(ASSEMBLY) -importslashdoc:$(SLASHDOC) -path:en > /dev/null - $(MONO) XmlInjector.exe Package.en.xml InsertMissingValues - -update-html: en - if [ -d taglib-sharp-web-docs ]; then \ - rm -rf taglib-sharp-web-docs; \ - fi; \ - mkdir taglib-sharp-web-docs; \ - monodocs2html -o taglib-sharp-web-docs en; - -taglib-sharp-docs.tree: taglib-sharp-docs.zip - -taglib-sharp-docs.zip: en/index.xml - $(DOC_ASSEMBLER) en - -install-data-hook: XmlInjector.exe Package.en.xml - $(MONO) XmlInjector.exe Package.en.xml InjectMenuItem - -uninstall-hook: XmlInjector.exe Package.en.xml - $(MONO) XmlInjector.exe Package.en.xml RemoveMenuItem - -clean-local: - if [ -d en ]; then \ - rm -rf en; \ - fi - -endif - -EXTRA_DIST = \ - taglib-sharp-docs.source \ - XmlInjector.cs \ - Package.en.xml.in - -DISTCLEANFILES = \ - taglib-sharp-docs.zip \ - taglib-sharp-docs.tree - -MAINTAINERCLEANFILES = \ - Makefile.in - -CLEANFILES = \ - XmlInjector.exe diff --git a/taglib-sharp/docs/Package.en.xml.in b/taglib-sharp/docs/Package.en.xml.in deleted file mode 100644 index 381af564..00000000 --- a/taglib-sharp/docs/Package.en.xml.in +++ /dev/null @@ -1,221 +0,0 @@ - - - TagLib# - This package provides support for reading and writing - the tagging information for a large number of tagging formats, - as well as reading media properties for many standard audio and video formats. - Copyright (C) 2007-2008 Brian Nickel - - - - TagLib provides a generic interface for reading - media properties and editing tags on different audio and - video files. - The most straightforward way to read a file is - through , which does type detection to create the correct . - - - - - The TagLib.Aac namespace contains classes - for handling the AAC file format. - See - http://www.hydrogenaudio.org/forums/lofiversion/index.php/t21617.html - for the complete specification. - - - - - The TagLib.Aiff namespace contains classes - for handling the AIFF file format. - See - http://en.wikipedia.org/wiki/Audio_Interchange_File_Format for - the complete specification. - - - - - The TagLib.Ape namespace contains classes - for reading APE tags. - See - http://wiki.hydrogenaudio.org/index.php?title=APEv2 for - the complete specification. - - - - - The TagLib.Asf namespace contains classes for - handling the Microsoft Advanced Systems Format file - format. - See - http://www.microsoft.com/windows/windowsmedia/forpros/format/asfspec.aspx - for the complete specification. - - - - - The TagLib.Flac namespace contains classes for - handling the Xiph FLAC file format. - See http://flac.sourceforge.net/format.html for - the complete specification. - - - - - The TagLib.Id3v1 namespace contains classes for - handling the ID3v1.1 tagging format. - See http://www.id3.org/ID3v1 for the complete - specification. - - - - - The TagLib.Id3v2 namespace contains classes for - handling the ID3v2 tagging format. - See http://www.id3.org/Developer_Information - for the complete specification. - - - - - The TagLib.Mpeg4 namespace contains classes for - handling the MPEG-4 file format. - See - http://standards.iso.org/ittf/PubliclyAvailableStandards/c041828_ISO_IEC_14496-12_2005(E).zip - for the complete specification. - - - - - The TagLib.Mpeg namespace contains classes for handling - MPEG-1/2 files and MPEG audio files. - - - - - - The TagLib.MusePack namespace contains classes for - handling the MusePack file format. - See http://www.musepack.net/ for the complete - specification. - - - - - The TagLib.NonContainer namespace provides - classes for dealing with files that do not have a - standardized tagging mechanism and may have any number - of tags at their beginning or end. - The FLAC file format is included in this - because despite having a standard tagging mechanism, ID3 - and APE tags are not uncommonly attached to the - file. - - - - - The TagLib.Ogg.Codecs namespace contains - standard codecs used in Xiph Ogg files. - - - - - - The TagLib.Ogg namespace contains classes for - handling the Xiph OGG file format. - See http://www.xiph.org/ogg/ for the complete - specification. - - - - - The TagLib.Riff namespace contains all classes - relevant to the reading of Microsoft RIFF files. These - files include namely the WAV and AVI file - formats. - See - http://msdn2.microsoft.com/en-us/library/ms779636.aspx - for information on the RIFF AVI format. - - - - - The TagLib.WavPack namespace contains all - classes relevant to the reading of WavPack - files. - See http://www.wavpack.com/ for the complete - specification. - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/taglib-sharp/docs/XmlInjector.cs b/taglib-sharp/docs/XmlInjector.cs deleted file mode 100644 index 94a35879..00000000 --- a/taglib-sharp/docs/XmlInjector.cs +++ /dev/null @@ -1,191 +0,0 @@ -/*************************************************************************** - * XmlInjector.cs - * - * Copyright (C) 2008 Brian Nickel - * Written by Brian Nickel (brian.nickel@gmail.com) - ****************************************************************************/ - -/* THIS FILE IS LICENSED UNDER THE MIT LICENSE AS OUTLINED IMMEDIATELY BELOW: - * - * Permission is hereby granted, free of charge, to any person obtaining a - * copy of this software and associated documentation files (the "Software"), - * to deal in the Software without restriction, including without limitation - * the rights to use, copy, modify, merge, publish, distribute, sublicense, - * and/or sell copies of the Software, and to permit persons to whom the - * Software is furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING - * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER - * DEALINGS IN THE SOFTWARE. - */ - -using System; -using System.Xml; - -public static class XmlInjector -{ - public static int Main (string [] args) - { - if (args.Length != 2) { - Console.WriteLine ("XmlInjector.exe ACTIONFILE.XML ACTION_NAME"); - return 1; - } - - XmlDocument doc = new XmlDocument (); - try { - doc.Load (args [0]); - } catch { - Console.WriteLine ("Could not open {0}.", args [0]); - return 1; - } - - string dir = System.IO.Directory.GetParent (args [0]).FullName; - Console.WriteLine ("Setting working directory to {0}.", dir); - System.IO.Directory.SetCurrentDirectory (dir); - - string path = string.Format ("//ActionSet[@Name='{0}']/File[@Path]", args [1]); - foreach (XmlNode node in doc.SelectNodes (path)) - if (!RunFileAction (node)) - return 1; - - return 0; - } - - private static bool RunFileAction (XmlNode fileElement) - { - string path = GetAttribute (fileElement, "Path"); - XmlDocument doc = new XmlDocument (); - try { - doc.Load (path); - } catch { - Console.WriteLine ("ERROR: Could not open {0}.", path); - return false; - } - - Console.WriteLine ("Processing {0}...", path); - - foreach (XmlNode element in fileElement.SelectNodes ("Replace")) - if (!ReplaceNode (fileElement.OwnerDocument, doc, element)) - return false; - - foreach (XmlNode element in fileElement.SelectNodes ("Insert")) - if (!InsertNode (fileElement.OwnerDocument, doc, element)) - return false; - - foreach (XmlNode element in fileElement.SelectNodes ("Remove")) - if (!RemoveNodes (doc, element)) - return false; - - doc.Save (path); - Console.WriteLine ("{0} saved.", path); - return true; - } - - private static bool ReplaceNode (XmlDocument sourceDocument, - XmlDocument targetDocument, - XmlNode replaceElement) - { - string sourcePath = GetAttribute (replaceElement, "Source"); - string targetPath = GetAttribute (replaceElement, "Target"); - - if (OperationNotNeccessary (targetDocument, replaceElement)) { - Console.WriteLine (" Skipping replacement of {0}.", targetPath); - return true; - } - - Console.WriteLine (" Replacing {0}.", targetPath); - XmlNode sourceNode = sourcePath == null ? null : sourceDocument.SelectSingleNode (sourcePath); - XmlNode targetNode = targetPath == null ? null : targetDocument.SelectSingleNode (targetPath); - - if (sourceNode == null) - sourceNode = replaceElement.FirstChild; - - if (sourceNode == null) { - Console.WriteLine ("ERROR: Could not find source node: {0}", sourcePath); - return false; - } - - if (targetNode == null) { - Console.WriteLine ("ERROR: Could not find target node: {0}", targetPath); - return false; - } - - targetNode.ParentNode.ReplaceChild (targetDocument.ImportNode (sourceNode, true), targetNode); - return true; - } - - private static bool InsertNode (XmlDocument sourceDocument, XmlDocument targetDocument, XmlNode insertElement) - { - string sourcePath = GetAttribute (insertElement, "Source"); - string targetPath = GetAttribute (insertElement, "Target"); - - if (OperationNotNeccessary (targetDocument, insertElement)) { - Console.WriteLine (" Skipping insertion into {0}.", targetPath); - return true; - } - - Console.WriteLine (" Inserting into {0}.", targetPath); - XmlNode sourceNode = sourcePath == null ? null : sourceDocument.SelectSingleNode (sourcePath); - XmlNode targetNode = targetPath == null ? null : targetDocument.SelectSingleNode (targetPath); - - if (sourceNode == null) - sourceNode = insertElement.FirstChild; - - if (sourceNode == null) { - Console.WriteLine ("ERROR: Could not find source node: {0}", sourcePath); - return false; - } - - if (targetNode == null) { - Console.WriteLine ("ERROR: Could not find target node: {0}", targetPath); - return false; - } - - targetNode.AppendChild (targetDocument.ImportNode (sourceNode, true)); - return true; - } - - private static bool RemoveNodes (XmlDocument targetDocument, - XmlNode removeElement) - { - string targetPath = GetAttribute (removeElement, "Target"); - - if (OperationNotNeccessary (targetDocument, removeElement)) { - Console.WriteLine (" Skipping removal of {0}.", targetPath); - return true; - } - - Console.WriteLine (" Removing {0}.", targetPath); - - while (true) { - XmlNode targetNode = targetDocument.SelectSingleNode (targetPath); - - if (targetNode == null) - return true; - - targetNode.ParentNode.RemoveChild (targetNode); - } - } - - private static bool OperationNotNeccessary (XmlDocument targetDocument, XmlNode actionElement) - { - string ifMissingPath = GetAttribute (actionElement, "IfMissing"); - if (ifMissingPath != null && targetDocument.SelectSingleNode (ifMissingPath) != null) - return true; - - return false; - } - - private static string GetAttribute (XmlNode node, string attribute) - { - XmlAttribute xmlAttr = node.Attributes [attribute]; - return xmlAttr == null ? null : xmlAttr.Value; - } -} diff --git a/taglib-sharp/docs/taglib-sharp-docs.source b/taglib-sharp/docs/taglib-sharp-docs.source deleted file mode 100644 index ab765cd5..00000000 --- a/taglib-sharp/docs/taglib-sharp-docs.source +++ /dev/null @@ -1,4 +0,0 @@ - - - - diff --git a/taglib-sharp/examples/.gitignore b/taglib-sharp/examples/.gitignore deleted file mode 100644 index b6d1bebf..00000000 --- a/taglib-sharp/examples/.gitignore +++ /dev/null @@ -1,2 +0,0 @@ -extractKey -listData diff --git a/taglib-sharp/examples/BatchSet.cs b/taglib-sharp/examples/BatchSet.cs deleted file mode 100644 index bdc5279f..00000000 --- a/taglib-sharp/examples/BatchSet.cs +++ /dev/null @@ -1,131 +0,0 @@ -using System; -using System.Collections.Generic; -using TagLib; - -public class BatchSet -{ - private enum Mode { - Tag, Value, File - } - - public static void Main(string [] args) - { - if(args.Length < 3) { - Console.Error.WriteLine ("USAGE: BatchSet.exe -tag value [-tag2 value ...] File1 [File2 ...]"); - return; - } - - Mode mode = Mode.Tag; - List files = new List (); - Dictionary tags = new Dictionary (); - - string tag = null; - - foreach (string str in args) { - if (mode == Mode.Tag) { - if (str [0] == '-') { - if (str == "--") { - mode = Mode.File; - } else { - tag = str.Substring (1); - mode = Mode.Value; - } - - continue; - } - mode = Mode.File; - } - - if (mode == Mode.Value) { - if (!tags.ContainsKey (tag)) - tags.Add (tag, str); - mode = Mode.Tag; - continue; - } - - if (mode == Mode.File) - files.Add (str); - } - - foreach (string filename in files) { - TagLib.File file = TagLib.File.Create (filename); - if (file == null) - continue; - - Console.WriteLine ("Updating Tags For: " + filename); - - foreach (string key in tags.Keys) { - string value = tags [key]; - try { - switch (key) { - case "id3version": - byte number = byte.Parse (value); - if (number == 1) { - file.RemoveTags (TagTypes.Id3v2); - } else { - TagLib.Id3v2.Tag v2 = - file.GetTag (TagTypes.Id3v2, true) - as TagLib.Id3v2.Tag; - - if (v2 != null) - v2.Version = number; - } - break; - case "album": - file.Tag.Album = value; - break; - case "artists": - file.Tag.AlbumArtists = value.Split (new char [] {';'}); - break; - case "comment": - file.Tag.Comment = value; - break; - case "lyrics": - file.Tag.Lyrics = value; - break; - case "composers": - file.Tag.Composers = value.Split (new char [] {';'}); - break; - case "disc": - file.Tag.Disc = uint.Parse (value); - break; - case "disccount": - file.Tag.DiscCount = uint.Parse (value); - break; - case "genres": - file.Tag.Genres = value.Split (new char [] {';'}); - break; - case "performers": - file.Tag.Performers = value.Split (new char [] {';'}); - break; - case "title": - file.Tag.Title = value; - break; - case "track": - file.Tag.Track = uint.Parse (value); - break; - case "trackcount": - file.Tag.TrackCount = uint.Parse (value); - break; - case "year": - file.Tag.Year = uint.Parse (value); - break; - case "pictures": - List pics = new List (); - if (!string.IsNullOrEmpty (value)) - foreach (string path in value.Split (new char [] {';'})) { - pics.Add (new Picture (path)); - } - file.Tag.Pictures = pics.ToArray (); - break; - } - } catch (Exception e) { - Console.WriteLine ("Error setting tag " + key + ":"); - Console.WriteLine (e); - } - } - - file.Save(); - } - } -} diff --git a/taglib-sharp/examples/GenerateTestFixture.cs b/taglib-sharp/examples/GenerateTestFixture.cs deleted file mode 100644 index 97e59f2b..00000000 --- a/taglib-sharp/examples/GenerateTestFixture.cs +++ /dev/null @@ -1,924 +0,0 @@ -// -// This application parses a photo and compares the output to the output of exiv2. -// -// It can be used to make test fixtures. Manual validation is always required. -// -// You need the exiv2 app for this to work. -// - -using GLib; -using System; -using System.Text; -using System.Collections.Generic; -using System.Security.Cryptography; -using TagLib; -using TagLib.IFD; -using TagLib.IFD.Tags; -using TagLib.Xmp; - -public class GenerateTestFixtureApp -{ - private static MD5 md5 = MD5.Create (); - - public static void Main (string [] args) - { - if(args.Length != 2) { - Console.Error.WriteLine ("USAGE: mono GenerateTestFixture.exe NAME PATH"); - return; - } - - string name = args[0]; - string path = args[1]; - - EmitHeader (name, path); - GenerateIFDFixture (name, path); - GenerateXMPFixture (name, path); - EmitFooter (); - } - - static Dictionary sub_ifds = new Dictionary (); - static Dictionary sub_ifds_emitted = new Dictionary (); - - static void GenerateIFDFixture (string name, string path) - { - // First run exiv2 on it. - string output, err; - int code; - var result = GLib.Process.SpawnCommandLineSync (String.Format ("./listData e {0}", path), out output, out err, out code); - if (!result) { - Console.Error.WriteLine ("Invoking listData failed, are you running from the examples folder?"); - return; - } - - Write ("// ---------- Start of IFD tests ----------"); - - foreach (string line in output.Split ('\n')) { - string[] parts = line.Split (new char[] {'\t'}, 5); - if (parts.Length == 0 || line.Trim ().Equals (String.Empty) || parts.Length != 5) - continue; - string tag_label = parts[0]; - ushort tag = ushort.Parse (parts[1].Substring(2), System.Globalization.NumberStyles.HexNumber); - string ifd = parts[2]; - string type = parts[3]; - uint length = uint.Parse (parts[4]); - - if (ifd == "NikonSi02xx" || ifd == "NikonVr" || ifd == "NikonPc" || ifd == "NikonWt" || ifd == "NikonIi" || ifd == "NikonLd3") { - continue; // Exiv2 makes these up. - } - - string val = ExtractKey (path, String.Format ("Exif.{0}.{1}", ifd, tag_label)); - - if (tag_label == "SubIFDs") { - for (int i = 0; i < val.Split (' ').Length; i++) { - var sub_ifd = String.Format ("SubImage{0}", sub_ifds.Count + 1); - sub_ifds.Add (sub_ifd, sub_ifds.Count); - } - continue; - } - - EnsureIFD (ifd); - - if (tag_label.Equals ("ExifTag")) - type = "SubIFD"; - if (tag_label.Equals ("MakerNote")) { - type = "MakerNote"; - val = String.Empty; // No need to echo. - } - if (tag_label.Equals ("InteroperabilityTag")) - type = "SubIFD"; - if (tag_label.Equals ("GPSTag")) - type = "SubIFD"; - if (tag_label.Equals ("JPEGInterchangeFormat")) - type = "ThumbnailDataIFD"; - if (tag_label.Equals ("Preview") && ifd.Equals ("Nikon3")) - type = "SubIFD"; - if (tag_label.Equals ("UserComment") && ifd.Equals ("Photo")) - type = "UserComment"; - if (tag_label.Equals ("StripOffsets")) - type = "StripOffsets"; - if (tag_label.Equals ("IPTCNAA")) - type = "IPTCNAA"; - if (tag_label.Equals ("XMLPacket")) - type = "XMLPacket"; - - if (ifd.Equals ("MakerNote")) - continue; // Exiv2 makes these up. - - Write ("// {1}.0x{0:X4} ({2}/{3}/{4}) \"{5}\"", tag, ifd, tag_label, type, length, length > 512 ? "(Value ommitted)" : val); - - if (ifd.Equals ("Image")) { - EmitTestIFDEntryOpen ("structure", 0, tag, ifd); - } else if (ifd.Equals ("Thumbnail")) { - EmitTestIFDEntryOpen ("structure", 1, tag, ifd); - } else if (ifd.Equals ("Image2")) { - EmitTestIFDEntryOpen ("structure", 2, tag, ifd); - } else if (ifd.Equals ("Image3")) { - EmitTestIFDEntryOpen ("structure", 3, tag, ifd); - } else if (ifd.Equals ("Photo")) { - EmitTestIFDEntryOpen ("exif_structure", 0, tag, ifd); - } else if (IsPartOfMakernote (ifd)) { - EmitTestIFDEntryOpen ("makernote_structure", 0, tag, ifd); - } else if (ifd.Equals ("NikonPreview")) { - EmitTestIFDEntryOpen ("nikonpreview_structure", 0, tag, ifd); - } else if (ifd.Equals ("Iop")) { - EmitTestIFDEntryOpen ("iop_structure", 0, tag, ifd); - } else if (ifd.Equals ("GPSInfo")) { - EmitTestIFDEntryOpen ("gps_structure", 0, tag, ifd); - } else if (ifd.Equals ("CanonCs")) { - EmitTestIFDEntryOpen ("makernote_structure", 0, (ushort) CanonMakerNoteEntryTag.CameraSettings, ifd); - } else if (ifd.Equals ("CanonSi")) { - EmitTestIFDEntryOpen ("makernote_structure", 0, (ushort) CanonMakerNoteEntryTag.ShotInfo, ifd); - } else if (ifd.Equals ("CanonCf")) { - EmitTestIFDEntryOpen ("makernote_structure", 0, (ushort) CanonMakerNoteEntryTag.CustomFunctions, ifd); - } else if (ifd.Equals ("CanonPi")) { - EmitTestIFDEntryOpen ("makernote_structure", 0, (ushort) CanonMakerNoteEntryTag.PictureInfo, ifd); - } else if (ifd.Equals ("CanonFi")) { - EmitTestIFDEntryOpen ("makernote_structure", 0, (ushort) 0x93, ifd); - } else if (ifd.Equals ("PanasonicRaw")) { - EmitTestIFDEntryOpen ("pana_structure", 0, tag, ifd); - } else if (sub_ifds.ContainsKey (ifd)) { - EmitTestIFDEntryOpen (String.Format ("{0}_structure", ifd), 0, tag, ifd); - } else { - throw new Exception (String.Format ("Unknown IFD: {0}", ifd)); - } - - if (ifd.Equals ("CanonCs") || ifd.Equals ("CanonSi") || ifd.Equals ("CanonCf") || ifd.Equals ("CanonPi")) { - // This are a made-up directory by exiv2 - EmitTestIFDIndexedShortEntry (tag, val); - } else if (ifd.Equals ("CanonFi")) { - // This are a made-up directory by exiv2 - // And the fist both entries are combined to a long by exiv2. - if (tag == 0x0001) { - string val1 = ((ushort) UInt32.Parse (val)).ToString (); - string val2 = ((ushort) (UInt32.Parse (val) >> 16)).ToString (); - EmitTestIFDIndexedShortEntry (tag, val1); - EmitTestIFDIndexedShortEntry (tag + 1, val2); - } else { - EmitTestIFDIndexedShortEntry (tag, val); - } - } else if (type.Equals ("Ascii")) { - EmitTestIFDStringEntry (val); - } else if (type.Equals ("Short") && length == 1) { - EmitTestIFDShortEntry (val); - } else if (type.Equals ("Short") && length > 1) { - EmitTestIFDShortArrayEntry (val); - } else if (type.Equals ("SShort") && length == 1) { - EmitTestIFDSShortEntry (val); - } else if (type.Equals ("SShort") && length > 1) { - EmitTestIFDSShortArrayEntry (val); - } else if (type.Equals ("Rational") && length == 1) { - EmitTestIFDRationalEntry (val); - } else if (type.Equals ("Rational") && length > 1) { - EmitTestIFDRationalArrayEntry (val); - } else if (type.Equals ("SRational") && length == 1) { - EmitTestIFDSRationalEntry (val); - } else if (type.Equals ("SRational") && length > 1) { - EmitTestIFDSRationalArrayEntry (val); - } else if (type.Equals ("Long") && length == 1) { - EmitTestIFDLongEntry (val); - } else if (type.Equals ("Long") && length > 1) { - EmitTestIFDLongArrayEntry (val); - } else if (type.Equals ("SLong") && length == 1) { - EmitTestIFDSLongEntry (val); - } else if (type.Equals ("Byte") && length == 1) { - EmitTestIFDByteEntry (val); - } else if (type.Equals ("Byte") && length > 1) { - EmitTestIFDByteArrayEntry (val); - } else if (type.Equals ("SByte") && length == 1) { - EmitTestIFDSByteEntry (val); - } else if (type.Equals ("SubIFD")) { - EmitTestIFDSubIFDEntry (val); - } else if (type.Equals ("ThumbnailDataIFD")) { - EmitTestIFDThumbnailDataIFDEntry (val); - } else if (type.Equals ("MakerNote")) { - EmitTestIFDMakerNoteIFDEntry (val); - } else if (type.Equals ("UserComment")) { - EmitTestIFDUserCommentIFDEntry (val); - } else if (type.Equals ("Undefined")) { - EmitTestIFDUndefinedEntry (val); - } else if (type.Equals ("StripOffsets")) { - EmitTestIFDStripOffsetsEntry (val); - } else if (type.Equals ("IPTCNAA")) { - EmitTestIFDIPTCNAAEntry (val); - } else if (type.Equals ("XMLPacket")) { - EmitTestIFDXMLPacketEntry (val); - } else { - throw new Exception ("Unknown type: " + type); - } - - EmitTestIFDEntryClose (); - } - - Write (); - Write ("// ---------- End of IFD tests ----------"); - Write (); - } - - static Dictionary xmp_prefixes = new Dictionary (); - - static void GenerateXMPFixture (string name, string path) - { - // First run exiv2 on it. - string output, err; - int code; - var result = GLib.Process.SpawnCommandLineSync (String.Format ("./listData x {0}", path), out output, out err, out code); - if (!result) { - Console.Error.WriteLine ("Invoking exiv2 failed, do you have it installed?"); - return; - } - - if (output.Trim ().Equals ("")) - return; - - Write (); - Write ("// ---------- Start of XMP tests ----------"); - Write (); - - Write ("XmpTag xmp = file.GetTag (TagTypes.XMP) as XmpTag;"); - - // Build prefix lookup dictionary. - Type t = typeof(XmpTag); - foreach (var member in t.GetMembers()) { - if (!member.Name.EndsWith ("_NS")) - continue; - string val = (member as System.Reflection.FieldInfo).GetValue (null) as string; - string prefix = XmpTag.NamespacePrefixes [val]; - xmp_prefixes [prefix] = member.Name; - } - - foreach (string line in output.Split ('\n')) { - string[] parts = line.Split (new char[] {'\t'}, 3); - if (parts.Length == 0 || line.Trim ().Equals (String.Empty)) - continue; - string label = parts[0]; - string type = parts[1]; - uint length = uint.Parse (parts[2]); - string val = ExtractKey (path, label).Trim (); - - EmitXmpTest (label, type, length, val); - } - - Write (); - Write ("// ---------- End of XMP tests ----------"); - Write (); - } - - static void EmitXmpTest (string label, string type, uint length, string val) - { - if (label.Equals ("Xmp.xmpMM.InstanceID")) - return; // Continue this, exiv2 makes it up from the about attr - if (label.Equals ("Xmp.tiff.Orientation")) - return; // exiv2 destroys this value - - var node_path = label.Split ('/'); - Write ("// {0} ({1}/{2}) \"{3}\"", label, type, length, val); - Write ("{"); - Write ("var node = xmp.NodeTree;"); - - // Navigate to the correct node. - foreach (var node in node_path) { - var parts = node.Split ('.'); - var partscolon = node.Split (':'); - if (parts.Length == 3) { - // Plain node - int index = 0; - string name = parts[2]; - if (parts[2].EndsWith("]")) { - int index_start = parts[2].LastIndexOf ("["); - string index_str = parts[2].Substring (index_start+1, parts[2].Length-index_start-2); - index = int.Parse (index_str); - name = parts[2].Substring (0, index_start); - } - string ns = GetXmpNs (parts[1]); - Write ("node = node.GetChild ({0}, \"{1}\");", ns, name); - Write ("Assert.IsNotNull (node);"); - - if (index > 0) { - Write ("node = node.Children [{0}];", index - 1); - Write ("Assert.IsNotNull (node);"); - } - } else if (partscolon.Length == 2) { - string ns = GetXmpNs (partscolon[0]); - string name = partscolon[1]; - Write ("node = node.GetChild ({0}, \"{1}\");", ns, name); - Write ("Assert.IsNotNull (node);"); - } else { - throw new Exception ("Can't navigate to "+node); - } - } - - if (length > 0 && type.Equals ("XmpText")) { - Write ("Assert.AreEqual (\"{0}\", node.Value);", val); - Write ("Assert.AreEqual (XmpNodeType.Simple, node.Type);"); - Write ("Assert.AreEqual (0, node.Children.Count);"); - } else if (type.Equals ("XmpBag") && length == 1) { - Write ("Assert.AreEqual (XmpNodeType.Bag, node.Type);"); - Write ("Assert.AreEqual (\"\", node.Value);"); - Write ("Assert.AreEqual ({0}, node.Children.Count);", length); - Write ("Assert.AreEqual (\"{0}\", node.Children [0].Value);", val); - } else if (type.Equals ("LangAlt") && length == 1) { - var langparts = val.Split (new char [] {' '}, 2); - string lang = langparts[0].Substring (langparts[0].IndexOf ('"')+1, langparts [0].Length - langparts[0].IndexOf ('"')-2); - Write ("Assert.AreEqual (\"{0}\", node.Children [0].GetQualifier (XmpTag.XML_NS, \"lang\").Value);", lang); - Write ("Assert.AreEqual (\"{0}\", node.Children [0].Value);", langparts[1]); - } else if (type.Equals ("XmpSeq") && length == 1) { - Write ("Assert.AreEqual (XmpNodeType.Seq, node.Type);"); - Write ("Assert.AreEqual (\"\", node.Value);"); - Write ("Assert.AreEqual ({0}, node.Children.Count);", length); - Write ("Assert.AreEqual (\"{0}\", node.Children [0].Value);", val); - } else if (type.Equals ("XmpSeq") && length > 1) { - string [] vals = val.Split (','); - Write ("Assert.AreEqual (XmpNodeType.Seq, node.Type);"); - Write ("Assert.AreEqual (\"\", node.Value);"); - Write ("Assert.AreEqual ({0}, node.Children.Count);", length); - var per_iter = vals.Length / length; - for (int i = 0; i < length; i++) { - var builder = new List (); - for (int j = 0; j < per_iter; j++) { - builder.Add (vals[per_iter*i + j].Trim ()); - } - Write ("Assert.AreEqual (\"{0}\", node.Children [{1}].Value);", String.Join (", ", builder.ToArray ()), i); - } - } else if (type.Equals ("XmpBag") && length > 1) { - string [] vals = val.Split (','); - Write ("Assert.AreEqual (XmpNodeType.Bag, node.Type);"); - Write ("Assert.AreEqual (\"\", node.Value);"); - Write ("Assert.AreEqual ({0}, node.Children.Count);", length); - Write ("var children_array = new System.Collections.Generic.List ();"); - Write ("foreach (var child in node.Children)"); - Write ("{"); - Write ("children_array.Add (child.Value);"); - Write ("}"); - var per_iter = vals.Length / length; - for (int i = 0; i < length; i++) { - var builder = new List (); - for (int j = 0; j < per_iter; j++) { - builder.Add (vals[per_iter*i + j].Trim ()); - } - Write ("Assert.IsTrue (children_array.Contains (\"{0}\"));", String.Join (", ", builder.ToArray ())); - } - } else if (type.Equals ("XmpText") && length == 0 && val.StartsWith ("type=")) { - if (val.Equals ("type=\"Bag\"")) { - Write ("Assert.AreEqual (XmpNodeType.Bag, node.Type);"); - } else if (val.Equals ("type=\"Struct\"")) { - // We disagree with exiv2 on the meaning of Struct. In Taglib#, - // struct is meant to denote parseType=Resource types only, not - // the shorthand equivalent. Also see XmpNode.RenderInto() - //Write ("Assert.AreEqual (XmpNodeType.Struct, node.Type);"); - } else { - throw new Exception ("Unknown type"); - } - } else { - throw new Exception (String.Format ("Can't test this (type: {0}, length: {1})", type, length)); - } - Write ("}"); - } - - static string ExtractKey (string file, string key) - { - string output, err; - int code; - var result = GLib.Process.SpawnCommandLineSync (String.Format ("./extractKey {0} {1}", file, key), out output, out err, out code); - if (!result) { - Console.Error.WriteLine ("Invoking extractKey failed, are you running from the examples folder?"); - return String.Empty; - } - - return output; - } - - static string GetXmpNs (string prefix) - { - string result; - if (prefix.Equals ("xmpBJ")) - prefix = "xapBJ"; - if (prefix.Equals ("xmpMM")) - prefix = "xapMM"; - if (prefix.Equals ("xmpRights")) - prefix = "xapRights"; - if (prefix.Equals ("MicrosoftPhoto_1_")) // We correct this invalid namespace internally - prefix = "MicrosoftPhoto"; - if (xmp_prefixes.TryGetValue (prefix, out result)) - return String.Format ("XmpTag.{0}", result); - throw new Exception ("Unknown namespace prefix: "+prefix); - } - - static bool IsPartOfMakernote (string ifd) { - return ifd.Equals ("MakerNote") || - ifd.Equals ("Canon") || - ifd.Equals ("Sony") || - ifd.Equals ("Nikon1") || - ifd.Equals ("Nikon2") || - ifd.Equals ("Nikon3") || - ifd.Equals ("Panasonic") || - ifd.Equals ("Olympus") || - ifd.Equals ("Pentax"); - } - - static void EmitHeader (string name, string path) - { - int start = path.LastIndexOf ('/'); - string filename = path.Substring (start+1); - Write ("// TODO: This file is automatically generated"); - Write ("// TODO: Further manual verification is needed"); - Write (); - Write ("using System;"); - Write ("using NUnit.Framework;"); - Write ("using TagLib.IFD;"); - Write ("using TagLib.IFD.Entries;"); - Write ("using TagLib.IFD.Tags;"); - Write ("using TagLib.Xmp;"); - Write ("using TagLib.Tests.Images.Validators;"); - Write (); - Write ("namespace TagLib.Tests.Images"); - Write ("{"); - Write ("[TestFixture]"); - Write ("public class {0}", name); - Write ("{"); - Write ("[Test]"); - Write ("public void Test ()"); - Write ("{"); - Write ("ImageTest.Run (\"{0}\",", filename); - level++; - Write ("new {0}InvariantValidator (),", name); - Write ("NoModificationValidator.Instance"); - level--; - Write (");"); - Write ("}"); - Write ("}"); - Write (); - Write ("public class {0}InvariantValidator : IMetadataInvariantValidator", name); - Write ("{"); - Write ("public void ValidateMetadataInvariants (Image.File file)"); - Write ("{"); - Write ("Assert.IsNotNull (file);"); - } - - static void EmitFooter () - { - Write ("}"); // Method - Write ("}"); // Class - Write ("}"); // Namespace - } - - static bool is_panasonic_raw = false; - - static bool structure_emitted = false; - static bool exif_emitted = false; - static bool makernote_emitted = false; - static bool makernote_is_canon = false; - static bool makernote_is_nikon1 = false; - static bool makernote_is_nikon2 = false; - static bool makernote_is_nikon3 = false; - static bool makernote_is_panasonic = false; - static bool nikonpreview_emitted = false; - static bool iop_emitted = false; - static bool gps_emitted = false; - - static void EnsureIFD (string ifd) { - if (ifd.Equals ("PanasonicRaw")) { - if (is_panasonic_raw) - return; - - Write (); - Write ("var tag = file.GetTag (TagTypes.TiffIFD) as IFDTag;"); - Write ("Assert.IsNotNull (tag, \"IFD tag not found\");"); - Write (); - Write ("var pana_structure = tag.Structure;"); - Write (); - Write ("var jpg_file = (file as TagLib.Tiff.Rw2.File).JpgFromRaw;"); - Write ("Assert.IsNotNull (tag, \"JpgFromRaw not found!\");"); - Write ("var jpg_tag = jpg_file.GetTag (TagTypes.TiffIFD) as IFDTag;"); - Write ("Assert.IsNotNull (tag, \"Jpg has no Exif tag!\");"); - Write ("var structure = jpg_tag.Structure;"); - - is_panasonic_raw = true; - } - - if (ifd.Equals ("Image") && !is_panasonic_raw) { - if (structure_emitted) - return; - Write (); - Write ("var tag = file.GetTag (TagTypes.TiffIFD) as IFDTag;"); - Write ("Assert.IsNotNull (tag, \"IFD tag not found\");"); - Write (); - Write ("var structure = tag.Structure;"); - Write (); - structure_emitted = true; - } - - if (ifd.Equals ("Photo")) { - if (exif_emitted) - return; - EnsureIFD ("Image"); - Write (); - Write ("var exif = structure.GetEntry (0, (ushort) IFDEntryTag.ExifIFD) as SubIFDEntry;"); - Write ("Assert.IsNotNull (exif, \"Exif tag not found\");"); - Write ("var exif_structure = exif.Structure;"); - Write (); - exif_emitted = true; - } - - if (ifd.Equals ("MakerNote")) { - if (makernote_emitted) - return; - EnsureIFD ("Photo"); - Write (); - Write ("var makernote = exif_structure.GetEntry (0, (ushort) ExifEntryTag.MakerNote) as MakernoteIFDEntry;"); - Write ("Assert.IsNotNull (makernote, \"MakerNote tag not found\");"); - Write ("var makernote_structure = makernote.Structure;"); - Write (); - makernote_emitted = true; - } - - if (ifd.Equals ("Canon") || ifd.Equals ("CanonCs") || ifd.Equals ("CanonSi")) { - if (makernote_is_canon) - return; - EnsureIFD ("MakerNote"); - Write (); - Write ("Assert.AreEqual (MakernoteType.Canon, makernote.MakernoteType);"); - Write (); - makernote_is_canon = true; - } - - if (ifd.Equals ("Nikon1")) { - if (makernote_is_nikon1) - return; - EnsureIFD ("MakerNote"); - Write (); - Write ("Assert.AreEqual (MakernoteType.Nikon1, makernote.MakernoteType);"); - Write (); - makernote_is_nikon1 = true; - } - - if (ifd.Equals ("Nikon2")) { - if (makernote_is_nikon2) - return; - EnsureIFD ("MakerNote"); - Write (); - Write ("Assert.AreEqual (MakernoteType.Nikon2, makernote.MakernoteType);"); - Write (); - makernote_is_nikon2 = true; - } - - if (ifd.Equals ("Nikon3")) { - if (makernote_is_nikon3) - return; - EnsureIFD ("MakerNote"); - Write (); - Write ("Assert.AreEqual (MakernoteType.Nikon3, makernote.MakernoteType);"); - Write (); - makernote_is_nikon3 = true; - } - - if (ifd.Equals ("NikonPreview")) { - if (nikonpreview_emitted) - return; - EnsureIFD ("Nikon3"); - Write (); - Write ("var nikonpreview = makernote_structure.GetEntry (0, (ushort) Nikon3MakerNoteEntryTag.Preview) as SubIFDEntry;"); - Write ("Assert.IsNotNull (nikonpreview, \"Nikon preview tag not found\");"); - Write ("var nikonpreview_structure = nikonpreview.Structure;"); - Write (); - nikonpreview_emitted = true; - } - - if (ifd.Equals ("Panasonic")) { - if (makernote_is_panasonic) - return; - EnsureIFD ("MakerNote"); - Write (); - Write ("Assert.AreEqual (MakernoteType.Panasonic, makernote.MakernoteType);"); - Write (); - makernote_is_panasonic = true; - } - - if (ifd.Equals ("Iop")) { - if (iop_emitted) - return; - EnsureIFD ("Photo"); - Write (); - Write ("var iop = exif_structure.GetEntry (0, (ushort) IFDEntryTag.InteroperabilityIFD) as SubIFDEntry;"); - Write ("Assert.IsNotNull (iop, \"Iop tag not found\");"); - Write ("var iop_structure = iop.Structure;"); - Write (); - iop_emitted = true; - } - - if (ifd.Equals ("GPSInfo")) { - if (gps_emitted) - return; - EnsureIFD ("Image"); - Write (); - Write ("var gps = structure.GetEntry (0, (ushort) IFDEntryTag.GPSIFD) as SubIFDEntry;"); - Write ("Assert.IsNotNull (gps, \"GPS tag not found\");"); - Write ("var gps_structure = gps.Structure;"); - Write (); - gps_emitted = true; - } - - if (sub_ifds.ContainsKey (ifd) && !sub_ifds_emitted.ContainsKey (ifd)) { - Write (); - Write ("var {0}_structure = (structure.GetEntry (0, (ushort) IFDEntryTag.SubIFDs) as SubIFDArrayEntry).Entries [{1}];", ifd, sub_ifds[ifd]); - Write ("Assert.IsNotNull ({0}_structure, \"{0} structure not found\");", ifd); - Write (); - sub_ifds_emitted.Add (ifd, true); - } - } - - static void EmitTestIFDEntryOpen (string src, int ifd, ushort tag, string ifd_label) - { - Write ("{"); - Write (String.Format ("var entry = {0}.GetEntry ({1}, (ushort) {2});", src, ifd, StringifyEntryTag (ifd_label, tag))); - Write (String.Format ("Assert.IsNotNull (entry, \"Entry 0x{0:X4} missing in IFD {1}\");", tag, ifd)); - } - - static void EmitTestIFDEntryClose () - { - Write ("}"); - } - - static void EmitTestIFDStringEntry (string val) - { - Write ("Assert.IsNotNull (entry as StringIFDEntry, \"Entry is not a string!\");"); - Write ("Assert.AreEqual (\"{0}\", (entry as StringIFDEntry).Value{1});", val, val == String.Empty ? ".Trim ()" : ""); - } - - static void EmitTestIFDShortEntry (string val) - { - Write ("Assert.IsNotNull (entry as ShortIFDEntry, \"Entry is not a short!\");"); - Write ("Assert.AreEqual ({0}, (entry as ShortIFDEntry).Value);", val); - } - - static void EmitTestIFDSShortEntry (string val) - { - Write ("Assert.IsNotNull (entry as SShortIFDEntry, \"Entry is not a signed short!\");"); - Write ("Assert.AreEqual ({0}, (entry as SShortIFDEntry).Value);", val); - } - - static void EmitTestIFDShortArrayEntry (string val) - { - val = String.Format ("new ushort [] {{ {0} }}", String.Join (", ", val.Split(' '))); - Write ("Assert.IsNotNull (entry as ShortArrayIFDEntry, \"Entry is not a short array!\");"); - Write ("Assert.AreEqual ({0}, (entry as ShortArrayIFDEntry).Values);", val); - } - - static void EmitTestIFDSShortArrayEntry (string val) - { - val = String.Format ("new short [] {{ {0} }}", String.Join (", ", val.Split(' '))); - Write ("Assert.IsNotNull (entry as SShortArrayIFDEntry, \"Entry is not a signed short array!\");"); - Write ("Assert.AreEqual ({0}, (entry as SShortArrayIFDEntry).Values);", val); - } - - static void EmitTestIFDRationalEntry (string val) - { - Write ("Assert.IsNotNull (entry as RationalIFDEntry, \"Entry is not a rational!\");"); - string[] parts = val.Split('/'); - Write ("Assert.AreEqual ({0}, (entry as RationalIFDEntry).Value.Numerator);", parts [0]); - Write ("Assert.AreEqual ({0}, (entry as RationalIFDEntry).Value.Denominator);", parts [1]); - } - - static void EmitTestIFDRationalArrayEntry (string val) - { - var parts = val.Split(' '); - Write ("Assert.IsNotNull (entry as RationalArrayIFDEntry, \"Entry is not a rational array!\");"); - Write ("var parts = (entry as RationalArrayIFDEntry).Values;"); - Write ("Assert.AreEqual ({0}, parts.Length);", parts.Length); - for (int i = 0; i < parts.Length; i++) { - var pieces = parts[i].Split('/'); - Write ("Assert.AreEqual ({0}, parts[{1}].Numerator);", pieces[0], i); - Write ("Assert.AreEqual ({0}, parts[{1}].Denominator);", pieces[1], i); - } - } - - static void EmitTestIFDSRationalEntry (string val) - { - Write ("Assert.IsNotNull (entry as SRationalIFDEntry, \"Entry is not a srational!\");"); - string[] parts = val.Split('/'); - Write ("Assert.AreEqual ({0}, (entry as SRationalIFDEntry).Value.Numerator);", parts [0]); - Write ("Assert.AreEqual ({0}, (entry as SRationalIFDEntry).Value.Denominator);", parts [1]); - } - - static void EmitTestIFDSRationalArrayEntry (string val) - { - var parts = val.Split(' '); - Write ("Assert.IsNotNull (entry as SRationalArrayIFDEntry, \"Entry is not a srational array!\");"); - Write ("var parts = (entry as SRationalArrayIFDEntry).Values;"); - Write ("Assert.AreEqual ({0}, parts.Length);", parts.Length); - for (int i = 0; i < parts.Length; i++) { - var pieces = parts[i].Split('/'); - Write ("Assert.AreEqual ({0}, parts[{1}].Numerator);", pieces[0], i); - Write ("Assert.AreEqual ({0}, parts[{1}].Denominator);", pieces[1], i); - } - } - - static void EmitTestIFDLongEntry (string val) - { - Write ("Assert.IsNotNull (entry as LongIFDEntry, \"Entry is not a long!\");"); - Write ("Assert.AreEqual ({0}, (entry as LongIFDEntry).Value);", val); - } - - static void EmitTestIFDLongArrayEntry (string val) - { - val = String.Format ("new long [] {{ {0} }}", String.Join (", ", val.Split(' '))); - Write ("Assert.IsNotNull (entry as LongArrayIFDEntry, \"Entry is not a long array!\");"); - Write ("Assert.AreEqual ({0}, (entry as LongArrayIFDEntry).Values);", val); - } - - static void EmitTestIFDSLongEntry (string val) - { - Write ("Assert.IsNotNull (entry as SLongIFDEntry, \"Entry is not a signed long!\");"); - Write ("Assert.AreEqual ({0}, (entry as SLongIFDEntry).Value);", val); - } - - static void EmitTestIFDByteEntry (string val) - { - Write ("Assert.IsNotNull (entry as ByteIFDEntry, \"Entry is not a byte!\");"); - Write ("Assert.AreEqual ({0}, (entry as ByteIFDEntry).Value);", val); - } - - static void EmitTestIFDByteArrayEntry (string val) - { - EmitByteArrayComparison (val, "ByteVectorIFDEntry", "a byte array"); - } - - static void EmitTestIFDSByteEntry (string val) - { - Write ("Assert.IsNotNull (entry as SByteIFDEntry, \"Entry is not a signed byte!\");"); - Write ("Assert.AreEqual ({0}, (entry as SByteIFDEntry).Value);", val); - } - - static void EmitTestIFDIPTCNAAEntry (string val) - { - Write ("Assert.IsNotNull (entry as ByteVectorIFDEntry, \"Entry is not a byte array!\");"); - } - - static void EmitTestIFDXMLPacketEntry (string val) - { - Write ("Assert.IsNotNull (entry as ByteVectorIFDEntry, \"Entry is not a byte array!\");"); - } - - static void EmitTestIFDUndefinedEntry (string val) - { - EmitByteArrayComparison (val, "UndefinedIFDEntry", "an undefined IFD entry"); - } - - static void EmitByteArrayComparison (string val, string type, string type_desc) - { - Write ("Assert.IsNotNull (entry as {0}, \"Entry is not {1}!\");", type, type_desc); - Write ("var parsed_bytes = (entry as {0}).Data.Data;", type); - var parts = val.Trim ().Split(' '); - if (parts.Length < 512) { - Write ("var bytes = new byte [] {{ {0} }};", String.Join (", ", parts)); - Write ("Assert.AreEqual (bytes, parsed_bytes);"); - } else { - // Starting with 512 byte items, we compare based on an MD5 hash, should be faster and reduces - // the size of the test fixtures. - byte [] data = new byte [parts.Length]; - for (int i = 0; i < parts.Length; i++) { - data [i] = Byte.Parse (parts [i]); - } - var hash = md5.ComputeHash (data); - - StringBuilder shash = new StringBuilder (); - for (int i = 0; i < hash.Length; i++) { - shash.Append (hash[i].ToString ("x2")); - } - - Write ("var parsed_hash = Utils.Md5Encode (parsed_bytes);"); - Write ("Assert.AreEqual (\"{0}\", parsed_hash);", shash.ToString ()); - Write ("Assert.AreEqual ({0}, parsed_bytes.Length);", parts.Length); - } - } - - static void EmitTestIFDSubIFDEntry (string val) - { - Write ("Assert.IsNotNull (entry as SubIFDEntry, \"Entry is not a sub IFD!\");"); - } - - static void EmitTestIFDThumbnailDataIFDEntry (string val) - { - Write ("Assert.IsNotNull (entry as ThumbnailDataIFDEntry, \"Entry is not a thumbnail IFD!\");"); - } - - static void EmitTestIFDMakerNoteIFDEntry (string val) - { - Write ("Assert.IsNotNull (entry as MakernoteIFDEntry, \"Entry is not a makernote IFD!\");"); - } - - static void EmitTestIFDUserCommentIFDEntry (string val) - { - Write ("Assert.IsNotNull (entry as UserCommentIFDEntry, \"Entry is not a user comment!\");"); - if (val.StartsWith ("charset=\"Ascii\"")) - val = val.Substring (15).Trim (); - Write ("Assert.AreEqual (\"{0}\", (entry as UserCommentIFDEntry).Value.Trim ());", val); - } - - static void EmitTestIFDStripOffsetsEntry (string val) - { - // The offsets may change after writing. Therfore we cannot compare them directly. - string offset_count = String.Format ("{0}", val.Split(' ').Length); - //val = String.Format ("new long [] {{ {0} }}", String.Join (", ", val.Split(' '))); - Write ("Assert.IsNotNull (entry as StripOffsetsIFDEntry, \"Entry is not a strip offsets entry!\");"); - //Write ("Assert.AreEqual ({0}, (entry as StripOffsetsIFDEntry).Values);", val); - Write ("Assert.AreEqual ({0}, (entry as StripOffsetsIFDEntry).Values.Length);", offset_count); - } - - static void EmitTestIFDIndexedShortEntry (int index, string val) - { - Write ("Assert.IsNotNull (entry as ShortArrayIFDEntry, \"Entry is not a short array!\");"); - var parts = val.Trim ().Split (' '); - Write ("Assert.IsTrue ({0} <= (entry as ShortArrayIFDEntry).Values.Length);", index + parts.Length); - for (int i = 0; i < parts.Length; i++) - Write ("Assert.AreEqual ({0}, (entry as ShortArrayIFDEntry).Values [{1}]);", parts [i], index + i); - } - -#region IFD tag names lookup - - static Dictionary> tag_names = null; - - static string StringifyEntryTag (string src, ushort tag) - { - if (tag_names == null) - BuildTagNamesTable (); - Dictionary table; - string result; - if (tag_names.TryGetValue (src, out table)) { - if (table.TryGetValue (tag, out result)) - return result; - } - Write ("// TODO: Unknown IFD tag: {1} / 0x{0:X4}", tag, src); - return String.Format ("0x{0:X4}", tag); - } - - static void BuildTagNamesTable () - { - tag_names = new Dictionary> (); - - IndexTagType ("Image", typeof (IFDEntryTag), "IFDEntryTag"); - IndexTagType ("Image2", typeof (IFDEntryTag), "IFDEntryTag"); - IndexTagType ("Image3", typeof (IFDEntryTag), "IFDEntryTag"); - IndexTagType ("SubImage1", typeof (IFDEntryTag), "IFDEntryTag"); - IndexTagType ("SubImage2", typeof (IFDEntryTag), "IFDEntryTag"); - IndexTagType ("Thumbnail", typeof (IFDEntryTag), "IFDEntryTag"); // IFD1, for thumbnails - IndexTagType ("Photo", typeof (IFDEntryTag), "IFDEntryTag"); - IndexTagType ("Photo", typeof (ExifEntryTag), "ExifEntryTag"); - IndexTagType ("Image", typeof (ExifEntryTag), "ExifEntryTag"); // Also put exif into Image, for DNG - IndexTagType ("GPSInfo", typeof (GPSEntryTag), "GPSEntryTag"); - IndexTagType ("Iop", typeof (IOPEntryTag), "IOPEntryTag"); - IndexTagType ("Canon", typeof (CanonMakerNoteEntryTag), "CanonMakerNoteEntryTag"); - IndexTagType ("CanonCs", typeof (CanonMakerNoteEntryTag), "CanonMakerNoteEntryTag"); - IndexTagType ("CanonSi", typeof (CanonMakerNoteEntryTag), "CanonMakerNoteEntryTag"); - IndexTagType ("CanonCf", typeof (CanonMakerNoteEntryTag), "CanonMakerNoteEntryTag"); - IndexTagType ("CanonFi", typeof (CanonFileInfoEntryTag), "CanonFileInfoEntryTag"); - IndexTagType ("CanonFi", typeof (CanonMakerNoteEntryTag), "CanonMakerNoteEntryTag"); - IndexTagType ("CanonPi", typeof (CanonPictureInfoEntryTag), "CanonPictureInfoEntryTag"); - IndexTagType ("CanonPi", typeof (CanonMakerNoteEntryTag), "CanonMakerNoteEntryTag"); - IndexTagType ("Sony", typeof (SonyMakerNoteEntryTag), "SonyMakerNoteEntryTag"); - IndexTagType ("Olympus", typeof (OlympusMakerNoteEntryTag), "OlympusMakerNoteEntryTag"); - IndexTagType ("Pentax", typeof (PentaxMakerNoteEntryTag), "PentaxMakerNoteEntryTag"); - IndexTagType ("Nikon3", typeof (Nikon3MakerNoteEntryTag), "Nikon3MakerNoteEntryTag"); - IndexTagType ("NikonPreview", typeof (NikonPreviewMakerNoteEntryTag), "NikonPreviewMakerNoteEntryTag"); - IndexTagType ("Panasonic", typeof (PanasonicMakerNoteEntryTag), "PanasonicMakerNoteEntryTag"); - IndexTagType ("PanasonicRaw", typeof (IFDEntryTag), "IFDEntryTag"); - } - - static void IndexTagType (string ifd, Type t, string typename) - { - if (!tag_names.ContainsKey (ifd)) - tag_names[ifd] = new Dictionary (); - foreach (string name in Enum.GetNames (t)) { - ushort tag = (ushort) Enum.Parse (t, name); - tag_names[ifd][tag] = String.Format ("{1}.{0}", name, typename); - } - } - -#endregion - -#region Code emission - - static int level = 0; - - static void Write (string str, params object[] p) - { - Console.Write (new String ('\t', level)); - Console.WriteLine (str, p); - } - - static void Write () - { - Console.WriteLine (); - } - - static void Write (string str) - { - if (str.Equals ("}")) - level--; - Console.Write (new String ('\t', level)); - Console.WriteLine (str); - if (str.Equals ("{")) - level++; - } - -#endregion -} diff --git a/taglib-sharp/examples/ListSupportedMimeTypes.cs b/taglib-sharp/examples/ListSupportedMimeTypes.cs deleted file mode 100644 index 2149b1a3..00000000 --- a/taglib-sharp/examples/ListSupportedMimeTypes.cs +++ /dev/null @@ -1,13 +0,0 @@ -using System; -using TagLib; - -public class ListSupportedMimeTypes -{ - public static void Main() - { - foreach(string type in SupportedMimeType.AllMimeTypes) { - Console.WriteLine(type); - } - } -} - diff --git a/taglib-sharp/examples/Makefile.am b/taglib-sharp/examples/Makefile.am deleted file mode 100644 index 45997583..00000000 --- a/taglib-sharp/examples/Makefile.am +++ /dev/null @@ -1,61 +0,0 @@ -READ_FROM_URI = ReadFromUri -SET_PICTURES = SetPictures -LIST_TYPES = ListSupportedMimeTypes -BATCH_SET = BatchSet -PARSE_PHOTO = ParsePhoto -STRIP_IMAGE = StripImageData -GENERATE_TEST_FIXTURE = GenerateTestFixture - -REFERENCES = -r:taglib-sharp.dll -EXAMPLES_BUILD = taglib-sharp.dll $(SET_PICTURES).exe $(LIST_TYPES).exe $(BATCH_SET).exe $(PARSE_PHOTO).exe $(STRIP_IMAGE).exe - -if HAVE_GNOME_SHARP -EXAMPLES_BUILD += $(READ_FROM_URI).exe -if HAVE_EXIV2 -EXAMPLES_BUILD += $(GENERATE_TEST_FIXTURE).exe -endif -endif - -all: $(EXAMPLES_BUILD) - -taglib-sharp.dll: - if [ ! -e $@ ]; then ln -s $(top_builddir)/src/taglib-sharp.dll $@; fi - -if HAVE_GNOME_SHARP -$(READ_FROM_URI).exe: $(READ_FROM_URI).cs - $(MCS) -out:$@ -debug $(REFERENCES) $(GNOME_SHARP_LIBS) $< - -if HAVE_EXIV2 -$(GENERATE_TEST_FIXTURE).exe: $(GENERATE_TEST_FIXTURE).cs listData extractKey - $(MCS) -out:$@ -debug $(REFERENCES) $(GNOME_SHARP_LIBS) $< - -listData: listData.cpp - g++ -o $@ $(EXIV2_LIBS) $< - -extractKey: extractKey.cpp - g++ -o $@ $(EXIV2_LIBS) $< -endif -endif - -$(SET_PICTURES).exe: $(SET_PICTURES).cs - $(MCS) -out:$@ -debug $(REFERENCES) $< - -$(LIST_TYPES).exe: $(LIST_TYPES).cs - $(MCS) -out:$@ -debug $(REFERENCES) $< - -$(BATCH_SET).exe: $(BATCH_SET).cs - $(MCS) -out:$@ -debug $(REFERENCES) $< - -$(PARSE_PHOTO).exe: $(PARSE_PHOTO).cs - $(MCS) -out:$@ -debug $(REFERENCES) $< - -$(STRIP_IMAGE).exe: $(STRIP_IMAGE).cs - $(MCS) -out:$@ -debug $(REFERENCES) $< - -EXTRA_DIST = $(READ_FROM_URI).cs $(SET_PICTURES).cs $(LIST_TYPES).cs $(BATCH_SET).cs $(PARSE_PHOTO).cs $(STRIP_IMAGE).cs $(GENERATE_TEST_FIXTURE).cs \ - $(srcdir)/covers/sample* - -DISTCLEANFILES = *.pidb -CLEANFILES = *.dll *.exe *.mdb -MAINTAINERCLEANFILES = Makefile.in - diff --git a/taglib-sharp/examples/ParsePhoto.cs b/taglib-sharp/examples/ParsePhoto.cs deleted file mode 100644 index 75a59362..00000000 --- a/taglib-sharp/examples/ParsePhoto.cs +++ /dev/null @@ -1,82 +0,0 @@ -using System; - -public class ParsePhotoApp -{ - public static void Main (string [] args) - { - if(args.Length == 0) { - Console.Error.WriteLine("USAGE: mono ParsePhoto.exe PATH [...]"); - return; - } - - foreach (string path in args) - ParsePhoto (path); - } - - static void ParsePhoto (string path) - { - TagLib.File file = null; - - try { - file = TagLib.File.Create(path); - } catch (TagLib.UnsupportedFormatException) { - Console.WriteLine ("UNSUPPORTED FILE: " + path); - Console.WriteLine (String.Empty); - Console.WriteLine ("---------------------------------------"); - Console.WriteLine (String.Empty); - return; - } - - var image = file as TagLib.Image.File; - if (file == null) { - Console.WriteLine ("NOT AN IMAGE FILE: " + path); - Console.WriteLine (String.Empty); - Console.WriteLine ("---------------------------------------"); - Console.WriteLine (String.Empty); - return; - } - - Console.WriteLine (String.Empty); - Console.WriteLine (path); - Console.WriteLine (String.Empty); - - Console.WriteLine("Tags in object : " + image.TagTypes); - Console.WriteLine (String.Empty); - - Console.WriteLine("Comment : " + image.ImageTag.Comment); - Console.Write("Keywords : "); - foreach (var keyword in image.ImageTag.Keywords) { - Console.Write (keyword + " "); - } - Console.WriteLine (); - Console.WriteLine("Rating : " + image.ImageTag.Rating); - Console.WriteLine("DateTime : " + image.ImageTag.DateTime); - Console.WriteLine("Orientation : " + image.ImageTag.Orientation); - Console.WriteLine("Software : " + image.ImageTag.Software); - Console.WriteLine("ExposureTime : " + image.ImageTag.ExposureTime); - Console.WriteLine("FNumber : " + image.ImageTag.FNumber); - Console.WriteLine("ISOSpeedRatings : " + image.ImageTag.ISOSpeedRatings); - Console.WriteLine("FocalLength : " + image.ImageTag.FocalLength); - Console.WriteLine("FocalLength35mm : " + image.ImageTag.FocalLengthIn35mmFilm); - Console.WriteLine("Make : " + image.ImageTag.Make); - Console.WriteLine("Model : " + image.ImageTag.Model); - - if (image.Properties != null) { - Console.WriteLine("Width : " + image.Properties.PhotoWidth); - Console.WriteLine("Height : " + image.Properties.PhotoHeight); - Console.WriteLine("Type : " + image.Properties.Description); - } - - Console.WriteLine (); - Console.WriteLine("Writable? : " + image.Writeable.ToString ()); - Console.WriteLine("Corrupt? : " + image.PossiblyCorrupt.ToString ()); - - if (image.PossiblyCorrupt) { - foreach (string reason in image.CorruptionReasons) { - Console.WriteLine (" * " + reason); - } - } - - Console.WriteLine ("---------------------------------------"); - } -} diff --git a/taglib-sharp/examples/ReadFromUri.boo b/taglib-sharp/examples/ReadFromUri.boo deleted file mode 100644 index 030e949d..00000000 --- a/taglib-sharp/examples/ReadFromUri.boo +++ /dev/null @@ -1,136 +0,0 @@ -import TagLib from "taglib-sharp.dll" -import Gnome.Vfs from "gnome-vfs-sharp" -import System -import System.IO - -def ReadFromUri(argv as (string)): - - if len(argv) < 1: - print "Usage: booi ReadFromUri.boo PATH [...]" - return - - Vfs.Initialize() - - TagLib.File.SetFileAbstractionCreator(TagLib.File.FileAbstractionCreator(CreateFile)) - - start = DateTime.Now - songs_read = 0 - - try: - for path as string in argv: - print path - - file_info as System.IO.FileInfo = System.IO.FileInfo(path) - uri as string = Gnome.Vfs.Uri.GetUriFromLocalPath (file_info.FullName) - file as TagLib.File = null - - try: - file = TagLib.File.Create(uri) - except UnsupportedFormatException: - print "UNSUPPORTED FILE: ${path}" - print string.Empty - print "---------------------------------------" - print string.Empty - continue - - print "Title: ${file.Tag.Title}" - - if file.Tag.AlbumArtists is null: - print "Artists:" - else: - print "Artists: ${string.Join ('\n ', file.Tag.AlbumArtists)}" - - if file.Tag.Performers is null: - print 'Performers:' - else: - print "Performers: ${string.Join ('\n ', file.Tag.Performers)}" - - if file.Tag.Composers is null: - print 'Composers:' - else: - print "Composers: ${string.Join ('\n ', file.Tag.Composers)}" - - print "Album: ${file.Tag.Album}" - print "Comment: ${file.Tag.Comment}" - - if file.Tag.Genres is null: - print 'Genres:' - else: - print "Genres: ${string.Join ('\n ', file.Tag.Genres)}" - - print "Year: ${file.Tag.Year}" - print "Track: ${file.Tag.Track}" - print "TrackCount: ${file.Tag.TrackCount}" - print "Disc: ${file.Tag.Disc}" - print "DiscCount: ${file.Tag.DiscCount}" - print "Lyrics:\n${file.Tag.Lyrics}" - print string.Empty - - print "Media Types: ${file.Properties.MediaTypes}" - print string.Empty - - for codec as ICodec in file.Properties.Codecs: - - if codec.MediaTypes & MediaTypes.Audio: - print "Audio Properties : ${(codec as IAudioCodec).Description}" - print "Bitrate: ${(codec as IAudioCodec).AudioBitrate}" - print "SampleRate: ${(codec as IAudioCodec).AudioSampleRate}" - print "Channels: ${(codec as IAudioCodec).AudioChannels}" - print string.Empty - - if codec.MediaTypes & MediaTypes.Video: - print "Video Properties : ${(codec as IVideoCodec).Description}" - print "Width: ${(codec as IVideoCodec).VideoWidth}" - print "Height: ${(codec as IVideoCodec).VideoHeight}" - print string.Empty - - if file.Properties.MediaTypes: - print "Length: ${file.Properties.Duration}" - print string.Empty - - print "Embedded Pictures: ${file.Tag.Pictures.Length}" - - for picture in file.Tag.Pictures: - print picture.Description - print " MimeType: ${picture.MimeType}" - print " Size: ${picture.Data.Count}" - print " Type: ${picture.Type}" - - print "" - print "---------------------------------------" - print "" - - songs_read = songs_read + 1 - - ensure: - Vfs.Shutdown() - - end as DateTime = DateTime.Now; - - print "Total running time: ${end - start}" - print "Total files read: ${songs_read}" - print "Average time per file: ${TimeSpan ((end - start).Ticks / songs_read)}" - -class VfsFileAbstraction(TagLib.File.IFileAbstraction): - - _name as string - - def constructor(file as string): - _name = file - - Name: - get: - return _name - - ReadStream: - get: - return VfsStream(_name, FileMode.Open) - - WriteStream: - get: - return VfsStream(_name, FileMode.Open) - -def CreateFile(path): - return VfsFileAbstraction(path) - -ReadFromUri(argv) diff --git a/taglib-sharp/examples/ReadFromUri.cs b/taglib-sharp/examples/ReadFromUri.cs deleted file mode 100644 index cc5c9e4d..00000000 --- a/taglib-sharp/examples/ReadFromUri.cs +++ /dev/null @@ -1,171 +0,0 @@ -using System; -using TagLib; -using Gnome.Vfs; - -public class ReadFromUri -{ - public static void Write (string name, object value) - { - Console.WriteLine ("{0,20}: {1}", - name, value == null ? "" : value - ); - } - - public static void Write (string name, string [] values) - { - Console.WriteLine ("{0,20}: {1}", - name, - values == null ? "" : String.Join ("\n ", values) - ); - } - - public static void Main(string [] args) - { - if(args.Length == 0) { - Console.Error.WriteLine("USAGE: mono ReadFromUri.exe PATH [...]"); - return; - } - - Gnome.Vfs.Vfs.Initialize(); - - DateTime start = DateTime.Now; - int songs_read = 0; - try { - foreach (string path in args) - { - string uri = path; - Console.WriteLine (uri); - TagLib.File file = null; - - try { - System.IO.FileInfo file_info = new System.IO.FileInfo(uri); - uri = Gnome.Vfs.Uri.GetUriFromLocalPath (file_info.FullName); - } catch { - } - - try - { - file = TagLib.File.Create(new VfsFileAbstraction (uri)); - } - catch (TagLib.UnsupportedFormatException) - { - Console.WriteLine ("UNSUPPORTED FILE: " + uri); - Console.WriteLine (String.Empty); - Console.WriteLine ("---------------------------------------"); - Console.WriteLine (String.Empty); - continue; - } - - Console.WriteLine("Tags on disk: " + file.TagTypesOnDisk); - Console.WriteLine("Tags in object: " + file.TagTypes); - Console.WriteLine (String.Empty); - - Write ("Grouping", file.Tag.Grouping); - Write ("Title", file.Tag.Title); - Write ("TitleSort", file.Tag.TitleSort); - Write ("Album Artists", file.Tag.AlbumArtists); - Write ("Album Artists Sort", file.Tag.AlbumArtistsSort); - Write ("Performers", file.Tag.Performers); - Write ("Performers Sort", file.Tag.PerformersSort); - Write ("Composers", file.Tag.Composers); - Write ("Composers Sort", file.Tag.ComposersSort); - Write ("Conductor", file.Tag.Conductor); - Write ("Album", file.Tag.Album); - Write ("Album Sort", file.Tag.AlbumSort); - Write ("Comment", file.Tag.Comment); - Write ("Copyright", file.Tag.Copyright); - Write ("Genres", file.Tag.Genres); - Write ("BPM", file.Tag.BeatsPerMinute); - Write ("Year", file.Tag.Year); - Write ("Track", file.Tag.Track); - Write ("TrackCount", file.Tag.TrackCount); - Write ("Disc", file.Tag.Disc); - Write ("DiscCount", file.Tag.DiscCount); - - Console.WriteLine("Lyrics:\n" + file.Tag.Lyrics + "\n"); - - Console.WriteLine("Media Types: " + file.Properties.MediaTypes + "\n"); - - foreach (TagLib.ICodec codec in file.Properties.Codecs) - { - TagLib.IAudioCodec acodec = codec as TagLib.IAudioCodec; - TagLib.IVideoCodec vcodec = codec as TagLib.IVideoCodec; - - if (acodec != null && (acodec.MediaTypes & TagLib.MediaTypes.Audio) != TagLib.MediaTypes.None) - { - Console.WriteLine("Audio Properties : " + acodec.Description); - Console.WriteLine("Bitrate: " + acodec.AudioBitrate); - Console.WriteLine("SampleRate: " + acodec.AudioSampleRate); - Console.WriteLine("Channels: " + acodec.AudioChannels + "\n"); - } - - if (vcodec != null && (vcodec.MediaTypes & TagLib.MediaTypes.Video) != TagLib.MediaTypes.None) - { - Console.WriteLine("Video Properties : " + vcodec.Description); - Console.WriteLine("Width: " + vcodec.VideoWidth); - Console.WriteLine("Height: " + vcodec.VideoHeight + "\n"); - } - } - - if (file.Properties.MediaTypes != TagLib.MediaTypes.None) - Console.WriteLine("Length: " + file.Properties.Duration + "\n"); - - IPicture [] pictures = file.Tag.Pictures; - - Console.WriteLine("Embedded Pictures: " + pictures.Length); - - foreach(IPicture picture in pictures) { - Console.WriteLine(picture.Description); - Console.WriteLine(" MimeType: " + picture.MimeType); - Console.WriteLine(" Size: " + picture.Data.Count); - Console.WriteLine(" Type: " + picture.Type); - } - - Console.WriteLine (String.Empty); - Console.WriteLine ("---------------------------------------"); - Console.WriteLine (String.Empty); - - songs_read ++; - } - } finally { - Gnome.Vfs.Vfs.Shutdown(); - } - - DateTime end = DateTime.Now; - - Console.WriteLine ("Total running time: " + (end - start)); - Console.WriteLine ("Total files read: " + songs_read); - - if (songs_read > 0) - { - Console.WriteLine ("Average time per file: " + new TimeSpan ((end - start).Ticks / songs_read)); - } - } -} - -public class VfsFileAbstraction : TagLib.File.IFileAbstraction -{ - private string name; - - public VfsFileAbstraction(string file) - { - name = file; - } - - public string Name { - get { return name; } - } - - public System.IO.Stream ReadStream { - get { return new VfsStream(Name, System.IO.FileMode.Open); } - } - - public System.IO.Stream WriteStream { - get { return new VfsStream(Name, System.IO.FileMode.Open); } - } - - public void CloseStream (System.IO.Stream stream) - { - stream.Close (); - } -} diff --git a/taglib-sharp/examples/ReadFromUri.csproj b/taglib-sharp/examples/ReadFromUri.csproj deleted file mode 100644 index ff50d8c5..00000000 --- a/taglib-sharp/examples/ReadFromUri.csproj +++ /dev/null @@ -1,55 +0,0 @@ - - - - Debug - AnyCPU - 9.0.21022 - 2.0 - {AB35577D-31CB-4848-AC41-13F00A5171A6} - Exe - ReadFromUri - ReadFromUri - v3.5 - - - true - full - true - . - prompt - 4 - ../tests/samples/sample.ogg - true - - - - - - none - true - . - prompt - 4 - ../tests/samples/sample_v2_only.mp3 - true - - - - - - - - - - {6B143A39-C7B2-4743-9917-92262C60E9A6} - taglib-sharp - - - - - False - - - - - \ No newline at end of file diff --git a/taglib-sharp/examples/SetPictures.cs b/taglib-sharp/examples/SetPictures.cs deleted file mode 100644 index 798c6385..00000000 --- a/taglib-sharp/examples/SetPictures.cs +++ /dev/null @@ -1,28 +0,0 @@ -using System; -using TagLib; - -public class SetPictures -{ - public static void Main(string [] args) - { - if(args.Length < 2) { - Console.Error.WriteLine("USAGE: mono SetPictures.exe AUDIO_PATH IMAGE_PATH_1[...IMAGE_PATH_N]"); - return; - } - - TagLib.File file = TagLib.File.Create(args[0]); - Console.WriteLine("Current picture count: " + file.Tag.Pictures.Length); - - Picture [] pictures = new Picture[args.Length - 1]; - - for(int i = 1; i < args.Length; i++) { - Picture picture = new Picture(args[i]); - pictures[i - 1] = picture; - } - - file.Tag.Pictures = pictures; - file.Save(); - - Console.WriteLine("New picture count: " + file.Tag.Pictures.Length); - } -} diff --git a/taglib-sharp/examples/SetPictures.csproj b/taglib-sharp/examples/SetPictures.csproj deleted file mode 100644 index 84ac4735..00000000 --- a/taglib-sharp/examples/SetPictures.csproj +++ /dev/null @@ -1,52 +0,0 @@ - - - - Debug - AnyCPU - 9.0.21022 - 2.0 - {0C4645BE-7413-43FC-8856-1ECF1A790FF8} - Exe - SetPictures - SetPictures - v3.5 - - - true - full - true - . - prompt - 4 - ../tests/samples/sample_v2_only.mp3 covers/sample_a.png covers/sample_b.jpg - true - - - - - - none - true - . - prompt - 4 - ../tests/samples/sample_v2_only.mp3 covers/sample_a.png covers/sample_b.jpg - true - - - - - - - - - - {6B143A39-C7B2-4743-9917-92262C60E9A6} - taglib-sharp - - - - - - - \ No newline at end of file diff --git a/taglib-sharp/examples/StripImageData.cs b/taglib-sharp/examples/StripImageData.cs deleted file mode 100644 index 63aa740d..00000000 --- a/taglib-sharp/examples/StripImageData.cs +++ /dev/null @@ -1,117 +0,0 @@ - -using System; -using TagLib; - -public class StripImageData -{ - private static byte[] image_data = new byte[] { - 0xFF, 0xDA, 0x00, 0x0C, 0x03, 0x01, 0x00, - 0x02, 0x11, 0x03, 0x11, 0x00, 0x3F, 0x00, - 0x8C, 0x80, 0x07, 0xFF, 0xD9 - }; - - public static void Main (string [] args) - { - if (args.Length != 1) { - Console.Out.WriteLine ("usage: mono StripImageData.exe [jpegfile]"); - return; - } - - ImageFile file = new ImageFile (args [0]); - - file.Mode = File.AccessMode.Write; - - long greatest_segment_position = 0; - long greatest_segment_length = 0; - - // collect data segments - while (true) { - - long sos = file.Find (new byte [] {0xFF, 0xDA}, file.Tell); - - if (sos == -1) - break; - - file.Seek (sos); - - long segment_length = SkipDataSegment (file); - - if (segment_length > greatest_segment_length) { - greatest_segment_length = segment_length; - greatest_segment_position = sos; - } - } - - if (greatest_segment_length == 0) - { - Console.Out.WriteLine ("doesn't look like an jpeg file"); - return; - } - - System.Console.WriteLine ("Stripping data segment at {0}", greatest_segment_position); - - file.RemoveBlock (greatest_segment_position, greatest_segment_length); - file.Seek (greatest_segment_position); - file.WriteBlock (image_data); - file.Mode = File.AccessMode.Closed; - } - - private static long SkipDataSegment (ImageFile file) - { - long position = file.Tell; - - // skip sos maker - if (file.ReadBlock (2).ToUInt () != 0xFFDA) - throw new Exception (String.Format ("Not a data segment at position: {0}", position)); - - while (true) { - if (0xFF == (byte) file.ReadBlock (1)[0]) { - byte maker = (byte) file.ReadBlock (1)[0]; - - if (maker != 0x00 && (maker <= 0xD0 || maker >= 0xD7)) - break; - } - } - - long length = file.Tell - position - 2; - - System.Console.WriteLine ("Data segment of length {0} found at {1}", length, position); - - return length; - } - - private class ImageFile : File { - - // Hacky implementation to make use of some methods defined in TagLib.File - - public ImageFile (string path) - : base (new File.LocalFileAbstraction (path)) {} - - public override Tag GetTag (TagLib.TagTypes type, bool create) - { - throw new System.NotImplementedException (); - } - - public override Properties Properties { - get { - throw new System.NotImplementedException (); - } - } - - public override void RemoveTags (TagLib.TagTypes types) - { - throw new System.NotImplementedException (); - } - - public override void Save () - { - throw new System.NotImplementedException (); - } - - public override Tag Tag { - get { - throw new System.NotImplementedException (); - } - } - } -} \ No newline at end of file diff --git a/taglib-sharp/examples/covers/sample_a.jpg b/taglib-sharp/examples/covers/sample_a.jpg deleted file mode 100644 index ad0c88d6..00000000 Binary files a/taglib-sharp/examples/covers/sample_a.jpg and /dev/null differ diff --git a/taglib-sharp/examples/covers/sample_a.png b/taglib-sharp/examples/covers/sample_a.png deleted file mode 100644 index 1bbadec9..00000000 Binary files a/taglib-sharp/examples/covers/sample_a.png and /dev/null differ diff --git a/taglib-sharp/examples/covers/sample_b.jpg b/taglib-sharp/examples/covers/sample_b.jpg deleted file mode 100644 index 26f83623..00000000 Binary files a/taglib-sharp/examples/covers/sample_b.jpg and /dev/null differ diff --git a/taglib-sharp/examples/covers/sample_b.png b/taglib-sharp/examples/covers/sample_b.png deleted file mode 100644 index c3cddb0a..00000000 Binary files a/taglib-sharp/examples/covers/sample_b.png and /dev/null differ diff --git a/taglib-sharp/examples/covers/sample_c.jpg b/taglib-sharp/examples/covers/sample_c.jpg deleted file mode 100644 index 8f378e3c..00000000 Binary files a/taglib-sharp/examples/covers/sample_c.jpg and /dev/null differ diff --git a/taglib-sharp/examples/covers/sample_c.png b/taglib-sharp/examples/covers/sample_c.png deleted file mode 100644 index 83338b3f..00000000 Binary files a/taglib-sharp/examples/covers/sample_c.png and /dev/null differ diff --git a/taglib-sharp/examples/extractKey.cpp b/taglib-sharp/examples/extractKey.cpp deleted file mode 100644 index 859ea736..00000000 --- a/taglib-sharp/examples/extractKey.cpp +++ /dev/null @@ -1,41 +0,0 @@ -#include -#include -#include -#include -#include - -int main(int argc, char* const argv[]) - -try { - if (argc != 3) { - std::cout << "Usage: " << argv[0] << " file key\n"; - return 1; - } - - Exiv2::Image::AutoPtr image = Exiv2::ImageFactory::open(argv[1]); - assert(image.get() != 0); - image->readMetadata(); - - try { - Exiv2::ExifData &exifData = image->exifData(); - const Exiv2::Value &value = exifData[argv[2]].value(); - std::cout << value; - } catch (Exiv2::AnyError &e) {} - - try { - Exiv2::IptcData &iptcData = image->iptcData(); - const Exiv2::Value &value = iptcData[argv[2]].value(); - std::cout << value; - } catch (Exiv2::AnyError &e) {} - - try { - Exiv2::XmpData &xmpData = image->xmpData(); - const Exiv2::Value &value = xmpData[argv[2]].value(); - std::cout << value; - } catch (Exiv2::AnyError &e) {} - - return 0; -} catch (Exiv2::AnyError& e) { - std::cout << "Caught Exiv2 exception '" << e << "'\n"; - return -1; -} diff --git a/taglib-sharp/examples/listData.cpp b/taglib-sharp/examples/listData.cpp deleted file mode 100644 index 50283d2e..00000000 --- a/taglib-sharp/examples/listData.cpp +++ /dev/null @@ -1,62 +0,0 @@ -#include -#include -#include -#include -#include - -int main(int argc, char* const argv[]) - -try { - if (argc != 3) { - std::cout << "Usage: " << argv[0] << " mode file\n"; - return 1; - } - - Exiv2::Image::AutoPtr image = Exiv2::ImageFactory::open(argv[2]); - assert(image.get() != 0); - image->readMetadata(); - - if (argv[1][0] == 'e') { - Exiv2::ExifData &exifData = image->exifData(); - if (!exifData.empty()) { - Exiv2::ExifData::const_iterator exifEnd = exifData.end(); - for (Exiv2::ExifData::const_iterator i = exifData.begin(); i != exifEnd; ++i) { - std::cout << i->tagName() << "\t" - << "0x" << std::setw(4) << std::setfill('0') << std::right - << std::hex << i->tag() << std::dec << "\t" - << i->groupName() << "\t" - << i->typeName() << "\t" - << i->count() << "\t" - << "\n"; - } - } - } - - if (argv[1][0] == 'i') { - Exiv2::IptcData &iptcData = image->iptcData(); - if (!iptcData.empty()) { - Exiv2::IptcData::const_iterator iptcEnd = iptcData.end(); - for (Exiv2::IptcData::const_iterator i = iptcData.begin(); i != iptcEnd; ++i) { - std::cout << i->key() << "\n"; - } - } - } - - if (argv[1][0] == 'x') { - Exiv2::XmpData &xmpData = image->xmpData(); - if (!xmpData.empty()) { - Exiv2::XmpData::const_iterator xmpEnd = xmpData.end(); - for (Exiv2::XmpData::const_iterator i = xmpData.begin(); i != xmpEnd; ++i) { - std::cout << i->key() << "\t" - << i->typeName() << "\t" - << i->count() << "\t" - << "\n"; - } - } - } - - return 0; -} catch (Exiv2::AnyError& e) { - std::cout << "Caught Exiv2 exception '" << e << "'\n"; - return -1; -} diff --git a/taglib-sharp/src/AssemblyInfo.cs b/taglib-sharp/src/AssemblyInfo.cs deleted file mode 100644 index b0a86b2d..00000000 --- a/taglib-sharp/src/AssemblyInfo.cs +++ /dev/null @@ -1,36 +0,0 @@ -// -// AssemblyInfo.cs.in: Contains flags to use for the assembly. -// -// Author: -// Brian Nickel (brian.nickel@gmail.com) -// -// Copyright (C) 2006-2007 Brian Nickel -// -// This library is free software; you can redistribute it and/or modify -// it under the terms of the GNU Lesser General Public License version -// 2.1 as published by the Free Software Foundation. -// -// This library is distributed in the hope that it will be useful, but -// WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -// Lesser General Public License for more details. -// -// You should have received a copy of the GNU Lesser General Public -// License along with this library; if not, write to the Free Software -// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 -// USA -// - -using System; -using System.Reflection; -using System.Runtime.CompilerServices; -using System.Runtime.InteropServices; - -[assembly:AssemblyVersion("2.0.4.0")] -[assembly:AssemblyTitle ("TagLib#")] -[assembly:AssemblyDescription ("A library for reading and writing audio metatags.")] -[assembly:AssemblyCopyright ("Copyright (c) 2006-2007 Brian Nickel. Copyright (c) 2009-2010 Other contributors")] -[assembly:AssemblyCompany ("")] -[assembly:AssemblyDelaySign(false)] -[assembly:CLSCompliant(false)] -[assembly: ComVisibleAttribute(false)] diff --git a/taglib-sharp/src/AssemblyInfo.cs.in b/taglib-sharp/src/AssemblyInfo.cs.in deleted file mode 100644 index 4b4cf124..00000000 --- a/taglib-sharp/src/AssemblyInfo.cs.in +++ /dev/null @@ -1,36 +0,0 @@ -// -// AssemblyInfo.cs.in: Contains flags to use for the assembly. -// -// Author: -// Brian Nickel (brian.nickel@gmail.com) -// -// Copyright (C) 2006-2007 Brian Nickel -// -// This library is free software; you can redistribute it and/or modify -// it under the terms of the GNU Lesser General Public License version -// 2.1 as published by the Free Software Foundation. -// -// This library is distributed in the hope that it will be useful, but -// WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -// Lesser General Public License for more details. -// -// You should have received a copy of the GNU Lesser General Public -// License along with this library; if not, write to the Free Software -// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 -// USA -// - -using System; -using System.Reflection; -using System.Runtime.CompilerServices; -using System.Runtime.InteropServices; - -[assembly:AssemblyVersion("@ASSEMBLY_VERSION@")] -[assembly:AssemblyTitle ("TagLib#")] -[assembly:AssemblyDescription ("A library for reading and writing audio metatags.")] -[assembly:AssemblyCopyright ("Copyright (c) 2006-2007 Brian Nickel. Copyright (c) 2009-2010 Other contributors")] -[assembly:AssemblyCompany ("")] -[assembly:AssemblyDelaySign(false)] -[assembly:AssemblyKeyFile("taglib-sharp.snk")] -[assembly:CLSCompliant(false)] diff --git a/taglib-sharp/src/Makefile.am b/taglib-sharp/src/Makefile.am deleted file mode 100644 index 17c63400..00000000 --- a/taglib-sharp/src/Makefile.am +++ /dev/null @@ -1,69 +0,0 @@ -POLICIES = policy.2.0.$(ASSEMBLY_NAME).dll -ASSEMBLY = $(ASSEMBLY_NAME).dll -TARGET = $(ASSEMBLY) - -if BUILD_DOCS -DOCFILE = $(ASSEMBLY).xml -DOCFLAGS = /doc:$(DOCFILE) /warn:4 -else -DOCFILE = -DOCFLAGS = -endif - -if HAVE_SHARPZIPLIB - SHARPZIPLIB_FLAGS = -r:ICSharpCode.SharpZipLib.dll -define:HAVE_SHARPZIPLIB -endif - -CSC = $(MCS) $(MCS_FLAGS) $(CSFLAGS) - -include $(srcdir)/TagLib/TagLib.sources - -taglib-sharp.snk: $(top_srcdir)/taglib-sharp.snk - cp $(top_srcdir)/taglib-sharp.snk . - -taglib_sources_in = AssemblyInfo.cs.in -taglib_generated_sources = $(taglib_sources_in:.in=) -taglib_policy_names = $(POLICIES:.dll=) -taglib_policy_configs = $(POLICIES:.dll=.config) -taglib_policy_configs_in = $(POLICIES:.dll=.config.in) - -$(ASSEMBLY): $(TAGLIB_CSFILES) $(taglib_generated_sources) taglib-sharp.snk - $(CSC) /target:library $(LIBFLAGS) $(SHARPZIPLIB_FLAGS) $(DOCFLAGS) /define:SIGN /out:$@ $(TAGLIB_CSFILES) $(taglib_generated_sources) - -policy.%.$(ASSEMBLY_NAME).dll: policy.%.$(ASSEMBLY_NAME).config - $(AL) /link:$< /out:$@ /keyfile:taglib-sharp.snk - -all: $(ASSEMBLY) $(POLICIES) - -EXTRA_DIST = $(TAGLIB_CSFILES) $(taglib_sources_in) $(taglib_policy_configs_in) taglib-sharp.csproj -DISTCLEANFILES = *.pidb -CLEANFILES = $(ASSEMBLY) $(ASSEMBLY).mdb $(POLICIES) taglib-sharp.snk $(DOCFILE) -MAINTAINERCLEANFILES = Makefile.in - -install-data-local: - @if test -n '$(TARGET)'; then \ - echo "$(GACUTIL) /i $(ASSEMBLY) /f $(GACUTIL_FLAGS)"; \ - $(GACUTIL) /i $(ASSEMBLY) /f $(GACUTIL_FLAGS) || exit 1; \ - for POLICY in $(POLICIES); \ - do echo "$(GACUTIL) /i $$POLICY /f $(GACUTIL_POLICY_FLAGS)"; \ - $(GACUTIL) /i $$POLICY /f $(GACUTIL_POLICY_FLAGS) || exit 1; \ - done \ - fi - -uninstall-local: - @if test -n '$(TARGET)'; then \ - echo "$(GACUTIL) /u $(ASSEMBLY_NAME) $(GACUTIL_FLAGS)"; \ - $(GACUTIL) /u $(ASSEMBLY_NAME) $(GACUTIL_FLAGS) || exit 1; \ - for POLICY in $(taglib_policy_names); \ - do echo "$(GACUTIL) /u $$POLICY /f $(GACUTIL_POLICY_FLAGS)"; \ - $(GACUTIL) /u $$POLICY /f $(GACUTIL_POLICY_FLAGS) || exit 1; \ - done \ - fi - -distwin: - mkdir -p $(srcdir)/../$(WINDIR)/Libraries - cp $(srcdir)/*.dll $(srcdir)/*.config $(srcdir)/../$(WINDIR)/Libraries - for FILE in $(TAGLIB_CSFILES) $(taglib_generated_sources); \ - do mkdir -p $(srcdir)/../$(WINDIR)/src/`dirname $$FILE`; \ - cp $$FILE $(srcdir)/../$(WINDIR)/src/`dirname $$FILE`; \ - done diff --git a/taglib-sharp/src/TagLib/Aac/AudioHeader.cs b/taglib-sharp/src/TagLib/Aac/AudioHeader.cs deleted file mode 100644 index 962e6a4b..00000000 --- a/taglib-sharp/src/TagLib/Aac/AudioHeader.cs +++ /dev/null @@ -1,449 +0,0 @@ -// -// AudioHeader.cs: Provides information about an ADTS AAC audio stream. -// -// Copyright (C) 2009 Patrick Dehne -// -// This library is free software; you can redistribute it and/or modify -// it under the terms of the GNU Lesser General Public License version -// 2.1 as published by the Free Software Foundation. -// -// This library is distributed in the hope that it will be useful, but -// WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -// Lesser General Public License for more details. -// -// You should have received a copy of the GNU Lesser General Public -// License along with this library; if not, write to the Free Software -// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 -// USA -// - -using System; - -namespace TagLib.Aac -{ - /// - /// This structure implements and provides - /// information about an ADTS AAC audio stream. - /// - public class AudioHeader : IAudioCodec - { - #region Private Static Value Arrays - - /// - /// Contains a sample rate table for ADTS AAC audio. - /// - private static readonly int[] sample_rates = new int[13] { - 96000, 88200, 64000, 48000, 44100, 32000, - 24000, 22050, 16000, 12000, 11025, 8000, 7350 - }; - - /// - /// Contains a channel table for ADTS AAC audio. - /// - private static readonly int[] channels = new int[8] { - 0, 1, 2, 3, 4, 5, 6, 8 - }; - - #endregion - - - - #region Private Properties - - /// - /// Contains the audio stream length. - /// - private long stream_length; - - /// - /// Contains the audio stream duration. - /// - private TimeSpan duration; - - /// - /// Contains the number of channels in the audio - /// - private int audiochannels; - - /// - /// Contains the bitrate of the audio stream - /// - private int audiobitrate; - - /// - /// Contains the samplerate of the audio stream - /// - private int audiosamplerate; - - #endregion - - - - #region Public Fields - - /// - /// An empty and unset header. - /// - public static readonly AudioHeader Unknown = - new AudioHeader(); - - #endregion - - - - #region Constructors - - /// - /// Constructs and initializes a new empty instance of - /// - private AudioHeader() - { - this.stream_length = 0; - this.duration = TimeSpan.Zero; - this.audiochannels = 0; - this.audiobitrate = 0; - this.audiosamplerate = 0; - } - - /// - /// Constructs and initializes a new instance of by populating it with specified - /// values. - /// - /// - /// A value indicating the number - /// of channels in the audio stream - /// - /// - /// A value indicating the bitrate - /// of the audio stream - /// - /// - /// A value indicating the samplerate - /// of the audio stream - /// - /// - /// A value indicating the number - /// of samples in the audio stream - /// - /// - /// A value indicating the number - /// of frames in the audio stream - /// - private AudioHeader(int channels, int bitrate, - int samplerate, int numberofsamples, int numberofframes) - { - this.duration = TimeSpan.Zero; - this.stream_length = 0; - this.audiochannels = channels; - this.audiobitrate = bitrate; - this.audiosamplerate = samplerate; - } - - #endregion - - - - #region Public Properties - - /// - /// Gets a text description of the media represented by the - /// current instance. - /// - /// - /// A object containing a description - /// of the media represented by the current instance. - /// - public string Description - { - get - { - return "ADTS AAC"; - } - } - - /// - /// Gets the types of media represented by the current - /// instance. - /// - /// - /// Always . - /// - public MediaTypes MediaTypes - { - get { return MediaTypes.Audio; } - } - - /// - /// Gets the duration of the media represented by the current - /// instance. - /// - /// - /// A containing the duration of the - /// media represented by the current instance. - /// - /// - /// If has not been called, this - /// value will not be correct. - /// - public TimeSpan Duration - { - get - { - return duration; - } - } - - /// - /// Gets the bitrate of the audio represented by the current - /// instance. - /// - /// - /// A value containing a bitrate of the - /// audio represented by the current instance. - /// - public int AudioBitrate - { - get - { - return audiobitrate; - } - } - - /// - /// Gets the sample count of the audio represented by the - /// current instance. - /// - /// - /// A value containing the sample count - /// of the audio represented by the current instance. - /// - public long AudioSampleCount - { - get - { - return 0; - } - } - - /// - /// Gets the sample rate of the audio represented by the - /// current instance. - /// - /// - /// A value containing the sample rate of - /// the audio represented by the current instance. - /// - public int AudioSampleRate - { - get - { - return audiosamplerate; - } - } - - /// - /// Gets the number of channels in the audio represented by - /// the current instance. - /// - /// - /// A value containing the number of - /// channels in the audio represented by the current - /// instance. - /// - public int AudioChannels - { - get { return audiochannels; } - } - - #endregion - - - - #region Public Methods - - /// - /// Sets the length of the audio stream represented by the - /// current instance. - /// - /// - /// A value specifying the length in - /// bytes of the audio stream represented by the current - /// instance. - /// - /// - /// The this value has been set, will - /// return an incorrect value. - /// - public void SetStreamLength(long streamLength) - { - this.stream_length = streamLength; - duration = TimeSpan.FromSeconds(((double)this.stream_length) * 8.0 / ((double)this.audiobitrate)); - } - - #endregion - - - - #region Public Static Methods - - /// - /// Searches for an audio header in a starting at a specified position and searching through - /// a specified number of bytes. - /// - /// - /// A object in which the found - /// header will be stored. - /// - /// - /// A object to search. - /// - /// - /// A value specifying the seek position - /// in at which to start searching. - /// - /// - /// A value specifying the maximum number - /// of bytes to search before aborting. - /// - /// - /// A value indicating whether or not a - /// header was found. - /// - /// - /// is . - /// - public static bool Find(out AudioHeader header, - TagLib.File file, long position, int length) - { - if (file == null) - throw new ArgumentNullException("file"); - - long end = position + length; - header = AudioHeader.Unknown; - - file.Seek(position); - - ByteVector buffer = file.ReadBlock(3); - - if (buffer.Count < 3) - return false; - - do - { - file.Seek(position + 3); - buffer = buffer.Mid(buffer.Count - 3); - buffer.Add(file.ReadBlock( - (int)File.BufferSize)); - - for (int i = 0; i < buffer.Count - 3 && - (length < 0 || position + i < end); i++) - if (buffer[i] == 0xFF - && buffer[i+1] >= 0xF0) // 0xFFF - try - { - BitStream bits = new BitStream(buffer.Mid(i, 7).Data); - - // 12 bits sync header - bits.ReadInt32(12); - - // 1 bit mpeg 2/4 - bits.ReadInt32(1); - - // 2 bits layer - bits.ReadInt32(2); - - // 1 bit protection absent - bits.ReadInt32(1); - - // 2 bits profile object type - bits.ReadInt32(2); - - // 4 bits sampling frequency index - int samplerateindex = bits.ReadInt32(4); - if(samplerateindex >= sample_rates.Length) - return false; - long samplerate = sample_rates[samplerateindex]; - - // 1 bit private bit - bits.ReadInt32(1); - - // 3 bits channel configuration - int channelconfigindex = bits.ReadInt32(3); - if (channelconfigindex >= channels.Length) - return false; - - // 4 copyright bits - bits.ReadInt32(4); - - // 13 bits frame length - long framelength = bits.ReadInt32(13); // double check framelength - if (framelength < 7) - return false; - - // 11 bits buffer fullness - bits.ReadInt32(11); - - // 2 bits number of raw data blocks in frame - int numberofframes = bits.ReadInt32(2) + 1; - - long numberofsamples = numberofframes * 1024; - long bitrate = framelength * 8 * samplerate / numberofsamples; - - header = new AudioHeader(channels[channelconfigindex], - (int)bitrate, - (int)samplerate, - (int)numberofsamples, - numberofframes); - - return true; - } - catch (CorruptFileException) - { - } - - position += File.BufferSize; - } while (buffer.Count > 3 && (length < 0 || position < end)); - - return false; - } - - /// - /// Searches for an audio header in a starting at a specified position and searching to the - /// end of the file. - /// - /// - /// A object in which the found - /// header will be stored. - /// - /// - /// A object to search. - /// - /// - /// A value specifying the seek position - /// in at which to start searching. - /// - /// - /// A value indicating whether or not a - /// header was found. - /// - /// - /// Searching to the end of the file can be very, very slow - /// especially for corrupt or non-MPEG files. It is - /// recommended to use - /// instead. - /// - public static bool Find(out AudioHeader header, - TagLib.File file, long position) - { - return Find(out header, file, position, -1); - } - - #endregion - } -} diff --git a/taglib-sharp/src/TagLib/Aac/BitStream.cs b/taglib-sharp/src/TagLib/Aac/BitStream.cs deleted file mode 100644 index 02798672..00000000 --- a/taglib-sharp/src/TagLib/Aac/BitStream.cs +++ /dev/null @@ -1,110 +0,0 @@ -// -// BitStream.cs: Helper to read bits from a byte array. -// -// Copyright (C) 2009 Patrick Dehne -// -// This library is free software; you can redistribute it and/or modify -// it under the terms of the GNU Lesser General Public License version -// 2.1 as published by the Free Software Foundation. -// -// This library is distributed in the hope that it will be useful, but -// WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -// Lesser General Public License for more details. -// -// You should have received a copy of the GNU Lesser General Public -// License along with this library; if not, write to the Free Software -// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 -// USA -// - -using System; -using System.Collections.Generic; -using System.Text; -using System.Collections; -using System.Diagnostics; - -namespace TagLib.Aac -{ - /// - /// This class is used to help reading arbitary number of bits from - /// a fixed array of bytes - /// - public class BitStream - { - #region Private Fields - - private BitArray bits; - private int bitindex; - - #endregion - - - - #region Constructors - - /// - /// Construct a new . - /// - /// - /// A , must be 7 bytes long. - /// - public BitStream(byte[] buffer) - { - Debug.Assert(buffer.Length == 7, "buffer.Length == 7", "buffer size invalid"); - - if (buffer.Length != 7) - throw new ArgumentException("Buffer size must be 7 bytes"); - - // Reverse bits - bits = new BitArray(buffer.Length * 8); - for (int i = 0; i < buffer.Length; i++) - { - for (int y = 0; y < 8; y++) - { - bits[i * 8 + y] = ((buffer[i] & (1 << (7 - y))) > 0); - } - } - - bitindex = 0; - } - - #endregion - - - - #region Public Methods - - /// - /// Reads an Int32 from the bitstream - /// - /// - /// A value containing the number - /// of bits to read from the bitstream - /// - public int ReadInt32(int numberOfBits) - { - Debug.Assert(numberOfBits > 0, "numberOfBits < 1"); - Debug.Assert(numberOfBits <= 32, "numberOfBits <= 32"); - - if (numberOfBits <= 0) - throw new ArgumentException("Number of bits to read must be >= 1"); - - if (numberOfBits > 32) - throw new ArgumentException("Number of bits to read must be <= 32"); - - int value = 0; - int start = bitindex + numberOfBits - 1; - for (int i = 0; i < numberOfBits; i++) - { - value += bits[start] ? (1 << i) : 0; - bitindex++; - start--; - } - - return value; - } - - #endregion - } -} diff --git a/taglib-sharp/src/TagLib/Aac/File.cs b/taglib-sharp/src/TagLib/Aac/File.cs deleted file mode 100644 index d9d14eb3..00000000 --- a/taglib-sharp/src/TagLib/Aac/File.cs +++ /dev/null @@ -1,282 +0,0 @@ -// -// File.cs: Provides tagging and properties support for ADTS AAC files -// -// Here is the ADTS Header description used for implementation: -// http://www.hydrogenaudio.org/forums/lofiversion/index.php/t21617.html -// -// Copyright (C) 2009 Patrick Dehne -// -// This library is free software; you can redistribute it and/or modify -// it under the terms of the GNU Lesser General Public License version -// 2.1 as published by the Free Software Foundation. -// -// This library is distributed in the hope that it will be useful, but -// WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -// Lesser General Public License for more details. -// -// You should have received a copy of the GNU Lesser General Public -// License along with this library; if not, write to the Free Software -// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 -// USA -// - -using System; -using System.Collections.Generic; -using System.Text; - -namespace TagLib.Aac -{ - /// - /// This class extends to - /// provide tagging and properties support for ADTS AAC audio files. - /// - /// - /// A and will be added automatically to any - /// file that doesn't contain one. This change does not effect the - /// file until it is saved and can be reversed using the following - /// method: - /// file.RemoveTags (file.TagTypes & ~file.TagTypesOnDisk); - /// - [SupportedMimeType("taglib/aac", "aac")] - [SupportedMimeType("audio/aac")] - public class File : TagLib.NonContainer.File - { - #region Private Fields - - /// - /// Contains the first audio header. - /// - private AudioHeader first_header; - - #endregion - - - - #region Constructors - - /// - /// Constructs and initializes a new instance of for a specified path in the local - /// file system and specified read style. - /// - /// - /// A object containing the path of the - /// file to use in the new instance. - /// - /// - /// A value specifying at what level - /// of accuracy to read the media properties, or to ignore the properties. - /// - /// - /// is . - /// - public File (string path, ReadStyle propertiesStyle) - : base (path, propertiesStyle) - { - } - - /// - /// Constructs and initializes a new instance of for a specified path in the local - /// file system with an average read style. - /// - /// - /// A object containing the path of the - /// file to use in the new instance. - /// - /// - /// is . - /// - public File (string path) : base (path) - { - } - - /// - /// Constructs and initializes a new instance of for a specified file abstraction and - /// specified read style. - /// - /// - /// A object to use when - /// reading from and writing to the file. - /// - /// - /// A value specifying at what level - /// of accuracy to read the media properties, or to ignore the properties. - /// - /// - /// is . - /// - public File (File.IFileAbstraction abstraction, - ReadStyle propertiesStyle) - : base (abstraction, propertiesStyle) - { - } - - /// - /// Constructs and initializes a new instance of for a specified file abstraction with - /// an average read style. - /// - /// - /// A object to use when - /// reading from and writing to the file. - /// - /// - /// is . - /// - public File (File.IFileAbstraction abstraction) - : base (abstraction) - { - } - - #endregion - - - - #region Public Methods - - /// - /// Gets a tag of a specified type from the current instance, - /// optionally creating a new tag if possible. - /// - /// - /// A value indicating the - /// type of tag to read. - /// - /// - /// A value specifying whether or not to - /// try and create the tag if one is not found. - /// - /// - /// A object containing the tag that was - /// found in or added to the current instance. If no - /// matching tag was found and none was created, is returned. - /// - /// - /// If a is added to the - /// current instance, it will be placed at the start of the - /// file. On the other hand, - /// will be added to the end of - /// the file. All other tag types will be ignored. - /// - public override TagLib.Tag GetTag (TagTypes type, bool create) - { - Tag t = (Tag as TagLib.NonContainer.Tag).GetTag (type); - - if (t != null || !create) - return t; - - switch (type) - { - case TagTypes.Id3v1: - return EndTag.AddTag (type, Tag); - - case TagTypes.Id3v2: - return StartTag.AddTag (type, Tag); - - case TagTypes.Ape: - return EndTag.AddTag (type, Tag); - - default: - return null; - } - } - - #endregion - - - - #region Protected Methods - - /// - /// Reads format specific information at the start of the - /// file. - /// - /// - /// A value containing the seek position - /// at which the tags end and the media data begins. - /// - /// - /// A value specifying at what level - /// of accuracy to read the media properties, or to ignore the properties. - /// - /// - /// This method only searches for an audio header in the - /// first 16384 bytes of code to avoid searching forever in - /// corrupt files. - /// - protected override void ReadStart (long start, - ReadStyle propertiesStyle) - { - // Only check the first 16 bytes so we're not stuck - // reading a bad file forever. - if (propertiesStyle != ReadStyle.None && - !AudioHeader.Find (out first_header, this, - start, 0x4000)) - throw new CorruptFileException ( - "ADTS audio header not found."); - } - - /// - /// Reads format specific information at the end of the - /// file. - /// - /// - /// A value containing the seek position - /// at which the media data ends and the tags begin. - /// - /// - /// A value specifying at what level - /// of accuracy to read the media properties, or to ignore the properties. - /// - protected override void ReadEnd (long end, - ReadStyle propertiesStyle) - { - // Make sure we have ID3v1 and ID3v2 tags. - GetTag (TagTypes.Id3v1, true); - GetTag (TagTypes.Id3v2, true); - } - - /// - /// Reads the audio properties from the file represented by - /// the current instance. - /// - /// - /// A value containing the seek position - /// at which the tags end and the media data begins. - /// - /// - /// A value containing the seek position - /// at which the media data ends and the tags begin. - /// - /// - /// A value specifying at what level - /// of accuracy to read the media properties, or to ignore the properties. - /// - /// - /// A object describing the - /// media properties of the file represented by the current - /// instance. - /// - protected override Properties ReadProperties (long start, - long end, - ReadStyle propertiesStyle) - { - first_header.SetStreamLength (end - start); - return new Properties (TimeSpan.Zero, first_header); - } - - #endregion - } -} diff --git a/taglib-sharp/src/TagLib/Aiff/File.cs b/taglib-sharp/src/TagLib/Aiff/File.cs deleted file mode 100644 index 55bd63e8..00000000 --- a/taglib-sharp/src/TagLib/Aiff/File.cs +++ /dev/null @@ -1,481 +0,0 @@ -// -// File.cs: Provides tagging and properties support for Apple's AIFF -// files. -// -// Author: -// Helmut Wahrmann -// -// Copyright (C) 2009 Helmut Wahrmann -// -// This library is free software; you can redistribute it and/or modify -// it under the terms of the GNU Lesser General Public License version -// 2.1 as published by the Free Software Foundation. -// -// This library is distributed in the hope that it will be useful, but -// WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -// Lesser General Public License for more details. -// -// You should have received a copy of the GNU Lesser General Public -// License along with this library; if not, write to the Free Software -// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 -// USA -// - -using System; -using TagLib.Id3v2; - -namespace TagLib.Aiff -{ - /// - /// This class extends to provide - /// support for reading and writing tags and properties for files - /// using the AIFF file format. - /// - [SupportedMimeType("taglib/aif", "aif")] - [SupportedMimeType("audio/x-aiff")] - [SupportedMimeType("audio/aiff")] - [SupportedMimeType("sound/aiff")] - [SupportedMimeType("application/x-aiff")] - public class File : TagLib.File - { - #region Private Fields - - /// - /// Contains the address of the AIFF header block. - /// - private ByteVector header_block = null; - - /// - /// Contains the Id3v2 tag. - /// - private Id3v2.Tag tag = null; - - /// - /// Contains the media properties. - /// - private Properties properties = null; - - #endregion - - #region Public Static Fields - - /// - /// The identifier used to recognize a AIFF files. - /// - /// - /// "FORM" - /// - public static readonly ReadOnlyByteVector FileIdentifier = "FORM"; - - /// - /// The identifier used to recognize a AIFF Common chunk. - /// - /// - /// "COMM" - /// - public static readonly ReadOnlyByteVector CommIdentifier = "COMM"; - - /// - /// The identifier used to recognize a AIFF Sound Data Chunk. - /// - /// - /// "SSND" - /// - public static readonly ReadOnlyByteVector SoundIdentifier = "SSND"; - - /// - /// The identifier used to recognize a AIFF ID3 chunk. - /// - /// - /// "ID3 " - /// - public static readonly ReadOnlyByteVector ID3Identifier = "ID3 "; - - #endregion - - #region Public Constructors - - /// - /// Constructs and initializes a new instance of for a specified path in the local file - /// system and specified read style. - /// - /// - /// A object containing the path of the - /// file to use in the new instance. - /// - /// - /// A value specifying at what level - /// of accuracy to read the media properties, or to ignore the properties. - /// - /// - /// is . - /// - public File(string path, ReadStyle propertiesStyle) - : this(new File.LocalFileAbstraction(path), - propertiesStyle) - { - } - - /// - /// Constructs and initializes a new instance of for a specified path in the local file - /// system with an average read style. - /// - /// - /// A object containing the path of the - /// file to use in the new instance. - /// - /// - /// is . - /// - public File(string path) - : this(path, ReadStyle.Average) - { - } - - /// - /// Constructs and initializes a new instance of for a specified file abstraction and - /// specified read style. - /// - /// - /// A object to use when - /// reading from and writing to the file. - /// - /// - /// A value specifying at what level - /// of accuracy to read the media properties, or to ignore the properties. - /// - /// - /// is . - /// - public File(File.IFileAbstraction abstraction, - ReadStyle propertiesStyle) - : base(abstraction) - { - Mode = AccessMode.Read; - try - { - uint aiff_size; - long tag_start, tag_end; - Read(true, propertiesStyle, out aiff_size, - out tag_start, out tag_end); - } - finally - { - Mode = AccessMode.Closed; - } - - TagTypesOnDisk = TagTypes; - - GetTag(TagTypes.Id3v2, true); - } - - /// - /// Constructs and initializes a new instance of for a specified file abstraction with an - /// average read style. - /// - /// - /// A object to use when - /// reading from and writing to the file. - /// - /// - /// is . - /// - public File(File.IFileAbstraction abstraction) - : this(abstraction, ReadStyle.Average) - { - } - - #endregion - - #region Public Properties - - /// - /// Gets a abstract representation of all tags stored in the - /// current instance. - /// - /// - /// A object representing all tags - /// stored in the current instance. - /// - public override Tag Tag - { - get { return tag; } - } - - /// - /// Gets the media properties of the file represented by the - /// current instance. - /// - /// - /// A object containing the - /// media properties of the file represented by the current - /// instance. - /// - public override TagLib.Properties Properties - { - get { return properties; } - } - - #endregion - - #region Public Methods - - /// - /// Saves the changes made in the current instance to the - /// file it represents. - /// - public override void Save() - { - Mode = AccessMode.Write; - try - { - ByteVector data = new ByteVector(); - - // Add the ID3 chunk and ID32 tag to the vector - if (tag != null) - { - ByteVector tag_data = tag.Render(); - if (tag_data.Count > 10) - { - if (tag_data.Count%2 == 1) - tag_data.Add(0); - - data.Add("ID3 "); - data.Add(ByteVector.FromUInt( - (uint) tag_data.Count, - true)); - data.Add(tag_data); - } - } - - // Read the file to determine the current AIFF - // size and the area tagging is in. - uint aiff_size; - long tag_start, tag_end; - Read(false, ReadStyle.None, out aiff_size, - out tag_start, out tag_end); - - // If tagging info cannot be found, place it at - // the end of the file. - if (tag_start < 12 || tag_end < tag_start) - tag_start = tag_end = Length; - - int length = (int) (tag_end - tag_start + 8); - - // Insert the tagging data. - Insert(data, tag_start, length); - - // If the data size changed update the aiff size. - if (data.Count - length != 0 && - tag_start <= aiff_size) - { - // Depending, if a Tag has been added or removed, - // the length needs to be adjusted - if (tag == null) - { - length -= 16; - } - else - { - length -= 8; - } - - Insert(ByteVector.FromUInt((uint) - (aiff_size + data.Count - length), - true), 4, 4); - } - // Update the tag types. - TagTypesOnDisk = TagTypes; - } - finally - { - Mode = AccessMode.Closed; - } - } - - /// - /// Removes a set of tag types from the current instance. - /// - /// - /// A bitwise combined value - /// containing tag types to be removed from the file. - /// - /// - /// In order to remove all tags from a file, pass as . - /// - public override void RemoveTags(TagTypes types) - { - if (types == TagLib.TagTypes.Id3v2 || - types == TagLib.TagTypes.AllTags) - { - tag = null; - } - } - - /// - /// Gets a tag of a specified type from the current instance, - /// optionally creating a new tag if possible. - /// - /// - /// A value indicating the - /// type of tag to read. - /// - /// - /// A value specifying whether or not to - /// try and create the tag if one is not found. - /// - /// - /// A object containing the tag that was - /// found in or added to the current instance. If no - /// matching tag was found and none was created, is returned. - /// - public override TagLib.Tag GetTag(TagTypes type, bool create) - { - TagLib.Tag id32_tag = null; - - switch (type) - { - case TagTypes.Id3v2: - if (tag == null && create) - { - tag = new Id3v2.Tag(); - tag.Version = 2; - } - - id32_tag = tag; - break; - } - - return id32_tag; - } - - #endregion - - #region Private Methods - - /// - /// Reads the contents of the current instance determining - /// the size of the riff data, the area the tagging is in, - /// and optionally reading in the tags and media properties. - /// - /// - /// If , any tags found will be read - /// into the current instance. - /// - /// - /// A value specifying how the media - /// data is to be read into the current instance. - /// - /// - /// A value reference to be filled with - /// the size of the RIFF data as read from the file. - /// - /// - /// A value reference to be filled with - /// the absolute seek position at which the tagging data - /// starts. - /// - /// - /// A value reference to be filled with - /// the absolute seek position at which the tagging data - /// ends. - /// - /// - /// The file does not begin with . - /// - private void Read(bool read_tags, ReadStyle style, - out uint aiff_size, out long tag_start, - out long tag_end) - { - Seek(0); - if (ReadBlock(4) != FileIdentifier) - throw new CorruptFileException( - "File does not begin with AIFF identifier"); - - aiff_size = ReadBlock(4).ToUInt(true); - tag_start = -1; - tag_end = -1; - - // Get the properties of the file - if (header_block == null && - style != ReadStyle.None) - { - long common_chunk_pos = Find(CommIdentifier, 0); - - if (common_chunk_pos == -1) - { - throw new CorruptFileException( - "No Common chunk available in AIFF file."); - } - - Seek(common_chunk_pos); - header_block = ReadBlock((int) StreamHeader.Size); - - StreamHeader header = new StreamHeader(header_block, aiff_size); - properties = new Properties(TimeSpan.Zero, header); - } - - // Now we search for the ID3 chunk. - // Normally it appears after the Sound data chunk. But as the order of - // chunks is free, it might be the case that the ID3 chunk appears before - // the sound data chunk. - // So we search first for the Sound data chunk and see, if an ID3 chunk appears before - long id3_chunk_pos = -1; - long sound_chunk_pos = Find(SoundIdentifier, 0, ID3Identifier); - if (sound_chunk_pos == -1) - { - // The ID3 chunk appears before the Sound chunk - id3_chunk_pos = Find(ID3Identifier, 0); - } - - // Now let's look for the Sound chunk again - // Since a previous return value of -1 does mean, that the ID3 chunk was found first - sound_chunk_pos = Find(SoundIdentifier, 0); - if (sound_chunk_pos == -1) - { - throw new CorruptFileException( - "No Sound chunk available in AIFF file."); - } - - // Get the length of the Sound chunk and use this as a start value to look for the ID3 chunk - Seek(sound_chunk_pos + 4); - ulong sound_chunk_length = ReadBlock(4).ToULong(true); - long start_search_pos = (long) sound_chunk_length + sound_chunk_pos + 4; - - if (id3_chunk_pos == -1) - { - id3_chunk_pos = Find(ID3Identifier, start_search_pos); - } - - if (id3_chunk_pos > -1) - { - if (read_tags && tag == null) - { - tag = new Id3v2.Tag(this, - id3_chunk_pos + 8); - } - - // Get the length of the tag out of the ID3 chunk - Seek(id3_chunk_pos + 4); - uint tag_size = ReadBlock(4).ToUInt(true) + 8; - - tag_start = InvariantStartPosition = id3_chunk_pos; - tag_end = InvariantEndPosition = tag_start + tag_size; - } - } - - #endregion - } -} diff --git a/taglib-sharp/src/TagLib/Aiff/StreamHeader.cs b/taglib-sharp/src/TagLib/Aiff/StreamHeader.cs deleted file mode 100644 index e3a51b2e..00000000 --- a/taglib-sharp/src/TagLib/Aiff/StreamHeader.cs +++ /dev/null @@ -1,340 +0,0 @@ -// -// StreamHeader.cs: Provides support for reading Apple's AIFF stream -// properties. -// -// Author: -// Helmut Wahrmann -// -// Copyright (C) 2009 Helmut Wahrmann -// -// This library is free software; you can redistribute it and/or modify -// it under the terms of the GNU Lesser General Public License version -// 2.1 as published by the Free Software Foundation. -// -// This library is distributed in the hope that it will be useful, but -// WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -// Lesser General Public License for more details. -// -// You should have received a copy of the GNU Lesser General Public -// License along with this library; if not, write to the Free Software -// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 -// USA -// - -using System; -using System.Globalization; - -namespace TagLib.Aiff -{ - /// - /// This struct implements to provide - /// support for reading Apple's AIFF stream properties. - /// - public struct StreamHeader : IAudioCodec, ILosslessAudioCodec - { - #region Private Fields - - /// - /// Contains the number of channels. - /// - /// - /// This value is stored in bytes (9,10). - /// 1 is monophonic, 2 is stereo, 4 means 4 channels, etc.. - /// any number of audio channels may be represented - /// - private ushort channels; - - /// - /// Contains the number of sample frames in the Sound Data chunk. - /// - /// - /// This value is stored in bytes (11-14). - /// - private ulong total_frames; - - /// - /// Contains the number of bits per sample. - /// - /// - /// This value is stored in bytes (15,16). - /// It can be any number from 1 to 32. - /// - private ushort bits_per_sample; - - /// - /// Contains the sample rate. - /// - /// - /// This value is stored in bytes (17-26). - /// the sample rate at which the sound is to be played back, - /// in sample frames per second - /// - private ulong sample_rate; - - /// - /// Contains the length of the audio stream. - /// - /// - /// This value is provided by the constructor. - /// - private long stream_length; - - #endregion - - #region Public Static Fields - - /// - /// The size of an AIFF Common chunk - /// - public const uint Size = 26; - - /// - /// The identifier used to recognize a AIFF file. - /// Altough an AIFF file start with "FORM2, we're interested - /// in the Common chunk only, which contains the properties we need. - /// - /// - /// "COMM" - /// - public static readonly ReadOnlyByteVector FileIdentifier = - "COMM"; - - #endregion - - #region Constructors - - /// - /// Constructs and initializes a new instance of for a specified header block and - /// stream length. - /// - /// - /// A object containing the stream - /// header data. - /// - /// - /// A value containing the length of the - /// AIFF Audio stream in bytes. - /// - /// - /// is . - /// - /// - /// does not begin with - /// - public StreamHeader(ByteVector data, long streamLength) - { - if (data == null) - throw new ArgumentNullException("data"); - - - if (!data.StartsWith(FileIdentifier)) - throw new CorruptFileException( - "Data does not begin with identifier."); - - stream_length = streamLength; - - // The first 8 bytes contain the Common chunk identifier "COMM" - // And the size of the common chunk, which is always 18 - channels = data.Mid(8, 2).ToUShort(true); - total_frames = data.Mid(10, 4).ToULong(true); - bits_per_sample = data.Mid(14, 2).ToUShort(true); - - ByteVector sample_rate_indicator = data.Mid(17, 1); - ulong sample_rate_tmp = data.Mid(18, 2).ToULong(true); - sample_rate = 44100; // Set 44100 as default sample rate - - // The following are combinations that iTunes 8 encodes to. - // There may be other combinations in the field, but i couldn't test them. - switch (sample_rate_tmp) - { - case 44100: - if (sample_rate_indicator == 0x0E) - { - sample_rate = 44100; - } - else if (sample_rate_indicator == 0x0D) - { - sample_rate = 22050; - } - else if (sample_rate_indicator == 0x0C) - { - sample_rate = 11025; - } - break; - - case 48000: - if (sample_rate_indicator == 0x0E) - { - sample_rate = 48000; - } - else if (sample_rate_indicator == 0x0D) - { - sample_rate = 24000; - } - break; - - case 64000: - if (sample_rate_indicator == 0x0D) - { - sample_rate = 32000; - } - else if (sample_rate_indicator == 0x0C) - { - sample_rate = 16000; - } - else if (sample_rate_indicator == 0x0B) - { - sample_rate = 8000; - } - break; - - case 44510: - if (sample_rate_indicator == 0x0D) - { - sample_rate = 22255; - } - break; - - case 44508: - if (sample_rate_indicator == 0x0C) - { - sample_rate = 11127; - } - break; - } - } - - #endregion - - #region Public Properties - - /// - /// Gets the duration of the media represented by the current - /// instance. - /// - /// - /// A containing the duration of the - /// media represented by the current instance. - /// - public TimeSpan Duration - { - get - { - if (sample_rate <= 0 || total_frames <= 0) - return TimeSpan.Zero; - - return TimeSpan.FromSeconds( - (double) total_frames/ - (double) sample_rate); - } - } - - /// - /// Gets the types of media represented by the current - /// instance. - /// - /// - /// Always . - /// - public MediaTypes MediaTypes - { - get { return MediaTypes.Audio; } - } - - /// - /// Gets a text description of the media represented by the - /// current instance. - /// - /// - /// A object containing a description - /// of the media represented by the current instance. - /// - public string Description - { - get { return "AIFF Audio"; } - } - - /// - /// Gets the bitrate of the audio represented by the current - /// instance. - /// - /// - /// A value containing a bitrate of the - /// audio represented by the current instance. - /// - public int AudioBitrate - { - get - { - TimeSpan d = Duration; - if (d <= TimeSpan.Zero) - return 0; - - return (int) ((stream_length*8L)/ - d.TotalSeconds)/1000; - } - } - - /// - /// Gets the sample count of the audio represented by the - /// current instance. - /// - /// - /// A value containing the sample count - /// of the audio represented by the current instance. - /// - public long AudioSampleCount - { - get - { - return 0; - } - } - - /// - /// Gets the sample rate of the audio represented by the - /// current instance. - /// - /// - /// A value containing the sample rate of - /// the audio represented by the current instance. - /// - public int AudioSampleRate - { - get { return (int) sample_rate; } - } - - /// - /// Gets the number of channels in the audio represented by - /// the current instance. - /// - /// - /// A value containing the number of - /// channels in the audio represented by the current - /// instance. - /// - public int AudioChannels - { - get { return channels; } - } - - /// - /// Gets the number of bits per sample in the audio - /// represented by the current instance. - /// - /// - /// A value containing the number of bits - /// per sample in the audio represented by the current - /// instance. - /// - public int BitsPerSample - { - get { return bits_per_sample; } - } - - #endregion - } -} diff --git a/taglib-sharp/src/TagLib/Ape/File.cs b/taglib-sharp/src/TagLib/Ape/File.cs deleted file mode 100644 index 31f61ecd..00000000 --- a/taglib-sharp/src/TagLib/Ape/File.cs +++ /dev/null @@ -1,280 +0,0 @@ -// -// File.cs: Provides tagging and properties support for Monkey's Audio APE -// files. -// -// Author: -// Helmut Wahrmann -// -// Copyright (C) 2007 Helmut Wahrmann -// Copyright (C) 2007 Brian Nickel -// -// This library is free software; you can redistribute it and/or modify -// it under the terms of the GNU Lesser General Public License version -// 2.1 as published by the Free Software Foundation. -// -// This library is distributed in the hope that it will be useful, but -// WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -// Lesser General Public License for more details. -// -// You should have received a copy of the GNU Lesser General Public -// License along with this library; if not, write to the Free Software -// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 -// USA -// - -using System; - -namespace TagLib.Ape { - /// - /// This class extends to - /// provide tagging and properties support for Monkey's Audio APE - /// files. - /// - /// - /// A will be added automatically to - /// any file that doesn't contain one. This change does not effect - /// the physical file until is called and can be - /// reversed using the following method: - /// file.RemoveTags (file.TagTypes & ~file.TagTypesOnDisk); - /// - [SupportedMimeType("taglib/ape", "ape")] - [SupportedMimeType("audio/x-ape")] - [SupportedMimeType("audio/ape")] - [SupportedMimeType("application/x-ape")] - public class File : TagLib.NonContainer.File - { - #region Private Fields - - /// - /// Contains the block with the audio header. - /// - private ByteVector header_block = null; - - #endregion - - - - #region Constructors - - /// - /// Constructs and initializes a new instance of for a specified path in the local file - /// system and specified read style. - /// - /// - /// A object containing the path of the - /// file to use in the new instance. - /// - /// - /// A value specifying at what level - /// of accuracy to read the media properties, or to ignore the properties. - /// - /// - /// is . - /// - public File (string path, ReadStyle propertiesStyle) - : base (path, propertiesStyle) - { - } - - /// - /// Constructs and initializes a new instance of for a specified path in the local file - /// system with an average read style. - /// - /// - /// A object containing the path of the - /// file to use in the new instance. - /// - /// - /// is . - /// - public File (string path) - : base (path) - { - } - - /// - /// Constructs and initializes a new instance of for a specified file abstraction and - /// specified read style. - /// - /// - /// A object to use when - /// reading from and writing to the file. - /// - /// - /// A value specifying at what level - /// of accuracy to read the media properties, or to ignore the properties. - /// - /// - /// is . - /// - public File (File.IFileAbstraction abstraction, - ReadStyle propertiesStyle) - : base (abstraction, propertiesStyle) - { - } - - /// - /// Constructs and initializes a new instance of for a specified file abstraction with an - /// average read style. - /// - /// - /// A object to use when - /// reading from and writing to the file. - /// - /// - /// is . - /// - public File (File.IFileAbstraction abstraction) - : base (abstraction) - { - } - - #endregion - - - - #region Public Methods - - /// - /// Gets a tag of a specified type from the current instance, - /// optionally creating a new tag if possible. - /// - /// - /// A value indicating the - /// type of tag to read. - /// - /// - /// A value specifying whether or not to - /// try and create the tag if one is not found. - /// - /// - /// A object containing the tag that was - /// found in or added to the current instance. If no - /// matching tag was found and none was created, is returned. - /// - /// - /// If a is added to the - /// current instance, it will be placed at the start of the - /// file. On the other hand, - /// will be added to the end of - /// the file. All other tag types will be ignored. - /// - public override TagLib.Tag GetTag(TagTypes type, bool create) - { - TagLib.Tag t = (Tag as TagLib.NonContainer.Tag) - .GetTag (type); - - if (t != null || !create) - return t; - - switch (type) - { - case TagTypes.Id3v1: - return EndTag.AddTag (type, Tag); - - case TagTypes.Id3v2: - return StartTag.AddTag (type, Tag); - - case TagTypes.Ape: - return EndTag.AddTag (type, Tag); - - default: - return null; - } - } - - #endregion - - - - #region Protected Methods - - /// - /// Reads format specific information at the start of the - /// file. - /// - /// - /// A value containing the seek position - /// at which the tags end and the media data begins. - /// - /// - /// A value specifying at what level - /// of accuracy to read the media properties, or to ignore the properties. - /// - protected override void ReadStart (long start, - ReadStyle propertiesStyle) - { - if (header_block != null && - propertiesStyle == ReadStyle.None) - return; - - Seek(start); - header_block = ReadBlock ((int)StreamHeader.Size); - } - - /// - /// Reads format specific information at the end of the - /// file. - /// - /// - /// A value containing the seek position - /// at which the media data ends and the tags begin. - /// - /// - /// A value specifying at what level - /// of accuracy to read the media properties, or to ignore the properties. - /// - protected override void ReadEnd (long end, - ReadStyle propertiesStyle) - { - // Make sure we have an APE tag. - GetTag (TagTypes.Ape, true); - } - - /// - /// Reads the audio properties from the file represented by - /// the current instance. - /// - /// - /// A value containing the seek position - /// at which the tags end and the media data begins. - /// - /// - /// A value containing the seek position - /// at which the media data ends and the tags begin. - /// - /// - /// A value specifying at what level - /// of accuracy to read the media properties, or to ignore the properties. - /// - /// - /// A object describing the - /// media properties of the file represented by the current - /// instance. - /// - protected override Properties ReadProperties (long start, - long end, - ReadStyle propertiesStyle) - { - StreamHeader header = new StreamHeader (header_block, - end - start); - - return new Properties(TimeSpan.Zero, header); - } - - #endregion - } -} diff --git a/taglib-sharp/src/TagLib/Ape/Footer.cs b/taglib-sharp/src/TagLib/Ape/Footer.cs deleted file mode 100644 index c55626b3..00000000 --- a/taglib-sharp/src/TagLib/Ape/Footer.cs +++ /dev/null @@ -1,418 +0,0 @@ -// -// Footer.cs: Provides a representation of an APEv2 tag footer which can be read -// from and written to disk. -// -// Author: -// Brian Nickel (brian.nickel@gmail.com) -// -// Original Source: -// apefooter.cpp from TagLib -// -// Copyright (C) 2005-2007 Brian Nickel -// Copyright (C) 2004 Allan Sandfeld Jensen (Original Implementation) -// copyright (C) 2002, 2003 Scott Wheeler (Original Implementation) -// -// This library is free software; you can redistribute it and/or modify -// it under the terms of the GNU Lesser General Public License version -// 2.1 as published by the Free Software Foundation. -// -// This library is distributed in the hope that it will be useful, but -// WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -// Lesser General Public License for more details. -// -// You should have received a copy of the GNU Lesser General Public -// License along with this library; if not, write to the Free Software -// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 -// USA -// - -using System; - -namespace TagLib.Ape { - #region Enums - - /// - /// Indicates the flags applied to a object. - /// - [Flags] - public enum FooterFlags : uint { - /// - /// The tag lacks a footer object. - /// - FooterAbsent = 0x40000000, - - /// - /// The footer is actually a header. - /// - IsHeader = 0x20000000, - - /// - /// The tag contains a header. - /// - HeaderPresent = 0x80000000 - } - - #endregion - - - - /// - /// This structure provides a representation of an APEv2 tag footer - /// which can be read from and written to disk. - /// - public struct Footer : IEquatable