vlc | branch: master | Steve Lhomme <[email protected]> | Tue Oct 22 13:10:30 2019 +0200| [fb4d104851dda9af2d0363e0bc947e4a4fbaf404] | committer: Steve Lhomme
decoder: do not use the DPB size to configure the display module The decoders all have their own pool now. > http://git.videolan.org/gitweb.cgi/vlc.git/?a=commit;h=fb4d104851dda9af2d0363e0bc947e4a4fbaf404 --- src/audio_output/filters.c | 2 +- src/input/decoder.c | 3 +-- src/video_output/video_output.c | 12 ++++-------- src/video_output/vout_internal.h | 4 +--- src/video_output/vout_wrapper.c | 12 +++--------- 5 files changed, 10 insertions(+), 23 deletions(-) diff --git a/src/audio_output/filters.c b/src/audio_output/filters.c index 8a1ea0df9c..a297f4c697 100644 --- a/src/audio_output/filters.c +++ b/src/audio_output/filters.c @@ -390,7 +390,7 @@ vout_thread_t *aout_filter_GetVout(filter_t *filter, const video_format_t *fmt) video_format_t adj_fmt = *fmt; vout_configuration_t cfg = { - .vout = vout, .clock = filter->owner.sys, .fmt = &adj_fmt, .dpb_size = 1, + .vout = vout, .clock = filter->owner.sys, .fmt = &adj_fmt, }; video_format_AdjustColorSpace(&adj_fmt); diff --git a/src/input/decoder.c b/src/input/decoder.c index 46cf7658b8..f4f0f65408 100644 --- a/src/input/decoder.c +++ b/src/input/decoder.c @@ -521,7 +521,7 @@ static int ModuleThread_UpdateVideoFormat( decoder_t *p_dec, vlc_video_context * int res; if (p_owner->vout_thread_started) { - res = vout_ChangeSource(p_vout, &fmt, 0); + res = vout_ChangeSource(p_vout, &fmt); if (res == 0) // the display/thread is started and can handle the new source format return 0; @@ -529,7 +529,6 @@ static int ModuleThread_UpdateVideoFormat( decoder_t *p_dec, vlc_video_context * vout_configuration_t cfg = { .vout = p_vout, .clock = p_owner->p_clock, .fmt = &fmt, - .dpb_size = 0, .mouse_event = MouseEvent, .mouse_opaque = p_dec, }; res = input_resource_StartVout( p_owner->p_resource, vctx, &cfg); diff --git a/src/video_output/video_output.c b/src/video_output/video_output.c index 379cb25727..8f54806b8f 100644 --- a/src/video_output/video_output.c +++ b/src/video_output/video_output.c @@ -1508,7 +1508,6 @@ static int vout_Start(vout_thread_t *vout, vlc_video_context *vctx, const vout_c sys->mouse_opaque = cfg->mouse_opaque; vlc_mouse_Init(&sys->mouse); - sys->dpb_size = cfg->dpb_size; sys->decoder_fifo = picture_fifo_New(); sys->decoder_pool = NULL; sys->display_pool = NULL; @@ -1954,7 +1953,7 @@ vout_thread_t *vout_Hold(vout_thread_t *vout) return vout; } -int vout_ChangeSource( vout_thread_t *vout, const video_format_t *original, unsigned dpb_size ) +int vout_ChangeSource( vout_thread_t *vout, const video_format_t *original ) { vout_thread_sys_t *sys = vout->p; @@ -1962,11 +1961,8 @@ int vout_ChangeSource( vout_thread_t *vout, const video_format_t *original, unsi * ratio and crop settings, instead of recreating a display. */ if (video_format_IsSimilar(original, &sys->original)) { - if (dpb_size <= sys->dpb_size) { - /* It is assumed that the SPU input matches input already. */ - return 0; - } - msg_Warn(vout, "DPB need to be increased"); + /* It is assumed that the SPU input matches input already. */ + return 0; } return -1; @@ -2029,7 +2025,7 @@ int vout_Request(const vout_configuration_t *cfg, vlc_video_context *vctx, input video_format_t original; VoutFixFormat(&original, cfg->fmt); - if (vout_ChangeSource(vout, &original, cfg->dpb_size) == 0) + if (vout_ChangeSource(vout, &original) == 0) { video_format_Clean(&original); return 0; diff --git a/src/video_output/vout_internal.h b/src/video_output/vout_internal.h index d7bd809e5d..ce9c28ee03 100644 --- a/src/video_output/vout_internal.h +++ b/src/video_output/vout_internal.h @@ -55,7 +55,6 @@ typedef struct { vout_thread_t *vout; vlc_clock_t *clock; const video_format_t *fmt; - unsigned dpb_size; vlc_mouse_event mouse_event; void *mouse_opaque; } vout_configuration_t; @@ -108,7 +107,6 @@ struct vout_thread_sys_t }; } crop; } source; - unsigned dpb_size; /* Snapshot interface */ struct vout_snapshot *snapshot; @@ -253,7 +251,7 @@ void vout_Close( vout_thread_t *p_vout ); * \retval 0 on success * \retval -1 on error, the vout needs to be restarted to handle the format */ -int vout_ChangeSource( vout_thread_t *p_vout, const video_format_t *fmt, unsigned dpb_size ); +int vout_ChangeSource( vout_thread_t *p_vout, const video_format_t *fmt ); /* TODO to move them to vlc_vout.h */ void vout_ChangeFullscreen(vout_thread_t *, const char *id); diff --git a/src/video_output/vout_wrapper.c b/src/video_output/vout_wrapper.c index add05a9311..d67e96845b 100644 --- a/src/video_output/vout_wrapper.c +++ b/src/video_output/vout_wrapper.c @@ -86,7 +86,6 @@ vout_display_t *vout_OpenWrapper(vout_thread_t *vout, const bool use_dr = !vout_IsDisplayFiltered(vd); const bool allow_dr = !vd->info.has_pictures_invalid && use_dr; const unsigned private_picture = 4; /* XXX 3 for filter, 1 for SPU */ - unsigned decoder_picture = 1 + sys->dpb_size; const unsigned kept_picture = 1; /* last displayed picture */ const unsigned reserved_picture = DISPLAY_PICTURE_COUNT + private_picture + @@ -104,11 +103,10 @@ vout_display_t *vout_OpenWrapper(vout_thread_t *vout, case VLC_VIDEO_CONTEXT_DXVA2: case VLC_VIDEO_CONTEXT_D3D11VA: display_pool_size = reserved_picture; - decoder_picture = 0; break; default: display_pool_size = allow_dr ? __MAX(VOUT_MAX_PICTURES, - reserved_picture + decoder_picture) : 3; + reserved_picture) : 3; break; } @@ -125,21 +123,17 @@ vout_display_t *vout_OpenWrapper(vout_thread_t *vout, #endif if (allow_dr && - picture_pool_GetSize(display_pool) >= reserved_picture + decoder_picture) { - sys->dpb_size = picture_pool_GetSize(display_pool) - reserved_picture; + 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 + decoder_picture - DISPLAY_PICTURE_COUNT)); + reserved_picture - DISPLAY_PICTURE_COUNT)); if (!sys->decoder_pool) goto error; if (allow_dr) { msg_Warn(vout, "Not enough direct buffers, using system memory"); - sys->dpb_size = 0; - } else { - sys->dpb_size = picture_pool_GetSize(sys->decoder_pool) - reserved_picture; } if (use_dr) sys->display_pool = vout_GetPool(vd, 3); _______________________________________________ vlc-commits mailing list [email protected] https://mailman.videolan.org/listinfo/vlc-commits
