Commit d9dd59cd authored by Rémi Denis-Courmont's avatar Rémi Denis-Courmont

picture: move picture_BlendSubpicture() to subpicture

parent a7df1b8e
...@@ -238,19 +238,6 @@ VLC_API int picture_Export( vlc_object_t *p_obj, block_t **pp_image, video_forma ...@@ -238,19 +238,6 @@ VLC_API int picture_Export( vlc_object_t *p_obj, block_t **pp_image, video_forma
VLC_API int picture_Setup( picture_t *, const video_format_t * ); VLC_API int picture_Setup( picture_t *, const video_format_t * );
/**
* This function will blend a given subpicture onto a picture.
*
* The subpicture and all its region must:
* - be absolute.
* - not be ephemere.
* - not have the fade flag.
* - contains only picture (no text rendering).
* \return the number of region(s) succesfully blent
*/
VLC_API unsigned picture_BlendSubpicture( picture_t *, filter_t *p_blend, subpicture_t * );
/***************************************************************************** /*****************************************************************************
* Shortcuts to access image components * Shortcuts to access image components
*****************************************************************************/ *****************************************************************************/
......
...@@ -203,6 +203,18 @@ VLC_API subpicture_t * subpicture_NewFromPicture( vlc_object_t *, picture_t *, v ...@@ -203,6 +203,18 @@ VLC_API subpicture_t * subpicture_NewFromPicture( vlc_object_t *, picture_t *, v
*/ */
VLC_API void subpicture_Update( subpicture_t *, const video_format_t *src, const video_format_t *, mtime_t ); VLC_API void subpicture_Update( subpicture_t *, const video_format_t *src, const video_format_t *, mtime_t );
/**
* This function will blend a given subpicture onto a picture.
*
* The subpicture and all its region must:
* - be absolute.
* - not be ephemere.
* - not have the fade flag.
* - contains only picture (no text rendering).
* \return the number of region(s) succesfully blent
*/
VLC_API unsigned picture_BlendSubpicture( picture_t *, filter_t *p_blend, subpicture_t * );
/**@}*/ /**@}*/
#endif /* _VLC_VIDEO_H */ #endif /* _VLC_VIDEO_H */
...@@ -448,25 +448,3 @@ int picture_Export( vlc_object_t *p_obj, ...@@ -448,25 +448,3 @@ int picture_Export( vlc_object_t *p_obj,
return VLC_SUCCESS; return VLC_SUCCESS;
} }
unsigned picture_BlendSubpicture(picture_t *dst,
filter_t *blend, subpicture_t *src)
{
unsigned done = 0;
assert(src && !src->b_fade && src->b_absolute);
for (subpicture_region_t *r = src->p_region; r != NULL; r = r->p_next) {
assert(r->p_picture && r->i_align == 0);
if (filter_ConfigureBlend(blend, dst->format.i_width,
dst->format.i_height, &r->fmt)
|| filter_Blend(blend, dst, r->i_x, r->i_y, r->p_picture,
src->i_alpha * r->i_alpha / 255))
msg_Err(blend, "blending %4.4s to %4.4s failed",
(char *)&blend->fmt_in.video.i_chroma,
(char *)&blend->fmt_out.video.i_chroma );
else
done++;
}
return done;
}
...@@ -272,3 +272,26 @@ void subpicture_region_ChainDelete( subpicture_region_t *p_head ) ...@@ -272,3 +272,26 @@ void subpicture_region_ChainDelete( subpicture_region_t *p_head )
} }
} }
#include <vlc_filter.h>
unsigned picture_BlendSubpicture(picture_t *dst,
filter_t *blend, subpicture_t *src)
{
unsigned done = 0;
assert(src && !src->b_fade && src->b_absolute);
for (subpicture_region_t *r = src->p_region; r != NULL; r = r->p_next) {
assert(r->p_picture && r->i_align == 0);
if (filter_ConfigureBlend(blend, dst->format.i_width,
dst->format.i_height, &r->fmt)
|| filter_Blend(blend, dst, r->i_x, r->i_y, r->p_picture,
src->i_alpha * r->i_alpha / 255))
msg_Err(blend, "blending %4.4s to %4.4s failed",
(char *)&blend->fmt_in.video.i_chroma,
(char *)&blend->fmt_out.video.i_chroma );
else
done++;
}
return done;
}
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment