/***************************************************************************** * VlcPlugin playlist replacement methods *****************************************************************************/ void VlcPlugin::set_player_window( libvlc_exception_t *ex ) { #ifdef XP_UNIX libvlc_media_player_set_xwindow(libvlc_media_player, (libvlc_drawable_t)getVideoWindow(), ex); #endif #ifdef XP_MACOSX // XXX FIXME insert appropriate call here #endif #ifdef XP_WIN libvlc_media_player_set_hwnd(libvlc_media_player, getWindow().window, ex); #endif }
void VlcPlugin::hideToolbar() { const NPWindow& window = getWindow(); Display *p_display = ((NPSetWindowCallbackStruct *)window.ws_info)->display; Window control = getControlWindow(); Window video = getVideoWindow(); i_tb_width = i_tb_height = 0; if( p_btnPlay ) XDestroyImage( p_btnPlay ); if( p_btnPause ) XDestroyImage( p_btnPause ); if( p_btnStop ) XDestroyImage( p_btnStop ); if( p_timeline ) XDestroyImage( p_timeline ); if( p_btnTime ) XDestroyImage( p_btnTime ); if( p_btnFullscreen ) XDestroyImage( p_btnFullscreen ); if( p_btnMute ) XDestroyImage( p_btnMute ); if( p_btnUnmute ) XDestroyImage( p_btnUnmute ); p_btnPlay = NULL; p_btnPause = NULL; p_btnStop = NULL; p_timeline = NULL; p_btnTime = NULL; p_btnFullscreen = NULL; p_btnMute = NULL; p_btnUnmute = NULL; /* reset panels position and size */ /* XXX use i_width */ XResizeWindow( p_display, video, window.width, window.height ); XMoveWindow( p_display, control, 0, window.height-1 ); XResizeWindow( p_display, control, window.width, 1 ); b_toolbar = 0; /* says toolbar is now hidden */ redrawToolbar(); }
void GtkAggVaapiGlue::render() { VaapiGlobalContext * const gvactx = VaapiGlobalContext::get(); if (!gvactx) return; if (!_window_is_setup) return; if (!_vaapi_image.get() || !_vaapi_surface.get()) return; if (!_vaapi_image->unmap()) { printf("ERROR: failed to unmap VA-API image\n"); return; } VAStatus status; status = vaPutSurface(gvactx->display(), _vaapi_surface->get(), GDK_DRAWABLE_XID(_drawing_area->window), 0, 0, _vaapi_surface->width(), _vaapi_surface->height(), 0, 0, _window_width, _window_height, NULL, 0, VA_FRAME_PICTURE); if (!vaapi_check_status(status, "vaPutSurface() canvas")) return; Renderer_agg_base::RenderImages::const_iterator img, first_img, last_img; first_img = _agg_renderer->getFirstRenderImage(); last_img = _agg_renderer->getLastRenderImage(); if (first_img != last_img) { for (img = first_img; img != last_img; ++img) { boost::shared_ptr<VaapiSurface> surface = (*img)->surface(); VaapiRectangle src_rect; src_rect.x = (*img)->x(); src_rect.y = (*img)->y(); src_rect.width = (*img)->width(); src_rect.height = (*img)->height(); VaapiRectangle dst_rect; const float xscale = _window_width / (float)_vaapi_image_width; const float yscale = _window_height / (float)_vaapi_image_height; dst_rect.x = src_rect.x * xscale; dst_rect.y = src_rect.y * yscale; dst_rect.width = src_rect.width * xscale; dst_rect.height = src_rect.height * yscale; VaapiVideoWindow *videoWindow; videoWindow = getVideoWindow(surface, _drawing_area->window, dst_rect); if (!videoWindow) { log_debug(_("ERROR: failed to setup video window for surface 0x%08x."), surface->get()); continue; } videoWindow->moveResize(dst_rect); VaapiRectangle pic_rect(surface->width(), surface->height()); if (!surface->associateSubpicture(_vaapi_subpicture, src_rect, pic_rect)) { log_debug(_("ERROR: failed to associate subpicture to surface 0x%08x."), surface->get()); continue; } status = vaPutSurface(gvactx->display(), surface->get(), videoWindow->xid(), 0, 0, surface->width(), surface->height(), 0, 0, dst_rect.width, dst_rect.height, NULL, 0, VA_FRAME_PICTURE); if (!vaapi_check_status(status, "vaPutSurface() video")) continue; surface->deassociateSubpicture(_vaapi_subpicture); } for (img = first_img; img != last_img; ++img) { boost::shared_ptr<VaapiSurface> surface = (*img)->surface(); status = vaSyncSurface(gvactx->display(), surface->get()); if (!vaapi_check_status(status, "vaSyncSurface() video")) continue; } } }
void VlcPlugin::showToolbar() { const NPWindow& window = getWindow(); Window control = getControlWindow(); Window video = getVideoWindow(); Display *p_display = ((NPSetWindowCallbackStruct *)window.ws_info)->display; unsigned int i_height = 0, i_width = BTN_SPACE; /* load icons */ if( !p_btnPlay ) XpmReadFileToImage( p_display, DATA_PATH "/mozilla/play.xpm", &p_btnPlay, NULL, NULL); if( p_btnPlay ) { i_height = __MAX( i_height, p_btnPlay->height ); } if( !p_btnPause ) XpmReadFileToImage( p_display, DATA_PATH "/mozilla/pause.xpm", &p_btnPause, NULL, NULL); if( p_btnPause ) { i_height = __MAX( i_height, p_btnPause->height ); } i_width += __MAX( p_btnPause->width, p_btnPlay->width ); if( !p_btnStop ) XpmReadFileToImage( p_display, DATA_PATH "/mozilla/stop.xpm", &p_btnStop, NULL, NULL ); if( p_btnStop ) { i_height = __MAX( i_height, p_btnStop->height ); i_width += BTN_SPACE + p_btnStop->width; } if( !p_timeline ) XpmReadFileToImage( p_display, DATA_PATH "/mozilla/time_line.xpm", &p_timeline, NULL, NULL); if( p_timeline ) { i_height = __MAX( i_height, p_timeline->height ); i_width += BTN_SPACE + p_timeline->width; } if( !p_btnTime ) XpmReadFileToImage( p_display, DATA_PATH "/mozilla/time_icon.xpm", &p_btnTime, NULL, NULL); if( p_btnTime ) { i_height = __MAX( i_height, p_btnTime->height ); i_width += BTN_SPACE + p_btnTime->width; } if( !p_btnFullscreen ) XpmReadFileToImage( p_display, DATA_PATH "/mozilla/fullscreen.xpm", &p_btnFullscreen, NULL, NULL); if( p_btnFullscreen ) { i_height = __MAX( i_height, p_btnFullscreen->height ); i_width += BTN_SPACE + p_btnFullscreen->width; } if( !p_btnMute ) XpmReadFileToImage( p_display, DATA_PATH "/mozilla/volume_max.xpm", &p_btnMute, NULL, NULL); if( p_btnMute ) { i_height = __MAX( i_height, p_btnMute->height ); } if( !p_btnUnmute ) XpmReadFileToImage( p_display, DATA_PATH "/mozilla/volume_mute.xpm", &p_btnUnmute, NULL, NULL); if( p_btnUnmute ) { i_height = __MAX( i_height, p_btnUnmute->height ); } i_width += BTN_SPACE + __MAX( p_btnUnmute->width, p_btnMute->width ); setToolbarSize( i_width, i_height ); if( !p_btnPlay || !p_btnPause || !p_btnStop || !p_timeline || !p_btnTime || !p_btnFullscreen || !p_btnMute || !p_btnUnmute ) fprintf(stderr, "Error: some button images not found in %s\n", DATA_PATH ); /* reset panels position and size */ /* XXX use i_width */ XResizeWindow( p_display, video, window.width, window.height - i_height); XMoveWindow( p_display, control, 0, window.height - i_height ); XResizeWindow( p_display, control, window.width, i_height -1); b_toolbar = 1; /* says toolbar is now shown */ redrawToolbar(); }