[vlc-commits] bluray: make overlay helper function interfaces ARGB compatible
Petri Hintukainen
git at videolan.org
Fri Aug 16 13:26:07 CEST 2013
vlc | branch: master | Petri Hintukainen <phintuka at users.sourceforge.net> | Fri Aug 9 13:15:44 2013 +0300| [6deffd85b0a443dd7c6e914acb4dbd376cdd29e3] | committer: Rafaël Carré
bluray: make overlay helper function interfaces ARGB compatible
Signed-off-by: Rafaël Carré <funman at videolan.org>
> http://git.videolan.org/gitweb.cgi/vlc.git/?a=commit;h=6deffd85b0a443dd7c6e914acb4dbd376cdd29e3
---
modules/access/bluray.c | 64 +++++++++++++++++++++++------------------------
1 file changed, 32 insertions(+), 32 deletions(-)
diff --git a/modules/access/bluray.c b/modules/access/bluray.c
index 2da09aa..c98301d 100644
--- a/modules/access/bluray.c
+++ b/modules/access/bluray.c
@@ -725,7 +725,7 @@ static void blurayCloseAllOverlays(demux_t *p_demux)
* If is has already been acquired, the overlay has already been sent to it,
* therefore, we only flag the overlay as "Outdated"
*/
-static void blurayActivateOverlay(demux_t *p_demux, const BD_OVERLAY* const ov)
+static void blurayActivateOverlay(demux_t *p_demux, int plane)
{
demux_sys_t *p_sys = p_demux->p_sys;
@@ -733,12 +733,12 @@ static void blurayActivateOverlay(demux_t *p_demux, const BD_OVERLAY* const ov)
* If the overlay is already displayed, mark the picture as outdated.
* We must NOT use vout_PutSubpicture if a picture is already displayed.
*/
- vlc_mutex_lock(&p_sys->p_overlays[ov->plane]->lock);
- if ((p_sys->p_overlays[ov->plane]->status == Displayed ||
- p_sys->p_overlays[ov->plane]->status == Outdated)
+ vlc_mutex_lock(&p_sys->p_overlays[plane]->lock);
+ if ((p_sys->p_overlays[plane]->status == Displayed ||
+ p_sys->p_overlays[plane]->status == Outdated)
&& p_sys->p_vout) {
- p_sys->p_overlays[ov->plane]->status = Outdated;
- vlc_mutex_unlock(&p_sys->p_overlays[ov->plane]->lock);
+ p_sys->p_overlays[plane]->status = Outdated;
+ vlc_mutex_unlock(&p_sys->p_overlays[plane]->lock);
return;
}
/*
@@ -746,43 +746,43 @@ static void blurayActivateOverlay(demux_t *p_demux, const BD_OVERLAY* const ov)
* the blurayDemuxMenu will send it to vout, as it may be unavailable when
* the overlay is computed
*/
- p_sys->current_overlay = ov->plane;
- p_sys->p_overlays[ov->plane]->status = ToDisplay;
- vlc_mutex_unlock(&p_sys->p_overlays[ov->plane]->lock);
+ p_sys->current_overlay = plane;
+ p_sys->p_overlays[plane]->status = ToDisplay;
+ vlc_mutex_unlock(&p_sys->p_overlays[plane]->lock);
}
-static void blurayInitOverlay(demux_t *p_demux, const BD_OVERLAY* const ov)
+static void blurayInitOverlay(demux_t *p_demux, int plane, int width, int height)
{
demux_sys_t *p_sys = p_demux->p_sys;
- assert(p_sys->p_overlays[ov->plane] == NULL);
+ assert(p_sys->p_overlays[plane] == NULL);
- p_sys->p_overlays[ov->plane] = calloc(1, sizeof(**p_sys->p_overlays));
- if (unlikely(!p_sys->p_overlays[ov->plane]))
+ p_sys->p_overlays[plane] = calloc(1, sizeof(**p_sys->p_overlays));
+ if (unlikely(!p_sys->p_overlays[plane]))
return;
subpicture_updater_sys_t *p_upd_sys = malloc(sizeof(*p_upd_sys));
if (unlikely(!p_upd_sys)) {
- free(p_sys->p_overlays[ov->plane]);
- p_sys->p_overlays[ov->plane] = NULL;
+ free(p_sys->p_overlays[plane]);
+ p_sys->p_overlays[plane] = NULL;
return;
}
/* two references: vout + demux */
- p_sys->p_overlays[ov->plane]->released_once = ATOMIC_FLAG_INIT;
+ p_sys->p_overlays[plane]->released_once = ATOMIC_FLAG_INIT;
- p_upd_sys->p_overlay = p_sys->p_overlays[ov->plane];
+ p_upd_sys->p_overlay = p_sys->p_overlays[plane];
subpicture_updater_t updater = {
.pf_validate = subpictureUpdaterValidate,
.pf_update = subpictureUpdaterUpdate,
.pf_destroy = subpictureUpdaterDestroy,
.p_sys = p_upd_sys,
};
- vlc_mutex_init(&p_sys->p_overlays[ov->plane]->lock);
- p_sys->p_overlays[ov->plane]->p_pic = subpicture_New(&updater);
- p_sys->p_overlays[ov->plane]->p_pic->i_original_picture_width = ov->w;
- p_sys->p_overlays[ov->plane]->p_pic->i_original_picture_height = ov->h;
- p_sys->p_overlays[ov->plane]->p_pic->b_ephemer = true;
- p_sys->p_overlays[ov->plane]->p_pic->b_absolute = true;
+ vlc_mutex_init(&p_sys->p_overlays[plane]->lock);
+ p_sys->p_overlays[plane]->p_pic = subpicture_New(&updater);
+ p_sys->p_overlays[plane]->p_pic->i_original_picture_width = width;
+ p_sys->p_overlays[plane]->p_pic->i_original_picture_height = height;
+ p_sys->p_overlays[plane]->p_pic->b_ephemer = true;
+ p_sys->p_overlays[plane]->p_pic->b_absolute = true;
}
/**
@@ -793,16 +793,16 @@ static void blurayInitOverlay(demux_t *p_demux, const BD_OVERLAY* const ov)
* the subpicture_updater_t::pf_update
* This doesn't destroy the subpicture, as the overlay may be used again by libbluray.
*/
-static void blurayClearOverlay(demux_t *p_demux, const BD_OVERLAY* const ov)
+static void blurayClearOverlay(demux_t *p_demux, int plane)
{
demux_sys_t *p_sys = p_demux->p_sys;
- vlc_mutex_lock(&p_sys->p_overlays[ov->plane]->lock);
+ vlc_mutex_lock(&p_sys->p_overlays[plane]->lock);
- subpicture_region_ChainDelete(p_sys->p_overlays[ov->plane]->p_regions);
- p_sys->p_overlays[ov->plane]->p_regions = NULL;
- p_sys->p_overlays[ov->plane]->status = Outdated;
- vlc_mutex_unlock(&p_sys->p_overlays[ov->plane]->lock);
+ subpicture_region_ChainDelete(p_sys->p_overlays[plane]->p_regions);
+ p_sys->p_overlays[plane]->p_regions = NULL;
+ p_sys->p_overlays[plane]->status = Outdated;
+ vlc_mutex_unlock(&p_sys->p_overlays[plane]->lock);
}
/*
@@ -887,13 +887,13 @@ static void blurayOverlayProc(void *ptr, const BD_OVERLAY *const overlay)
switch (overlay->cmd) {
case BD_OVERLAY_INIT:
msg_Info(p_demux, "Initializing overlay");
- blurayInitOverlay(p_demux, overlay);
+ blurayInitOverlay(p_demux, overlay->plane, overlay->w, overlay->h);
break;
case BD_OVERLAY_CLEAR:
- blurayClearOverlay(p_demux, overlay);
+ blurayClearOverlay(p_demux, overlay->plane);
break;
case BD_OVERLAY_FLUSH:
- blurayActivateOverlay(p_demux, overlay);
+ blurayActivateOverlay(p_demux, overlay->plane);
break;
case BD_OVERLAY_DRAW:
blurayDrawOverlay(p_demux, overlay);
More information about the vlc-commits
mailing list