[vlc-commits] avcodec: vdpau: turn video context private into a table of vlc_vdp_video_field_t*
Steve Lhomme
git at videolan.org
Wed Nov 27 10:18:40 CET 2019
vlc | branch: master | Steve Lhomme <robux4 at ycbcr.xyz> | Fri Nov 22 13:46:51 2019 +0100| [973d1040c919b129f9f93719ff2ca06c7087226e] | committer: Steve Lhomme
avcodec: vdpau: turn video context private into a table of vlc_vdp_video_field_t*
> http://git.videolan.org/gitweb.cgi/vlc.git/?a=commit;h=973d1040c919b129f9f93719ff2ca06c7087226e
---
modules/hw/vdpau/avcodec.c | 31 ++++++++++++-------------------
1 file changed, 12 insertions(+), 19 deletions(-)
diff --git a/modules/hw/vdpau/avcodec.c b/modules/hw/vdpau/avcodec.c
index 5fb6654497..06293bac15 100644
--- a/modules/hw/vdpau/avcodec.c
+++ b/modules/hw/vdpau/avcodec.c
@@ -40,12 +40,6 @@
#include "vlc_vdpau.h"
#include "../../codec/avcodec/va.h"
-struct video_context_private
-{
- char dummy;
- vlc_vdp_video_field_t *pool[];
-};
-
struct vlc_va_sys_t
{
VdpChromaType type;
@@ -55,9 +49,9 @@ struct vlc_va_sys_t
vlc_video_context *vctx;
};
-static inline struct video_context_private *GetVDPAUContextPrivate(vlc_video_context *vctx)
+static inline vlc_vdp_video_field_t **GetVDPAUContextPrivate(vlc_video_context *vctx)
{
- return (struct video_context_private *)
+ return (vlc_vdp_video_field_t **)
vlc_video_context_GetPrivate( vctx, VLC_VIDEO_CONTEXT_VDPAU );
}
@@ -85,9 +79,9 @@ static vlc_vdp_video_field_t *CreateSurface(vlc_va_t *va, vdpau_decoder_device_t
static vlc_vdp_video_field_t *GetSurface(vlc_va_sys_t *sys)
{
vlc_vdp_video_field_t *f;
- struct video_context_private *vctx_priv = GetVDPAUContextPrivate(sys->vctx);
+ vlc_vdp_video_field_t **pool = GetVDPAUContextPrivate(sys->vctx);
- for (unsigned i = 0; (f = vctx_priv->pool[i]) != NULL; i++)
+ for (unsigned i = 0; (f = pool[i]) != NULL; i++)
{
uintptr_t expected = 1;
@@ -144,9 +138,9 @@ static const struct vlc_va_operations ops = { Lock, Close, };
static void DestroyVDPAUVideoContext(void *private)
{
- struct video_context_private *vctx_priv = private;
- for (unsigned i = 0; vctx_priv->pool[i] != NULL; i++)
- vlc_vdp_video_destroy(vctx_priv->pool[i]);
+ vlc_vdp_video_field_t **pool = private;
+ for (unsigned i = 0; pool[i] != NULL; i++)
+ vlc_vdp_video_destroy(pool[i]);
}
const struct vlc_video_context_operations vdpau_vctx_ops = {
@@ -210,8 +204,7 @@ static int Open(vlc_va_t *va, AVCodecContext *avctx, const AVPixFmtDescriptor *d
return VLC_ENOMEM;
sys->vctx = vlc_video_context_Create( dec_device, VLC_VIDEO_CONTEXT_VDPAU,
- sizeof(struct video_context_private) +
- (refs + 1) * sizeof (vlc_vdp_video_field_t),
+ (refs + 1) * sizeof (vlc_vdp_video_field_t *),
&vdpau_vctx_ops );
if (sys->vctx == NULL)
{
@@ -219,7 +212,7 @@ static int Open(vlc_va_t *va, AVCodecContext *avctx, const AVPixFmtDescriptor *d
return VLC_ENOMEM;
}
- struct video_context_private *vctx_priv = GetVDPAUContextPrivate(sys->vctx);
+ vlc_vdp_video_field_t **pool = GetVDPAUContextPrivate(sys->vctx);
sys->type = type;
sys->width = width;
@@ -242,12 +235,12 @@ static int Open(vlc_va_t *va, AVCodecContext *avctx, const AVPixFmtDescriptor *d
unsigned i = 0;
while (i < refs)
{
- vctx_priv->pool[i] = CreateSurface(va, vdpau_decoder);
- if (vctx_priv->pool[i] == NULL)
+ pool[i] = CreateSurface(va, vdpau_decoder);
+ if (pool[i] == NULL)
break;
i++;
}
- vctx_priv->pool[i] = NULL;
+ pool[i] = NULL;
if (i < refs)
{
More information about the vlc-commits
mailing list