vlc | branch: master | Steve Lhomme <[email protected]> | Thu Nov 28 09:49:42 2019 +0100| [edcc2caa37806f22215b8a98fb98a21797a324cf] | committer: Steve Lhomme
vdpau: use a macro to use the picture context Rather than a dirty cast. > http://git.videolan.org/gitweb.cgi/vlc.git/?a=commit;h=edcc2caa37806f22215b8a98fb98a21797a324cf --- modules/hw/vdpau/adjust.c | 2 +- modules/hw/vdpau/chroma.c | 10 +++++----- modules/hw/vdpau/deinterlace.c | 2 +- modules/hw/vdpau/sharpen.c | 2 +- modules/hw/vdpau/vlc_vdpau.h | 5 ++++- 5 files changed, 12 insertions(+), 9 deletions(-) diff --git a/modules/hw/vdpau/adjust.c b/modules/hw/vdpau/adjust.c index d522279c49..5db0379c28 100644 --- a/modules/hw/vdpau/adjust.c +++ b/modules/hw/vdpau/adjust.c @@ -108,7 +108,7 @@ static int HueCallback(vlc_object_t *obj, const char *varname, static picture_t *Adjust(filter_t *filter, picture_t *pic) { filter_sys_t *sys = filter->p_sys; - vlc_vdp_video_field_t *f = (vlc_vdp_video_field_t *)pic->context; + vlc_vdp_video_field_t *f = VDPAU_FIELD_FROM_PICCTX(pic->context); if (unlikely(f == NULL)) return pic; diff --git a/modules/hw/vdpau/chroma.c b/modules/hw/vdpau/chroma.c index cae8d96db5..a67ee4e341 100644 --- a/modules/hw/vdpau/chroma.c +++ b/modules/hw/vdpau/chroma.c @@ -296,7 +296,7 @@ static void Flush(filter_t *filter) static picture_t *VideoExport(filter_t *filter, picture_t *src, picture_t *dst, VdpYCbCrFormat format) { - vlc_vdp_video_field_t *field = (vlc_vdp_video_field_t *)src->context; + vlc_vdp_video_field_t *field = VDPAU_FIELD_FROM_PICCTX(src->context); vlc_vdp_video_frame_t *psys = field->frame; VdpStatus err; VdpVideoSurface surface = psys->surface; @@ -443,7 +443,7 @@ static picture_t *Render(filter_t *filter, picture_t *src, bool import) } /* Corner case: different VDPAU instances decoding and rendering */ - vlc_vdp_video_field_t *field = (vlc_vdp_video_field_t *)src->context; + vlc_vdp_video_field_t *field = VDPAU_FIELD_FROM_PICCTX(src->context); if (field->frame->vdp != sys->vdp) { video_format_t fmt = src->format; @@ -508,7 +508,7 @@ static picture_t *Render(filter_t *filter, picture_t *src, bool import) dst->b_force = pic_f->b_force; /* Enable/Disable features */ - vlc_vdp_video_field_t *f = (vlc_vdp_video_field_t *)(pic_f->context); + vlc_vdp_video_field_t *f = VDPAU_FIELD_FROM_PICCTX(pic_f->context); const VdpVideoMixerFeature features[] = { VDP_VIDEO_MIXER_FEATURE_SHARPNESS, }; @@ -635,12 +635,12 @@ static picture_t *Render(filter_t *filter, picture_t *src, bool import) for (unsigned i = 0; i < MAX_PAST; i++) { pic_f = sys->history[(MAX_PAST - 1) - i]; - past[i] = (pic_f != NULL) ? ((vlc_vdp_video_field_t *)(pic_f->context))->frame->surface : VDP_INVALID_HANDLE; + past[i] = (pic_f != NULL) ? VDPAU_FIELD_FROM_PICCTX(pic_f->context)->frame->surface : VDP_INVALID_HANDLE; } for (unsigned i = 0; i < MAX_FUTURE; i++) { pic_f = sys->history[(MAX_PAST + 1) + i]; - future[i] = (pic_f != NULL) ? ((vlc_vdp_video_field_t *)(pic_f->context))->frame->surface : VDP_INVALID_HANDLE; + future[i] = (pic_f != NULL) ? VDPAU_FIELD_FROM_PICCTX(pic_f->context)->frame->surface : VDP_INVALID_HANDLE; } err = vdp_video_mixer_render(sys->vdp, sys->mixer, VDP_INVALID_HANDLE, diff --git a/modules/hw/vdpau/deinterlace.c b/modules/hw/vdpau/deinterlace.c index c57dcd509d..619c75346c 100644 --- a/modules/hw/vdpau/deinterlace.c +++ b/modules/hw/vdpau/deinterlace.c @@ -43,7 +43,7 @@ static picture_t *Deinterlace(filter_t *filter, picture_t *src) sys->last_pts = src->date; - vlc_vdp_video_field_t *f1 = (vlc_vdp_video_field_t *)src->context; + vlc_vdp_video_field_t *f1 = VDPAU_FIELD_FROM_PICCTX(src->context); if (unlikely(f1 == NULL)) return src; if (f1->structure != VDP_VIDEO_MIXER_PICTURE_STRUCTURE_FRAME) diff --git a/modules/hw/vdpau/sharpen.c b/modules/hw/vdpau/sharpen.c index 72ccbcedf0..5e93fc7568 100644 --- a/modules/hw/vdpau/sharpen.c +++ b/modules/hw/vdpau/sharpen.c @@ -61,7 +61,7 @@ static int SharpenCallback(vlc_object_t *obj, const char *varname, static picture_t *Sharpen(filter_t *filter, picture_t *pic) { filter_sys_t *sys = filter->p_sys; - vlc_vdp_video_field_t *f = (vlc_vdp_video_field_t *)pic->context; + vlc_vdp_video_field_t *f = VDPAU_FIELD_FROM_PICCTX(pic->context); union { uint32_t u; float f; } u; if (unlikely(f == NULL)) diff --git a/modules/hw/vdpau/vlc_vdpau.h b/modules/hw/vdpau/vlc_vdpau.h index f467c0d33f..c7f57b97fa 100644 --- a/modules/hw/vdpau/vlc_vdpau.h +++ b/modules/hw/vdpau/vlc_vdpau.h @@ -275,6 +275,9 @@ typedef struct vlc_vdp_video_field float sharpen; } vlc_vdp_video_field_t; +#define VDPAU_FIELD_FROM_PICCTX(pic_ctx) \ + container_of((pic_ctx), vlc_vdp_video_field_t, context) + typedef struct { vdp_t *vdp; VdpDevice device; @@ -324,7 +327,7 @@ static inline void vlc_vdp_video_destroy(vlc_vdp_video_field_t *f) static inline vlc_vdp_video_field_t *vlc_vdp_video_copy( vlc_vdp_video_field_t *fold) { - return (vlc_vdp_video_field_t *)fold->context.copy(&fold->context); + return VDPAU_FIELD_FROM_PICCTX(fold->context.copy(&fold->context)); } typedef struct vlc_vdp_output_surface _______________________________________________ vlc-commits mailing list [email protected] https://mailman.videolan.org/listinfo/vlc-commits
