comparison Plugins/Input/aac/libmp4v2/atom_d263.cpp @ 61:fa848bd484d8 trunk

[svn] Move plugins to Plugins/
author nenolod
date Fri, 28 Oct 2005 22:58:11 -0700
parents
children
comparison
equal deleted inserted replaced
60:1771f253e1b2 61:fa848bd484d8
1 /*
2 * The contents of this file are subject to the Mozilla Public
3 * License Version 1.1 (the "License"); you may not use this file
4 * except in compliance with the License. You may obtain a copy of
5 * the License at http://www.mozilla.org/MPL/
6 *
7 * Software distributed under the License is distributed on an "AS
8 * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or
9 * implied. See the License for the specific language governing
10 * rights and limitations under the License.
11 *
12 * The Original Code is MPEG4IP.
13 *
14 * The Initial Developer of the Original Code is Cisco Systems Inc.
15 * Portions created by Cisco Systems Inc. are
16 * Copyright (C) Cisco Systems Inc. 2001. All Rights Reserved.
17 *
18 * 3GPP features implementation is based on 3GPP's TS26.234-v5.60,
19 * and was contributed by Ximpo Group Ltd.
20 *
21 * Portions created by Ximpo Group Ltd. are
22 * Copyright (C) Ximpo Group Ltd. 2003, 2004. All Rights Reserved.
23 *
24 * Contributor(s):
25 * Ximpo Group Ltd. mp4v2@ximpo.com
26 */
27
28 #include "mp4common.h"
29
30 #define H263_VENDOR 0x6d346970
31
32 MP4D263Atom::MP4D263Atom()
33 : MP4Atom("d263")
34 {
35 AddProperty( /* 0 */
36 new MP4Integer32Property("vendor"));
37
38 AddProperty( /* 1 */
39 new MP4Integer8Property("decoderVersion"));
40
41 AddProperty( /* 2 */
42 new MP4Integer8Property("h263Level"));
43
44 AddProperty( /* 3 */
45 new MP4Integer8Property("h263Profile"));
46
47 ExpectChildAtom("bitr", Optional, OnlyOne);
48
49 }
50
51 void MP4D263Atom::Generate()
52 {
53 MP4Atom::Generate();
54
55 ((MP4Integer32Property*)m_pProperties[0])->SetValue(H263_VENDOR);
56 ((MP4Integer8Property*)m_pProperties[1])->SetValue(1);
57
58 }
59
60 void MP4D263Atom::Write()
61 {
62 // Check whether we have valid values in the bitr atom
63 // (if it exists, of course)
64 MP4Atom* bitrAtom = FindAtom("d263.bitr");
65 if (bitrAtom) {
66 u_int32_t avgBitrate;
67 u_int32_t maxBitrate;
68
69 MP4Integer32Property* pProp;
70 bitrAtom->FindProperty("bitr.avgBitrate",
71 (MP4Property**)&pProp,
72 NULL);
73 ASSERT(pProp);
74 avgBitrate = pProp->GetValue();
75
76 bitrAtom->FindProperty("bitr.maxBitrate",
77 (MP4Property**)&pProp,
78 NULL);
79 ASSERT(pProp);
80 maxBitrate = pProp->GetValue();
81
82 if(!maxBitrate && !avgBitrate) {
83 DeleteChildAtom(bitrAtom);
84 }
85 }
86
87 MP4Atom::Write();
88 }