[vlc-devel] commit: Clean up pf_pre_render prototype (btw, this function seems useless) . (Laurent Aimar )
git version control
git at videolan.org
Tue Jul 29 23:19:56 CEST 2008
vlc | branch: master | Laurent Aimar <fenrir at videolan.org> | Tue Jul 29 23:20:00 2008 +0200| [8152480bfc218c15e43e084f216ca1f619148908]
Clean up pf_pre_render prototype (btw, this function seems useless).
Change pf_update_regions scheme by not destroying regions before calling
it(codec using them may now avoid redrawing not changed subs).
> http://git.videolan.org/gitweb.cgi/vlc.git/?a=commit;h=8152480bfc218c15e43e084f216ca1f619148908
---
include/vlc_vout.h | 6 +++---
modules/codec/csri.c | 27 ++++++++++++++++++---------
src/video_output/vout_subpictures.c | 13 ++-----------
3 files changed, 23 insertions(+), 23 deletions(-)
diff --git a/include/vlc_vout.h b/include/vlc_vout.h
index e82f1fb..d338277 100644
--- a/include/vlc_vout.h
+++ b/include/vlc_vout.h
@@ -351,9 +351,9 @@ struct subpicture_t
video_format_t *, picture_t * );
void ( *pf_destroy_region ) ( vlc_object_t *, subpicture_region_t * );
- void ( *pf_pre_render ) ( video_format_t *, spu_t *, subpicture_t *, mtime_t );
- subpicture_region_t * ( *pf_update_regions ) ( video_format_t *, spu_t *,
- subpicture_t *, mtime_t );
+ void ( *pf_pre_render ) ( video_format_t *, spu_t *, subpicture_t * );
+ void ( *pf_update_regions ) ( video_format_t *, spu_t *,
+ subpicture_t *, mtime_t );
/** Private data - the subtitle plugin might want to put stuff here to
* keep track of the subpicture */
diff --git a/modules/codec/csri.c b/modules/codec/csri.c
index d1fcbed..8e43d17 100644
--- a/modules/codec/csri.c
+++ b/modules/codec/csri.c
@@ -62,9 +62,9 @@ vlc_module_end();
*****************************************************************************/
static subpicture_t *DecodeBlock( decoder_t *, block_t ** );
static void DestroySubpicture( subpicture_t * );
-static void PreRender( video_format_t *, spu_t *, subpicture_t *, mtime_t );
-static subpicture_region_t *UpdateRegions( video_format_t *, spu_t *,
- subpicture_t *, mtime_t );
+static void PreRender( video_format_t *, spu_t *, subpicture_t * );
+static void UpdateRegions( video_format_t *, spu_t *,
+ subpicture_t *, mtime_t );
/*****************************************************************************
* decoder_sys_t: decoder data
@@ -235,14 +235,14 @@ static void DestroySubpicture( subpicture_t *p_subpic )
}
static void PreRender( video_format_t *p_fmt, spu_t *p_spu,
- subpicture_t *p_subpic, mtime_t ts )
+ subpicture_t *p_subpic )
{
decoder_t *p_dec = p_subpic->p_sys->p_dec;
p_dec->p_sys->p_spu_final = p_subpic;
}
-static subpicture_region_t *UpdateRegions( video_format_t *p_fmt, spu_t *p_spu,
- subpicture_t *p_subpic, mtime_t ts )
+static void UpdateRegions( video_format_t *p_fmt, spu_t *p_spu,
+ subpicture_t *p_subpic, mtime_t ts )
{
decoder_t *p_dec = p_subpic->p_sys->p_dec;
decoder_sys_t *p_sys = p_dec->p_sys;
@@ -250,8 +250,18 @@ static subpicture_region_t *UpdateRegions( video_format_t *p_fmt, spu_t *p_spu,
subpicture_region_t *p_spu_region;
video_format_t fmt;
+ /* TODO maybe checking if we really need redrawing */
+ while( p_subpic->p_region )
+ {
+ subpicture_region_t *p_region = p_subpic->p_region;
+ p_subpic->p_region = p_region->p_next;
+ spu_DestroyRegion( p_spu, p_region );
+ }
+ p_subpic->p_region = NULL;
+
+ /* FIXME check why this is needed */
if( p_subpic != p_sys->p_spu_final )
- return NULL;
+ return;
#if 0
msg_Warn( p_dec, "---- fmt: %dx%d %dx%d chroma=%4.4s",
@@ -288,7 +298,7 @@ static subpicture_region_t *UpdateRegions( video_format_t *p_fmt, spu_t *p_spu,
p_subpic->i_original_picture_height = fmt.i_height;
p_subpic->i_original_picture_width = fmt.i_width;
- p_spu_region = p_subpic->pf_create_region( VLC_OBJECT(p_dec), &fmt );
+ p_spu_region = p_subpic->p_region = p_subpic->pf_create_region( VLC_OBJECT(p_dec), &fmt );
if( p_spu_region )
{
@@ -306,6 +316,5 @@ static subpicture_region_t *UpdateRegions( video_format_t *p_fmt, spu_t *p_spu,
csri_frame.strides[0] = p_spu_region->picture.Y_PITCH;
csri_render( p_sys->p_instance, &csri_frame, ts * 0.000001 );
}
- return p_spu_region;
}
diff --git a/src/video_output/vout_subpictures.c b/src/video_output/vout_subpictures.c
index 5e6b6e6..723df0d 100644
--- a/src/video_output/vout_subpictures.c
+++ b/src/video_output/vout_subpictures.c
@@ -959,9 +959,7 @@ void spu_RenderSubpictures( spu_t *p_spu, video_format_t *p_fmt,
p_subpic_v = p_subpic_v->p_next )
{
if( p_subpic_v->pf_pre_render )
- {
- p_subpic_v->pf_pre_render( p_fmt, p_spu, p_subpic_v, mdate() );
- }
+ p_subpic_v->pf_pre_render( p_fmt, p_spu, p_subpic_v );
}
if( i_scale_width_orig <= 0 )
@@ -998,13 +996,6 @@ void spu_RenderSubpictures( spu_t *p_spu, video_format_t *p_fmt,
if( p_subpic->pf_update_regions )
{
- while( p_subpic->p_region )
- {
- subpicture_region_t *p_region = p_subpic->p_region;
- p_subpic->p_region = p_region->p_next;
- spu_DestroyRegion( p_spu, p_region );
- }
-
/* TODO do not reverse the scaling that was done before calling
* spu_RenderSubpictures, just pass it along (or do it inside
* spu_RenderSubpictures) */
@@ -1014,7 +1005,7 @@ void spu_RenderSubpictures( spu_t *p_spu, video_format_t *p_fmt,
fmt_org.i_height =
fmt_org.i_visible_height = i_source_video_height;
- p_subpic->p_region = p_subpic->pf_update_regions( &fmt_org, p_spu, p_subpic, mdate() );
+ p_subpic->pf_update_regions( &fmt_org, p_spu, p_subpic, mdate() );
}
/* */
More information about the vlc-devel
mailing list