VP9_resizing: add limitation to the downsacling resolution.
Width and height of downscaling resolution should not be lower than min_width and min_height which can be set as needed, both are 180 for now. Change-Id: I34d06704ea51affbdd814246e22ee8d41d991f00
This commit is contained in:
		| @@ -1835,6 +1835,9 @@ int vp9_resize_one_pass_cbr(VP9_COMP *cpi) { | |||||||
|   RESIZE_ACTION resize_action = NO_RESIZE; |   RESIZE_ACTION resize_action = NO_RESIZE; | ||||||
|   int avg_qp_thr1 = 70; |   int avg_qp_thr1 = 70; | ||||||
|   int avg_qp_thr2 = 50; |   int avg_qp_thr2 = 50; | ||||||
|  |   int min_width = 180; | ||||||
|  |   int min_height = 180; | ||||||
|  |   int down_size_on = 1; | ||||||
|   cpi->resize_scale_num = 1; |   cpi->resize_scale_num = 1; | ||||||
|   cpi->resize_scale_den = 1; |   cpi->resize_scale_den = 1; | ||||||
|   // Don't resize on key frame; reset the counters on key frame. |   // Don't resize on key frame; reset the counters on key frame. | ||||||
| @@ -1843,6 +1846,21 @@ int vp9_resize_one_pass_cbr(VP9_COMP *cpi) { | |||||||
|     cpi->resize_count = 0; |     cpi->resize_count = 0; | ||||||
|     return 0; |     return 0; | ||||||
|   } |   } | ||||||
|  |   // Check current frame reslution to avoid generating frames smaller than | ||||||
|  |   // the minimum resolution. | ||||||
|  |   if (ONEHALFONLY_RESIZE) { | ||||||
|  |     if ((cm->width >> 1) < min_width || (cm->height >> 1) < min_height) | ||||||
|  |       down_size_on = 0; | ||||||
|  |   } else { | ||||||
|  |     if (cpi->resize_state == ORIG && | ||||||
|  |         (cm->width * 3 / 4 < min_width || | ||||||
|  |          cm->height * 3 / 4 < min_height)) | ||||||
|  |       return 0; | ||||||
|  |     else if (cpi->resize_state == THREE_QUARTER && | ||||||
|  |              ((cpi->oxcf.width >> 1) < min_width || | ||||||
|  |               (cpi->oxcf.height >> 1) < min_height)) | ||||||
|  |       down_size_on = 0; | ||||||
|  |   } | ||||||
|  |  | ||||||
| #if CONFIG_VP9_TEMPORAL_DENOISING | #if CONFIG_VP9_TEMPORAL_DENOISING | ||||||
|   // If denoiser is on, apply a smaller qp threshold. |   // If denoiser is on, apply a smaller qp threshold. | ||||||
| @@ -1869,7 +1887,7 @@ int vp9_resize_one_pass_cbr(VP9_COMP *cpi) { | |||||||
|       // down state, i.e. 1/2 or 3/4 of original resolution. |       // down state, i.e. 1/2 or 3/4 of original resolution. | ||||||
|       // Currently, use a flag to turn 3/4 resizing feature on/off. |       // Currently, use a flag to turn 3/4 resizing feature on/off. | ||||||
|       if (cpi->resize_buffer_underflow > (cpi->resize_count >> 2)) { |       if (cpi->resize_buffer_underflow > (cpi->resize_count >> 2)) { | ||||||
|         if (cpi->resize_state == THREE_QUARTER) { |         if (cpi->resize_state == THREE_QUARTER && down_size_on) { | ||||||
|           resize_action = DOWN_ONEHALF; |           resize_action = DOWN_ONEHALF; | ||||||
|           cpi->resize_state = ONE_HALF; |           cpi->resize_state = ONE_HALF; | ||||||
|         } else if (cpi->resize_state == ORIG) { |         } else if (cpi->resize_state == ORIG) { | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user
	 jackychen
					jackychen