diff options
author | Jef <jef@targetspot.com> | 2024-09-24 08:54:57 -0400 |
---|---|---|
committer | Jef <jef@targetspot.com> | 2024-09-24 08:54:57 -0400 |
commit | 20d28e80a5c861a9d5f449ea911ab75b4f37ad0d (patch) | |
tree | 12f17f78986871dd2cfb0a56e5e93b545c1ae0d0 /Src/external_dependencies/libmp4v2/atom_meta.cpp | |
parent | 537bcbc86291b32fc04ae4133ce4d7cac8ebe9a7 (diff) | |
download | winamp-20d28e80a5c861a9d5f449ea911ab75b4f37ad0d.tar.gz |
Initial community commit
Diffstat (limited to 'Src/external_dependencies/libmp4v2/atom_meta.cpp')
-rw-r--r-- | Src/external_dependencies/libmp4v2/atom_meta.cpp | 117 |
1 files changed, 117 insertions, 0 deletions
diff --git a/Src/external_dependencies/libmp4v2/atom_meta.cpp b/Src/external_dependencies/libmp4v2/atom_meta.cpp new file mode 100644 index 00000000..d2d3a5b8 --- /dev/null +++ b/Src/external_dependencies/libmp4v2/atom_meta.cpp @@ -0,0 +1,117 @@ +/* + * The contents of this file are subject to the Mozilla Public + * License Version 1.1 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.mozilla.org/MPL/ + * + * Software distributed under the License is distributed on an "AS + * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or + * implied. See the License for the specific language governing + * rights and limitations under the License. + * + * The Original Code is MPEG4IP. + * + * The Initial Developer of the Original Code is Cisco Systems Inc. + * Portions created by Cisco Systems Inc. are + * Copyright (C) Cisco Systems Inc. 2001. All Rights Reserved. + * + * Contributor(s): + * M. Bakker mbakker at nero.com + * + * Apple iTunes META data + */ + +#include "mp4common.h" + +MP4Meta1Atom::MP4Meta1Atom(const char *name) + : MP4Atom(name) +{ + AddVersionAndFlags(); /* 0, 1 */ + + AddProperty(new MP4BytesProperty("metadata")); /* 2 */ +} + +void MP4Meta1Atom::Read() +{ + // calculate size of the metadata from the atom size + ((MP4BytesProperty*)m_pProperties[2])->SetValueSize(m_size - 4); + + MP4Atom::Read(); +} + +MP4DataAtom::MP4DataAtom() + : MP4Atom("data") +{ + AddVersionAndFlags(); /* 0, 1 */ + AddReserved("reserved2", 4); /* 2 */ + + AddProperty( + new MP4BytesProperty("metadata")); /* 3 */ +} + +void MP4DataAtom::Read() +{ + // calculate size of the metadata from the atom size + ((MP4BytesProperty*)m_pProperties[3])->SetValueSize(m_size - 8); + + MP4Atom::Read(); +} + + +// MP4Meta2Atom is for \251nam and \251cmt flags, which appear differently +// in .mov and in itunes file. In .movs, they appear under udata, in +// itunes, they appear under ilst. +MP4Meta2Atom::MP4Meta2Atom (const char *name) : MP4Atom(name) +{ +} + +void MP4Meta2Atom::Read () +{ + MP4Atom *parent = GetParentAtom(); + if (ATOMID(parent->GetType()) == ATOMID("udta")) { + // add data property + AddReserved("reserved2", 4); /* 0 */ + + AddProperty( + new MP4BytesProperty("metadata")); /* 1 */ + ((MP4BytesProperty*)m_pProperties[1])->SetValueSize(m_size - 4); + } else { + ExpectChildAtom("data", Required, OnlyOne); + } + MP4Atom::Read(); +} + + +MP4Meta3Atom::MP4Meta3Atom (const char *name) : MP4Atom(name) +{ + // add data property + AddReserved("reserved2", 4); /* 0 */ + AddProperty(new MP4Integer16Property("language")); + + MP4StringProperty *strProp = new MP4StringProperty("metadata"); + strProp->SetUnicode(true); + AddProperty(strProp); /* 3 */ +} + +void MP4Meta3Atom::Read () +{ + + + MP4Atom::Read(); +} + +MP4Meta4Atom::MP4Meta4Atom (const char *name) : MP4Atom(name) +{ + + // add data property + AddReserved("reserved2", 4); /* 0 */ + + AddProperty(new MP4Integer16Property("metadata")); /* 1 */ + +} + +void MP4Meta4Atom::Read () +{ + + MP4Atom::Read(); +} |