/* * myLib - https://github.com/taktod/myLib * Copyright (c) 2014 ttProject. All rights reserved. * * Licensed under The MIT license. */ package com.ttProject.media.mpegts.descriptor; import com.ttProject.media.extra.Bit8; import com.ttProject.nio.channels.IReadChannel; import com.ttProject.util.BufferUtil; public class ISO639LanguageDescriptor extends Descriptor { private int ISO639LanguageCode; // 3バイト private Bit8 audioType; // 1バイト // legendってあるけど・・・ /** * コンストラクタ(解析用) * @param descriptorLength */ public ISO639LanguageDescriptor(Bit8 descriptorLength) { super(new Bit8(DescriptorType.ISO_639_language_descriptor.intValue()), descriptorLength); } /** * コンストラクタ(書き込み用) */ public ISO639LanguageDescriptor() { super(new Bit8(DescriptorType.ISO_639_language_descriptor.intValue())); } public int getISO639LanguageCode() { return ISO639LanguageCode; } public Bit8 getAudioType() { return audioType; } /** * 解析動作 * @param channel * @throws Exception */ public void analyze(IReadChannel channel) throws Exception { int length = getDescriptorLength().get(); if(length == 4) { int data = BufferUtil.safeRead(channel, 4).getInt(); ISO639LanguageCode = (data >>> 8); audioType = new Bit8(data & 0xFF); } else { throw new Exception("意図しないデータサイズを受け取りました"); } } @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)); data.append(" audioType:").append(audioType); return data.toString(); } }