| /* |
| * 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 "src/impl.h" |
| |
| namespace mp4v2 { namespace impl { |
| |
| /////////////////////////////////////////////////////////////////////////////// |
| |
| MP4DataAtom::MP4DataAtom(MP4File &file) |
| : MP4Atom ( file, "data" ) |
| , typeReserved ( *new MP4Integer16Property( *this, "typeReserved" )) |
| , typeSetIdentifier ( *new MP4Integer8Property( *this, "typeSetIdentifier" )) |
| , typeCode ( *new MP4BasicTypeProperty( *this, "typeCode" )) |
| , locale ( *new MP4Integer32Property( *this, "locale" )) |
| , metadata ( *new MP4BytesProperty( *this, "metadata" )) |
| { |
| AddProperty( &typeReserved ); |
| AddProperty( &typeSetIdentifier ); |
| AddProperty( &typeCode ); |
| AddProperty( &locale ); |
| AddProperty( &metadata ); |
| } |
| |
| void |
| MP4DataAtom::Read() |
| { |
| // calculate size of the metadata from the atom size |
| metadata.SetValueSize( m_size - 8 ); |
| MP4Atom::Read(); |
| } |
| |
| /////////////////////////////////////////////////////////////////////////////// |
| |
| MP4FullAtom::MP4FullAtom( MP4File &file, const char* type ) |
| : MP4Atom ( file, type ) |
| , version ( *new MP4Integer8Property( *this, "version" )) |
| , flags ( *new MP4Integer24Property( *this, "flags" )) |
| { |
| AddProperty( &version ); |
| AddProperty( &flags ); |
| } |
| |
| /////////////////////////////////////////////////////////////////////////////// |
| |
| MP4ItemAtom::MP4ItemAtom( MP4File &file, const char* type ) |
| : MP4Atom( file, type ) |
| { |
| ExpectChildAtom( "mean", Optional, OnlyOne ); |
| ExpectChildAtom( "name", Optional, OnlyOne ); |
| ExpectChildAtom( "data", Required, Many ); |
| } |
| |
| /////////////////////////////////////////////////////////////////////////////// |
| |
| MP4ItmfHdlrAtom::MP4ItmfHdlrAtom(MP4File &file) |
| : MP4FullAtom ( file, "hdlr" ) |
| , reserved1 ( *new MP4Integer32Property( *this, "reserved1" )) |
| , handlerType ( *new MP4BytesProperty( *this, "handlerType", 4 )) |
| , reserved2 ( *new MP4BytesProperty( *this, "reserved2", 12 )) |
| , name ( *new MP4BytesProperty( *this, "name", 1 )) |
| { |
| AddProperty( &reserved1 ); |
| AddProperty( &handlerType ); |
| AddProperty( &reserved2 ); |
| AddProperty( &name ); |
| |
| const uint8_t htData[] = { 'm', 'd', 'i', 'r' }; |
| handlerType.SetValue( htData, sizeof( htData )); |
| |
| const uint8_t nameData[] = { 0 }; |
| name.SetValue( nameData, sizeof( nameData )); |
| } |
| |
| void |
| MP4ItmfHdlrAtom::Read() |
| { |
| name.SetValueSize( m_size - 24 ); |
| MP4FullAtom::Read(); |
| } |
| |
| /////////////////////////////////////////////////////////////////////////////// |
| |
| MP4MeanAtom::MP4MeanAtom(MP4File &file) |
| : MP4FullAtom ( file, "mean" ) |
| , value ( *new MP4BytesProperty( *this, "value" )) |
| { |
| AddProperty( &value ); |
| } |
| |
| void |
| MP4MeanAtom::Read() |
| { |
| value.SetValueSize( m_size - 4 ); |
| MP4Atom::Read(); |
| } |
| |
| /////////////////////////////////////////////////////////////////////////////// |
| |
| MP4NameAtom::MP4NameAtom(MP4File &file) |
| : MP4FullAtom ( file, "name" ) |
| , value ( *new MP4BytesProperty( *this, "value" )) |
| { |
| AddProperty( &value ); |
| } |
| |
| void |
| MP4NameAtom::Read() |
| { |
| value.SetValueSize( m_size - 4 ); |
| MP4FullAtom::Read(); |
| } |
| |
| /////////////////////////////////////////////////////////////////////////////// |
| |
| MP4UdtaElementAtom::MP4UdtaElementAtom( MP4File &file, const char* type ) |
| : MP4Atom ( file, type ) |
| , value ( *new MP4BytesProperty( *this, "value" )) |
| { |
| AddProperty( &value ); |
| } |
| |
| void |
| MP4UdtaElementAtom::Read() |
| { |
| // calculate size of the metadata from the atom size |
| value.SetValueSize( m_size ); |
| MP4Atom::Read(); |
| } |
| |
| /////////////////////////////////////////////////////////////////////////////// |
| |
| }} // namespace mp4v2::impl |