package com.coremedia.iso.boxes.threegpp26244; import com.coremedia.iso.IsoTypeReader; import com.coremedia.iso.IsoTypeWriter; import com.coremedia.iso.Utf8; import com.googlecode.mp4parser.AbstractFullBox; import java.nio.ByteBuffer; /** * Location Information Box as specified in TS 26.244. */ public class LocationInformationBox extends AbstractFullBox { public static final String TYPE = "loci"; private String language; private String name = ""; private int role; private double longitude; private double latitude; private double altitude; private String astronomicalBody = ""; private String additionalNotes = ""; public LocationInformationBox() { super(TYPE); } public String getLanguage() { return language; } public void setLanguage(String language) { this.language = language; } public String getName() { return name; } public void setName(String name) { this.name = name; } public int getRole() { return role; } public void setRole(int role) { this.role = role; } public double getLongitude() { return longitude; } public void setLongitude(double longitude) { this.longitude = longitude; } public double getLatitude() { return latitude; } public void setLatitude(double latitude) { this.latitude = latitude; } public double getAltitude() { return altitude; } public void setAltitude(double altitude) { this.altitude = altitude; } public String getAstronomicalBody() { return astronomicalBody; } public void setAstronomicalBody(String astronomicalBody) { this.astronomicalBody = astronomicalBody; } public String getAdditionalNotes() { return additionalNotes; } public void setAdditionalNotes(String additionalNotes) { this.additionalNotes = additionalNotes; } protected long getContentSize() { return 22 + Utf8.convert(name).length + Utf8.convert(astronomicalBody).length + Utf8.convert(additionalNotes).length; } @Override public void _parseDetails(ByteBuffer content) { parseVersionAndFlags(content); language = IsoTypeReader.readIso639(content); name = IsoTypeReader.readString(content); role = IsoTypeReader.readUInt8(content); longitude = IsoTypeReader.readFixedPoint1616(content); latitude = IsoTypeReader.readFixedPoint1616(content); altitude = IsoTypeReader.readFixedPoint1616(content); astronomicalBody = IsoTypeReader.readString(content); additionalNotes = IsoTypeReader.readString(content); } @Override protected void getContent(ByteBuffer byteBuffer) { writeVersionAndFlags(byteBuffer); IsoTypeWriter.writeIso639(byteBuffer, language); byteBuffer.put(Utf8.convert(name)); byteBuffer.put((byte) 0); IsoTypeWriter.writeUInt8(byteBuffer, role); IsoTypeWriter.writeFixedPont1616(byteBuffer, longitude); IsoTypeWriter.writeFixedPont1616(byteBuffer, latitude); IsoTypeWriter.writeFixedPont1616(byteBuffer, altitude); byteBuffer.put(Utf8.convert(astronomicalBody)); byteBuffer.put((byte) 0); byteBuffer.put(Utf8.convert(additionalNotes)); byteBuffer.put((byte) 0); } }