mirror of
https://github.com/mpv-player/mpv.git
synced 2025-12-28 05:33:14 +00:00
sub: fix --sub-gauss
Implement it directly in sd_lavc.c as well. Blurring requires extending the size of the sub-images by the blur radius. Since we now want sub_bitmaps to be packed into a single image, and we don't want to repack for blurring, we add some extra padding to each sub-bitmap in the initial packing, and then extend their size later. This relies on the previous bitmap_packer commit, which always adds the padding in all cases. Since blurring is now done on parts of a large bitmap, the data pointers can become unaligned, depending on their position. To avoid shitty libswscale printing a dumb warning, allocate an extra image, so that the blurring pass is done on two newly allocated images. (I don't find this feature important enough to waste more time on it.) The previous refactor accidentally broke this feature due to a logic bug in osd.c. It didn't matter before it happened to break, and doesn't matter now since the code paths are different.
This commit is contained in:
@@ -295,10 +295,6 @@ static void render_object(struct osd_state *osd, struct osd_object *obj,
|
||||
|
||||
bool cached = false; // do we have a copy of all the image data?
|
||||
|
||||
if (out_imgs->format == SUBBITMAP_RGBA && opts->sub_gauss != 0.0f)
|
||||
cached |= osd_conv_blur_rgba(obj->cache[2], out_imgs, opts->sub_gauss);
|
||||
|
||||
// Do this conversion last to not trigger gauss blurring for ASS
|
||||
if (formats[SUBBITMAP_RGBA] && out_imgs->format == SUBBITMAP_LIBASS)
|
||||
cached |= osd_conv_ass_to_rgba(obj->cache[3], out_imgs);
|
||||
|
||||
|
||||
Reference in New Issue
Block a user