- if (sps->output_window.left_offset & (0x1F >> (sps->pixel_shift)) &&
- !(avctx->flags & AV_CODEC_FLAG_UNALIGNED)) {
- sps->output_window.left_offset &= ~(0x1F >> (sps->pixel_shift));
- av_log(avctx, AV_LOG_WARNING, "Reducing left output window to %d "
- "chroma samples to preserve alignment.\n",
- sps->output_window.left_offset);
- }
- sps->output_width = sps->width -
- (sps->output_window.left_offset + sps->output_window.right_offset);
- sps->output_height = sps->height -
- (sps->output_window.top_offset + sps->output_window.bottom_offset);
- if (sps->width <= sps->output_window.left_offset + (int64_t)sps->output_window.right_offset ||
- sps->height <= sps->output_window.top_offset + (int64_t)sps->output_window.bottom_offset) {
- av_log(avctx, AV_LOG_WARNING, "Invalid visible frame dimensions: %dx%d.\n",
- sps->output_width, sps->output_height);
+
+ ow = &sps->output_window;
+ if (ow->left_offset >= INT_MAX - ow->right_offset ||
+ ow->top_offset >= INT_MAX - ow->bottom_offset ||
+ ow->left_offset + ow->right_offset >= sps->width ||
+ ow->top_offset + ow->bottom_offset >= sps->height) {
+ av_log(avctx, AV_LOG_WARNING, "Invalid cropping offsets: %u/%u/%u/%u\n",
+ ow->left_offset, ow->right_offset, ow->top_offset, ow->bottom_offset);