# All files / src/utils codecs.js

75% Statements 3/4
100% Branches 2/2
50% Functions 1/2
75% Lines 3/4

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    1x

    44x
    44x

     // from http://mp4ra.org/codecs.html
    const sampleEntryCodesISO = {
        audio: {
            'a3ds': true,
            'ac-3': true,
            'ac-4': true,
            'alac': true,
            'alaw': true,
            'dra1': true,
            'dts+': true,
            'dts-': true,
            'dtsc': true,
            'dtse': true,
            'dtsh': true,
            'ec-3': true,
            'enca': true,
            'g719': true,
            'g726': true,
            'm4ae': true,
            'mha1': true,
            'mha2': true,
            'mhm1': true,
            'mhm2': true,
            'mlpa': true,
            'mp4a': true,
            'raw ': true,
            'Opus': true,
            'samr': true,
            'sawb': true,
            'sawp': true,
            'sevc': true,
            'sqcp': true,
            'ssmv': true,
            'twos': true,
            'ulaw': true
        },
        video: {
            'avc1': true,
            'avc2': true,
            'avc3': true,
            'avc4': true,
            'avcp': true,
            'drac': true,
            'dvav': true,
            'dvhe': true,
            'encv': true,
            'hev1': true,
            'hvc1': true,
            'mjp2': true,
            'mp4v': true,
            'mvc1': true,
            'mvc2': true,
            'mvc3': true,
            'mvc4': true,
            'resv': true,
            'rv60': true,
            's263': true,
            'svc1': true,
            'svc2': true,
            'vc-1': true,
            'vp08': true,
            'vp09': true
        }
    };

    function isCodecType(codec, type) {
        const typeCodes = sampleEntryCodesISO[type];
        return !!typeCodes && typeCodes[codec.slice(0, 4)] === true;
    }

    function isCodecSupportedInMp4(codec) {
        return MediaSource.isTypeSupported(`video/mp4;codecs="${codec}"`);
    }

    export { isCodecType, isCodecSupportedInMp4 };