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

org.jcodec.containers.mps.psi.PATSection Maven / Gradle / Ivy

There is a newer version: 0.2.5
Show newest version
package org.jcodec.containers.mps.psi;
import org.jcodec.common.IntArrayList;
import org.jcodec.common.IntIntMap;

import java.nio.ByteBuffer;

/**
 * This class is part of JCodec ( www.jcodec.org ) This software is distributed
 * under FreeBSD License
 * 
 * Represents PAT ( Program Association Table ) PSI payload of MPEG Transport
 * stream
 * 
 * @author The JCodec project
 * 
 */
public class PATSection extends PSISection {
    private int[] networkPids;
    private IntIntMap programs;

    public PATSection(PSISection psi, int[] networkPids, IntIntMap programs) {
        super(psi.tableId, psi.specificId, psi.versionNumber, psi.currentNextIndicator, psi.sectionNumber,
                psi.lastSectionNumber);
        this.networkPids = networkPids;
        this.programs = programs;
    }

    public int[] getNetworkPids() {
        return networkPids;
    }

    public IntIntMap getPrograms() {
        return programs;
    }

    public static PATSection parsePAT(ByteBuffer data) {
        PSISection psi = PSISection.parsePSI(data);

        IntArrayList networkPids = IntArrayList.createIntArrayList();
        IntIntMap programs = new IntIntMap();

        while (data.remaining() > 4) {
            int programNum = data.getShort() & 0xffff;
            int w = data.getShort();
            int pid = w & 0x1fff;
            if (programNum == 0)
                networkPids.add(pid);
            else
                programs.put(programNum, pid);
        }

        return new PATSection(psi, networkPids.toArray(), programs);
    }
}




© 2015 - 2024 Weber Informatics LLC | Privacy Policy