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 LocationInformationBox()25 public LocationInformationBox() { 26 super(TYPE); 27 } 28 getLanguage()29 public String getLanguage() { 30 return language; 31 } 32 setLanguage(String language)33 public void setLanguage(String language) { 34 this.language = language; 35 } 36 getName()37 public String getName() { 38 return name; 39 } 40 setName(String name)41 public void setName(String name) { 42 this.name = name; 43 } 44 getRole()45 public int getRole() { 46 return role; 47 } 48 setRole(int role)49 public void setRole(int role) { 50 this.role = role; 51 } 52 getLongitude()53 public double getLongitude() { 54 return longitude; 55 } 56 setLongitude(double longitude)57 public void setLongitude(double longitude) { 58 this.longitude = longitude; 59 } 60 getLatitude()61 public double getLatitude() { 62 return latitude; 63 } 64 setLatitude(double latitude)65 public void setLatitude(double latitude) { 66 this.latitude = latitude; 67 } 68 getAltitude()69 public double getAltitude() { 70 return altitude; 71 } 72 setAltitude(double altitude)73 public void setAltitude(double altitude) { 74 this.altitude = altitude; 75 } 76 getAstronomicalBody()77 public String getAstronomicalBody() { 78 return astronomicalBody; 79 } 80 setAstronomicalBody(String astronomicalBody)81 public void setAstronomicalBody(String astronomicalBody) { 82 this.astronomicalBody = astronomicalBody; 83 } 84 getAdditionalNotes()85 public String getAdditionalNotes() { 86 return additionalNotes; 87 } 88 setAdditionalNotes(String additionalNotes)89 public void setAdditionalNotes(String additionalNotes) { 90 this.additionalNotes = additionalNotes; 91 } 92 getContentSize()93 protected long getContentSize() { 94 return 22 + Utf8.convert(name).length + Utf8.convert(astronomicalBody).length + Utf8.convert(additionalNotes).length; 95 } 96 97 @Override _parseDetails(ByteBuffer content)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 getContent(ByteBuffer byteBuffer)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