jsvpx
Version:
Javascript implementation of libvpx
168 lines (146 loc) • 4.83 kB
JavaScript
'use strict';
var DC_PRED = 0;
var V_PRED = 1;
var H_PRED = 2; /* horizontal prediction */
var TM_PRED = 3; /* Truemotion prediction */
var B_PRED = 4; /* block based prediction, each block has its own prediction mode */
var NEARESTMV = 5;
var NEARMV = 6;
var ZEROMV = 7;
var NEWMV = 8;
var SPLITMV = 9;
var MB_MODE_COUNT = 10;
var B_DC_PRED = 0, /* average of above and left pixels */
B_TM_PRED = 1,
B_VE_PRED = 2, /* vertical prediction */
B_HE_PRED = 3, /* horizontal prediction */
B_LD_PRED = 4,
B_RD_PRED = 5,
B_VR_PRED = 6,
B_VL_PRED = 7,
B_HD_PRED = 8,
B_HU_PRED = 9,
LEFT4X4 = 10,
ABOVE4X4 = 11,
ZERO4X4 = 12,
NEW4X4 = 13,
B_MODE_COUNT = 14
;//} B_PREDICTION_MODE;
//b_mode_tree in dixie version
var vp8_bmode_tree =
new Int32Array([
-B_DC_PRED, 2, /* 0 = DC_NODE */
-B_TM_PRED, 4, /* 1 = TM_NODE */
-B_VE_PRED, 6, /* 2 = VE_NODE */
8, 12, /* 3 = COM_NODE */
-B_HE_PRED, 10, /* 4 = HE_NODE */
-B_RD_PRED, -B_VR_PRED, /* 5 = RD_NODE */
-B_LD_PRED, 14, /* 6 = LD_NODE */
-B_VL_PRED, 16, /* 7 = VL_NODE */
-B_HD_PRED, -B_HU_PRED /* 8 = HD_NODE */
]);
//kf_y_mode_tree in dixie version
var vp8_kf_ymode_tree =
new Int32Array([
-B_PRED, 2,
4, 6,
-DC_PRED, -V_PRED,
-H_PRED, -TM_PRED
]);
var vp8_ymode_tree =
new Int32Array([
-DC_PRED, 2,
4, 6,
-V_PRED, -H_PRED,
-TM_PRED, -B_PRED
]);
var vp8_uv_mode_tree =
new Int32Array([
-DC_PRED, 2,
-V_PRED, 4,
-H_PRED, -TM_PRED
]);
var vp8_mv_ref_tree = new Int32Array([
-ZEROMV, 2,
-NEARESTMV, 4,
-NEARMV, 6,
-NEWMV, -SPLITMV
]);
var vp8_sub_mv_ref_tree = new Int32Array([
-LEFT4X4, 2,
-ABOVE4X4, 4,
-ZERO4X4, -NEW4X4
]);
var vp8_small_mvtree =
new Int32Array([
2, 8,
4, 6,
-0, -1,
-2, -3,
10, 12,
-4, -5,
-6, -7
]);
var vp8_mbsplit_tree = new Int32Array([
-3, 2,
-2, 4,
-0, -1
]);
var vp8_mbsplits =
[
new Int32Array([0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1]),
new Int32Array([0, 0, 1, 1, 0, 0, 1, 1, 0, 0, 1, 1, 0, 0, 1, 1]),
new Int32Array([0, 0, 1, 1, 0, 0, 1, 1, 2, 2, 3, 3, 2, 2, 3, 3]),
new Int32Array([0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15])
];
var vp8_sub_mv_ref_prob2 =
[
new Int32Array([147, 136, 18]),
new Int32Array([106, 145, 1]),
new Int32Array([179, 121, 1]),
new Int32Array([223, 1, 34]),
new Int32Array([208, 1, 1])
];
//vp8_mbsplit_probs
var vp8_mbsplit_probs = new Uint8Array([110, 111, 150]);
// k_default_y_mode_probs
var vp8_ymode_prob = new Uint8Array([112, 86, 140, 37]);
var vp8_ymode_prob_32 = new Uint32Array(vp8_ymode_prob.buffer);
//k_default_uv_mode_probs
var vp8_uv_mode_prob = new Uint8Array([162, 101, 204]);
//kf_uv_mode_probs
var vp8_kf_uv_mode_prob = new Uint8Array([142, 114, 183]);
//kf_y_mode_probs
var vp8_kf_ymode_prob = new Uint8Array([145, 156, 163, 128]);
//default_b_mode_probs
var vp8_bmode_prob = new Uint8Array([120, 90, 79, 133, 87, 85, 80, 111, 151]);
function vp8_init_mbmode_probs(x) {
var probs = vp8_ymode_prob;
x.entropy_hdr.y_mode_probs_32[0] = vp8_ymode_prob_32[0];
/*
probs = vp8_uv_mode_prob;
//for (var i = 0; i < 3; i++)
x.entropy_hdr.uv_mode_probs[0] = probs[0];
x.entropy_hdr.uv_mode_probs[1] = probs[1];
x.entropy_hdr.uv_mode_probs[2] = probs[2];
*/
x.entropy_hdr.uv_mode_probs.set(vp8_uv_mode_prob);
}
module.exports = {};
module.exports.vp8_bmode_tree = vp8_bmode_tree;
module.exports.vp8_kf_ymode_tree = vp8_kf_ymode_tree;
module.exports.vp8_uv_mode_tree = vp8_uv_mode_tree;
module.exports.vp8_kf_uv_mode_prob = vp8_kf_uv_mode_prob;
module.exports.vp8_kf_ymode_prob = vp8_kf_ymode_prob;
module.exports.vp8_uv_mode_prob = vp8_uv_mode_prob;
module.exports.vp8_bmode_prob = vp8_bmode_prob;
module.exports.vp8_ymode_prob = vp8_ymode_prob;
module.exports.vp8_ymode_tree = vp8_ymode_tree;
module.exports.vp8_mbsplit_probs = vp8_mbsplit_probs;
module.exports.vp8_mv_ref_tree = vp8_mv_ref_tree;
module.exports.vp8_sub_mv_ref_tree = vp8_sub_mv_ref_tree;
module.exports.vp8_small_mvtree = vp8_small_mvtree;
module.exports.vp8_mbsplit_tree = vp8_mbsplit_tree;
module.exports.vp8_mbsplits = vp8_mbsplits;
module.exports.vp8_sub_mv_ref_prob2 = vp8_sub_mv_ref_prob2;
module.exports.vp8_init_mbmode_probs = vp8_init_mbmode_probs;