media-codec-h264 0.1.1

An H.264 decoder implementation for media-codec
Documentation
use crate::constants::MAX_QP_COUNT;

/// Zigzag scan order for 4x4 blocks
///
/// Maps linear index (0..16) to raster scan order position
#[rustfmt::skip]
pub const ZIGZAG_SCAN_4X4: [u8; 16] = [
     0,  1,  4,  8,
     5,  2,  3,  6,
     9, 12, 13, 10,
     7, 11, 14, 15,
];

/// Zigzag scan order for 8x8 blocks
///
/// Maps linear index (0..64) to raster scan order position
#[rustfmt::skip]
pub const ZIGZAG_SCAN_8X8: [u8; 64] = [
     0,  1,  8, 16,  9,  2,  3, 10,
    17, 24, 32, 25, 18, 11,  4,  5,
    12, 19, 26, 33, 40, 48, 41, 34,
    27, 20, 13,  6,  7, 14, 21, 28,
    35, 42, 49, 56, 57, 50, 43, 36,
    29, 22, 15, 23, 30, 37, 44, 51,
    58, 59, 52, 45, 38, 31, 39, 46,
    53, 60, 61, 54, 47, 55, 62, 63,
];

/// Chroma QP lookup table for different bit depths
#[rustfmt::skip]
pub const CHROMA_QP: [[u8; MAX_QP_COUNT]; 7] = [
    // depth = 8
    [
         0,  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,
        29, 30, 31, 32, 32, 33,
        34, 34, 35, 35, 36, 36,
        37, 37, 37, 38, 38, 38,
        39, 39, 39, 39, 39, 39,
        39, 39, 39, 39, 39, 39,
        39, 39, 39, 39, 39, 39,
        39, 39, 39, 39, 39, 39,
        39, 39, 39, 39, 39, 39,
        39, 39, 39, 39, 39, 39,
        39, 39, 39, 39,
    ],
    // depth = 9
    [
         0,  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,
        35, 36, 37, 38, 38, 39,
        40, 40, 41, 41, 42, 42,
        43, 43, 43, 44, 44, 44,
        45, 45, 45, 45, 45, 45,
        45, 45, 45, 45, 45, 45,
        45, 45, 45, 45, 45, 45,
        45, 45, 45, 45, 45, 45,
        45, 45, 45, 45, 45, 45,
        45, 45, 45, 45,
    ],
    // depth = 10
    [
         0,  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,
        41, 42, 43, 44, 44, 45,
        46, 46, 47, 47, 48, 48,
        49, 49, 49, 50, 50, 50,
        51, 51, 51, 51, 51, 51,
        51, 51, 51, 51, 51, 51,
        51, 51, 51, 51, 51, 51,
        51, 51, 51, 51, 51, 51,
        51, 51, 51, 51,
    ],
    // depth = 11
    [
         0,  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,
        47, 48, 49, 50, 50, 51,
        52, 52, 53, 53, 54, 54,
        55, 55, 55, 56, 56, 56,
        57, 57, 57, 57, 57, 57,
        57, 57, 57, 57, 57, 57,
        57, 57, 57, 57, 57, 57,
        57, 57, 57, 57,
    ],
    // depth = 12
    [
         0,  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,
        53, 54, 55, 56, 56, 57,
        58, 58, 59, 59, 60, 60,
        61, 61, 61, 62, 62, 62,
        63, 63, 63, 63, 63, 63,
        63, 63, 63, 63, 63, 63,
        63, 63, 63, 63,
    ],
    // depth = 13
    [
         0,  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,
        59, 60, 61, 62, 62, 63,
        64, 64, 65, 65, 66, 66,
        67, 67, 67, 68, 68, 68,
        69, 69, 69, 69, 69, 69,
        69, 69, 69, 69,
    ],
    // depth = 14
    [
         0,  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,
        65, 66, 67, 68, 68, 69,
        70, 70, 71, 71, 72, 72,
        73, 73, 73, 74, 74, 74,
        75, 75, 75, 75,
    ],
];