[vlc-commits] display: make vd->source a const pointer
Steve Lhomme
git at videolan.org
Mon Sep 7 08:16:53 CEST 2020
vlc | branch: master | Steve Lhomme <robux4 at ycbcr.xyz> | Tue Aug 25 07:59:46 2020 +0200| [97586fdc1a8607577ec8511e8cfbc29fa0b61373] | committer: Steve Lhomme
display: make vd->source a const pointer
This will prevent display modules from modifying it.
Only osys->source can be modified and sent to the display.
> http://git.videolan.org/gitweb.cgi/vlc.git/?a=commit;h=97586fdc1a8607577ec8511e8cfbc29fa0b61373
---
include/vlc_vout_display.h | 2 +-
modules/hw/mmal/vout.c | 8 ++--
modules/hw/vdpau/display.c | 6 +--
modules/video_output/android/display.c | 4 +-
modules/video_output/caca.c | 8 ++--
modules/video_output/caopengllayer.m | 2 +-
modules/video_output/decklink.cpp | 4 +-
modules/video_output/ios.m | 2 +-
modules/video_output/kva.c | 6 +--
modules/video_output/macosx.m | 6 +--
modules/video_output/opengl/display.c | 5 +--
modules/video_output/splitter.c | 2 +-
modules/video_output/vulkan/display.c | 12 +++---
modules/video_output/wayland/shm.c | 8 ++--
modules/video_output/win32/common.c | 8 ++--
modules/video_output/win32/direct3d11.c | 40 +++++++++---------
modules/video_output/win32/direct3d9.c | 72 ++++++++++++++++-----------------
modules/video_output/win32/glwin32.c | 6 +--
modules/video_output/win32/wingdi.c | 14 +++----
modules/video_output/xcb/render.c | 6 +--
modules/video_output/xcb/x11.c | 6 +--
modules/video_output/yuv.c | 10 ++---
src/video_output/display.c | 50 +++++++++++------------
src/video_output/video_output.c | 14 +++----
src/video_output/vout_wrapper.c | 2 +-
25 files changed, 150 insertions(+), 153 deletions(-)
diff --git a/include/vlc_vout_display.h b/include/vlc_vout_display.h
index 96f582a609..a5433c79ab 100644
--- a/include/vlc_vout_display.h
+++ b/include/vlc_vout_display.h
@@ -287,7 +287,7 @@ struct vout_display_t {
* \note
* Cropping is not requested while in the open function.
*/
- video_format_t source;
+ const video_format_t *source;
/**
* Picture format.
diff --git a/modules/hw/mmal/vout.c b/modules/hw/mmal/vout.c
index e0eeeb0513..d471971461 100644
--- a/modules/hw/mmal/vout.c
+++ b/modules/hw/mmal/vout.c
@@ -557,7 +557,7 @@ static int configure_display(vout_display_t *vd, const vout_display_cfg_t *cfg,
return -EINVAL;
}
} else {
- fmt = &vd->source;
+ fmt = vd->source;
}
if (!cfg)
@@ -710,7 +710,7 @@ static int vd_control(vout_display_t *vd, int query, va_list args)
case VOUT_DISPLAY_CHANGE_SOURCE_ASPECT:
case VOUT_DISPLAY_CHANGE_SOURCE_CROP:
- if (configure_display(vd, NULL, &vd->source) >= 0)
+ if (configure_display(vd, NULL, vd->source) >= 0)
ret = VLC_SUCCESS;
break;
@@ -719,7 +719,7 @@ static int vd_control(vout_display_t *vd, int query, va_list args)
msg_Warn(vd, "Reset Pictures");
kill_pool(sys);
video_format_t *fmt = va_arg(args, video_format_t *);
- *fmt = vd->source; // Take (nearly) whatever source wants to give us
+ *fmt = *vd->source; // Take (nearly) whatever source wants to give us
fmt->i_chroma = req_chroma(fmt); // Adjust chroma to something we can actually deal with
ret = VLC_SUCCESS;
break;
@@ -1209,7 +1209,7 @@ static int OpenMmalVout(vout_display_t *vd, const vout_display_cfg_t *cfg,
sys->display_height = vd->cfg->display.height;
}
- place_dest(sys, vd->cfg, &vd->source); // Sets sys->dest_rect
+ place_dest(sys, vd->cfg, vd->source); // Sets sys->dest_rect
display_region.hdr.id = MMAL_PARAMETER_DISPLAYREGION;
display_region.hdr.size = sizeof(MMAL_DISPLAYREGION_T);
diff --git a/modules/hw/vdpau/display.c b/modules/hw/vdpau/display.c
index 5963be6371..31e1164b4a 100644
--- a/modules/hw/vdpau/display.c
+++ b/modules/hw/vdpau/display.c
@@ -233,7 +233,7 @@ static int Control(vout_display_t *vd, int query, va_list ap)
{
const vout_display_cfg_t *cfg = va_arg(ap, const vout_display_cfg_t *);
video_format_t *fmt = va_arg(ap, video_format_t *);
- const video_format_t *src= &vd->source;
+ const video_format_t *src= vd->source;
vout_display_place_t place;
msg_Dbg(vd, "resetting pictures");
@@ -259,7 +259,7 @@ static int Control(vout_display_t *vd, int query, va_list ap)
const vout_display_cfg_t *cfg = va_arg(ap, const vout_display_cfg_t *);
vout_display_place_t place;
- vout_display_PlacePicture(&place, &vd->source, cfg);
+ vout_display_PlacePicture(&place, vd->source, cfg);
if (place.width != vd->fmt.i_visible_width
|| place.height != vd->fmt.i_visible_height)
return VLC_EGENERIC;
@@ -427,7 +427,7 @@ static int Open(vout_display_t *vd, const vout_display_cfg_t *cfg,
};
vout_display_place_t place;
- vout_display_PlacePicture(&place, &vd->source, cfg);
+ vout_display_PlacePicture(&place, vd->source, cfg);
sys->window = xcb_generate_id(sys->conn);
xcb_void_cookie_t c =
diff --git a/modules/video_output/android/display.c b/modules/video_output/android/display.c
index ba7947b762..297ac18c2f 100644
--- a/modules/video_output/android/display.c
+++ b/modules/video_output/android/display.c
@@ -906,9 +906,9 @@ static int Control(vout_display_t *vd, int query, va_list args)
msg_Dbg(vd, "change source crop/aspect");
if (query == VOUT_DISPLAY_CHANGE_SOURCE_CROP) {
- video_format_CopyCrop(&sys->p_window->fmt, &vd->source);
+ video_format_CopyCrop(&sys->p_window->fmt, vd->source);
} else
- CopySourceAspect(&sys->p_window->fmt, &vd->source);
+ CopySourceAspect(&sys->p_window->fmt, vd->source);
UpdateVideoSize(sys, &sys->p_window->fmt);
FixSubtitleFormat(sys);
diff --git a/modules/video_output/caca.c b/modules/video_output/caca.c
index 21fbd53e6e..079d72e65a 100644
--- a/modules/video_output/caca.c
+++ b/modules/video_output/caca.c
@@ -131,8 +131,8 @@ static void Prepare(vout_display_t *vd, picture_t *picture,
if (!sys->dither) {
/* Create the libcaca dither object */
sys->dither = cucul_create_dither(32,
- vd->source.i_visible_width,
- vd->source.i_visible_height,
+ vd->source->i_visible_width,
+ vd->source->i_visible_height,
picture->p[0].i_pitch,
picture->format.i_rmask,
picture->format.i_gmask,
@@ -148,8 +148,8 @@ static void Prepare(vout_display_t *vd, picture_t *picture,
cucul_set_color_ansi(sys->cv, CUCUL_COLOR_DEFAULT, CUCUL_COLOR_BLACK);
cucul_clear_canvas(sys->cv);
- const int crop_offset = vd->source.i_y_offset * picture->p->i_pitch +
- vd->source.i_x_offset * picture->p->i_pixel_pitch;
+ const int crop_offset = vd->source->i_y_offset * picture->p->i_pitch +
+ vd->source->i_x_offset * picture->p->i_pixel_pitch;
cucul_dither_bitmap(sys->cv, sys->place.x, sys->place.y,
sys->place.width, sys->place.height,
sys->dither,
diff --git a/modules/video_output/caopengllayer.m b/modules/video_output/caopengllayer.m
index 0dafcec000..8b76c0b6d1 100644
--- a/modules/video_output/caopengllayer.m
+++ b/modules/video_output/caopengllayer.m
@@ -326,7 +326,7 @@ static int Control (vout_display_t *vd, int query, va_list ap)
cfg_tmp.align.vertical = VLC_VIDEO_ALIGN_TOP;
vout_display_place_t place;
- vout_display_PlacePicture(&place, &vd->source, &cfg_tmp);
+ vout_display_PlacePicture(&place, vd->source, &cfg_tmp);
if (unlikely(OpenglLock(sys->gl)))
// don't return an error or we need to handle VOUT_DISPLAY_RESET_PICTURES
return VLC_SUCCESS;
diff --git a/modules/video_output/decklink.cpp b/modules/video_output/decklink.cpp
index d5049e826e..cfe069c34f 100644
--- a/modules/video_output/decklink.cpp
+++ b/modules/video_output/decklink.cpp
@@ -510,7 +510,7 @@ static int OpenDecklink(vout_display_t *vd, decklink_sys_t *sys, video_format_t
CHECK("Could not set video output connection");
p_display_mode = Decklink::Helper::MatchDisplayMode(VLC_OBJECT(vd), sys->p_output,
- &vd->source, wanted_mode_id);
+ vd->source, wanted_mode_id);
if(p_display_mode == NULL)
{
msg_Err(vd, "Could not negociate a compatible display mode");
@@ -567,7 +567,7 @@ static int OpenDecklink(vout_display_t *vd, decklink_sys_t *sys, video_format_t
result = sys->p_output->EnableVideoOutput(mode_id, flags);
CHECK("Could not enable video output");
- video_format_Copy(fmt, &vd->source);
+ video_format_Copy(fmt, vd->source);
fmt->i_width = fmt->i_visible_width = p_display_mode->GetWidth();
fmt->i_height = fmt->i_visible_height = p_display_mode->GetHeight();
fmt->i_x_offset = 0;
diff --git a/modules/video_output/ios.m b/modules/video_output/ios.m
index 80b75147c7..9ba5dd4246 100644
--- a/modules/video_output/ios.m
+++ b/modules/video_output/ios.m
@@ -645,7 +645,7 @@ static void GLESSwap(vlc_gl_t *gl)
cfg.display.width = _viewSize.width * _scaleFactor;
cfg.display.height = _viewSize.height * _scaleFactor;
- vout_display_PlacePicture(place, &_voutDisplay->source, &cfg);
+ vout_display_PlacePicture(place, _voutDisplay->source, &cfg);
}
- (void)reshape
diff --git a/modules/video_output/kva.c b/modules/video_output/kva.c
index 185e826960..821dcc46b3 100644
--- a/modules/video_output/kva.c
+++ b/modules/video_output/kva.c
@@ -433,7 +433,7 @@ static int Control( vout_display_t *vd, int query, va_list args )
case VOUT_DISPLAY_CHANGE_SOURCE_ASPECT:
{
vout_display_place_t place;
- vout_display_PlacePicture(&place, &vd->source, vd->cfg);
+ vout_display_PlacePicture(&place, vd->source, vd->cfg);
sys->kvas.ulAspectWidth = place.width;
sys->kvas.ulAspectHeight = place.height;
@@ -444,7 +444,7 @@ static int Control( vout_display_t *vd, int query, va_list args )
case VOUT_DISPLAY_CHANGE_SOURCE_CROP:
{
video_format_t src_rot;
- video_format_ApplyRotation(&src_rot, &vd->source);
+ video_format_ApplyRotation(&src_rot, vd->source);
sys->kvas.rclSrcRect.xLeft = src_rot.i_x_offset;
sys->kvas.rclSrcRect.yTop = src_rot.i_y_offset;
@@ -938,7 +938,7 @@ static MRESULT EXPENTRY WndProc( HWND hwnd, ULONG msg, MPARAM mp1, MPARAM mp2 )
i_movie_height = movie_rect.yTop - movie_rect.yBottom;
vout_display_place_t place;
- vout_display_PlacePicture(&place, &vd->source, vd->cfg);
+ vout_display_PlacePicture(&place, vd->source, vd->cfg);
int x = ( i_mouse_x - movie_rect.xLeft ) *
place.width / i_movie_width + place.x;
diff --git a/modules/video_output/macosx.m b/modules/video_output/macosx.m
index 15d0c30577..b4d0921eae 100644
--- a/modules/video_output/macosx.m
+++ b/modules/video_output/macosx.m
@@ -321,7 +321,7 @@ static void PictureDisplay (vout_display_t *vd, picture_t *pic)
{
if (@available(macOS 10.14, *)) {
vout_display_place_t place;
- vout_display_PlacePicture(&place, &vd->source, &sys->cfg);
+ vout_display_PlacePicture(&place, vd->source, &sys->cfg);
vout_display_opengl_Viewport(vd->sys->vgl, place.x,
sys->cfg.display.height - (place.y + place.height),
place.width, place.height);
@@ -364,7 +364,7 @@ static int Control (vout_display_t *vd, int query, va_list ap)
cfg_tmp.align.vertical = VLC_VIDEO_ALIGN_TOP;
vout_display_place_t place;
- vout_display_PlacePicture(&place, &vd->source, &cfg_tmp);
+ vout_display_PlacePicture(&place, vd->source, &cfg_tmp);
@synchronized (sys->glView) {
sys->cfg = *cfg;
}
@@ -627,7 +627,7 @@ static void OpenglSwap (vlc_gl_t *gl)
sys->cfg.display.width = bounds.size.width;
sys->cfg.display.height = bounds.size.height;
- vout_display_PlacePicture(&place, &vd->source, &sys->cfg);
+ vout_display_PlacePicture(&place, vd->source, &sys->cfg);
// FIXME: this call leads to a fatal mutex locking error in vout_ChangeDisplaySize()
// vout_window_ReportSize(sys->embed, bounds.size.width, bounds.size.height);
}
diff --git a/modules/video_output/opengl/display.c b/modules/video_output/opengl/display.c
index 2db08ccc03..da7351a442 100644
--- a/modules/video_output/opengl/display.c
+++ b/modules/video_output/opengl/display.c
@@ -232,11 +232,10 @@ static int Control (vout_display_t *vd, int query, va_list ap)
case VOUT_DISPLAY_CHANGE_ZOOM:
{
vout_display_cfg_t cfg = *va_arg(ap, const vout_display_cfg_t *);
- const video_format_t *src = &vd->source;
FlipVerticalAlign(&cfg);
- vout_display_PlacePicture(&sys->place, src, &cfg);
+ vout_display_PlacePicture(&sys->place, vd->source, &cfg);
sys->place_changed = true;
vlc_gl_Resize (sys->gl, cfg.display.width, cfg.display.height);
return VLC_SUCCESS;
@@ -249,7 +248,7 @@ static int Control (vout_display_t *vd, int query, va_list ap)
FlipVerticalAlign(&cfg);
- vout_display_PlacePicture(&sys->place, &vd->source, &cfg);
+ vout_display_PlacePicture(&sys->place, vd->source, &cfg);
sys->place_changed = true;
return VLC_SUCCESS;
}
diff --git a/modules/video_output/splitter.c b/modules/video_output/splitter.c
index 71ceda4674..cc165a03de 100644
--- a/modules/video_output/splitter.c
+++ b/modules/video_output/splitter.c
@@ -242,7 +242,7 @@ static int vlc_vidsplit_Open(vout_display_t *vd,
video_splitter_t *splitter = &sys->splitter;
vlc_mutex_init(&sys->lock);
- video_format_Copy(&splitter->fmt, &vd->source);
+ video_format_Copy(&splitter->fmt, vd->source);
splitter->p_module = module_need(splitter, "video splitter", name, true);
free(name);
diff --git a/modules/video_output/vulkan/display.c b/modules/video_output/vulkan/display.c
index 226165f283..56825b325e 100644
--- a/modules/video_output/vulkan/display.c
+++ b/modules/video_output/vulkan/display.c
@@ -103,11 +103,11 @@ static int Open(vout_display_t *vd, const vout_display_cfg_t *cfg,
goto error;
// Attempt using the input format as the display format
- if (vlc_placebo_FormatSupported(gpu, vd->source.i_chroma)) {
- fmt->i_chroma = vd->source.i_chroma;
+ if (vlc_placebo_FormatSupported(gpu, vd->source->i_chroma)) {
+ fmt->i_chroma = vd->source->i_chroma;
} else {
const vlc_fourcc_t *fcc;
- for (fcc = vlc_fourcc_GetFallback(vd->source.i_chroma); *fcc; fcc++) {
+ for (fcc = vlc_fourcc_GetFallback(vd->source->i_chroma); *fcc; fcc++) {
if (vlc_placebo_FormatSupported(gpu, *fcc)) {
fmt->i_chroma = *fcc;
break;
@@ -192,8 +192,8 @@ static void PictureRender(vout_display_t *vd, picture_t *pic,
.num_planes = pic->i_planes,
.width = pic->format.i_visible_width,
.height = pic->format.i_visible_height,
- .color = vlc_placebo_ColorSpace(&vd->source),
- .repr = vlc_placebo_ColorRepr(&vd->source),
+ .color = vlc_placebo_ColorSpace(vd->source),
+ .repr = vlc_placebo_ColorRepr(vd->source),
.src_rect = {
.x0 = pic->format.i_x_offset,
.y0 = pic->format.i_y_offset,
@@ -348,7 +348,7 @@ static int Control(vout_display_t *vd, int query, va_list ap)
case VOUT_DISPLAY_CHANGE_SOURCE_CROP:
case VOUT_DISPLAY_CHANGE_ZOOM: {
vout_display_cfg_t cfg = *va_arg (ap, const vout_display_cfg_t *);
- vout_display_PlacePicture(&sys->place, &vd->source, &cfg);
+ vout_display_PlacePicture(&sys->place, vd->source, &cfg);
return VLC_SUCCESS;
}
diff --git a/modules/video_output/wayland/shm.c b/modules/video_output/wayland/shm.c
index 77acabdd0c..1d84ec27fe 100644
--- a/modules/video_output/wayland/shm.c
+++ b/modules/video_output/wayland/shm.c
@@ -166,8 +166,8 @@ static int Control(vout_display_t *vd, int query, va_list ap)
video_format_t src;
assert(sys->viewport == NULL);
- vout_display_PlacePicture(&place, &vd->source, cfg);
- video_format_ApplyRotation(&src, &vd->source);
+ vout_display_PlacePicture(&place, vd->source, cfg);
+ video_format_ApplyRotation(&src, vd->source);
fmt->i_width = src.i_width * place.width
/ src.i_visible_width;
@@ -197,8 +197,8 @@ static int Control(vout_display_t *vd, int query, va_list ap)
video_format_t fmt;
vout_display_place_t place;
- video_format_ApplyRotation(&fmt, &vd->source);
- vout_display_PlacePicture(&place, &vd->source, cfg);
+ video_format_ApplyRotation(&fmt, vd->source);
+ vout_display_PlacePicture(&place, vd->source, cfg);
wp_viewport_set_source(sys->viewport,
wl_fixed_from_int(fmt.i_x_offset),
diff --git a/modules/video_output/win32/common.c b/modules/video_output/win32/common.c
index 110ce8ac62..b8454793c2 100644
--- a/modules/video_output/win32/common.c
+++ b/modules/video_output/win32/common.c
@@ -100,7 +100,7 @@ void CommonPlacePicture(vout_display_t *vd, display_win32_area_t *area, vout_dis
vout_display_cfg_t place_cfg = area->vdcfg;
vout_display_place_t before_place = area->place;
- vout_display_PlacePicture(&area->place, &vd->source, &place_cfg);
+ vout_display_PlacePicture(&area->place, vd->source, &place_cfg);
/* Signal the change in size/position */
if (!vout_display_PlaceEquals(&before_place, &area->place))
@@ -109,9 +109,9 @@ void CommonPlacePicture(vout_display_t *vd, display_win32_area_t *area, vout_dis
#ifndef NDEBUG
msg_Dbg(vd, "UpdateRects source offset: %i,%i visible: %ix%i decoded: %ix%i",
- vd->source.i_x_offset, vd->source.i_y_offset,
- vd->source.i_visible_width, vd->source.i_visible_height,
- vd->source.i_width, vd->source.i_height);
+ vd->source->i_x_offset, vd->source->i_y_offset,
+ vd->source->i_visible_width, vd->source->i_visible_height,
+ vd->source->i_width, vd->source->i_height);
msg_Dbg(vd, "UpdateRects image_dst coords: %i,%i %ix%i",
area->place.x, area->place.y, area->place.width, area->place.height);
#endif
diff --git a/modules/video_output/win32/direct3d11.c b/modules/video_output/win32/direct3d11.c
index 1e9ae1e733..f67b677d20 100644
--- a/modules/video_output/win32/direct3d11.c
+++ b/modules/video_output/win32/direct3d11.c
@@ -269,15 +269,15 @@ static void UpdateSize(vout_display_t *vd)
D3D11_UpdateViewport( &sys->picQuad, &rect_dst, sys->display.pixelFormat );
RECT source_rect = {
- .left = vd->source.i_x_offset,
- .right = vd->source.i_x_offset + vd->source.i_visible_width,
- .top = vd->source.i_y_offset,
- .bottom = vd->source.i_y_offset + vd->source.i_visible_height,
+ .left = vd->source->i_x_offset,
+ .right = vd->source->i_x_offset + vd->source->i_visible_width,
+ .top = vd->source->i_y_offset,
+ .bottom = vd->source->i_y_offset + vd->source->i_visible_height,
};
d3d11_device_lock( sys->d3d_dev );
D3D11_UpdateQuadPosition(vd, sys->d3d_dev, &sys->picQuad, &source_rect,
- vd->source.orientation);
+ vd->source->orientation);
D3D11_UpdateViewpoint( vd, sys->d3d_dev, &sys->picQuad, &sys->area.vdcfg.viewpoint,
(float) sys->area.vdcfg.display.width / sys->area.vdcfg.display.height );
@@ -330,7 +330,7 @@ static int Open(vout_display_t *vd, const vout_display_cfg_t *cfg,
if (cfg->window->type == VOUT_WINDOW_TYPE_HWND)
{
if (CommonWindowInit(vd, &sys->area, &sys->sys,
- vd->source.projection_mode != PROJECTION_MODE_RECTANGULAR))
+ vd->source->projection_mode != PROJECTION_MODE_RECTANGULAR))
goto error;
}
@@ -353,7 +353,7 @@ static int Open(vout_display_t *vd, const vout_display_cfg_t *cfg,
}
#if !VLC_WINSTORE_APP
- if (vd->source.projection_mode != PROJECTION_MODE_RECTANGULAR && sys->sys.hvideownd)
+ if (vd->source->projection_mode != PROJECTION_MODE_RECTANGULAR && sys->sys.hvideownd)
sys->p_sensors = HookWindowsSensors(vd, sys->sys.hvideownd);
#endif // !VLC_WINSTORE_APP
@@ -561,7 +561,7 @@ static void PreparePicture(vout_display_t *vd, picture_t *picture, subpicture_t
renderSrc = p_sys->renderSrc;
}
D3D11_RenderQuad(sys->d3d_dev, &sys->picQuad,
- vd->source.projection_mode == PROJECTION_MODE_RECTANGULAR ? &sys->flatVShader : &sys->projectionVShader,
+ vd->source->projection_mode == PROJECTION_MODE_RECTANGULAR ? &sys->flatVShader : &sys->projectionVShader,
renderSrc, SelectRenderPlane, sys);
if (subpicture) {
@@ -689,22 +689,22 @@ static int Direct3D11Open(vout_display_t *vd, video_format_t *fmtp, vlc_video_co
{
vout_display_sys_t *sys = vd->sys;
video_format_t fmt;
- video_format_Copy(&fmt, &vd->source);
+ video_format_Copy(&fmt, vd->source);
int err = SetupOutputFormat(vd, &fmt, vctx);
if (err != VLC_SUCCESS)
{
- if (!is_d3d11_opaque(vd->source.i_chroma)
+ if (!is_d3d11_opaque(vd->source->i_chroma)
#if !VLC_WINSTORE_APP
&& vd->obj.force
#endif
)
{
- const vlc_fourcc_t *list = vlc_fourcc_IsYUV(vd->source.i_chroma) ?
- vlc_fourcc_GetYUVFallback(vd->source.i_chroma) :
- vlc_fourcc_GetRGBFallback(vd->source.i_chroma);
+ const vlc_fourcc_t *list = vlc_fourcc_IsYUV(vd->source->i_chroma) ?
+ vlc_fourcc_GetYUVFallback(vd->source->i_chroma) :
+ vlc_fourcc_GetRGBFallback(vd->source->i_chroma);
for (unsigned i = 0; list[i] != 0; i++) {
fmt.i_chroma = list[i];
- if (fmt.i_chroma == vd->source.i_chroma)
+ if (fmt.i_chroma == vd->source->i_chroma)
continue;
err = SetupOutputFormat(vd, &fmt, NULL);
if (err == VLC_SUCCESS)
@@ -964,13 +964,13 @@ static int Direct3D11CreateFormatResources(vout_display_t *vd, const video_forma
return VLC_EGENERIC;
}
- if (D3D11_AllocateQuad(vd, sys->d3d_dev, vd->source.projection_mode, &sys->picQuad) != VLC_SUCCESS)
+ if (D3D11_AllocateQuad(vd, sys->d3d_dev, vd->source->projection_mode, &sys->picQuad) != VLC_SUCCESS)
{
msg_Err(vd, "Could not allocate quad buffers.");
return VLC_EGENERIC;
}
- if (D3D11_SetupQuad( vd, sys->d3d_dev, &vd->source, &sys->picQuad, &sys->display) != VLC_SUCCESS)
+ if (D3D11_SetupQuad( vd, sys->d3d_dev, vd->source, &sys->picQuad, &sys->display) != VLC_SUCCESS)
{
msg_Err(vd, "Could not Create the main quad picture.");
return VLC_EGENERIC;
@@ -982,14 +982,14 @@ static int Direct3D11CreateFormatResources(vout_display_t *vd, const video_forma
.top = fmt->i_y_offset,
.bottom = fmt->i_y_offset + fmt->i_visible_height,
};
- if (!D3D11_UpdateQuadPosition(vd, sys->d3d_dev, &sys->picQuad, &source_rect, vd->source.orientation))
+ if (!D3D11_UpdateQuadPosition(vd, sys->d3d_dev, &sys->picQuad, &source_rect, vd->source->orientation))
{
msg_Err(vd, "Could not set quad picture position.");
return VLC_EGENERIC;
}
- if ( vd->source.projection_mode == PROJECTION_MODE_EQUIRECTANGULAR ||
- vd->source.projection_mode == PROJECTION_MODE_CUBEMAP_LAYOUT_STANDARD )
+ if ( vd->source->projection_mode == PROJECTION_MODE_EQUIRECTANGULAR ||
+ vd->source->projection_mode == PROJECTION_MODE_CUBEMAP_LAYOUT_STANDARD )
D3D11_UpdateViewpoint( vd, sys->d3d_dev, &sys->picQuad, &sys->area.vdcfg.viewpoint,
(float) sys->area.vdcfg.display.width / sys->area.vdcfg.display.height );
@@ -1007,7 +1007,7 @@ static int Direct3D11CreateFormatResources(vout_display_t *vd, const video_forma
{
/* we need a staging texture */
ID3D11Texture2D *textures[D3D11_MAX_SHADER_VIEW] = {0};
- video_format_t texture_fmt = vd->source;
+ video_format_t texture_fmt = *vd->source;
texture_fmt.i_width = sys->picQuad.i_width;
texture_fmt.i_height = sys->picQuad.i_height;
if (!is_d3d11_opaque(fmt->i_chroma))
diff --git a/modules/video_output/win32/direct3d9.c b/modules/video_output/win32/direct3d9.c
index 93cd647287..01581ed0f7 100644
--- a/modules/video_output/win32/direct3d9.c
+++ b/modules/video_output/win32/direct3d9.c
@@ -372,16 +372,16 @@ static int Direct3D9ImportPicture(vout_display_t *vd,
/* Copy picture surface into texture surface
* color space conversion happen here */
RECT source_visible_rect = {
- .left = vd->source.i_x_offset,
- .right = vd->source.i_x_offset + vd->source.i_visible_width,
- .top = vd->source.i_y_offset,
- .bottom = vd->source.i_y_offset + vd->source.i_visible_height,
+ .left = vd->source->i_x_offset,
+ .right = vd->source->i_x_offset + vd->source->i_visible_width,
+ .top = vd->source->i_y_offset,
+ .bottom = vd->source->i_y_offset + vd->source->i_visible_height,
};
RECT texture_visible_rect = {
.left = 0,
- .right = vd->source.i_visible_width,
+ .right = vd->source->i_visible_width,
.top = 0,
- .bottom = vd->source.i_visible_height,
+ .bottom = vd->source->i_visible_height,
};
// On nVidia & AMD, StretchRect will fail if the visible size isn't even.
// When copying the entire buffer, the margin end up being blended in the actual picture
@@ -413,9 +413,9 @@ static int Direct3D9ImportPicture(vout_display_t *vd,
region->texture = sys->sceneTexture;
RECT texture_rect = {
.left = 0,
- .right = vd->source.i_width,
+ .right = vd->source->i_width,
.top = 0,
- .bottom = vd->source.i_height,
+ .bottom = vd->source->i_height,
};
RECT rect_in_display = {
.left = sys->area.place.x,
@@ -424,13 +424,13 @@ static int Direct3D9ImportPicture(vout_display_t *vd,
.bottom = sys->area.place.y + sys->area.place.height,
};
RECT texture_visible_rect = {
- .left = vd->source.i_x_offset,
- .right = vd->source.i_x_offset + vd->source.i_visible_width,
- .top = vd->source.i_y_offset,
- .bottom = vd->source.i_y_offset + vd->source.i_visible_height,
+ .left = vd->source->i_x_offset,
+ .right = vd->source->i_x_offset + vd->source->i_visible_width,
+ .top = vd->source->i_y_offset,
+ .bottom = vd->source->i_y_offset + vd->source->i_visible_height,
};
Direct3D9SetupVertices(region->vertex, &texture_rect, &texture_visible_rect,
- &rect_in_display, 255, vd->source.orientation);
+ &rect_in_display, 255, vd->source->orientation);
return VLC_SUCCESS;
}
@@ -1442,10 +1442,10 @@ static void SetupProcessorInput(vout_display_t *vd, const video_format_t *fmt, c
DXVAHD_STREAM_STATE_SOURCE_RECT_DATA srcRect;
srcRect.Enable = TRUE;
srcRect.SourceRect = (RECT) {
- .left = vd->source.i_x_offset,
- .right = vd->source.i_x_offset + vd->source.i_visible_width,
- .top = vd->source.i_y_offset,
- .bottom = vd->source.i_y_offset + vd->source.i_visible_height,
+ .left = vd->source->i_x_offset,
+ .right = vd->source->i_x_offset + vd->source->i_visible_width,
+ .top = vd->source->i_y_offset,
+ .bottom = vd->source->i_y_offset + vd->source->i_visible_height,
};;
hr = IDXVAHD_VideoProcessor_SetVideoProcessStreamState( sys->processor.proc, 0, DXVAHD_STREAM_STATE_SOURCE_RECT, sizeof(srcRect), &srcRect );
@@ -1453,9 +1453,9 @@ static void SetupProcessorInput(vout_display_t *vd, const video_format_t *fmt, c
dstRect.Enable = TRUE;
dstRect.TargetRect = (RECT) {
.left = 0,
- .right = vd->source.i_visible_width,
+ .right = vd->source->i_visible_width,
.top = 0,
- .bottom = vd->source.i_visible_height,
+ .bottom = vd->source->i_visible_height,
};
hr = IDXVAHD_VideoProcessor_SetVideoProcessBltState( sys->processor.proc, DXVAHD_BLT_STATE_TARGET_RECT, sizeof(dstRect), &dstRect);
}
@@ -1502,12 +1502,12 @@ static int InitRangeProcessor(vout_display_t *vd, const d3d9_format_t *d3dfmt,
DXVAHD_CONTENT_DESC desc;
desc.InputFrameFormat = DXVAHD_FRAME_FORMAT_PROGRESSIVE;
- GetFrameRate( &desc.InputFrameRate, &vd->source );
- desc.InputWidth = vd->source.i_visible_width;
- desc.InputHeight = vd->source.i_visible_height;
+ GetFrameRate( &desc.InputFrameRate, vd->source );
+ desc.InputWidth = vd->source->i_visible_width;
+ desc.InputHeight = vd->source->i_visible_height;
desc.OutputFrameRate = desc.InputFrameRate;
- desc.OutputWidth = vd->source.i_visible_width;
- desc.OutputHeight = vd->source.i_visible_height;
+ desc.OutputWidth = vd->source->i_visible_width;
+ desc.OutputHeight = vd->source->i_visible_height;
hr = CreateDevice(sys->d3d9_device->d3ddev.devex, &desc, DXVAHD_DEVICE_USAGE_PLAYBACK_NORMAL, NULL, &hd_device);
if (FAILED(hr))
@@ -1590,7 +1590,7 @@ static int InitRangeProcessor(vout_display_t *vd, const d3d9_format_t *d3dfmt,
}
IDXVAHD_Device_Release( hd_device );
- SetupProcessorInput(vd, &vd->source, d3dfmt);
+ SetupProcessorInput(vd, vd->source, d3dfmt);
DXVAHD_BLT_STATE_OUTPUT_COLOR_SPACE_DATA colorspace;
colorspace.Usage = 0; // playback
@@ -1618,7 +1618,7 @@ static int Direct3D9Open(vout_display_t *vd, video_format_t *fmt, vlc_video_cont
vout_display_sys_t *sys = vd->sys;
libvlc_video_output_cfg_t render_out;
- if (UpdateOutput(vd, &vd->source, &render_out) != VLC_SUCCESS)
+ if (UpdateOutput(vd, vd->source, &render_out) != VLC_SUCCESS)
return VLC_EGENERIC;
sys->BufferFormat = render_out.d3d9_format;
@@ -1629,15 +1629,15 @@ static int Direct3D9Open(vout_display_t *vd, video_format_t *fmt, vlc_video_cont
/* Find the appropriate D3DFORMAT for the render chroma, the format will be the closest to
* the requested chroma which is usable by the hardware in an offscreen surface, as they
* typically support more formats than textures */
- const d3d9_format_t *d3dfmt = Direct3DFindFormat(vd, &vd->source, vctx);
+ const d3d9_format_t *d3dfmt = Direct3DFindFormat(vd, vd->source, vctx);
if (!d3dfmt) {
- msg_Err(vd, "unsupported source pixel format %4.4s", (const char*)&vd->source.i_chroma);
+ msg_Err(vd, "unsupported source pixel format %4.4s", (const char*)&vd->source->i_chroma);
goto error;
}
- msg_Dbg(vd, "found input surface format %s for source %4.4s", d3dfmt->name, (const char *)&vd->source.i_chroma);
+ msg_Dbg(vd, "found input surface format %s for source %4.4s", d3dfmt->name, (const char *)&vd->source->i_chroma);
bool force_dxva_hd = var_InheritBool(vd, "direct3d9-dxvahd");
- if (force_dxva_hd || (dst_format && vd->source.color_range != COLOR_RANGE_FULL && dst_format->rmask && !d3dfmt->rmask &&
+ if (force_dxva_hd || (dst_format && vd->source->color_range != COLOR_RANGE_FULL && dst_format->rmask && !d3dfmt->rmask &&
sys->d3d9_device->d3ddev.identifier.VendorId == GPU_MANUFACTURER_NVIDIA))
{
// NVIDIA bug, YUV to RGB internal conversion in StretchRect always converts from limited to limited range
@@ -1662,7 +1662,7 @@ static int Direct3D9Open(vout_display_t *vd, video_format_t *fmt, vlc_video_cont
}
/* */
- *fmt = vd->source;
+ *fmt = *vd->source;
fmt->i_chroma = d3dfmt->fourcc;
fmt->i_rmask = d3dfmt->rmask;
fmt->i_gmask = d3dfmt->gmask;
@@ -1768,10 +1768,10 @@ static int Open(vout_display_t *vd, const vout_display_cfg_t *cfg,
{
vout_display_sys_t *sys;
- if ( !vd->obj.force && vd->source.projection_mode != PROJECTION_MODE_RECTANGULAR)
+ if ( !vd->obj.force && vd->source->projection_mode != PROJECTION_MODE_RECTANGULAR)
return VLC_EGENERIC; /* let a module who can handle it do it */
- if ( !vd->obj.force && vd->source.mastering.max_luminance != 0)
+ if ( !vd->obj.force && vd->source->mastering.max_luminance != 0)
return VLC_EGENERIC; /* let a module who can handle it do it */
/* do not use D3D9 on XP unless forced */
@@ -1827,11 +1827,11 @@ static int Open(vout_display_t *vd, const vout_display_cfg_t *cfg,
}
- if ( vd->source.i_visible_width > sys->d3d9_device->d3ddev.caps.MaxTextureWidth ||
- vd->source.i_visible_height > sys->d3d9_device->d3ddev.caps.MaxTextureHeight )
+ if ( vd->source->i_visible_width > sys->d3d9_device->d3ddev.caps.MaxTextureWidth ||
+ vd->source->i_visible_height > sys->d3d9_device->d3ddev.caps.MaxTextureHeight )
{
msg_Err(vd, "Textures too large %ux%u max possible: %lx%lx",
- vd->source.i_visible_width, vd->source.i_visible_height,
+ vd->source->i_visible_width, vd->source->i_visible_height,
sys->d3d9_device->d3ddev.caps.MaxTextureWidth,
sys->d3d9_device->d3ddev.caps.MaxTextureHeight);
goto error;
diff --git a/modules/video_output/win32/glwin32.c b/modules/video_output/win32/glwin32.c
index 7b4e0d9c95..a0f486bffe 100644
--- a/modules/video_output/win32/glwin32.c
+++ b/modules/video_output/win32/glwin32.c
@@ -122,10 +122,10 @@ static int Open(vout_display_t *vd, const vout_display_cfg_t *cfg,
/* */
CommonInit(&sys->area, cfg);
if (CommonWindowInit(vd, &sys->area, &sys->sys,
- vd->source.projection_mode != PROJECTION_MODE_RECTANGULAR))
+ vd->source->projection_mode != PROJECTION_MODE_RECTANGULAR))
goto error;
- if (vd->source.projection_mode != PROJECTION_MODE_RECTANGULAR)
+ if (vd->source->projection_mode != PROJECTION_MODE_RECTANGULAR)
sys->p_sensors = HookWindowsSensors(vd, sys->sys.hvideownd);
vout_window_SetTitle(cfg->window, VOUT_TITLE " (OpenGL output)");
@@ -217,7 +217,7 @@ static void Prepare(vout_display_t *vd, picture_t *picture, subpicture_t *subpic
else if (place_cfg.align.vertical == VLC_VIDEO_ALIGN_BOTTOM)
place_cfg.align.vertical = VLC_VIDEO_ALIGN_TOP;
- vout_display_PlacePicture(&place, &vd->source, &place_cfg);
+ vout_display_PlacePicture(&place, vd->source, &place_cfg);
const int width = place.width;
const int height = place.height;
diff --git a/modules/video_output/win32/wingdi.c b/modules/video_output/win32/wingdi.c
index 3d09d84fa2..c1e39dc9f9 100644
--- a/modules/video_output/win32/wingdi.c
+++ b/modules/video_output/win32/wingdi.c
@@ -109,7 +109,7 @@ static int Open(vout_display_t *vd, const vout_display_cfg_t *cfg,
{
vout_display_sys_t *sys;
- if ( !vd->obj.force && vd->source.projection_mode != PROJECTION_MODE_RECTANGULAR)
+ if ( !vd->obj.force && vd->source->projection_mode != PROJECTION_MODE_RECTANGULAR)
return VLC_EGENERIC; /* let a module who can handle it do it */
vd->sys = sys = calloc(1, sizeof(*sys));
@@ -170,22 +170,22 @@ static void Display(vout_display_t *vd, picture_t *picture)
SelectObject(sys->off_dc, sys->off_bitmap);
- if (sys->area.place.width != vd->source.i_visible_width ||
- sys->area.place.height != vd->source.i_visible_height) {
+ if (sys->area.place.width != vd->source->i_visible_width ||
+ sys->area.place.height != vd->source->i_visible_height) {
SetStretchBltMode(hdc, COLORONCOLOR);
StretchBlt(hdc, sys->area.place.x, sys->area.place.y,
sys->area.place.width, sys->area.place.height,
sys->off_dc,
- vd->source.i_x_offset, vd->source.i_y_offset,
- vd->source.i_x_offset + vd->source.i_visible_width,
- vd->source.i_y_offset + vd->source.i_visible_height,
+ vd->source->i_x_offset, vd->source->i_y_offset,
+ vd->source->i_x_offset + vd->source->i_visible_width,
+ vd->source->i_y_offset + vd->source->i_visible_height,
SRCCOPY);
} else {
BitBlt(hdc, sys->area.place.x, sys->area.place.y,
sys->area.place.width, sys->area.place.height,
sys->off_dc,
- vd->source.i_x_offset, vd->source.i_y_offset,
+ vd->source->i_x_offset, vd->source->i_y_offset,
SRCCOPY);
}
diff --git a/modules/video_output/xcb/render.c b/modules/video_output/xcb/render.c
index c3e71933f3..16197f65db 100644
--- a/modules/video_output/xcb/render.c
+++ b/modules/video_output/xcb/render.c
@@ -183,7 +183,7 @@ static void RenderRegion(vout_display_t *vd, const subpicture_t *subpic,
static void Prepare(vout_display_t *vd, picture_t *pic, subpicture_t *subpic,
vlc_tick_t date)
{
- const video_format_t *fmt = &vd->source;
+ const video_format_t *fmt = vd->source;
vout_display_sys_t *sys = vd->sys;
xcb_connection_t *conn = sys->conn;
@@ -267,7 +267,7 @@ static void Display(vout_display_t *vd, picture_t *pic)
static void CreateBuffers(vout_display_t *vd, const vout_display_cfg_t *cfg)
{
- const video_format_t *fmt = &vd->source;
+ const video_format_t *fmt = vd->source;
vout_display_sys_t *sys = vd->sys;
xcb_connection_t *conn = sys->conn;
@@ -671,7 +671,7 @@ static int Open(vout_display_t *vd, const vout_display_cfg_t *cfg,
xcb_create_colormap(conn, XCB_COLORMAP_ALLOC_NONE, cmap, screen->root,
visual);
xcb_create_pixmap(conn, 32, sys->drawable.source, screen->root,
- vd->source.i_width, vd->source.i_height);
+ vd->source->i_width, vd->source->i_height);
xcb_create_gc(conn, sys->gc, sys->drawable.source, 0, NULL);
xcb_create_window(conn, 32, sys->drawable.dest, cfg->window->handle.xid,
0, 0, cfg->display.width, cfg->display.height, 0,
diff --git a/modules/video_output/xcb/x11.c b/modules/video_output/xcb/x11.c
index 05e012f389..c18831615d 100644
--- a/modules/video_output/xcb/x11.c
+++ b/modules/video_output/xcb/x11.c
@@ -150,7 +150,7 @@ static int Control(vout_display_t *vd, int query, va_list ap)
vout_display_place_t place;
int ret = VLC_SUCCESS;
- vout_display_PlacePicture(&place, &vd->source, cfg);
+ vout_display_PlacePicture(&place, vd->source, cfg);
uint32_t mask = XCB_CONFIG_WINDOW_X | XCB_CONFIG_WINDOW_Y;
const uint32_t values[] = {
@@ -167,7 +167,7 @@ static int Control(vout_display_t *vd, int query, va_list ap)
/* Move the picture within the window */
xcb_configure_window(sys->conn, sys->window, mask, values);
- video_format_ApplyRotation(&src, &vd->source);
+ video_format_ApplyRotation(&src, vd->source);
fmt->i_width = src.i_width * place.width / src.i_visible_width;
fmt->i_height = src.i_height * place.height / src.i_visible_height;
@@ -313,7 +313,7 @@ static int Open (vout_display_t *vd, const vout_display_cfg_t *cfg,
};
vout_display_place_t place;
- vout_display_PlacePicture(&place, &vd->source, cfg);
+ vout_display_PlacePicture(&place, vd->source, cfg);
sys->window = xcb_generate_id (conn);
sys->gc = xcb_generate_id (conn);
diff --git a/modules/video_output/yuv.c b/modules/video_output/yuv.c
index c20b93d133..6667a63fe0 100644
--- a/modules/video_output/yuv.c
+++ b/modules/video_output/yuv.c
@@ -177,15 +177,15 @@ static void Display(vout_display_t *vd, picture_t *picture)
/* */
video_format_t fmt = vd->fmt;
- if (ORIENT_IS_SWAP(vd->source.orientation))
+ if (ORIENT_IS_SWAP(vd->source->orientation))
{
- fmt.i_sar_num = vd->source.i_sar_den;
- fmt.i_sar_den = vd->source.i_sar_num;
+ fmt.i_sar_num = vd->source->i_sar_den;
+ fmt.i_sar_den = vd->source->i_sar_num;
}
else
{
- fmt.i_sar_num = vd->source.i_sar_num;
- fmt.i_sar_den = vd->source.i_sar_den;
+ fmt.i_sar_num = vd->source->i_sar_num;
+ fmt.i_sar_den = vd->source->i_sar_den;
}
/* */
diff --git a/src/video_output/display.c b/src/video_output/display.c
index 6ac5581bee..a1f2773e9e 100644
--- a/src/video_output/display.c
+++ b/src/video_output/display.c
@@ -208,7 +208,7 @@ void vout_display_TranslateMouseState(vout_display_t *vd, vlc_mouse_t *video,
vout_display_place_t place;
/* Translate window coordinates to video coordinates */
- vout_display_PlacePicture(&place, &vd->source, vd->cfg);
+ vout_display_PlacePicture(&place, vd->source, vd->cfg);
if (place.width <= 0 || place.height <= 0) {
memset(video, 0, sizeof (*video));
@@ -218,7 +218,7 @@ void vout_display_TranslateMouseState(vout_display_t *vd, vlc_mouse_t *video,
const int wx = window->i_x, wy = window->i_y;
int x, y;
- switch (vd->source.orientation) {
+ switch (vd->source->orientation) {
case ORIENT_TOP_LEFT:
x = wx;
y = wy;
@@ -255,10 +255,10 @@ void vout_display_TranslateMouseState(vout_display_t *vd, vlc_mouse_t *video,
vlc_assert_unreachable();
}
- video->i_x = vd->source.i_x_offset
- + (int64_t)(x - place.x) * vd->source.i_visible_width / place.width;
- video->i_y = vd->source.i_y_offset
- + (int64_t)(y - place.y) * vd->source.i_visible_height / place.height;
+ video->i_x = vd->source->i_x_offset
+ + (int64_t)(x - place.x) * vd->source->i_visible_width / place.width;
+ video->i_y = vd->source->i_y_offset
+ + (int64_t)(y - place.y) * vd->source->i_visible_height / place.height;
video->i_pressed = window->i_pressed;
video->b_double_click = window->b_double_click;
}
@@ -296,7 +296,7 @@ static int vout_display_start(void *func, bool forced, va_list ap)
vlc_video_context *context = osys->src_vctx;
/* Picture buffer does not have the concept of aspect ratio */
- video_format_Copy(&vd->fmt, &vd->source);
+ video_format_Copy(&vd->fmt, vd->source);
vd->fmt.i_sar_num = 0;
vd->fmt.i_sar_den = 0;
vd->obj.force = forced; /* TODO: pass to activate() instead? */
@@ -333,7 +333,7 @@ static int VoutDisplayCreateRender(vout_display_t *vd)
if (unlikely(osys->converters == NULL))
return -1;
- video_format_t v_src = vd->source;
+ video_format_t v_src = osys->source;
v_src.i_sar_num = 0;
v_src.i_sar_den = 0;
@@ -476,16 +476,14 @@ static void vout_display_Reset(vout_display_t *vd)
static int vout_UpdateSourceCrop(vout_display_t *vd)
{
vout_display_priv_t *osys = container_of(vd, vout_display_priv_t, display);
+ video_format_t fmt = osys->source;
unsigned crop_num = osys->crop.num;
unsigned crop_den = osys->crop.den;
if (crop_num != 0 && crop_den != 0) {
- video_format_t fmt = osys->source;
- fmt.i_sar_num = vd->source.i_sar_num;
- fmt.i_sar_den = vd->source.i_sar_den;
VoutDisplayCropRatio(&osys->crop.left, &osys->crop.top,
&osys->crop.right, &osys->crop.bottom,
- &fmt, crop_num, crop_den);
+ &osys->source, crop_num, crop_den);
}
const int right_max = osys->source.i_x_offset
@@ -510,12 +508,12 @@ static int vout_UpdateSourceCrop(vout_display_t *vd)
bottom = (int)osys->source.i_y_offset + osys->crop.bottom;
bottom = VLC_CLIP(bottom, top + 1, bottom_max);
- vd->source.i_x_offset = left;
- vd->source.i_y_offset = top;
- vd->source.i_visible_width = right - left;
- vd->source.i_visible_height = bottom - top;
- video_format_Print(VLC_OBJECT(vd), "SOURCE ", &osys->source);
- video_format_Print(VLC_OBJECT(vd), "CROPPED", &vd->source);
+ osys->source.i_x_offset = left;
+ osys->source.i_y_offset = top;
+ osys->source.i_visible_width = right - left;
+ osys->source.i_visible_height = bottom - top;
+ video_format_Print(VLC_OBJECT(vd), "SOURCE ", &fmt);
+ video_format_Print(VLC_OBJECT(vd), "CROPPED ", &osys->source);
int ret = vout_display_Control(vd, VOUT_DISPLAY_CHANGE_SOURCE_CROP,
&osys->cfg);
@@ -538,11 +536,11 @@ static int vout_SetSourceAspect(vout_display_t *vd,
int ret = 0;
if (sar_num > 0 && sar_den > 0) {
- vd->source.i_sar_num = sar_num;
- vd->source.i_sar_den = sar_den;
+ osys->source.i_sar_num = sar_num;
+ osys->source.i_sar_den = sar_den;
} else {
- vd->source.i_sar_num = osys->source.i_sar_num;
- vd->source.i_sar_den = osys->source.i_sar_den;
+ osys->source.i_sar_num = osys->source.i_sar_num;
+ osys->source.i_sar_den = osys->source.i_sar_den;
}
if (vout_display_Control(vd, VOUT_DISPLAY_CHANGE_SOURCE_ASPECT,
@@ -724,7 +722,7 @@ vout_display_t *vout_display_New(vlc_object_t *parent,
osys->pool = NULL;
- osys->source = *source;
+ video_format_Copy(&osys->source, source);
osys->crop.left = 0;
osys->crop.top = 0;
osys->crop.right = 0;
@@ -736,7 +734,7 @@ vout_display_t *vout_display_New(vlc_object_t *parent,
/* */
vout_display_t *vd = &osys->display;
- video_format_Copy(&vd->source, source);
+ vd->source = &osys->source;
vd->info = (vout_display_info_t){ };
vd->cfg = &osys->cfg;
vd->prepare = NULL;
@@ -772,7 +770,7 @@ vout_display_t *vout_display_New(vlc_object_t *parent,
}
return vd;
error:
- video_format_Clean(&vd->source);
+ video_format_Clean(&osys->source);
vlc_object_delete(vd);
return NULL;
}
@@ -797,7 +795,7 @@ void vout_display_Delete(vout_display_t *vd)
vd->close(vd);
vlc_objres_clear(VLC_OBJECT(vd));
- video_format_Clean(&vd->source);
+ video_format_Clean(&osys->source);
video_format_Clean(&vd->fmt);
vlc_object_delete(vd);
}
diff --git a/src/video_output/video_output.c b/src/video_output/video_output.c
index b973712735..1f2e324388 100644
--- a/src/video_output/video_output.c
+++ b/src/video_output/video_output.c
@@ -1270,20 +1270,20 @@ static int ThreadDisplayRenderPicture(vout_thread_sys_t *vout, bool is_forced)
vd->info.subpicture_chromas &&
*vd->info.subpicture_chromas != 0;
- //FIXME: Denying do_early_spu if vd->source.orientation != ORIENT_NORMAL
+ //FIXME: Denying do_early_spu if vd->source->orientation != ORIENT_NORMAL
//will have the effect that snapshots miss the subpictures. We do this
//because there is currently no way to transform subpictures to match
//the source format.
const bool do_early_spu = !do_dr_spu &&
- vd->source.orientation == ORIENT_NORMAL;
+ vd->source->orientation == ORIENT_NORMAL;
const vlc_fourcc_t *subpicture_chromas;
video_format_t fmt_spu;
if (do_dr_spu) {
vout_display_place_t place;
- vout_display_PlacePicture(&place, &vd->source, vd->cfg);
+ vout_display_PlacePicture(&place, vd->source, vd->cfg);
- fmt_spu = vd->source;
+ fmt_spu = *vd->source;
if (fmt_spu.i_width * fmt_spu.i_height < place.width * place.height) {
fmt_spu.i_sar_num = vd->cfg->display.sar.num;
fmt_spu.i_sar_den = vd->cfg->display.sar.den;
@@ -1295,7 +1295,7 @@ static int ThreadDisplayRenderPicture(vout_thread_sys_t *vout, bool is_forced)
subpicture_chromas = vd->info.subpicture_chromas;
} else {
if (do_early_spu) {
- fmt_spu = vd->source;
+ fmt_spu = *vd->source;
} else {
fmt_spu = vd->fmt;
fmt_spu.i_sar_num = vd->cfg->display.sar.num;
@@ -1322,7 +1322,7 @@ static int ThreadDisplayRenderPicture(vout_thread_sys_t *vout, bool is_forced)
subpicture_t *subpic = !sys->spu ? NULL :
spu_Render(sys->spu,
subpicture_chromas, &fmt_spu_rot,
- &vd->source, system_now,
+ vd->source, system_now,
render_subtitle_date,
do_snapshot, vd->info.can_scale_spu);
/*
@@ -1368,7 +1368,7 @@ static int ThreadDisplayRenderPicture(vout_thread_sys_t *vout, bool is_forced)
if (do_snapshot)
{
assert(snap_pic);
- vout_snapshot_Set(sys->snapshot, &vd->source, snap_pic);
+ vout_snapshot_Set(sys->snapshot, vd->source, snap_pic);
if (snap_pic != todisplay)
picture_Release(snap_pic);
}
diff --git a/src/video_output/vout_wrapper.c b/src/video_output/vout_wrapper.c
index 6445f99b7a..78c6ec8f27 100644
--- a/src/video_output/vout_wrapper.c
+++ b/src/video_output/vout_wrapper.c
@@ -102,7 +102,7 @@ vout_display_t *vout_OpenWrapper(vout_thread_t *vout, vout_thread_private_t *sys
sys->private_pool = picture_pool_Reserve(display_pool, private_picture);
} else {
sys->private_pool =
- picture_pool_NewFromFormat(&vd->source,
+ picture_pool_NewFromFormat(vd->source,
__MAX(VOUT_MAX_PICTURES,
reserved_picture - DISPLAY_PICTURE_COUNT));
}
More information about the vlc-commits
mailing list