예제 #1
0
static void
render_video_2f(const glw_video_t *gv, 
		glw_video_surface_t *sa, glw_video_surface_t *sb,
		int textype, int rectmode, glw_rctx_t *rc)
{
  const glw_video_config_t *gvc = &gv->gv_cfg_cur;
  glw_backend_root_t *gbr = &gv->w.glw_root->gr_be;
  
  gv_surface_pixmap_upload(sa, &gv->gv_cfg_cur, textype);
  gv_surface_pixmap_upload(sb, &gv->gv_cfg_cur, textype);

  glActiveTexture(GL_TEXTURE5);
  glBindTexture(textype, gv_tex_get(sb, GVF_TEX_Cb));

  glActiveTexture(GL_TEXTURE4);
  glBindTexture(textype, gv_tex_get(sb, GVF_TEX_Cr));

  glActiveTexture(GL_TEXTURE3);
  glBindTexture(textype, gv_tex_get(sb, GVF_TEX_L));

  glActiveTexture(GL_TEXTURE2);
  glBindTexture(textype, gv_tex_get(sa, GVF_TEX_Cb));

  glActiveTexture(GL_TEXTURE1);
  glBindTexture(textype, gv_tex_get(sa, GVF_TEX_Cr));

  glActiveTexture(GL_TEXTURE0);
  glBindTexture(textype, gv_tex_get(sa, GVF_TEX_L));

  render_video_quad(!!(gvc->gvc_flags & GVC_CUTBORDER), rectmode, 
		    gvc->gvc_width[0], gvc->gvc_height[0],
		    sa->gvs_yshift, sb->gvs_yshift,
		    gbr, gbr->gbr_yuv2rgb_2f, gv, rc);
}
예제 #2
0
static void
render_video_2f(const glw_video_t *gv, 
		glw_video_surface_t *sa, glw_video_surface_t *sb,
		int textype, int rectmode, glw_rctx_t *rc)
{
  glw_backend_root_t *gbr = &gv->w.glw_root->gr_be;
  glw_program_t *gp;

  gv_surface_pixmap_upload(sa, textype, gv);
  gv_surface_pixmap_upload(sb, textype, gv);

  switch(gv->gv_planes) {
  case 3:
    glActiveTexture(GL_TEXTURE5);
    glBindTexture(textype, gv_tex_get(sb, GVF_TEX_Cb));

    glActiveTexture(GL_TEXTURE4);
    glBindTexture(textype, gv_tex_get(sb, GVF_TEX_Cr));

    glActiveTexture(GL_TEXTURE3);
    glBindTexture(textype, gv_tex_get(sb, GVF_TEX_L));

    glActiveTexture(GL_TEXTURE2);
    glBindTexture(textype, gv_tex_get(sa, GVF_TEX_Cb));

    glActiveTexture(GL_TEXTURE1);
    glBindTexture(textype, gv_tex_get(sa, GVF_TEX_Cr));

    glActiveTexture(GL_TEXTURE0);
    glBindTexture(textype, gv_tex_get(sa, GVF_TEX_L));
    gp = gbr->gbr_yuv2rgb_2f;
    break;

  case 1:
    glActiveTexture(GL_TEXTURE1);
    glBindTexture(textype, gv_tex_get(sb, 0));

    glActiveTexture(GL_TEXTURE0);
    glBindTexture(textype, gv_tex_get(sa, 0));
    gp = gbr->gbr_rgb2rgb_2f;
    break;

  default:
    return;
  }

  glw_render_video_quad(sa->gvs_interlaced || sb->gvs_interlaced, rectmode,
                        sa->gvs_width[0], sa->gvs_height[0],
                        sa->gvs_yshift, sb->gvs_yshift,
                        gbr, gp, gv, rc);
}