|
|
@ -677,7 +677,6 @@ VpxBitStreamWriter VP9::ComposeUncompressedHeader() {
|
|
|
|
current_frame_info.intra_only = true;
|
|
|
|
current_frame_info.intra_only = true;
|
|
|
|
|
|
|
|
|
|
|
|
} else {
|
|
|
|
} else {
|
|
|
|
std::array<s32, 3> ref_frame_index;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
if (!current_frame_info.show_frame) {
|
|
|
|
if (!current_frame_info.show_frame) {
|
|
|
|
uncomp_writer.WriteBit(current_frame_info.intra_only);
|
|
|
|
uncomp_writer.WriteBit(current_frame_info.intra_only);
|
|
|
@ -692,9 +691,9 @@ VpxBitStreamWriter VP9::ComposeUncompressedHeader() {
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// Last, Golden, Altref frames
|
|
|
|
// Last, Golden, Altref frames
|
|
|
|
ref_frame_index = std::array<s32, 3>{0, 1, 2};
|
|
|
|
std::array<s32, 3> ref_frame_index{0, 1, 2};
|
|
|
|
|
|
|
|
|
|
|
|
// set when next frame is hidden
|
|
|
|
// Set when next frame is hidden
|
|
|
|
// altref and golden references are swapped
|
|
|
|
// altref and golden references are swapped
|
|
|
|
if (swap_next_golden) {
|
|
|
|
if (swap_next_golden) {
|
|
|
|
ref_frame_index = std::array<s32, 3>{0, 2, 1};
|
|
|
|
ref_frame_index = std::array<s32, 3>{0, 2, 1};
|
|
|
@ -783,17 +782,19 @@ VpxBitStreamWriter VP9::ComposeUncompressedHeader() {
|
|
|
|
for (std::size_t index = 0; index < current_frame_info.ref_deltas.size(); index++) {
|
|
|
|
for (std::size_t index = 0; index < current_frame_info.ref_deltas.size(); index++) {
|
|
|
|
const s8 old_deltas = loop_filter_ref_deltas[index];
|
|
|
|
const s8 old_deltas = loop_filter_ref_deltas[index];
|
|
|
|
const s8 new_deltas = current_frame_info.ref_deltas[index];
|
|
|
|
const s8 new_deltas = current_frame_info.ref_deltas[index];
|
|
|
|
|
|
|
|
const bool differing_delta = old_deltas != new_deltas;
|
|
|
|
|
|
|
|
|
|
|
|
loop_filter_delta_update |=
|
|
|
|
update_loop_filter_ref_deltas[index] = differing_delta;
|
|
|
|
(update_loop_filter_ref_deltas[index] = old_deltas != new_deltas);
|
|
|
|
loop_filter_delta_update |= differing_delta;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
for (std::size_t index = 0; index < current_frame_info.mode_deltas.size(); index++) {
|
|
|
|
for (std::size_t index = 0; index < current_frame_info.mode_deltas.size(); index++) {
|
|
|
|
const s8 old_deltas = loop_filter_mode_deltas[index];
|
|
|
|
const s8 old_deltas = loop_filter_mode_deltas[index];
|
|
|
|
const s8 new_deltas = current_frame_info.mode_deltas[index];
|
|
|
|
const s8 new_deltas = current_frame_info.mode_deltas[index];
|
|
|
|
|
|
|
|
const bool differing_delta = old_deltas != new_deltas;
|
|
|
|
|
|
|
|
|
|
|
|
loop_filter_delta_update |=
|
|
|
|
update_loop_filter_mode_deltas[index] = differing_delta;
|
|
|
|
(update_loop_filter_mode_deltas[index] = old_deltas != new_deltas);
|
|
|
|
loop_filter_delta_update |= differing_delta;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
uncomp_writer.WriteBit(loop_filter_delta_update);
|
|
|
|
uncomp_writer.WriteBit(loop_filter_delta_update);
|
|
|
|