Commit 90a7723f authored by Deb Mukherjee's avatar Deb Mukherjee Committed by Gerrit Code Review
Browse files

Merge "Refinements on modelcoef expt to reduce storage" into experimental

Showing with 104 additions and 287 deletions
...@@ -380,17 +380,17 @@ DECLARE_ALIGNED(16, const int, vp9_default_zig_zag1d_32x32[1024]) = { ...@@ -380,17 +380,17 @@ DECLARE_ALIGNED(16, const int, vp9_default_zig_zag1d_32x32[1024]) = {
const vp9_tree_index vp9_coef_tree[ 22] = /* corresponding _CONTEXT_NODEs */ const vp9_tree_index vp9_coef_tree[ 22] = /* corresponding _CONTEXT_NODEs */
{ {
-DCT_EOB_TOKEN, 2, /* 0 = EOB */ -DCT_EOB_TOKEN, 2, /* 0 = EOB */
-ZERO_TOKEN, 4, /* 1 = ZERO */ -ZERO_TOKEN, 4, /* 1 = ZERO */
-ONE_TOKEN, 6, /* 2 = ONE */ -ONE_TOKEN, 6, /* 2 = ONE */
8, 12, /* 3 = LOW_VAL */ 8, 12, /* 3 = LOW_VAL */
-TWO_TOKEN, 10, /* 4 = TWO */ -TWO_TOKEN, 10, /* 4 = TWO */
-THREE_TOKEN, -FOUR_TOKEN, /* 5 = THREE */ -THREE_TOKEN, -FOUR_TOKEN, /* 5 = THREE */
14, 16, /* 6 = HIGH_LOW */ 14, 16, /* 6 = HIGH_LOW */
-DCT_VAL_CATEGORY1, -DCT_VAL_CATEGORY2, /* 7 = CAT_ONE */ -DCT_VAL_CATEGORY1, -DCT_VAL_CATEGORY2, /* 7 = CAT_ONE */
18, 20, /* 8 = CAT_THREEFOUR */ 18, 20, /* 8 = CAT_THREEFOUR */
-DCT_VAL_CATEGORY3, -DCT_VAL_CATEGORY4, /* 9 = CAT_THREE */ -DCT_VAL_CATEGORY3, -DCT_VAL_CATEGORY4, /* 9 = CAT_THREE */
-DCT_VAL_CATEGORY5, -DCT_VAL_CATEGORY6 /* 10 = CAT_FIVE */ -DCT_VAL_CATEGORY5, -DCT_VAL_CATEGORY6 /* 10 = CAT_FIVE */
}; };
struct vp9_token vp9_coef_encodings[MAX_ENTROPY_TOKENS]; struct vp9_token vp9_coef_encodings[MAX_ENTROPY_TOKENS];
...@@ -414,293 +414,103 @@ const vp9_tree_index vp9_coefmodel_tree[6] = { ...@@ -414,293 +414,103 @@ const vp9_tree_index vp9_coefmodel_tree[6] = {
-ONE_TOKEN, -TWO_TOKEN, /* 2 = ONE */ -ONE_TOKEN, -TWO_TOKEN, /* 2 = ONE */
}; };
const vp9_prob vp9_modelcoefprobs_gg75p1[COEFPROB_MODELS][MODEL_NODES] = { // Model obtained from a 2-sided zero-centerd distribuition derived
// Probs generated with a Generalized Gaussian (with shape parameter 0.75) // from a Pareto distribution. The cdf of the distribution is:
// source model with varying quantizer step size for a uniform quantizer // cdf(x) = 0.5 + 0.5 * sgn(x) * [1 - {alpha/(alpha + |x|)} ^ beta]
{ 3, 86, 129, 6, 87, 21, 90, 26,}, //
{ 9, 87, 130, 16, 89, 55, 96, 65,}, // For a given beta and a given probablity of the 1-node, the alpha
{ 14, 88, 130, 26, 90, 82, 101, 95,}, // is first solved, and then the {alpha, beta} pair is used to generate
{ 20, 89, 131, 35, 92, 105, 105, 119,}, // the probabilities for the rest of the nodes.
{ 25, 90, 132, 44, 93, 124, 110, 138,}, const vp9_prob vp9_modelcoefprobs_pareto8[COEFPROB_MODELS][MODEL_NODES] = {
{ 30, 91, 132, 52, 95, 141, 114, 155,}, { 3, 86, 128, 6, 86, 23, 88, 29},
{ 35, 92, 133, 60, 96, 155, 118, 168,}, { 9, 86, 129, 17, 88, 61, 94, 76},
{ 40, 93, 134, 68, 97, 167, 123, 180,}, { 20, 88, 130, 38, 91, 118, 106, 136},
{ 44, 94, 134, 75, 99, 178, 127, 190,}, { 31, 90, 131, 58, 94, 156, 117, 171},
{ 49, 94, 135, 82, 100, 187, 131, 199,}, { 42, 91, 132, 75, 97, 183, 127, 194},
{ 54, 95, 135, 88, 101, 195, 135, 206,}, { 52, 93, 133, 90, 100, 201, 137, 208},
{ 58, 96, 136, 95, 102, 202, 138, 213,}, { 62, 94, 135, 105, 103, 214, 146, 218},
{ 63, 97, 137, 101, 104, 209, 142, 218,}, { 71, 96, 136, 117, 106, 224, 155, 225},
{ 67, 98, 137, 107, 105, 214, 146, 223,}, { 80, 98, 137, 129, 109, 231, 162, 231},
{ 71, 98, 138, 113, 106, 219, 150, 227,}, { 89, 99, 138, 140, 112, 236, 170, 235},
{ 76, 99, 138, 118, 107, 223, 153, 231,}, { 97, 101, 140, 149, 115, 240, 176, 238},
{ 80, 100, 139, 123, 109, 227, 157, 234,}, { 105, 103, 141, 158, 118, 243, 182, 240},
{ 84, 101, 140, 128, 110, 231, 160, 237,}, { 113, 104, 142, 166, 120, 245, 187, 242},
{ 88, 102, 140, 133, 111, 234, 164, 239,}, { 120, 106, 143, 173, 123, 247, 192, 244},
{ 92, 102, 141, 138, 112, 236, 167, 241,}, { 127, 108, 145, 180, 126, 249, 197, 245},
{ 95, 103, 141, 143, 114, 238, 170, 243,}, { 134, 110, 146, 186, 129, 250, 201, 246},
{ 99, 104, 142, 147, 115, 241, 173, 245,}, { 140, 112, 147, 192, 132, 251, 205, 247},
{ 103, 105, 142, 151, 116, 242, 176, 246,}, { 146, 114, 149, 197, 135, 252, 208, 248},
{ 107, 105, 143, 156, 117, 244, 180, 248,}, { 152, 115, 150, 201, 138, 252, 211, 248},
{ 110, 106, 144, 159, 119, 245, 182, 249,}, { 158, 117, 151, 206, 140, 253, 214, 249},
{ 114, 107, 144, 163, 120, 247, 185, 250,}, { 163, 119, 153, 210, 143, 253, 217, 249},
{ 117, 108, 145, 167, 121, 248, 188, 250,}, { 168, 121, 154, 213, 146, 254, 220, 250},
{ 121, 109, 145, 171, 123, 249, 191, 251,}, { 173, 123, 155, 217, 148, 254, 222, 250},
{ 124, 110, 146, 174, 124, 250, 194, 252,}, { 178, 125, 157, 220, 151, 254, 224, 251},
{ 127, 110, 147, 177, 125, 250, 196, 252,}, { 183, 127, 158, 222, 153, 254, 226, 251},
{ 130, 111, 147, 181, 127, 251, 199, 253,}, { 187, 129, 160, 225, 156, 255, 228, 251},
{ 134, 112, 148, 184, 128, 252, 201, 253,}, { 191, 132, 161, 227, 159, 255, 229, 251},
{ 137, 113, 148, 187, 129, 252, 204, 254,}, { 195, 134, 163, 230, 161, 255, 231, 252},
{ 140, 114, 149, 190, 130, 253, 206, 254,}, { 199, 136, 164, 232, 163, 255, 232, 252},
{ 143, 115, 150, 192, 132, 253, 208, 254,}, { 202, 138, 166, 233, 166, 255, 233, 252},
{ 146, 115, 150, 195, 133, 254, 210, 254,}, { 206, 140, 167, 235, 168, 255, 235, 252},
{ 149, 116, 151, 198, 134, 254, 212, 255,}, { 212, 145, 170, 238, 173, 255, 237, 252},
{ 152, 117, 151, 200, 136, 254, 214, 255,}, { 218, 149, 173, 241, 177, 255, 239, 253},
{ 154, 118, 152, 203, 137, 254, 216, 255,}, { 223, 154, 177, 243, 182, 255, 240, 253},
{ 157, 119, 153, 205, 139, 255, 218, 255,}, { 228, 159, 180, 245, 186, 255, 242, 253},
{ 160, 120, 153, 207, 140, 255, 220, 255,}, { 232, 164, 184, 247, 190, 255, 243, 253},
{ 163, 121, 154, 210, 141, 255, 222, 255,}, { 236, 169, 187, 248, 194, 255, 244, 253},
{ 165, 122, 154, 212, 143, 255, 223, 255,}, { 239, 174, 191, 249, 198, 255, 245, 254},
{ 168, 123, 155, 214, 144, 255, 225, 255,}, { 242, 179, 195, 250, 202, 255, 246, 254},
{ 170, 123, 156, 216, 145, 255, 227, 255,}, { 244, 185, 199, 251, 206, 255, 247, 254},
{ 173, 124, 156, 218, 147, 255, 228, 255,}, { 247, 191, 203, 252, 209, 255, 248, 254},
{ 175, 125, 157, 219, 148, 255, 230, 255,}, { 249, 197, 207, 253, 213, 255, 249, 254},
{ 178, 126, 158, 221, 150, 255, 231, 255,}, { 250, 203, 212, 253, 216, 255, 249, 254},
{ 180, 127, 158, 223, 151, 255, 232, 255,}, { 252, 209, 217, 254, 220, 255, 250, 254},
{ 182, 128, 159, 224, 152, 255, 234, 255,}, { 253, 216, 222, 254, 224, 255, 251, 254},
{ 184, 129, 160, 226, 154, 255, 235, 255,}, { 254, 224, 228, 255, 227, 255, 251, 254},
{ 187, 130, 160, 227, 155, 255, 236, 255,}, { 255, 232, 235, 255, 232, 255, 252, 254},
{ 189, 131, 161, 229, 157, 255, 237, 255,}, { 255, 246, 247, 255, 239, 255, 253, 255}
{ 191, 132, 162, 230, 158, 255, 238, 255,},
{ 193, 133, 163, 232, 159, 255, 239, 255,},
{ 195, 134, 163, 233, 161, 255, 240, 255,},
{ 197, 135, 164, 234, 162, 255, 241, 255,},
{ 199, 136, 165, 235, 164, 255, 242, 255,},
{ 201, 137, 165, 236, 165, 255, 243, 255,},
{ 203, 138, 166, 237, 167, 255, 244, 255,},
{ 205, 139, 167, 238, 168, 255, 244, 255,},
{ 206, 141, 168, 239, 170, 255, 245, 255,},
{ 208, 142, 168, 240, 171, 255, 246, 255,},
{ 210, 143, 169, 241, 173, 255, 246, 255,},
{ 212, 144, 170, 242, 174, 255, 247, 255,},
{ 213, 145, 171, 243, 176, 255, 248, 255,},
{ 215, 146, 171, 244, 177, 255, 248, 255,},
{ 216, 147, 172, 244, 179, 255, 249, 255,},
{ 218, 148, 173, 245, 180, 255, 249, 255,},
{ 220, 150, 174, 246, 181, 255, 250, 255,},
{ 221, 151, 175, 246, 183, 255, 250, 255,},
{ 222, 152, 175, 247, 184, 255, 251, 255,},
{ 224, 153, 176, 248, 186, 255, 251, 255,},
{ 225, 154, 177, 248, 187, 255, 251, 255,},
{ 226, 156, 178, 249, 189, 255, 252, 255,},
{ 228, 157, 179, 249, 190, 255, 252, 255,},
{ 229, 158, 180, 250, 192, 255, 252, 255,},
{ 230, 159, 181, 250, 193, 255, 253, 255,},
{ 231, 161, 181, 251, 195, 255, 253, 255,},
{ 233, 162, 182, 251, 196, 255, 253, 255,},
{ 234, 163, 183, 251, 198, 255, 253, 255,},
{ 235, 165, 184, 252, 199, 255, 254, 255,},
{ 236, 166, 185, 252, 201, 255, 254, 255,},
{ 237, 167, 186, 252, 202, 255, 254, 255,},
{ 238, 169, 187, 253, 204, 255, 254, 255,},
{ 239, 170, 188, 253, 205, 255, 254, 255,},
{ 240, 172, 189, 253, 207, 255, 255, 255,},
{ 241, 173, 190, 253, 208, 255, 255, 255,},
{ 242, 175, 191, 254, 210, 255, 255, 255,},
{ 242, 176, 192, 254, 211, 255, 255, 255,},
{ 243, 177, 193, 254, 213, 255, 255, 255,},
{ 244, 179, 194, 254, 214, 255, 255, 255,},
{ 245, 181, 195, 254, 216, 255, 255, 255,},
{ 245, 182, 196, 255, 217, 255, 255, 255,},
{ 246, 184, 197, 255, 218, 255, 255, 255,},
{ 247, 185, 199, 255, 220, 255, 255, 255,},
{ 247, 187, 200, 255, 221, 255, 255, 255,},
{ 248, 188, 201, 255, 223, 255, 255, 255,},
{ 249, 190, 202, 255, 224, 255, 255, 255,},
{ 249, 192, 203, 255, 225, 255, 255, 255,},
{ 250, 193, 205, 255, 227, 255, 255, 255,},
{ 250, 195, 206, 255, 228, 255, 255, 255,},
{ 251, 197, 207, 255, 229, 255, 255, 255,},
{ 251, 199, 208, 255, 231, 255, 255, 255,},
{ 252, 201, 210, 255, 232, 255, 255, 255,},
{ 252, 202, 211, 255, 233, 255, 255, 255,},
{ 252, 204, 212, 255, 235, 255, 255, 255,},
{ 253, 206, 214, 255, 236, 255, 255, 255,},
{ 253, 208, 215, 255, 237, 255, 255, 255,},
{ 254, 210, 217, 255, 238, 255, 255, 255,},
{ 254, 212, 218, 255, 240, 255, 255, 255,},
{ 254, 214, 220, 255, 241, 255, 255, 255,},
{ 254, 216, 221, 255, 242, 255, 255, 255,},
{ 255, 218, 223, 255, 243, 255, 255, 255,},
{ 255, 220, 225, 255, 244, 255, 255, 255,},
{ 255, 222, 226, 255, 245, 255, 255, 255,},
{ 255, 224, 228, 255, 247, 255, 255, 255,},
{ 255, 227, 230, 255, 248, 255, 255, 255,},
{ 255, 229, 232, 255, 249, 255, 255, 255,},
{ 255, 231, 234, 255, 250, 255, 255, 255,},
{ 255, 234, 236, 255, 251, 255, 255, 255,},
{ 255, 236, 238, 255, 252, 255, 255, 255,},
{ 255, 239, 240, 255, 252, 255, 255, 255,},
{ 255, 241, 242, 255, 253, 255, 255, 255,},
{ 255, 244, 245, 255, 254, 255, 255, 255,},
{ 255, 247, 247, 255, 255, 255, 255, 255,},
{ 255, 250, 250, 255, 255, 255, 255, 255,},
{ 255, 254, 254, 255, 255, 255, 255, 255,},
};
const vp9_prob vp9_modelcoefprobs_gg625p1[COEFPROB_MODELS][MODEL_NODES] = {
// Probs generated with a Generalized Gaussian (with shape parameter 0.625)
// source model with varying quantizer step size for a uniform quantizer
{ 3, 87, 129, 6, 87, 20, 91, 24,},
{ 8, 88, 130, 15, 90, 50, 97, 56,},
{ 14, 90, 131, 24, 91, 74, 102, 81,},
{ 19, 91, 132, 33, 93, 93, 106, 101,},
{ 24, 92, 133, 40, 94, 110, 110, 118,},
{ 29, 93, 134, 48, 96, 125, 113, 132,},
{ 33, 93, 134, 55, 97, 138, 117, 145,},
{ 38, 94, 135, 62, 98, 149, 120, 155,},
{ 42, 95, 136, 68, 99, 159, 124, 165,},
{ 47, 96, 136, 74, 100, 168, 127, 174,},
{ 51, 97, 137, 80, 102, 176, 130, 181,},
{ 55, 98, 137, 86, 103, 184, 133, 188,},
{ 59, 98, 138, 91, 104, 190, 136, 194,},
{ 64, 99, 139, 97, 105, 196, 139, 200,},
{ 68, 100, 139, 102, 106, 201, 142, 205,},
{ 71, 101, 140, 107, 107, 206, 145, 209,},
{ 75, 102, 140, 112, 108, 211, 148, 213,},
{ 79, 102, 141, 116, 109, 215, 150, 217,},
{ 83, 103, 141, 121, 110, 218, 153, 220,},
{ 87, 104, 142, 125, 112, 222, 156, 224,},
{ 90, 105, 143, 129, 113, 225, 159, 226,},
{ 94, 105, 143, 133, 114, 227, 161, 229,},
{ 97, 106, 144, 137, 115, 230, 164, 231,},
{ 101, 107, 144, 141, 116, 232, 166, 233,},
{ 104, 108, 145, 145, 117, 234, 169, 235,},
{ 107, 108, 145, 149, 118, 236, 171, 237,},
{ 111, 109, 146, 152, 119, 238, 174, 239,},
{ 114, 110, 146, 156, 120, 240, 176, 240,},
{ 117, 111, 147, 159, 121, 241, 178, 242,},
{ 120, 112, 148, 162, 122, 242, 181, 243,},
{ 123, 112, 148, 165, 124, 244, 183, 244,},
{ 126, 113, 149, 168, 125, 245, 185, 245,},
{ 129, 114, 149, 171, 126, 246, 187, 246,},
{ 132, 115, 150, 174, 127, 247, 189, 247,},
{ 135, 116, 150, 177, 128, 248, 192, 248,},
{ 138, 116, 151, 180, 129, 248, 194, 249,},
{ 141, 117, 152, 183, 130, 249, 196, 249,},
{ 143, 118, 152, 185, 131, 250, 198, 250,},
{ 146, 119, 153, 188, 132, 250, 200, 250,},
{ 149, 120, 153, 190, 134, 251, 201, 251,},
{ 151, 120, 154, 192, 135, 251, 203, 251,},
{ 154, 121, 155, 195, 136, 252, 205, 252,},
{ 157, 122, 155, 197, 137, 252, 207, 252,},
{ 159, 123, 156, 199, 138, 253, 209, 253,},
{ 162, 124, 156, 201, 139, 253, 210, 253,},
{ 164, 125, 157, 203, 140, 253, 212, 253,},
{ 166, 126, 158, 205, 142, 254, 214, 253,},
{ 169, 126, 158, 207, 143, 254, 215, 254,},
{ 171, 127, 159, 209, 144, 254, 217, 254,},
{ 173, 128, 159, 211, 145, 254, 218, 254,},
{ 176, 129, 160, 213, 146, 254, 220, 254,},
{ 178, 130, 161, 214, 148, 255, 221, 255,},
{ 180, 131, 161, 216, 149, 255, 223, 255,},
{ 182, 132, 162, 218, 150, 255, 224, 255,},
{ 184, 133, 163, 219, 151, 255, 225, 255,},
{ 186, 134, 163, 221, 152, 255, 226, 255,},
{ 188, 135, 164, 222, 154, 255, 228, 255,},
{ 190, 136, 165, 224, 155, 255, 229, 255,},
{ 192, 137, 165, 225, 156, 255, 230, 255,},
{ 194, 137, 166, 226, 157, 255, 231, 255,},
{ 196, 138, 167, 228, 159, 255, 232, 255,},
{ 198, 139, 167, 229, 160, 255, 233, 255,},
{ 200, 140, 168, 230, 161, 255, 234, 255,},
{ 202, 141, 169, 231, 163, 255, 235, 255,},
{ 203, 142, 169, 233, 164, 255, 236, 255,},
{ 205, 143, 170, 234, 165, 255, 237, 255,},
{ 207, 145, 171, 235, 166, 255, 238, 255,},
{ 209, 146, 171, 236, 168, 255, 239, 255,},
{ 210, 147, 172, 237, 169, 255, 240, 255,},
{ 212, 148, 173, 238, 170, 255, 241, 255,},
{ 213, 149, 174, 239, 172, 255, 242, 255,},
{ 215, 150, 174, 240, 173, 255, 242, 255,},
{ 216, 151, 175, 240, 174, 255, 243, 255,},
{ 218, 152, 176, 241, 176, 255, 244, 255,},
{ 219, 153, 177, 242, 177, 255, 244, 255,},
{ 221, 154, 178, 243, 178, 255, 245, 255,},
{ 222, 156, 178, 244, 180, 255, 246, 255,},
{ 223, 157, 179, 244, 181, 255, 246, 255,},
{ 225, 158, 180, 245, 183, 255, 247, 255,},
{ 226, 159, 181, 246, 184, 255, 247, 255,},
{ 227, 160, 182, 246, 185, 255, 248, 255,},
{ 229, 162, 183, 247, 187, 255, 248, 255,},
{ 230, 163, 183, 247, 188, 255, 249, 255,},
{ 231, 164, 184, 248, 190, 255, 249, 255,},
{ 232, 165, 185, 248, 191, 255, 250, 255,},
{ 233, 167, 186, 249, 192, 255, 250, 255,},
{ 234, 168, 187, 249, 194, 255, 251, 255,},
{ 235, 169, 188, 250, 195, 255, 251, 255,},
{ 236, 171, 189, 250, 197, 255, 251, 255,},
{ 237, 172, 190, 251, 198, 255, 252, 255,},
{ 238, 173, 191, 251, 200, 255, 252, 255,},
{ 239, 175, 192, 251, 201, 255, 252, 255,},
{ 240, 176, 193, 252, 203, 255, 253, 255,},
{ 241, 178, 194, 252, 204, 255, 253, 255,},
{ 242, 179, 195, 252, 206, 255, 253, 255,},
{ 243, 181, 196, 253, 207, 255, 253, 255,},
{ 244, 182, 197, 253, 209, 255, 254, 255,},
{ 244, 184, 198, 253, 210, 255, 254, 255,},
{ 245, 185, 199, 254, 212, 255, 254, 255,},
{ 246, 187, 200, 254, 213, 255, 254, 255,},
{ 247, 189, 201, 254, 215, 255, 254, 255,},
{ 247, 190, 203, 254, 216, 255, 255, 255,},
{ 248, 192, 204, 254, 218, 255, 255, 255,},
{ 249, 194, 205, 255, 219, 255, 255, 255,},
{ 249, 195, 206, 255, 221, 255, 255, 255,},
{ 250, 197, 208, 255, 222, 255, 255, 255,},
{ 250, 199, 209, 255, 224, 255, 255, 255,},
{ 251, 201, 210, 255, 225, 255, 255, 255,},
{ 251, 203, 212, 255, 227, 255, 255, 255,},
{ 252, 205, 213, 255, 228, 255, 255, 255,},
{ 252, 207, 215, 255, 230, 255, 255, 255,},
{ 253, 209, 216, 255, 231, 255, 255, 255,},
{ 253, 211, 218, 255, 233, 255, 255, 255,},
{ 253, 213, 219, 255, 234, 255, 255, 255,},
{ 254, 215, 221, 255, 236, 255, 255, 255,},
{ 254, 217, 223, 255, 238, 255, 255, 255,},
{ 254, 219, 224, 255, 239, 255, 255, 255,},
{ 255, 222, 226, 255, 241, 255, 255, 255,},
{ 255, 224, 228, 255, 242, 255, 255, 255,},
{ 255, 227, 230, 255, 244, 255, 255, 255,},
{ 255, 229, 232, 255, 245, 255, 255, 255,},
{ 255, 232, 234, 255, 247, 255, 255, 255,},
{ 255, 235, 237, 255, 248, 255, 255, 255,},
{ 255, 238, 239, 255, 250, 255, 255, 255,},
{ 255, 241, 242, 255, 251, 255, 255, 255,},
{ 255, 244, 245, 255, 253, 255, 255, 255,},
{ 255, 248, 248, 255, 254, 255, 255, 255,},
{ 255, 253, 253, 255, 255, 255, 255, 255,},
}; };
void vp9_get_model_distribution(vp9_prob p, vp9_prob *tree_probs, void vp9_get_model_distribution(vp9_prob p, vp9_prob *tree_probs,
int b, int r) { int b, int r) {
const vp9_prob (*model)[MODEL_NODES]; const vp9_prob (*model)[MODEL_NODES];
if (r != INTRA_FRAME && b == PLANE_TYPE_UV) model = vp9_modelcoefprobs_pareto8;
model = vp9_modelcoefprobs_gg75p1; if (p == 1) {
else if (r == INTRA_FRAME && b == PLANE_TYPE_UV)
model = vp9_modelcoefprobs_gg75p1;
else if (r != INTRA_FRAME && b == PLANE_TYPE_Y_WITH_DC)
model = vp9_modelcoefprobs_gg75p1;
else
model = vp9_modelcoefprobs_gg625p1;
if (p & 1) { // odd
vpx_memcpy(tree_probs + UNCONSTRAINED_NODES, vpx_memcpy(tree_probs + UNCONSTRAINED_NODES,
model[(p - 1) / 2], model[2], MODEL_NODES * sizeof(vp9_prob));
(ENTROPY_NODES - UNCONSTRAINED_NODES) * sizeof(vp9_prob)); } else if (p == 2) {
} else {
// interpolate // interpolate
int i; int i;
for (i = UNCONSTRAINED_NODES; i < ENTROPY_NODES; ++i) for (i = UNCONSTRAINED_NODES; i < ENTROPY_NODES; ++i)
tree_probs[i] = (model[p / 2 - 1][i - UNCONSTRAINED_NODES] + tree_probs[i] = (model[0][i - UNCONSTRAINED_NODES] +
model[p / 2][i - UNCONSTRAINED_NODES]) >> 1; model[1][i - UNCONSTRAINED_NODES]) >> 1;
} else if (p < 119) {
// interpolate
int i, k, l;
k = (p - 3) & 3;
l = ((p - 3) >> 2) + 1;
if (k) {
for (i = UNCONSTRAINED_NODES; i < ENTROPY_NODES; ++i)
tree_probs[i] = (model[l][i - UNCONSTRAINED_NODES] * (4 - k) +
model[l + 1][i - UNCONSTRAINED_NODES] * k + 1) >> 2;
} else {
vpx_memcpy(tree_probs + UNCONSTRAINED_NODES,
model[l], MODEL_NODES * sizeof(vp9_prob));
}
} else {
// interpolate
int i, k, l;
k = (p - 119) & 7;
l = ((p - 119) >> 3) + 30;
if (k) {
for (i = UNCONSTRAINED_NODES; i < ENTROPY_NODES; ++i)
tree_probs[i] = (model[l][i - UNCONSTRAINED_NODES] * (8 - k) +
model[l + 1][i - UNCONSTRAINED_NODES] * k + 3) >> 3;
} else {
vpx_memcpy(tree_probs + UNCONSTRAINED_NODES,
model[l], MODEL_NODES * sizeof(vp9_prob));
}
} }
} }
......
...@@ -157,7 +157,14 @@ extern int vp9_get_coef_context(const int *scan, const int *neighbors, ...@@ -157,7 +157,14 @@ extern int vp9_get_coef_context(const int *scan, const int *neighbors,
const int *vp9_get_coef_neighbors_handle(const int *scan, int *pad); const int *vp9_get_coef_neighbors_handle(const int *scan, int *pad);
#if CONFIG_MODELCOEFPROB #if CONFIG_MODELCOEFPROB
#define COEFPROB_MODELS 128 // 128 lists stored for probs 1, 3, ..., 255
// 48 lists of probabilities are stored for the following ONE node probs:
// 1, (count 1)
// 3, 7, 11, 15, ..., 115, 119, (count 30)
// 127, 135, 143, ..., 247, 255 (count 17)
// In between probabilities are interpolated linearly
#define COEFPROB_MODELS 48
#define UNCONSTRAINED_NODES 3 #define UNCONSTRAINED_NODES 3
#define MODEL_NODES (ENTROPY_NODES - UNCONSTRAINED_NODES) #define MODEL_NODES (ENTROPY_NODES - UNCONSTRAINED_NODES)
......
Supports Markdown
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment