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

org.jcodec.containers.mp4.boxes.channel.Label Maven / Gradle / Ivy

There is a newer version: 0.2.5
Show newest version
package org.jcodec.containers.mp4.boxes.channel;

import java.util.regex.Pattern;

/**
 * This class is part of JCodec ( www.jcodec.org )
 * This software is distributed under FreeBSD License
 * 
 * @author The JCodec project
 * 
 */
public enum Label {
    /** unknown role or unspecified other use for channel */
    Unknown(0xFFFFFFFF),
    /** channel is present, but has no intended role or destination */
    Unused(0),
    /** channel is described solely by the mCoordinates fields */
    UseCoordinates(100),

    Left(1), Right(2), Center(3), LFEScreen(4),

    /** WAVE (.wav files): "Back Left" */
    LeftSurround(5),
    /** WAVE: "Back Right" */
    RightSurround(6), LeftCenter(7), RightCenter(8),
    /** WAVE: "Back  Center or  plain "Rear Surround" */
    CenterSurround(9),
    /** WAVE: "Side Left" */
    LeftSurroundDirect(10),
    /** WAVE: "Side Right" */
    RightSurroundDirect(11), TopCenterSurround(12),
    /** WAVE: "Top Front Left" */
    VerticalHeightLeft(13),
    /** WAVE: "Top Front Center" */
    VerticalHeightCenter(14),
    /** WAVE: "Top Front Right" */
    VerticalHeightRight(15), TopBackLeft(16), TopBackCenter(17), TopBackRight(18),

    RearSurroundLeft(33), RearSurroundRight(34), LeftWide(35), RightWide(36), LFE2(37),
    /** matrix encoded 4 channels */
    LeftTotal(38),
    /** matrix encoded 4 channels */
    RightTotal(39), HearingImpaired(40), Narration(41), Mono(42), DialogCentricMix(43),

    /** center, non diffuse first order ambisonic channels */
    CenterSurroundDirect(44), Ambisonic_W(200), Ambisonic_X(201), Ambisonic_Y(202), Ambisonic_Z(203),

    /** Mid/Side Recording */
    MS_Mid(204), MS_Side(205),

    /** X-Y Recording */
    XY_X(206), XY_Y(207),

    HeadphonesLeft(301), HeadphonesRight(302), ClickTrack(304), ForeignLanguage(305),
    // generic discrete channel
    Discrete              ( 400),
    
    // numbered discrete channel
    Discrete_0            ( (1<<16) | 0),
    Discrete_1            ( (1<<16) | 1),
    Discrete_2            ( (1<<16) | 2),
    Discrete_3            ( (1<<16) | 3),
    Discrete_4            ( (1<<16) | 4),
    Discrete_5            ( (1<<16) | 5),
    Discrete_6            ( (1<<16) | 6),
    Discrete_7            ( (1<<16) | 7),
    Discrete_8            ( (1<<16) | 8),
    Discrete_9            ( (1<<16) | 9),
    Discrete_10           ( (1<<16) | 10),
    Discrete_11           ( (1<<16) | 11),
    Discrete_12           ( (1<<16) | 12),
    Discrete_13           ( (1<<16) | 13),
    Discrete_14           ( (1<<16) | 14),
    Discrete_15           ( (1<<16) | 15),
    Discrete_65535        ( (1<<16) | 65535);
    
    final int labelVal;
    final long bitmapVal;
    public final static Pattern channelMappingRegex = Pattern.compile("[_\\ \\.][a-zA-Z]+$");

    private Label(int val) {
        this.labelVal = val;
        this.bitmapVal = (this.labelVal > 18 || this.labelVal < 1) ? 0x00000000 : 1 << (this.labelVal - 1);

    }

    public static Label getByVal(int val) {
        for (Label label : Label.values()) {
            if (label.labelVal == val)
                return label;
        }
        return Label.Mono;
    }
    
    public int getVal() {
        return labelVal;
    }
}




© 2015 - 2024 Weber Informatics LLC | Privacy Policy