Reset segment id if we decide not to update segment map
This avoids potential encoder and decoder mismatch.
Change-Id: I5282d3e168afc6193033ad3fce8fbc35618ab2f5
(cherry picked from commit 386e4ba2f0
)
This commit is contained in:
parent
42ebe3b783
commit
eb9a4b97c5
@ -185,6 +185,13 @@ static int GetProba(int a, int b) {
|
|||||||
: (255 * a + total / 2) / total; // rounded proba
|
: (255 * a + total / 2) / total; // rounded proba
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static void ResetSegments(VP8Encoder* const enc) {
|
||||||
|
int n;
|
||||||
|
for (n = 0; n < enc->mb_w_ * enc->mb_h_; ++n) {
|
||||||
|
enc->mb_info_[n].segment_ = 0;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
static void SetSegmentProbas(VP8Encoder* const enc) {
|
static void SetSegmentProbas(VP8Encoder* const enc) {
|
||||||
int p[NUM_MB_SEGMENTS] = { 0 };
|
int p[NUM_MB_SEGMENTS] = { 0 };
|
||||||
int n;
|
int n;
|
||||||
@ -206,6 +213,7 @@ static void SetSegmentProbas(VP8Encoder* const enc) {
|
|||||||
|
|
||||||
enc->segment_hdr_.update_map_ =
|
enc->segment_hdr_.update_map_ =
|
||||||
(probas[0] != 255) || (probas[1] != 255) || (probas[2] != 255);
|
(probas[0] != 255) || (probas[1] != 255) || (probas[2] != 255);
|
||||||
|
if (!enc->segment_hdr_.update_map_) ResetSegments(enc);
|
||||||
enc->segment_hdr_.size_ =
|
enc->segment_hdr_.size_ =
|
||||||
p[0] * (VP8BitCost(0, probas[0]) + VP8BitCost(0, probas[1])) +
|
p[0] * (VP8BitCost(0, probas[0]) + VP8BitCost(0, probas[1])) +
|
||||||
p[1] * (VP8BitCost(0, probas[0]) + VP8BitCost(1, probas[1])) +
|
p[1] * (VP8BitCost(0, probas[0]) + VP8BitCost(1, probas[1])) +
|
||||||
|
Loading…
Reference in New Issue
Block a user