Home | History | Annotate | Download | only in boxes
      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 import com.coremedia.iso.Utf8;
     22 import com.googlecode.mp4parser.AbstractFullBox;
     23 
     24 import java.nio.ByteBuffer;
     25 
     26 /**
     27  * <code>
     28  * Box Type: 'titl'<br>
     29  * Container: {@link UserDataBox} ('udta')<br>
     30  * Mandatory: No<br>
     31  * Quantity: Zero or one<br><br>
     32  * </code>
     33  * <p/>
     34  * Title for the media.
     35  */
     36 public class TitleBox extends AbstractFullBox {
     37     public static final String TYPE = "titl";
     38 
     39     private String language;
     40     private String title;
     41 
     42     public TitleBox() {
     43         super(TYPE);
     44     }
     45 
     46     public String getLanguage() {
     47         return language;
     48     }
     49 
     50     public String getTitle() {
     51         return title;
     52     }
     53 
     54     /**
     55      * Sets the 3-letter ISO-639 language for this title.
     56      *
     57      * @param language 3-letter ISO-639 code
     58      */
     59     public void setLanguage(String language) {
     60         this.language = language;
     61     }
     62 
     63     public void setTitle(String title) {
     64         this.title = title;
     65     }
     66 
     67     protected long getContentSize() {
     68         return 7 + Utf8.utf8StringLengthInBytes(title);
     69     }
     70 
     71 
     72     protected void getContent(ByteBuffer byteBuffer) {
     73         writeVersionAndFlags(byteBuffer);
     74         IsoTypeWriter.writeIso639(byteBuffer, language);
     75         byteBuffer.put(Utf8.convert(title));
     76         byteBuffer.put((byte) 0);
     77     }
     78 
     79     @Override
     80     public void _parseDetails(ByteBuffer content) {
     81         parseVersionAndFlags(content);
     82         language = IsoTypeReader.readIso639(content);
     83         title = IsoTypeReader.readString(content);
     84     }
     85 
     86     public String toString() {
     87         return "TitleBox[language=" + getLanguage() + ";title=" + getTitle() + "]";
     88     }
     89 }
     90