Browse Source

vlc_spu: assume display module that can render subpicture regions can scale it

We already require these display modules to be able to place and scale/stretch the video picture.
pull/162/head
Steve Lhomme 2 years ago
parent
commit
17bc969d45
  1. 3
      include/vlc_spu.h
  2. 1
      include/vlc_vout_display.h
  3. 1
      modules/hw/mmal/vout.c
  4. 2
      modules/stream_out/transcode/video.c
  5. 1
      modules/video_output/android/display.c
  6. 1
      modules/video_output/apple/VLCSampleBufferDisplay.m
  7. 1
      modules/video_output/caopengllayer.m
  8. 1
      modules/video_output/libplacebo/display.c
  9. 1
      modules/video_output/macosx.m
  10. 1
      modules/video_output/opengl/display.c
  11. 2
      modules/video_output/win32/direct3d11.cpp
  12. 2
      modules/video_output/win32/direct3d9.c
  13. 1
      modules/video_output/win32/glwin32.c
  14. 1
      modules/video_output/xcb/render.c
  15. 2
      src/video_output/video_output.c
  16. 4
      src/video_output/vout_subpictures.c

3
include/vlc_spu.h

@ -75,14 +75,13 @@ VLC_API void spu_PutSubpicture( spu_t *, subpicture_t * );
* \param system_now the reference current time
* \param pts the timestamp of the rendered frame
* \param ignore_osd whether we display the OSD or not
* \param external_scale whether scaling picture is done by the client or this function
*
* The returned value if non NULL must be released by subpicture_Delete().
*/
VLC_API struct vlc_render_subpicture * spu_Render( spu_t *spu, const vlc_fourcc_t *p_chroma_list,
const video_format_t *p_fmt_dst, const video_format_t *p_fmt_src,
vlc_tick_t system_now, vlc_tick_t pts,
bool ignore_osd, bool external_scale );
bool ignore_osd );
/**
* It registers a new SPU channel.

1
include/vlc_vout_display.h

@ -129,7 +129,6 @@ typedef struct vout_display_cfg {
*
*/
typedef struct {
bool can_scale_spu; /* Handles subpictures with a non default zoom factor */
const vlc_fourcc_t *subpicture_chromas; /* List of supported chromas for subpicture rendering. */
} vout_display_info_t;

1
modules/hw/mmal/vout.c

@ -1258,7 +1258,6 @@ static int OpenMmalVout(vout_display_t *vd,
vd->info = (vout_display_info_t){
.subpicture_chromas = hw_mmal_vzc_subpicture_chromas,
.can_scale_spu = true,
};
vd->ops = &ops;

2
modules/stream_out/transcode/video.c

@ -469,7 +469,7 @@ static picture_t * RenderSubpictures( sout_stream_id_sys_t *id, picture_t *p_pic
vlc_render_subpicture *p_subpic = spu_Render( id->p_spu, NULL, &fmt,
&outfmt, vlc_tick_now(), p_pic->date,
false, false );
false );
/* Overlay subpicture */
if( p_subpic )

1
modules/video_output/android/display.c

@ -370,7 +370,6 @@ static int subpicture_OpenDisplay(vout_display_t *vd)
0
};
vd->info.subpicture_chromas = gl_subpicture_chromas;
vd->info.can_scale_spu = true;
return 0;

1
modules/video_output/apple/VLCSampleBufferDisplay.m

@ -673,7 +673,6 @@ static int Open (vout_display_t *vd,
};
vd->info.subpicture_chromas = subfmts;
vd->info.can_scale_spu = true;
return VLC_SUCCESS;
}

1
modules/video_output/caopengllayer.m

@ -462,7 +462,6 @@ static int Open (vout_display_t *vd,
}
vd->info.subpicture_chromas = spu_chromas;
vd->info.can_scale_spu = true;
vd->ops = &ops;

1
modules/video_output/libplacebo/display.c

@ -167,7 +167,6 @@ static int Open(vout_display_t *vd,
};
vd->info.subpicture_chromas = subfmts;
vd->info.can_scale_spu = true;
vd->ops = &ops;
UpdateParams(vd);

1
modules/video_output/macosx.m

@ -240,7 +240,6 @@ static int Open (vout_display_t *vd,
/* Setup vout_display_t once everything is fine */
vd->info.subpicture_chromas = subpicture_chromas;
vd->info.can_scale_spu = true;
vd->ops = &ops;

1
modules/video_output/opengl/display.c

@ -262,7 +262,6 @@ static int Open(vout_display_t *vd,
sys->viewpoint = vd->cfg->viewpoint;
vd->info.subpicture_chromas = spu_chromas;
vd->info.can_scale_spu = true;
vd->ops = &ops;
return VLC_SUCCESS;

2
modules/video_output/win32/direct3d11.cpp

@ -491,8 +491,6 @@ static int Open(vout_display_t *vd,
vlc_window_SetTitle(vd->cfg->window, VOUT_TITLE " (Direct3D11 output)");
msg_Dbg(vd, "Direct3D11 display adapter successfully initialized");
vd->info.can_scale_spu = true;
if (var_InheritBool(vd, "direct3d11-hw-blending") &&
sys->regionQuad.generic.textureFormat != NULL)
{

2
modules/video_output/win32/direct3d9.c

@ -1834,8 +1834,6 @@ static int Open(vout_display_t *vd,
goto error;
}
vd->info.can_scale_spu = true;
/* Setup vout_display now that everything is fine */
if (var_InheritBool(vd, "direct3d9-hw-blending") &&
sys->d3dregion_format != D3DFMT_UNKNOWN &&

1
modules/video_output/win32/glwin32.c

@ -197,7 +197,6 @@ static int Open(vout_display_t *vd,
/* Setup vout_display now that everything is fine */
vd->info.subpicture_chromas = subpicture_chromas;
vd->info.can_scale_spu = true;
vd->ops = &ops;

1
modules/video_output/xcb/render.c

@ -735,7 +735,6 @@ static int Open(vout_display_t *vd,
sys->spu_chromas[1] = 0;
vd->info.subpicture_chromas = sys->spu_chromas;
vd->info.can_scale_spu = true;
vd->ops = &ops;
(void) ctx;

2
src/video_output/video_output.c

@ -1129,7 +1129,7 @@ static vlc_render_subpicture *RenderSPUs(vout_thread_sys_t *sys,
subpicture_chromas, spu_frame,
sys->display->source,
system_now, render_subtitle_date,
ignore_osd, sys->display->info.can_scale_spu);
ignore_osd);
}
static int PrerenderPicture(vout_thread_sys_t *sys, picture_t *filtered,

4
src/video_output/vout_subpictures.c

@ -2042,10 +2042,10 @@ vlc_render_subpicture *spu_Render(spu_t *spu,
const video_format_t *fmt_src,
vlc_tick_t system_now,
vlc_tick_t render_subtitle_date,
bool ignore_osd,
bool external_scale)
bool ignore_osd)
{
spu_private_t *sys = spu->p;
const bool external_scale = chroma_list != NULL;
/* Update sub-source chain */
vlc_mutex_lock(&sys->lock);

Loading…
Cancel
Save