mirror of
https://gitlab.freedesktop.org/gstreamer/gstreamer.git
synced 2025-01-08 16:35:40 +00:00
video-frame: Avoid using tile width
The tile width in pixel is not always available. Notably for 8L128 10bit format, the tile is 8x128 bytes, and the pixel format is fully packed. That means that the tile contains at least 6 pixels per line, but it also hold some bits of the pixel from the same line on the previous or next tile. Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3424>
This commit is contained in:
parent
5980fb76e7
commit
e60a94c27d
1 changed files with 3 additions and 5 deletions
|
@ -349,12 +349,10 @@ gst_video_frame_copy_plane (GstVideoFrame * dest, const GstVideoFrame * src,
|
|||
if (GST_VIDEO_FORMAT_INFO_IS_TILED (finfo)) {
|
||||
gint tile_size;
|
||||
gint sx_tiles, sy_tiles, dx_tiles, dy_tiles;
|
||||
guint i, j, tw, th;
|
||||
guint i, j;
|
||||
GstVideoTileMode mode;
|
||||
|
||||
tile_size = GST_VIDEO_FORMAT_INFO_TILE_SIZE (finfo, plane);
|
||||
tw = GST_VIDEO_FORMAT_INFO_TILE_WIDTH (finfo, plane);
|
||||
th = GST_VIDEO_FORMAT_INFO_TILE_HEIGHT (finfo, plane);
|
||||
|
||||
mode = GST_VIDEO_FORMAT_INFO_TILE_MODE (finfo);
|
||||
|
||||
|
@ -365,8 +363,8 @@ gst_video_frame_copy_plane (GstVideoFrame * dest, const GstVideoFrame * src,
|
|||
dy_tiles = GST_VIDEO_TILE_Y_TILES (ds);
|
||||
|
||||
/* this is the amount of tiles to copy */
|
||||
w = ((w - 1) / tw) + 1;
|
||||
h = ((h - 1) / th) + 1;
|
||||
w = MIN (sx_tiles, dx_tiles);
|
||||
h = MIN (sy_tiles, dy_tiles);
|
||||
|
||||
/* FIXME can possibly do better when no retiling is needed, it depends on
|
||||
* the stride and the tile_size */
|
||||
|
|
Loading…
Reference in a new issue