2 * jTsSplitter - java based mpeg2ts splitter.
3 * Copyright (C) 2009-2010 Yukikaze
5 package jtssplitter.data;
7 import java.util.ArrayList;
8 import jtssplitter.calc;
9 import jtssplitter.data.descriptor.ARIB_Audio_Component_Descriptor;
10 import jtssplitter.data.descriptor.ARIB_Video_Compornent_Descriptor;
16 public class Descriptor {
18 private calc cal = new calc();
20 public String analyze(String s) {
21 StringBuffer sb=new StringBuffer();
23 while (s.length() > curp + 16) {
25 int tag = cal.TSString2Int(s, curp + 0, 8);
26 int len = cal.TSString2Int(s, curp + 8, 8) * 8;
27 String des_s = s.substring(curp + 16, curp + 16 + len);
28 curp = curp + len + 16;
30 case 0xc8://ビデオコントロール記述子
31 switch (cal.TSString2Int(des_s, 3, 4)) {
58 case 0xc4://音声コンポーネント記述子
59 switch (cal.TSString2Int(des_s, 8, 8)) {
67 if (adds.length() > 0) {
73 public ArrayList<jtssplitter.data.descriptor.abstract_Descriptor> getDescriptors(String s){
74 jtssplitter.calc cal=new calc();
75 return getDescriptors(cal.String2Byte(s));
77 public ArrayList<jtssplitter.data.descriptor.abstract_Descriptor> getDescriptors(byte[] b){
79 ArrayList<jtssplitter.data.descriptor.abstract_Descriptor> ad=new ArrayList<jtssplitter.data.descriptor.abstract_Descriptor>();
80 while (b.length > curp + 2) {
81 int tag = b[curp]&0xFF;
82 int len = b[curp+1]&0xFF;
83 byte[] btag=new byte[len];
84 System.arraycopy(b,curp+2,btag,0,len);
85 curp = curp + len + 2;
87 case 0xc8://ビデオコントロール記述子
88 jtssplitter.data.descriptor.ARIB_Video_Compornent_Descriptor avcd=new jtssplitter.data.descriptor.ARIB_Video_Compornent_Descriptor();
89 avcd.analyzeDescriptor(0xc8, btag);
92 case 0xc4://音声コンポーネント記述子
93 ARIB_Audio_Component_Descriptor aacd=new ARIB_Audio_Component_Descriptor();
94 aacd.analyzeDescriptor(0xC4, btag);