/* * myLib - https://github.com/taktod/myLib * Copyright (c) 2014 ttProject. All rights reserved. * * Licensed under The MIT license. */ package com.ttProject.container.mpegts.descriptor; import com.ttProject.container.mpegts.field.IDescriptorHolder; import com.ttProject.nio.channels.IReadChannel; import com.ttProject.unit.extra.BitLoader; import com.ttProject.unit.extra.bit.Bit24; import com.ttProject.unit.extra.bit.Bit8; public class ISO639LanguageDescriptor extends Descriptor { private Bit24 ISO639LanguageCode; private Bit8 audioType; /** * constructor * @param descriptorLength */ public ISO639LanguageDescriptor(Bit8 descriptorLength, IDescriptorHolder holder) { super(new Bit8(DescriptorType.ISO_639_language_descriptor.intValue()), descriptorLength, holder); } /** * constructor */ public ISO639LanguageDescriptor(IDescriptorHolder holder) { super(new Bit8(DescriptorType.ISO_639_language_descriptor.intValue()), holder); } public Bit24 getISO639LanguageCode() { return ISO639LanguageCode; } public Bit8 getAudioType() { return audioType; } /** * {@inheritDoc} * @param channel * @throws Exception */ @Override public void load(IReadChannel channel) throws Exception { int length = getDescriptorLength().get(); if(length == 4) { BitLoader loader = new BitLoader(channel); ISO639LanguageCode = new Bit24(); audioType = new Bit8(); loader.load(ISO639LanguageCode, audioType); } else { throw new Exception("unexpected length is found."); } } @Override public String toString() { StringBuilder data = new StringBuilder(); data.append(" "); data.append("ISO639LanguageDescriptor:"); data.append(" length:").append(Integer.toHexString(getDescriptorLength().get())); data.append(" ISO639LanguageCode:").append(Integer.toHexString(ISO639LanguageCode.get())); data.append(" audioType:").append(audioType); return data.toString(); } }