1dd9eb897ee7c7b507cbdcf80263bb4b5de6966bfTeng-Hui Zhu/*
2dd9eb897ee7c7b507cbdcf80263bb4b5de6966bfTeng-Hui Zhu * Copyright 2012 Sebastian Annies, Hamburg
3dd9eb897ee7c7b507cbdcf80263bb4b5de6966bfTeng-Hui Zhu *
4dd9eb897ee7c7b507cbdcf80263bb4b5de6966bfTeng-Hui Zhu * Licensed under the Apache License, Version 2.0 (the License);
5dd9eb897ee7c7b507cbdcf80263bb4b5de6966bfTeng-Hui Zhu * you may not use this file except in compliance with the License.
6dd9eb897ee7c7b507cbdcf80263bb4b5de6966bfTeng-Hui Zhu * You may obtain a copy of the License at
7dd9eb897ee7c7b507cbdcf80263bb4b5de6966bfTeng-Hui Zhu *
8dd9eb897ee7c7b507cbdcf80263bb4b5de6966bfTeng-Hui Zhu *     http://www.apache.org/licenses/LICENSE-2.0
9dd9eb897ee7c7b507cbdcf80263bb4b5de6966bfTeng-Hui Zhu *
10dd9eb897ee7c7b507cbdcf80263bb4b5de6966bfTeng-Hui Zhu * Unless required by applicable law or agreed to in writing, software
11dd9eb897ee7c7b507cbdcf80263bb4b5de6966bfTeng-Hui Zhu * distributed under the License is distributed on an AS IS BASIS,
12dd9eb897ee7c7b507cbdcf80263bb4b5de6966bfTeng-Hui Zhu * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13dd9eb897ee7c7b507cbdcf80263bb4b5de6966bfTeng-Hui Zhu * See the License for the specific language governing permissions and
14dd9eb897ee7c7b507cbdcf80263bb4b5de6966bfTeng-Hui Zhu * limitations under the License.
15dd9eb897ee7c7b507cbdcf80263bb4b5de6966bfTeng-Hui Zhu */
16dd9eb897ee7c7b507cbdcf80263bb4b5de6966bfTeng-Hui Zhupackage com.googlecode.mp4parser.authoring;
17dd9eb897ee7c7b507cbdcf80263bb4b5de6966bfTeng-Hui Zhu
18dd9eb897ee7c7b507cbdcf80263bb4b5de6966bfTeng-Hui Zhuimport java.util.Date;
19dd9eb897ee7c7b507cbdcf80263bb4b5de6966bfTeng-Hui Zhu
20dd9eb897ee7c7b507cbdcf80263bb4b5de6966bfTeng-Hui Zhu/**
21dd9eb897ee7c7b507cbdcf80263bb4b5de6966bfTeng-Hui Zhu *
22dd9eb897ee7c7b507cbdcf80263bb4b5de6966bfTeng-Hui Zhu */
23dd9eb897ee7c7b507cbdcf80263bb4b5de6966bfTeng-Hui Zhupublic class TrackMetaData implements Cloneable {
24dd9eb897ee7c7b507cbdcf80263bb4b5de6966bfTeng-Hui Zhu    private String language;
25dd9eb897ee7c7b507cbdcf80263bb4b5de6966bfTeng-Hui Zhu    private long timescale;
26dd9eb897ee7c7b507cbdcf80263bb4b5de6966bfTeng-Hui Zhu    private Date modificationTime = new Date();
27dd9eb897ee7c7b507cbdcf80263bb4b5de6966bfTeng-Hui Zhu    private Date creationTime = new Date();
28dd9eb897ee7c7b507cbdcf80263bb4b5de6966bfTeng-Hui Zhu    private double width;
29dd9eb897ee7c7b507cbdcf80263bb4b5de6966bfTeng-Hui Zhu    private double height;
30dd9eb897ee7c7b507cbdcf80263bb4b5de6966bfTeng-Hui Zhu    private float volume;
31dd9eb897ee7c7b507cbdcf80263bb4b5de6966bfTeng-Hui Zhu    private long trackId = 1; // zero is not allowed
32dd9eb897ee7c7b507cbdcf80263bb4b5de6966bfTeng-Hui Zhu    private int group = 0;
3336e04c3847e93ccf4c3e0cde617eecea72c2605dTeng-Hui Zhu    private long[] matrix = new long[]{0x00010000, 0, 0, 0, 0x00010000, 0, 0, 0, 0x40000000};
34dd9eb897ee7c7b507cbdcf80263bb4b5de6966bfTeng-Hui Zhu
35dd9eb897ee7c7b507cbdcf80263bb4b5de6966bfTeng-Hui Zhu
36dd9eb897ee7c7b507cbdcf80263bb4b5de6966bfTeng-Hui Zhu    /**
37dd9eb897ee7c7b507cbdcf80263bb4b5de6966bfTeng-Hui Zhu     * specifies the front-to-back ordering of video tracks; tracks with lower
38dd9eb897ee7c7b507cbdcf80263bb4b5de6966bfTeng-Hui Zhu     * numbers are closer to the viewer. 0 is the normal value, and -1 would be
39dd9eb897ee7c7b507cbdcf80263bb4b5de6966bfTeng-Hui Zhu     * in front of track 0, and so on.
40dd9eb897ee7c7b507cbdcf80263bb4b5de6966bfTeng-Hui Zhu     */
41dd9eb897ee7c7b507cbdcf80263bb4b5de6966bfTeng-Hui Zhu    int layer;
42dd9eb897ee7c7b507cbdcf80263bb4b5de6966bfTeng-Hui Zhu
43dd9eb897ee7c7b507cbdcf80263bb4b5de6966bfTeng-Hui Zhu    public String getLanguage() {
44dd9eb897ee7c7b507cbdcf80263bb4b5de6966bfTeng-Hui Zhu        return language;
45dd9eb897ee7c7b507cbdcf80263bb4b5de6966bfTeng-Hui Zhu    }
46dd9eb897ee7c7b507cbdcf80263bb4b5de6966bfTeng-Hui Zhu
47dd9eb897ee7c7b507cbdcf80263bb4b5de6966bfTeng-Hui Zhu    public void setLanguage(String language) {
48dd9eb897ee7c7b507cbdcf80263bb4b5de6966bfTeng-Hui Zhu        this.language = language;
49dd9eb897ee7c7b507cbdcf80263bb4b5de6966bfTeng-Hui Zhu    }
50dd9eb897ee7c7b507cbdcf80263bb4b5de6966bfTeng-Hui Zhu
51dd9eb897ee7c7b507cbdcf80263bb4b5de6966bfTeng-Hui Zhu    public long getTimescale() {
52dd9eb897ee7c7b507cbdcf80263bb4b5de6966bfTeng-Hui Zhu        return timescale;
53dd9eb897ee7c7b507cbdcf80263bb4b5de6966bfTeng-Hui Zhu    }
54dd9eb897ee7c7b507cbdcf80263bb4b5de6966bfTeng-Hui Zhu
55dd9eb897ee7c7b507cbdcf80263bb4b5de6966bfTeng-Hui Zhu    public void setTimescale(long timescale) {
56dd9eb897ee7c7b507cbdcf80263bb4b5de6966bfTeng-Hui Zhu        this.timescale = timescale;
57dd9eb897ee7c7b507cbdcf80263bb4b5de6966bfTeng-Hui Zhu    }
58dd9eb897ee7c7b507cbdcf80263bb4b5de6966bfTeng-Hui Zhu
59dd9eb897ee7c7b507cbdcf80263bb4b5de6966bfTeng-Hui Zhu    public Date getModificationTime() {
60dd9eb897ee7c7b507cbdcf80263bb4b5de6966bfTeng-Hui Zhu        return modificationTime;
61dd9eb897ee7c7b507cbdcf80263bb4b5de6966bfTeng-Hui Zhu    }
62dd9eb897ee7c7b507cbdcf80263bb4b5de6966bfTeng-Hui Zhu
63dd9eb897ee7c7b507cbdcf80263bb4b5de6966bfTeng-Hui Zhu    public void setModificationTime(Date modificationTime) {
64dd9eb897ee7c7b507cbdcf80263bb4b5de6966bfTeng-Hui Zhu        this.modificationTime = modificationTime;
65dd9eb897ee7c7b507cbdcf80263bb4b5de6966bfTeng-Hui Zhu    }
66dd9eb897ee7c7b507cbdcf80263bb4b5de6966bfTeng-Hui Zhu
67dd9eb897ee7c7b507cbdcf80263bb4b5de6966bfTeng-Hui Zhu    public Date getCreationTime() {
68dd9eb897ee7c7b507cbdcf80263bb4b5de6966bfTeng-Hui Zhu        return creationTime;
69dd9eb897ee7c7b507cbdcf80263bb4b5de6966bfTeng-Hui Zhu    }
70dd9eb897ee7c7b507cbdcf80263bb4b5de6966bfTeng-Hui Zhu
71dd9eb897ee7c7b507cbdcf80263bb4b5de6966bfTeng-Hui Zhu    public void setCreationTime(Date creationTime) {
72dd9eb897ee7c7b507cbdcf80263bb4b5de6966bfTeng-Hui Zhu        this.creationTime = creationTime;
73dd9eb897ee7c7b507cbdcf80263bb4b5de6966bfTeng-Hui Zhu    }
74dd9eb897ee7c7b507cbdcf80263bb4b5de6966bfTeng-Hui Zhu
75dd9eb897ee7c7b507cbdcf80263bb4b5de6966bfTeng-Hui Zhu    public double getWidth() {
76dd9eb897ee7c7b507cbdcf80263bb4b5de6966bfTeng-Hui Zhu        return width;
77dd9eb897ee7c7b507cbdcf80263bb4b5de6966bfTeng-Hui Zhu    }
78dd9eb897ee7c7b507cbdcf80263bb4b5de6966bfTeng-Hui Zhu
79dd9eb897ee7c7b507cbdcf80263bb4b5de6966bfTeng-Hui Zhu    public void setWidth(double width) {
80dd9eb897ee7c7b507cbdcf80263bb4b5de6966bfTeng-Hui Zhu        this.width = width;
81dd9eb897ee7c7b507cbdcf80263bb4b5de6966bfTeng-Hui Zhu    }
82dd9eb897ee7c7b507cbdcf80263bb4b5de6966bfTeng-Hui Zhu
8336e04c3847e93ccf4c3e0cde617eecea72c2605dTeng-Hui Zhu    public long[] getMatrix() {
8436e04c3847e93ccf4c3e0cde617eecea72c2605dTeng-Hui Zhu        return matrix;
8536e04c3847e93ccf4c3e0cde617eecea72c2605dTeng-Hui Zhu    }
8636e04c3847e93ccf4c3e0cde617eecea72c2605dTeng-Hui Zhu
8736e04c3847e93ccf4c3e0cde617eecea72c2605dTeng-Hui Zhu    public void setMatrix(long[] m) {
8836e04c3847e93ccf4c3e0cde617eecea72c2605dTeng-Hui Zhu        this.matrix = m;
8936e04c3847e93ccf4c3e0cde617eecea72c2605dTeng-Hui Zhu    }
9036e04c3847e93ccf4c3e0cde617eecea72c2605dTeng-Hui Zhu
91dd9eb897ee7c7b507cbdcf80263bb4b5de6966bfTeng-Hui Zhu    public double getHeight() {
92dd9eb897ee7c7b507cbdcf80263bb4b5de6966bfTeng-Hui Zhu        return height;
93dd9eb897ee7c7b507cbdcf80263bb4b5de6966bfTeng-Hui Zhu    }
94dd9eb897ee7c7b507cbdcf80263bb4b5de6966bfTeng-Hui Zhu
95dd9eb897ee7c7b507cbdcf80263bb4b5de6966bfTeng-Hui Zhu    public void setHeight(double height) {
96dd9eb897ee7c7b507cbdcf80263bb4b5de6966bfTeng-Hui Zhu        this.height = height;
97dd9eb897ee7c7b507cbdcf80263bb4b5de6966bfTeng-Hui Zhu    }
98dd9eb897ee7c7b507cbdcf80263bb4b5de6966bfTeng-Hui Zhu
99dd9eb897ee7c7b507cbdcf80263bb4b5de6966bfTeng-Hui Zhu    public long getTrackId() {
100dd9eb897ee7c7b507cbdcf80263bb4b5de6966bfTeng-Hui Zhu        return trackId;
101dd9eb897ee7c7b507cbdcf80263bb4b5de6966bfTeng-Hui Zhu    }
102dd9eb897ee7c7b507cbdcf80263bb4b5de6966bfTeng-Hui Zhu
103dd9eb897ee7c7b507cbdcf80263bb4b5de6966bfTeng-Hui Zhu    public void setTrackId(long trackId) {
104dd9eb897ee7c7b507cbdcf80263bb4b5de6966bfTeng-Hui Zhu        this.trackId = trackId;
105dd9eb897ee7c7b507cbdcf80263bb4b5de6966bfTeng-Hui Zhu    }
106dd9eb897ee7c7b507cbdcf80263bb4b5de6966bfTeng-Hui Zhu
107dd9eb897ee7c7b507cbdcf80263bb4b5de6966bfTeng-Hui Zhu    public int getLayer() {
108dd9eb897ee7c7b507cbdcf80263bb4b5de6966bfTeng-Hui Zhu        return layer;
109dd9eb897ee7c7b507cbdcf80263bb4b5de6966bfTeng-Hui Zhu    }
110dd9eb897ee7c7b507cbdcf80263bb4b5de6966bfTeng-Hui Zhu
111dd9eb897ee7c7b507cbdcf80263bb4b5de6966bfTeng-Hui Zhu    public void setLayer(int layer) {
112dd9eb897ee7c7b507cbdcf80263bb4b5de6966bfTeng-Hui Zhu        this.layer = layer;
113dd9eb897ee7c7b507cbdcf80263bb4b5de6966bfTeng-Hui Zhu    }
114dd9eb897ee7c7b507cbdcf80263bb4b5de6966bfTeng-Hui Zhu
115dd9eb897ee7c7b507cbdcf80263bb4b5de6966bfTeng-Hui Zhu    public float getVolume() {
116dd9eb897ee7c7b507cbdcf80263bb4b5de6966bfTeng-Hui Zhu        return volume;
117dd9eb897ee7c7b507cbdcf80263bb4b5de6966bfTeng-Hui Zhu    }
118dd9eb897ee7c7b507cbdcf80263bb4b5de6966bfTeng-Hui Zhu
119dd9eb897ee7c7b507cbdcf80263bb4b5de6966bfTeng-Hui Zhu    public void setVolume(float volume) {
120dd9eb897ee7c7b507cbdcf80263bb4b5de6966bfTeng-Hui Zhu        this.volume = volume;
121dd9eb897ee7c7b507cbdcf80263bb4b5de6966bfTeng-Hui Zhu    }
122dd9eb897ee7c7b507cbdcf80263bb4b5de6966bfTeng-Hui Zhu
123dd9eb897ee7c7b507cbdcf80263bb4b5de6966bfTeng-Hui Zhu    public int getGroup() {
124dd9eb897ee7c7b507cbdcf80263bb4b5de6966bfTeng-Hui Zhu        return group;
125dd9eb897ee7c7b507cbdcf80263bb4b5de6966bfTeng-Hui Zhu    }
126dd9eb897ee7c7b507cbdcf80263bb4b5de6966bfTeng-Hui Zhu
127dd9eb897ee7c7b507cbdcf80263bb4b5de6966bfTeng-Hui Zhu    public void setGroup(int group) {
128dd9eb897ee7c7b507cbdcf80263bb4b5de6966bfTeng-Hui Zhu        this.group = group;
129dd9eb897ee7c7b507cbdcf80263bb4b5de6966bfTeng-Hui Zhu    }
130dd9eb897ee7c7b507cbdcf80263bb4b5de6966bfTeng-Hui Zhu
131dd9eb897ee7c7b507cbdcf80263bb4b5de6966bfTeng-Hui Zhu    public Object clone() {
132dd9eb897ee7c7b507cbdcf80263bb4b5de6966bfTeng-Hui Zhu        try {
133dd9eb897ee7c7b507cbdcf80263bb4b5de6966bfTeng-Hui Zhu            return super.clone();
134dd9eb897ee7c7b507cbdcf80263bb4b5de6966bfTeng-Hui Zhu        } catch (CloneNotSupportedException e) {
135dd9eb897ee7c7b507cbdcf80263bb4b5de6966bfTeng-Hui Zhu            return null;
136dd9eb897ee7c7b507cbdcf80263bb4b5de6966bfTeng-Hui Zhu        }
137dd9eb897ee7c7b507cbdcf80263bb4b5de6966bfTeng-Hui Zhu    }
138dd9eb897ee7c7b507cbdcf80263bb4b5de6966bfTeng-Hui Zhu
139dd9eb897ee7c7b507cbdcf80263bb4b5de6966bfTeng-Hui Zhu}
140