vlc | branch: master | Rémi Denis-Courmont <[email protected]> | Sun Sep 27 16:01:52 2015 +0300| [0ce8fcaeb1050c323ecaeef3b25c548698597799] | committer: Rémi Denis-Courmont
va: mostly remove the setup callback The coded video size is already fixed by the decoder when creating the vidoe acceleration plugin, while the chroma is fixed by vlc_va_GetChroma(). This callback is useless. > http://git.videolan.org/gitweb.cgi/vlc.git/?a=commit;h=0ce8fcaeb1050c323ecaeef3b25c548698597799 --- modules/codec/avcodec/va.c | 10 ++++++++++ modules/codec/avcodec/va.h | 12 +++--------- modules/codec/avcodec/vaapi.c | 6 ------ modules/codec/avcodec/vda.c | 7 ------- modules/codec/avcodec/video.c | 2 -- modules/hw/vdpau/avcodec.c | 21 --------------------- 6 files changed, 13 insertions(+), 45 deletions(-) diff --git a/modules/codec/avcodec/va.c b/modules/codec/avcodec/va.c index 8c13e55..f534f89 100644 --- a/modules/codec/avcodec/va.c +++ b/modules/codec/avcodec/va.c @@ -109,6 +109,16 @@ vlc_va_t *vlc_va_New(vlc_object_t *obj, AVCodecContext *avctx, if (va->module == NULL) { vlc_object_release(va); +#ifdef _WIN32 + return NULL; + } + + vlc_fourcc_t chroma; + va->setup(va, &chroma); + if (chroma != vlc_va_GetChroma(pix_fmt, AV_PIX_FMT_YUV420P)) + { /* Mismatch, cannot work, fail */ + vlc_va_Delete(va, avctx); +#endif va = NULL; } return va; diff --git a/modules/codec/avcodec/va.h b/modules/codec/avcodec/va.h index 5dc8b0a..e697118 100644 --- a/modules/codec/avcodec/va.h +++ b/modules/codec/avcodec/va.h @@ -36,7 +36,10 @@ struct vlc_va_t { module_t *module; const char *description; +#ifdef _WIN32 + VLC_DEPRECATED void (*setup)(vlc_va_t *, vlc_fourcc_t *output); +#endif int (*get)(vlc_va_t *, picture_t *pic, uint8_t **data); void (*release)(void *pic, uint8_t *surface); int (*extract)(vlc_va_t *, picture_t *pic, uint8_t *data); @@ -62,15 +65,6 @@ vlc_va_t *vlc_va_New(vlc_object_t *obj, AVCodecContext *, picture_sys_t *p_sys); /** - * Initializes the acceleration video decoding back-end for libavcodec. - * @param output pointer to video chroma output by the back-end [OUT] - */ -static inline void vlc_va_Setup(vlc_va_t *va, vlc_fourcc_t *output) -{ - va->setup(va, output); -} - -/** * Allocates a hardware video surface for a libavcodec frame. * The surface will be used as output for the hardware decoder, and possibly * also as a reference frame to decode other surfaces. diff --git a/modules/codec/avcodec/vaapi.c b/modules/codec/avcodec/vaapi.c index 24ddda4..c4dc52a 100644 --- a/modules/codec/avcodec/vaapi.c +++ b/modules/codec/avcodec/vaapi.c @@ -187,11 +187,6 @@ static void Release( void *opaque, uint8_t *data ) (void) data; } -static void Setup( vlc_va_t *va, vlc_fourcc_t *pi_chroma ) -{ - *pi_chroma = VLC_CODEC_YV12; -} - static void Delete( vlc_va_t *va, AVCodecContext *avctx ) { vlc_va_sys_t *sys = va->sys; @@ -462,7 +457,6 @@ static int Create( vlc_va_t *va, AVCodecContext *ctx, enum PixelFormat pix_fmt, ctx->hwaccel_context = &sys->hw_ctx; va->sys = sys; va->description = vaQueryVendorString(sys->hw_ctx.display); - va->setup = Setup; va->get = Get; va->release = Release; va->extract = Extract; diff --git a/modules/codec/avcodec/vda.c b/modules/codec/avcodec/vda.c index 979b882..2f248d2 100644 --- a/modules/codec/avcodec/vda.c +++ b/modules/codec/avcodec/vda.c @@ -48,7 +48,6 @@ static int Open( vlc_va_t *, AVCodecContext *, enum PixelFormat, const es_format_t *, picture_sys_t * ); static void Close( vlc_va_t * , AVCodecContext *); -static void Setup( vlc_va_t *, vlc_fourcc_t *); static int Get( vlc_va_t *, picture_t *, uint8_t ** ); static int Extract( vlc_va_t *, picture_t *, uint8_t * ); static void Release( void *opaque, uint8_t *data ); @@ -160,7 +159,6 @@ static int Open(vlc_va_t *va, va->sys = sys; va->description = (char *)"VDA"; - va->setup = Setup; va->get = Get; va->release = Release; va->extract = Extract; @@ -174,11 +172,6 @@ static void Close( vlc_va_t *va, AVCodecContext *avctx ) (void) va; } -static void Setup( vlc_va_t *va, vlc_fourcc_t *pi_chroma ) -{ - *pi_chroma = VLC_CODEC_I420; -} - // Never called static int Get( vlc_va_t *va, picture_t *p_picture, uint8_t **data ) { diff --git a/modules/codec/avcodec/video.c b/modules/codec/avcodec/video.c index 4f6a0e2..c8841e4 100644 --- a/modules/codec/avcodec/video.c +++ b/modules/codec/avcodec/video.c @@ -1133,8 +1133,6 @@ static enum PixelFormat ffmpeg_GetFormat( AVCodecContext *p_context, picture_Release(test_pic); if (va == NULL) continue; /* Unsupported codec profile or such */ - - vlc_va_Setup(va, &p_dec->fmt_out.video.i_chroma); post_mt(p_sys); if (va->description != NULL) diff --git a/modules/hw/vdpau/avcodec.c b/modules/hw/vdpau/avcodec.c index 0db483f..71c17dd 100644 --- a/modules/hw/vdpau/avcodec.c +++ b/modules/hw/vdpau/avcodec.c @@ -140,26 +140,6 @@ static int Copy(vlc_va_t *va, picture_t *pic, uint8_t *data) return VLC_SUCCESS; } -static void Setup(vlc_va_t *va, vlc_fourcc_t *chromap) -{ - vlc_va_sys_t *sys = va->sys; - - switch (sys->type) - { - case VDP_CHROMA_TYPE_420: - *chromap = VLC_CODEC_VDPAU_VIDEO_420; - break; - case VDP_CHROMA_TYPE_422: - *chromap = VLC_CODEC_VDPAU_VIDEO_422; - break; - case VDP_CHROMA_TYPE_444: - *chromap = VLC_CODEC_VDPAU_VIDEO_444; - break; - default: - vlc_assert_unreachable(); - } -} - static int Open(vlc_va_t *va, AVCodecContext *avctx, enum PixelFormat pix_fmt, const es_format_t *fmt, picture_sys_t *p_sys) { @@ -336,7 +316,6 @@ static int Open(vlc_va_t *va, AVCodecContext *avctx, enum PixelFormat pix_fmt, infos = "VDPAU"; va->description = infos; - va->setup = Setup; va->get = Lock; va->release = NULL; va->extract = Copy; _______________________________________________ vlc-commits mailing list [email protected] https://mailman.videolan.org/listinfo/vlc-commits
