Home | History | Annotate | Download | only in threegpp26244
      1 package com.coremedia.iso.boxes.threegpp26244;
      2 
      3 import com.coremedia.iso.IsoTypeReader;
      4 import com.coremedia.iso.IsoTypeWriter;
      5 import com.coremedia.iso.Utf8;
      6 import com.googlecode.mp4parser.AbstractFullBox;
      7 
      8 import java.nio.ByteBuffer;
      9 
     10 /**
     11  * Location Information Box as specified in TS 26.244.
     12  */
     13 public class LocationInformationBox extends AbstractFullBox {
     14     public static final String TYPE = "loci";
     15 
     16     private String language;
     17     private String name = "";
     18     private int role;
     19     private double longitude;
     20     private double latitude;
     21     private double altitude;
     22     private String astronomicalBody = "";
     23     private String additionalNotes = "";
     24 
     25     public LocationInformationBox() {
     26         super(TYPE);
     27     }
     28 
     29     public String getLanguage() {
     30         return language;
     31     }
     32 
     33     public void setLanguage(String language) {
     34         this.language = language;
     35     }
     36 
     37     public String getName() {
     38         return name;
     39     }
     40 
     41     public void setName(String name) {
     42         this.name = name;
     43     }
     44 
     45     public int getRole() {
     46         return role;
     47     }
     48 
     49     public void setRole(int role) {
     50         this.role = role;
     51     }
     52 
     53     public double getLongitude() {
     54         return longitude;
     55     }
     56 
     57     public void setLongitude(double longitude) {
     58         this.longitude = longitude;
     59     }
     60 
     61     public double getLatitude() {
     62         return latitude;
     63     }
     64 
     65     public void setLatitude(double latitude) {
     66         this.latitude = latitude;
     67     }
     68 
     69     public double getAltitude() {
     70         return altitude;
     71     }
     72 
     73     public void setAltitude(double altitude) {
     74         this.altitude = altitude;
     75     }
     76 
     77     public String getAstronomicalBody() {
     78         return astronomicalBody;
     79     }
     80 
     81     public void setAstronomicalBody(String astronomicalBody) {
     82         this.astronomicalBody = astronomicalBody;
     83     }
     84 
     85     public String getAdditionalNotes() {
     86         return additionalNotes;
     87     }
     88 
     89     public void setAdditionalNotes(String additionalNotes) {
     90         this.additionalNotes = additionalNotes;
     91     }
     92 
     93     protected long getContentSize() {
     94         return 22 + Utf8.convert(name).length + Utf8.convert(astronomicalBody).length + Utf8.convert(additionalNotes).length;
     95     }
     96 
     97     @Override
     98     public void _parseDetails(ByteBuffer content) {
     99         parseVersionAndFlags(content);
    100         language = IsoTypeReader.readIso639(content);
    101         name = IsoTypeReader.readString(content);
    102         role = IsoTypeReader.readUInt8(content);
    103         longitude = IsoTypeReader.readFixedPoint1616(content);
    104         latitude = IsoTypeReader.readFixedPoint1616(content);
    105         altitude = IsoTypeReader.readFixedPoint1616(content);
    106         astronomicalBody = IsoTypeReader.readString(content);
    107         additionalNotes = IsoTypeReader.readString(content);
    108     }
    109 
    110 
    111     @Override
    112     protected void getContent(ByteBuffer byteBuffer) {
    113         writeVersionAndFlags(byteBuffer);
    114         IsoTypeWriter.writeIso639(byteBuffer, language);
    115         byteBuffer.put(Utf8.convert(name));
    116         byteBuffer.put((byte) 0);
    117         IsoTypeWriter.writeUInt8(byteBuffer, role);
    118         IsoTypeWriter.writeFixedPont1616(byteBuffer, longitude);
    119         IsoTypeWriter.writeFixedPont1616(byteBuffer, latitude);
    120         IsoTypeWriter.writeFixedPont1616(byteBuffer, altitude);
    121         byteBuffer.put(Utf8.convert(astronomicalBody));
    122         byteBuffer.put((byte) 0);
    123         byteBuffer.put(Utf8.convert(additionalNotes));
    124         byteBuffer.put((byte) 0);
    125     }
    126 }
    127