Commit b6e23bc4 authored by Yunqing Wang's avatar Yunqing Wang
Browse files

Force to have a common frame header in large scale tile coding

In large scale tile coding(namely, large_scale_tile = 1), forced
all frames to generate a bit-exact uncompressed frame header.
This patch modified parameters that could change from one frame to
another.

Change-Id: Ibe72519da0b8a4f5a4ef30a4303ad7d7e4992a65
parent 2f319f2f
...@@ -4349,6 +4349,9 @@ void av1_encode_frame(AV1_COMP *cpi) { ...@@ -4349,6 +4349,9 @@ void av1_encode_frame(AV1_COMP *cpi) {
#if CONFIG_DUAL_FILTER #if CONFIG_DUAL_FILTER
cm->interp_filter = SWITCHABLE; cm->interp_filter = SWITCHABLE;
#endif #endif
#if CONFIG_EXT_TILE
if (cm->large_scale_tile) cm->interp_filter = EIGHTTAP_REGULAR;
#endif // CONFIG_EXT_TILE
make_consistent_compound_tools(cm); make_consistent_compound_tools(cm);
...@@ -4375,12 +4378,18 @@ void av1_encode_frame(AV1_COMP *cpi) { ...@@ -4375,12 +4378,18 @@ void av1_encode_frame(AV1_COMP *cpi) {
} }
make_consistent_compound_tools(cm); make_consistent_compound_tools(cm);
if (cm->tx_mode == TX_MODE_SELECT && cpi->td.mb.txb_split_count == 0) #if CONFIG_EXT_TILE
if (!cm->large_scale_tile) {
#endif // CONFIG_EXT_TILE
if (cm->tx_mode == TX_MODE_SELECT && cpi->td.mb.txb_split_count == 0)
#if CONFIG_SIMPLIFY_TX_MODE #if CONFIG_SIMPLIFY_TX_MODE
cm->tx_mode = TX_MODE_LARGEST; cm->tx_mode = TX_MODE_LARGEST;
#else #else
cm->tx_mode = ALLOW_32X32 + CONFIG_TX64X64; cm->tx_mode = ALLOW_32X32 + CONFIG_TX64X64;
#endif // CONFIG_SIMPLIFY_TX_MODE #endif // CONFIG_SIMPLIFY_TX_MODE
#if CONFIG_EXT_TILE
}
#endif // CONFIG_EXT_TILE
} else { } else {
make_consistent_compound_tools(cm); make_consistent_compound_tools(cm);
encode_frame_internal(cpi); encode_frame_internal(cpi);
......
...@@ -2491,7 +2491,14 @@ void av1_change_config(struct AV1_COMP *cpi, const AV1EncoderConfig *oxcf) { ...@@ -2491,7 +2491,14 @@ void av1_change_config(struct AV1_COMP *cpi, const AV1EncoderConfig *oxcf) {
rc->worst_quality = cpi->oxcf.worst_allowed_q; rc->worst_quality = cpi->oxcf.worst_allowed_q;
rc->best_quality = cpi->oxcf.best_allowed_q; rc->best_quality = cpi->oxcf.best_allowed_q;
cm->interp_filter = cpi->sf.default_interp_filter; #if CONFIG_EXT_TILE
if (!oxcf->large_scale_tile)
#endif // CONFIG_EXT_TILE
cm->interp_filter = cpi->sf.default_interp_filter;
#if CONFIG_EXT_TILE
else
cm->interp_filter = EIGHTTAP_REGULAR;
#endif // CONFIG_EXT_TILE
if (cpi->oxcf.render_width > 0 && cpi->oxcf.render_height > 0) { if (cpi->oxcf.render_width > 0 && cpi->oxcf.render_height > 0) {
cm->render_width = cpi->oxcf.render_width; cm->render_width = cpi->oxcf.render_width;
...@@ -5496,6 +5503,9 @@ static void encode_frame_to_data_rate(AV1_COMP *cpi, size_t *size, ...@@ -5496,6 +5503,9 @@ static void encode_frame_to_data_rate(AV1_COMP *cpi, size_t *size,
#if CONFIG_EXT_TILE #if CONFIG_EXT_TILE
cm->large_scale_tile = cpi->oxcf.large_scale_tile; cm->large_scale_tile = cpi->oxcf.large_scale_tile;
cm->single_tile_decoding = cpi->oxcf.single_tile_decoding; cm->single_tile_decoding = cpi->oxcf.single_tile_decoding;
#if CONFIG_REFERENCE_BUFFER
if (cm->large_scale_tile) cm->seq_params.frame_id_numbers_present_flag = 0;
#endif // CONFIG_REFERENCE_BUFFER
#endif // CONFIG_EXT_TILE #endif // CONFIG_EXT_TILE
#if CONFIG_MONO_VIDEO #if CONFIG_MONO_VIDEO
......
Markdown is supported
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