Пример #1
0
  static {
    Set<Class<? extends BaseDescriptor>> annotated = new HashSet<Class<? extends BaseDescriptor>>();

    annotated.add(DecoderSpecificInfo.class);
    annotated.add(SLConfigDescriptor.class);
    annotated.add(BaseDescriptor.class);
    annotated.add(ExtensionDescriptor.class);
    annotated.add(ObjectDescriptorBase.class);
    annotated.add(ProfileLevelIndicationDescriptor.class);
    annotated.add(AudioSpecificConfig.class);
    annotated.add(ExtensionProfileLevelDescriptor.class);
    annotated.add(ESDescriptor.class);
    annotated.add(DecoderConfigDescriptor.class);
    // annotated.add(ObjectDescriptor.class);

    for (Class<? extends BaseDescriptor> clazz : annotated) {
      final Descriptor descriptor = clazz.getAnnotation(Descriptor.class);
      final int[] tags = descriptor.tags();
      final int objectTypeInd = descriptor.objectTypeIndication();

      Map<Integer, Class<? extends BaseDescriptor>> tagMap = descriptorRegistry.get(objectTypeInd);
      if (tagMap == null) {
        tagMap = new HashMap<Integer, Class<? extends BaseDescriptor>>();
      }
      for (int tag : tags) {
        tagMap.put(tag, clazz);
      }
      descriptorRegistry.put(objectTypeInd, tagMap);
    }
  }