All Downloads are FREE. Search and download functionalities are using the official Maven repository.

org.jcodec.codecs.mpeg4.es.NodeDescriptor Maven / Gradle / Ivy

There is a newer version: 0.2.5
Show newest version
package org.jcodec.codecs.mpeg4.es;

import java.nio.ByteBuffer;
import java.util.ArrayList;
import java.util.Collection;

/**
 * This class is part of JCodec ( www.jcodec.org ) This software is distributed
 * under FreeBSD License
 * 
 * @author The JCodec project
 * 
 */
public class NodeDescriptor extends Descriptor {
    private Collection children;

    public NodeDescriptor(int tag, Collection children) {
        super(tag, 0);
        this.children = children;
    }

    protected void doWrite(ByteBuffer out) {
        for (Descriptor descr : children) {
            descr.write(out);
        }
    }

    public Collection getChildren() {
        return children;
    }

    protected static NodeDescriptor parse(ByteBuffer input, IDescriptorFactory factory) {
        Collection children = new ArrayList();
        Descriptor d;
        do {
            d = Descriptor.read(input, factory);
            if (d != null)
                children.add(d);
        } while (d != null);
        return new NodeDescriptor(0, children);
    }

    public static  T find(Descriptor es, Class class1, int tag) {
        if (es.getTag() == tag)
            return (T) es;
        else {
            if (es instanceof NodeDescriptor) {
                for (Descriptor descriptor : ((NodeDescriptor) es).getChildren()) {
                    T res = find(descriptor, class1, tag);
                    if (res != null)
                        return res;
                }
            }
        }
        return null;
    }
}




© 2015 - 2024 Weber Informatics LLC | Privacy Policy