1 /*
2  * Copyright 2008 CoreMedia AG, Hamburg
3  *
4  * Licensed under the Apache License, Version 2.0 (the License);
5  * you may not use this file except in compliance with the License.
6  * You may obtain a copy of the License at
7  *
8  *     http://www.apache.org/licenses/LICENSE-2.0
9  *
10  * Unless required by applicable law or agreed to in writing, software
11  * distributed under the License is distributed on an AS IS BASIS,
12  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13  * See the License for the specific language governing permissions and
14  * limitations under the License.
15  */
16 
17 package com.coremedia.iso.boxes;
18 
19 import com.coremedia.iso.IsoTypeReader;
20 import com.coremedia.iso.IsoTypeWriter;
21 
22 import java.nio.ByteBuffer;
23 
24 /**
25  * The hint media header contains general information, independent of the protocaol, for hint tracks. Resides
26  * in Media Information Box.
27  *
28  * @see com.coremedia.iso.boxes.MediaInformationBox
29  */
30 public class HintMediaHeaderBox extends AbstractMediaHeaderBox {
31     private int maxPduSize;
32     private int avgPduSize;
33     private long maxBitrate;
34     private long avgBitrate;
35     public static final String TYPE = "hmhd";
36 
HintMediaHeaderBox()37     public HintMediaHeaderBox() {
38         super(TYPE);
39     }
40 
getMaxPduSize()41     public int getMaxPduSize() {
42         return maxPduSize;
43     }
44 
getAvgPduSize()45     public int getAvgPduSize() {
46         return avgPduSize;
47     }
48 
getMaxBitrate()49     public long getMaxBitrate() {
50         return maxBitrate;
51     }
52 
getAvgBitrate()53     public long getAvgBitrate() {
54         return avgBitrate;
55     }
56 
getContentSize()57     protected long getContentSize() {
58         return 20;
59     }
60 
61     @Override
_parseDetails(ByteBuffer content)62     public void _parseDetails(ByteBuffer content) {
63         parseVersionAndFlags(content);
64         maxPduSize = IsoTypeReader.readUInt16(content);
65         avgPduSize = IsoTypeReader.readUInt16(content);
66         maxBitrate = IsoTypeReader.readUInt32(content);
67         avgBitrate = IsoTypeReader.readUInt32(content);
68         IsoTypeReader.readUInt32(content);    // reserved!
69 
70     }
71 
72     @Override
getContent(ByteBuffer byteBuffer)73     protected void getContent(ByteBuffer byteBuffer) {
74         writeVersionAndFlags(byteBuffer);
75         IsoTypeWriter.writeUInt16(byteBuffer, maxPduSize);
76         IsoTypeWriter.writeUInt16(byteBuffer, avgPduSize);
77         IsoTypeWriter.writeUInt32(byteBuffer, maxBitrate);
78         IsoTypeWriter.writeUInt32(byteBuffer, avgBitrate);
79         IsoTypeWriter.writeUInt32(byteBuffer, 0);
80     }
81 
82     @Override
toString()83     public String toString() {
84         return "HintMediaHeaderBox{" +
85                 "maxPduSize=" + maxPduSize +
86                 ", avgPduSize=" + avgPduSize +
87                 ", maxBitrate=" + maxBitrate +
88                 ", avgBitrate=" + avgBitrate +
89                 '}';
90     }
91 }
92