[libbluray-devel] updated xine plugin (generate background video frame for menu overlays)
hpi1
git at videolan.org
Thu Jan 24 13:20:48 CET 2013
libbluray | branch: master | hpi1 <hpi1 at anonymous.org> | Thu Jan 24 14:19:02 2013 +0200| [7488bcea7fd459548bcf37f0b978fea18a3b4466] | committer: hpi1
updated xine plugin (generate background video frame for menu overlays)
> http://git.videolan.org/gitweb.cgi/libbluray.git/?a=commit;h=7488bcea7fd459548bcf37f0b978fea18a3b4466
---
player_wrappers/xine/input_bluray.c | 27 +++++++++++++++++++++++++--
1 file changed, 25 insertions(+), 2 deletions(-)
diff --git a/player_wrappers/xine/input_bluray.c b/player_wrappers/xine/input_bluray.c
index 9831db1..8a1303c 100644
--- a/player_wrappers/xine/input_bluray.c
+++ b/player_wrappers/xine/input_bluray.c
@@ -129,9 +129,8 @@ typedef struct {
uint8_t demux_action_req : 1;
uint8_t end_of_title : 1;
uint8_t pg_enable : 1;
-
+ uint8_t has_video : 1;
int mouse_inside_button;
-
} bluray_input_plugin_t;
/*
@@ -873,6 +872,30 @@ static off_t bluray_plugin_read (input_plugin_t *this_gen, void *buf, off_t len)
if (!this || !this->bdh || len < 0 || this->error)
return -1;
+ if (!this->has_video) {
+ vo_frame_t *img = NULL;
+ this->class->xine->port_ticket->acquire (this->class->xine->port_ticket, 1);
+ img = this->stream->video_out->get_frame (this->stream->video_out,
+ 1920, 1080, 16.0/9.0,
+ XINE_IMGFMT_YV12, VO_BOTH_FIELDS);
+ this->class->xine->port_ticket->release (this->class->xine->port_ticket, 1);
+
+ if (img) {
+ if (img->format == XINE_IMGFMT_YV12 && img->base[0] && img->base[1] && img->base[2]) {
+ memset(img->base[0], 0x00, img->pitches[0] * img->height);
+ memset(img->base[1], 0x80, img->pitches[1] * img->height / 2);
+ memset(img->base[2], 0x80, img->pitches[2] * img->height / 2);
+ img->duration = 0;
+ img->pts = 0;
+ img->bad_frame = 0;
+ img->draw(img, this->stream);
+ }
+ img->free(img);
+ }
+
+ this->has_video = 1;
+ }
+
handle_events(this);
CHECK_READ_INTERRUPT;
More information about the libbluray-devel
mailing list