vlc | branch: master | Steve Lhomme <[email protected]> | Thu Jul 4 13:57:50 2019 +0200| [857aa22f2c3e9624b1dd680f73bedd00244aa11d] | committer: Steve Lhomme
video_output: remove the decoder pool There's only the display pool and the private pool (which will also go away at some point). The size of pool is now reserved_picture instead of VOUT_MAX_PICTURES in many cases. > http://git.videolan.org/gitweb.cgi/vlc.git/?a=commit;h=857aa22f2c3e9624b1dd680f73bedd00244aa11d --- src/video_output/video_output.c | 11 ++++---- src/video_output/vout_internal.h | 1 - src/video_output/vout_wrapper.c | 57 +++++----------------------------------- 3 files changed, 12 insertions(+), 57 deletions(-) diff --git a/src/video_output/video_output.c b/src/video_output/video_output.c index 4dc19559f4..cac94bac1a 100644 --- a/src/video_output/video_output.c +++ b/src/video_output/video_output.c @@ -1509,7 +1509,6 @@ static int vout_Start(vout_thread_t *vout, vlc_video_context *vctx, const vout_c vlc_mouse_Init(&sys->mouse); sys->decoder_fifo = picture_fifo_New(); - sys->decoder_pool = NULL; sys->display_pool = NULL; sys->private_pool = NULL; @@ -1586,7 +1585,7 @@ static int vout_Start(vout_thread_t *vout, vlc_video_context *vctx, const vout_c vout_SetDisplayAspect(sys->display, num, den); vlc_mutex_unlock(&sys->display_lock); - assert(sys->decoder_pool != NULL && sys->private_pool != NULL); + assert(sys->display_pool != NULL && sys->private_pool != NULL); sys->displayed.current = NULL; sys->displayed.next = NULL; @@ -1630,8 +1629,8 @@ void vout_Cancel(vout_thread_t *vout, bool canceled) assert(sys->display); vout_control_Hold(&sys->control); - if (sys->decoder_pool != NULL) - picture_pool_Cancel(sys->decoder_pool, canceled); + if (sys->display_pool != NULL) + picture_pool_Cancel(sys->display_pool, canceled); vout_control_Release(&sys->control); } @@ -1710,7 +1709,7 @@ static void vout_ReleaseDisplay(vout_thread_t *vout) filter_DeleteBlend(sys->spu_blend); /* Destroy the rendering display */ - if (sys->decoder_pool != NULL) + if (sys->display_pool != NULL) vout_FlushUnlocked(vout, true, INT64_MAX); vlc_mutex_lock(&sys->display_lock); @@ -1730,7 +1729,7 @@ static void vout_ReleaseDisplay(vout_thread_t *vout) picture_fifo_Delete(sys->decoder_fifo); sys->decoder_fifo = NULL; } - assert(sys->decoder_pool == NULL); + assert(sys->display_pool == NULL); if (sys->mouse_event) sys->mouse_event(NULL, sys->mouse_opaque); diff --git a/src/video_output/vout_internal.h b/src/video_output/vout_internal.h index ce9c28ee03..22c90c07a2 100644 --- a/src/video_output/vout_internal.h +++ b/src/video_output/vout_internal.h @@ -185,7 +185,6 @@ struct vout_thread_sys_t picture_pool_t *private_pool; picture_pool_t *display_pool; - picture_pool_t *decoder_pool; picture_fifo_t *decoder_fifo; vout_chrono_t render; /**< picture render time estimator */ diff --git a/src/video_output/vout_wrapper.c b/src/video_output/vout_wrapper.c index d67e96845b..62cbf08cf2 100644 --- a/src/video_output/vout_wrapper.c +++ b/src/video_output/vout_wrapper.c @@ -80,7 +80,6 @@ vout_display_t *vout_OpenWrapper(vout_thread_t *vout, if (vd == NULL) return NULL; - sys->decoder_pool = NULL; sys->display_pool = NULL; const bool use_dr = !vout_IsDisplayFiltered(vd); @@ -90,61 +89,22 @@ vout_display_t *vout_OpenWrapper(vout_thread_t *vout, const unsigned reserved_picture = DISPLAY_PICTURE_COUNT + private_picture + kept_picture; - unsigned display_pool_size; - - /* TODO: During the push transition, both decoder and vout handle a picture - * pool. Therefore we can lower this picture count when we know it is - * handled by the decoder. The vout pool will be only used for filters */ - switch (vctx ? vlc_video_context_GetType(vctx) : VLC_VIDEO_CONTEXT_NONE) - { - case VLC_VIDEO_CONTEXT_VAAPI: - case VLC_VIDEO_CONTEXT_VDPAU: - case VLC_VIDEO_CONTEXT_NVDEC: - case VLC_VIDEO_CONTEXT_DXVA2: - case VLC_VIDEO_CONTEXT_D3D11VA: - display_pool_size = reserved_picture; - break; - default: - display_pool_size = allow_dr ? __MAX(VOUT_MAX_PICTURES, - reserved_picture) : 3; - break; - } - picture_pool_t *display_pool = vout_GetPool(vd, display_pool_size); + picture_pool_t *display_pool = vout_GetPool(vd, reserved_picture); if (display_pool == NULL) goto error; - picture_pool_t *decoder_pool = NULL; - #ifndef NDEBUG - if ( picture_pool_GetSize(display_pool) < display_pool_size ) + if ( picture_pool_GetSize(display_pool) < reserved_picture ) msg_Warn(vout, "Not enough display buffers in the pool, requested %u got %u", - display_pool_size, picture_pool_GetSize(display_pool)); + reserved_picture, picture_pool_GetSize(display_pool)); #endif - if (allow_dr && - picture_pool_GetSize(display_pool) >= reserved_picture) { - sys->decoder_pool = display_pool; - } else { - sys->decoder_pool = decoder_pool = - picture_pool_NewFromFormat(&vd->source, - __MAX(VOUT_MAX_PICTURES, - reserved_picture - DISPLAY_PICTURE_COUNT)); - if (!sys->decoder_pool) - goto error; - if (allow_dr) { - msg_Warn(vout, "Not enough direct buffers, using system memory"); - } - if (use_dr) - sys->display_pool = vout_GetPool(vd, 3); - } - sys->private_pool = picture_pool_Reserve(sys->decoder_pool, private_picture); + sys->private_pool = picture_pool_Reserve(display_pool, private_picture); if (sys->private_pool == NULL) { - if (decoder_pool != NULL) - picture_pool_Release(decoder_pool); - sys->decoder_pool = NULL; goto error; } + sys->display_pool = display_pool; #ifdef _WIN32 var_Create(vout, "video-wallpaper", VLC_VAR_BOOL|VLC_VAR_DOINHERIT); @@ -166,17 +126,14 @@ void vout_CloseWrapper(vout_thread_t *vout, vout_display_t *vd) { vout_thread_sys_t *sys = vout->p; - assert(vout->p->decoder_pool && vout->p->private_pool); + assert(sys->display_pool && sys->private_pool); picture_pool_Release(sys->private_pool); - - if (sys->display_pool != NULL || vout_IsDisplayFiltered(vd)) - picture_pool_Release(sys->decoder_pool); + sys->display_pool = NULL; #ifdef _WIN32 var_DelCallback(vout, "video-wallpaper", Forward, vd); #endif - sys->decoder_pool = NULL; /* FIXME remove */ vout_display_Delete(vd); } _______________________________________________ vlc-commits mailing list [email protected] https://mailman.videolan.org/listinfo/vlc-commits
