vlc | branch: master | Jean-Baptiste Kempf <[email protected]> | Mon Apr 6 18:49:15 2015 +0200| [19fe6a4cf3704652c4c075bcfef0be85c2773821] | committer: Jean-Baptiste Kempf
Move subpicture_region_Copy to the core Signed-off-by: Jean-Baptiste Kempf <[email protected]> > http://git.videolan.org/gitweb.cgi/vlc.git/?a=commit;h=19fe6a4cf3704652c4c075bcfef0be85c2773821 --- include/vlc_subpicture.h | 8 ++++++++ modules/access/bluray.c | 32 +------------------------------- src/libvlccore.sym | 1 + src/misc/subpicture.c | 29 +++++++++++++++++++++++++++++ 4 files changed, 39 insertions(+), 31 deletions(-) diff --git a/include/vlc_subpicture.h b/include/vlc_subpicture.h index 0329e03..3f130c9 100644 --- a/include/vlc_subpicture.h +++ b/include/vlc_subpicture.h @@ -106,6 +106,14 @@ VLC_API void subpicture_region_Delete( subpicture_region_t *p_region ); VLC_API void subpicture_region_ChainDelete( subpicture_region_t *p_head ); /** + * This function will copy a subpicture region to a new allocated one + * and transfer all the properties + * + * Provided for convenience. + */ +VLC_API subpicture_region_t *subpicture_region_Copy( subpicture_region_t *p_region ); + +/** * */ typedef struct subpicture_updater_sys_t subpicture_updater_sys_t; diff --git a/modules/access/bluray.c b/modules/access/bluray.c index 873031b..d218f91 100644 --- a/modules/access/bluray.c +++ b/modules/access/bluray.c @@ -676,36 +676,6 @@ static int subpictureUpdaterValidate(subpicture_t *p_subpic, return res; } -/* This should probably be moved to subpictures.c afterward */ -static subpicture_region_t* subpicture_region_Clone(subpicture_region_t *p_region_src) -{ - if (!p_region_src) - return NULL; - subpicture_region_t *p_region_dst = subpicture_region_New(&p_region_src->fmt); - if (unlikely(!p_region_dst)) - return NULL; - - p_region_dst->i_x = p_region_src->i_x; - p_region_dst->i_y = p_region_src->i_y; - p_region_dst->i_align = p_region_src->i_align; - p_region_dst->i_alpha = p_region_src->i_alpha; - - p_region_dst->psz_text = p_region_src->psz_text ? strdup(p_region_src->psz_text) : NULL; - p_region_dst->psz_html = p_region_src->psz_html ? strdup(p_region_src->psz_html) : NULL; - if (p_region_src->p_style != NULL) { - p_region_dst->p_style = malloc(sizeof(*p_region_dst->p_style)); - p_region_dst->p_style = text_style_Copy(p_region_dst->p_style, - p_region_src->p_style); - } - - //Palette is already copied by subpicture_region_New, we just have to duplicate p_pixels - for (int i = 0; i < p_region_src->p_picture->i_planes; i++) - memcpy(p_region_dst->p_picture->p[i].p_pixels, - p_region_src->p_picture->p[i].p_pixels, - p_region_src->p_picture->p[i].i_lines * p_region_src->p_picture->p[i].i_pitch); - return p_region_dst; -} - static void subpictureUpdaterUpdate(subpicture_t *p_subpic, const video_format_t *p_fmt_src, const video_format_t *p_fmt_dst, @@ -731,7 +701,7 @@ static void subpictureUpdaterUpdate(subpicture_t *p_subpic, subpicture_region_t **p_dst = &p_subpic->p_region; while (p_src != NULL) { - *p_dst = subpicture_region_Clone(p_src); + *p_dst = subpicture_region_Copy(p_src); if (*p_dst == NULL) break; p_dst = &(*p_dst)->p_next; diff --git a/src/libvlccore.sym b/src/libvlccore.sym index e740822..d8525b6 100644 --- a/src/libvlccore.sym +++ b/src/libvlccore.sym @@ -415,6 +415,7 @@ subpicture_New subpicture_NewFromPicture subpicture_Update subpicture_region_ChainDelete +subpicture_region_Copy subpicture_region_Delete subpicture_region_New vlc_tls_ClientCreate diff --git a/src/misc/subpicture.c b/src/misc/subpicture.c index 3ae7722..e1237cb 100644 --- a/src/misc/subpicture.c +++ b/src/misc/subpicture.c @@ -290,3 +290,32 @@ unsigned picture_BlendSubpicture(picture_t *dst, } return done; } + +subpicture_region_t* subpicture_region_Copy( subpicture_region_t *p_region_src ) +{ + if (!p_region_src) + return NULL; + subpicture_region_t *p_region_dst = subpicture_region_New(&p_region_src->fmt); + if (unlikely(!p_region_dst)) + return NULL; + + p_region_dst->i_x = p_region_src->i_x; + p_region_dst->i_y = p_region_src->i_y; + p_region_dst->i_align = p_region_src->i_align; + p_region_dst->i_alpha = p_region_src->i_alpha; + + p_region_dst->psz_text = p_region_src->psz_text ? strdup(p_region_src->psz_text) : NULL; + p_region_dst->psz_html = p_region_src->psz_html ? strdup(p_region_src->psz_html) : NULL; + if (p_region_src->p_style != NULL) { + p_region_dst->p_style = malloc(sizeof(*p_region_dst->p_style)); + p_region_dst->p_style = text_style_Copy(p_region_dst->p_style, + p_region_src->p_style); + } + + //Palette is already copied by subpicture_region_New, we just have to duplicate p_pixels + for (int i = 0; i < p_region_src->p_picture->i_planes; i++) + memcpy(p_region_dst->p_picture->p[i].p_pixels, + p_region_src->p_picture->p[i].p_pixels, + p_region_src->p_picture->p[i].i_lines * p_region_src->p_picture->p[i].i_pitch); + return p_region_dst; +} _______________________________________________ vlc-commits mailing list [email protected] https://mailman.videolan.org/listinfo/vlc-commits
