[vlc-devel] [PATCH] filters: assert if converters output more than one picture at once
Steve Lhomme
robux4 at ycbcr.xyz
Thu Oct 15 16:09:10 CEST 2020
---
modules/video_filter/ci_filters.m | 2 ++
src/misc/image.c | 6 +++++-
src/video_output/vout_subpictures.c | 2 ++
3 files changed, 9 insertions(+), 1 deletion(-)
diff --git a/modules/video_filter/ci_filters.m b/modules/video_filter/ci_filters.m
index e712ad6ac39..21f0e18cd4b 100644
--- a/modules/video_filter/ci_filters.m
+++ b/modules/video_filter/ci_filters.m
@@ -380,6 +380,7 @@ Filter(filter_t *filter, picture_t *src)
src = ctx->src_converter->ops->filter_video(ctx->src_converter, src);
if (!src)
return NULL;
+ assert(!picture_HasChainedPics(src)); // no chaining
}
@autoreleasepool {
@@ -420,6 +421,7 @@ Filter(filter_t *filter, picture_t *src)
dst = ctx->dst_converter->ops->filter_video(ctx->dst_converter, dst);
if (!dst)
return NULL;
+ assert(!picture_HasChainedPics(dst)); // no chaining
}
p_sys->mouse_moved = false;
diff --git a/src/misc/image.c b/src/misc/image.c
index 5ba958fd406..034b0a27d8e 100644
--- a/src/misc/image.c
+++ b/src/misc/image.c
@@ -271,6 +271,7 @@ static picture_t *ImageRead( image_handler_t *p_image, block_t *p_block,
}
p_pic = p_image->p_converter->ops->filter_video( p_image->p_converter, p_pic );
+ assert(p_pic == NULL || !picture_HasChainedPics(p_pic)); // no chaining
}
else
{
@@ -438,6 +439,7 @@ static block_t *ImageWrite( image_handler_t *p_image, picture_t *p_pic,
if( likely(p_tmp_pic != NULL) )
{
+ assert(!picture_HasChainedPics(p_tmp_pic)); // no chaining
p_block = p_image->p_enc->pf_encode_video( p_image->p_enc,
p_tmp_pic );
picture_Release( p_tmp_pic );
@@ -569,7 +571,9 @@ static picture_t *ImageConvert( image_handler_t *p_image, picture_t *p_pic,
picture_Hold( p_pic );
- return p_image->p_converter->ops->filter_video( p_image->p_converter, p_pic );
+ p_pic = p_image->p_converter->ops->filter_video( p_image->p_converter, p_pic );
+ assert(p_pic == NULL || !picture_HasChainedPics(p_pic)); // no chaining
+ return p_pic;
}
/**
diff --git a/src/video_output/vout_subpictures.c b/src/video_output/vout_subpictures.c
index 0d254b2c556..f60c6f57973 100644
--- a/src/video_output/vout_subpictures.c
+++ b/src/video_output/vout_subpictures.c
@@ -1002,6 +1002,7 @@ static void SpuRenderRegion(spu_t *spu,
scale_yuvp->fmt_out.video.i_chroma = chroma_list[0];
picture = scale_yuvp->ops->filter_video(scale_yuvp, picture);
+ assert(picture == NULL || !picture_HasChainedPics(picture)); // no chaining
if (!picture) {
/* Well we will try conversion+scaling */
msg_Warn(spu, "%4.4s to %4.4s conversion failed",
@@ -1033,6 +1034,7 @@ static void SpuRenderRegion(spu_t *spu,
spu_scale_h(region->fmt.i_visible_height, scale_size);
picture = scale->ops->filter_video(scale, picture);
+ assert(picture == NULL || !picture_HasChainedPics(picture)); // no chaining
if (!picture)
msg_Err(spu, "scaling failed");
}
--
2.26.2
More information about the vlc-devel
mailing list