NVIDIA hardware can process tall or wide videos, but not both at the
same time (for some gens). This limit is provided in units of
macroblocks.
Signed-off-by: Ilia Mirkin <imirkin@alum.mit.edu>
Reviewed-by: Leo Liu <leo.liu@amd.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/10677>
PIPE_VIDEO_CAP_MAX_HEIGHT);
*max_level = pscreen->get_video_param(pscreen, p_profile, PIPE_VIDEO_ENTRYPOINT_BITSTREAM,
PIPE_VIDEO_CAP_MAX_LEVEL);
- *max_macroblocks = (*max_width/16)*(*max_height/16);
+ *max_macroblocks = pscreen->get_video_param(pscreen, p_profile, PIPE_VIDEO_ENTRYPOINT_BITSTREAM,
+ PIPE_VIDEO_CAP_MAX_MACROBLOCKS);
+ if (*max_macroblocks == 0) {
+ *max_macroblocks = (*max_width/16)*(*max_height/16);
+ }
} else {
*max_width = 0;
*max_height = 0;
PIPE_VIDEO_CAP_SUPPORTS_PROGRESSIVE = 6,
PIPE_VIDEO_CAP_SUPPORTS_INTERLACED = 7,
PIPE_VIDEO_CAP_MAX_LEVEL = 8,
- PIPE_VIDEO_CAP_STACKED_FRAMES = 9
+ PIPE_VIDEO_CAP_STACKED_FRAMES = 9,
+ PIPE_VIDEO_CAP_MAX_MACROBLOCKS = 10,
};
enum pipe_video_entrypoint