blob: a4cb3463681bc64b4e853a5dd0e112025b0f5b37 [file] [log] [blame]
package com.googlecode.mp4parser.boxes;
import com.coremedia.iso.IsoTypeReader;
import com.coremedia.iso.IsoTypeWriter;
import com.googlecode.mp4parser.AbstractBox;
import com.googlecode.mp4parser.boxes.mp4.objectdescriptors.BitReaderBuffer;
import com.googlecode.mp4parser.boxes.mp4.objectdescriptors.BitWriterBuffer;
import java.nio.ByteBuffer;
/**
* Created by IntelliJ IDEA.
* User: magnus
* Date: 2012-03-09
* Time: 16:11
* To change this template use File | Settings | File Templates.
*/
public class DTSSpecificBox extends AbstractBox {
long DTSSamplingFrequency;
long maxBitRate;
long avgBitRate;
int pcmSampleDepth;
int frameDuration;
int streamConstruction;
int coreLFEPresent;
int coreLayout;
int coreSize;
int stereoDownmix;
int representationType;
int channelLayout;
int multiAssetFlag;
int LBRDurationMod;
int reservedBoxPresent;
int reserved;
public DTSSpecificBox() {
super("ddts");
}
@Override
protected long getContentSize() {
return 20;
}
@Override
public void _parseDetails(ByteBuffer content) {
DTSSamplingFrequency = IsoTypeReader.readUInt32(content);
maxBitRate = IsoTypeReader.readUInt32(content);
avgBitRate = IsoTypeReader.readUInt32(content);
pcmSampleDepth = IsoTypeReader.readUInt8(content);
BitReaderBuffer brb = new BitReaderBuffer(content);
frameDuration = brb.readBits(2);
streamConstruction = brb.readBits(5);
coreLFEPresent = brb.readBits(1);
coreLayout = brb.readBits(6);
coreSize = brb.readBits(14);
stereoDownmix = brb.readBits(1);
representationType = brb.readBits(3);
channelLayout = brb.readBits(16);
multiAssetFlag = brb.readBits(1);
LBRDurationMod = brb.readBits(1);
reservedBoxPresent = brb.readBits(1);
reserved = brb.readBits(5);
}
@Override
protected void getContent(ByteBuffer byteBuffer) {
IsoTypeWriter.writeUInt32(byteBuffer, DTSSamplingFrequency);
IsoTypeWriter.writeUInt32(byteBuffer, maxBitRate);
IsoTypeWriter.writeUInt32(byteBuffer, avgBitRate);
IsoTypeWriter.writeUInt8(byteBuffer, pcmSampleDepth);
BitWriterBuffer bwb = new BitWriterBuffer(byteBuffer);
bwb.writeBits(frameDuration, 2);
bwb.writeBits(streamConstruction, 5);
bwb.writeBits(coreLFEPresent, 1);
bwb.writeBits(coreLayout, 6);
bwb.writeBits(coreSize, 14);
bwb.writeBits(stereoDownmix, 1);
bwb.writeBits(representationType, 3);
bwb.writeBits(channelLayout, 16);
bwb.writeBits(multiAssetFlag, 1);
bwb.writeBits(LBRDurationMod, 1);
bwb.writeBits(reservedBoxPresent, 1);
bwb.writeBits(reserved, 5);
}
public long getAvgBitRate() {
return avgBitRate;
}
public void setAvgBitRate(long avgBitRate) {
this.avgBitRate = avgBitRate;
}
public long getDTSSamplingFrequency() {
return DTSSamplingFrequency;
}
public void setDTSSamplingFrequency(long DTSSamplingFrequency) {
this.DTSSamplingFrequency = DTSSamplingFrequency;
}
public long getMaxBitRate() {
return maxBitRate;
}
public void setMaxBitRate(long maxBitRate) {
this.maxBitRate = maxBitRate;
}
public int getPcmSampleDepth() {
return pcmSampleDepth;
}
public void setPcmSampleDepth(int pcmSampleDepth) {
this.pcmSampleDepth = pcmSampleDepth;
}
public int getFrameDuration() {
return frameDuration;
}
public void setFrameDuration(int frameDuration) {
this.frameDuration = frameDuration;
}
public int getStreamConstruction() {
return streamConstruction;
}
public void setStreamConstruction(int streamConstruction) {
this.streamConstruction = streamConstruction;
}
public int getCoreLFEPresent() {
return coreLFEPresent;
}
public void setCoreLFEPresent(int coreLFEPresent) {
this.coreLFEPresent = coreLFEPresent;
}
public int getCoreLayout() {
return coreLayout;
}
public void setCoreLayout(int coreLayout) {
this.coreLayout = coreLayout;
}
public int getCoreSize() {
return coreSize;
}
public void setCoreSize(int coreSize) {
this.coreSize = coreSize;
}
public int getStereoDownmix() {
return stereoDownmix;
}
public void setStereoDownmix(int stereoDownmix) {
this.stereoDownmix = stereoDownmix;
}
public int getRepresentationType() {
return representationType;
}
public void setRepresentationType(int representationType) {
this.representationType = representationType;
}
public int getChannelLayout() {
return channelLayout;
}
public void setChannelLayout(int channelLayout) {
this.channelLayout = channelLayout;
}
public int getMultiAssetFlag() {
return multiAssetFlag;
}
public void setMultiAssetFlag(int multiAssetFlag) {
this.multiAssetFlag = multiAssetFlag;
}
public int getLBRDurationMod() {
return LBRDurationMod;
}
public void setLBRDurationMod(int LBRDurationMod) {
this.LBRDurationMod = LBRDurationMod;
}
public int getReserved() {
return reserved;
}
public void setReserved(int reserved) {
this.reserved = reserved;
}
public int getReservedBoxPresent() {
return reservedBoxPresent;
}
public void setReservedBoxPresent(int reservedBoxPresent) {
this.reservedBoxPresent = reservedBoxPresent;
}
}