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;
}
}