[vlc-commits] decoder: log the reason a new vout is needed
Steve Lhomme
git at videolan.org
Thu Oct 25 13:10:31 CEST 2018
vlc | branch: master | Steve Lhomme <robux4 at ycbcr.xyz> | Tue Oct 23 12:56:29 2018 +0200| [01a9777d6745f0c1fc61e36e832277774361ef86] | committer: Steve Lhomme
decoder: log the reason a new vout is needed
or if a metadata update is found
> http://git.videolan.org/gitweb.cgi/vlc.git/?a=commit;h=01a9777d6745f0c1fc61e36e832277774361ef86
---
src/input/decoder.c | 80 ++++++++++++++++++++++++++++++++++++++++-------------
1 file changed, 61 insertions(+), 19 deletions(-)
diff --git a/src/input/decoder.c b/src/input/decoder.c
index 4c332471ef..662048e2cb 100644
--- a/src/input/decoder.c
+++ b/src/input/decoder.c
@@ -429,19 +429,67 @@ static int aout_update_format( decoder_t *p_dec )
static int vout_update_format( decoder_t *p_dec )
{
struct decoder_owner *p_owner = dec_get_owner( p_dec );
+ bool need_vout = false;
+ bool need_format_update = false;
- if( p_owner->p_vout == NULL
- || p_dec->fmt_out.video.i_width != p_owner->fmt.video.i_width
- || p_dec->fmt_out.video.i_height != p_owner->fmt.video.i_height
- || p_dec->fmt_out.video.i_visible_width != p_owner->fmt.video.i_visible_width
- || p_dec->fmt_out.video.i_visible_height != p_owner->fmt.video.i_visible_height
- || p_dec->fmt_out.video.i_x_offset != p_owner->fmt.video.i_x_offset
- || p_dec->fmt_out.video.i_y_offset != p_owner->fmt.video.i_y_offset
- || p_dec->fmt_out.i_codec != p_owner->fmt.video.i_chroma
- || (int64_t)p_dec->fmt_out.video.i_sar_num * p_owner->fmt.video.i_sar_den !=
- (int64_t)p_dec->fmt_out.video.i_sar_den * p_owner->fmt.video.i_sar_num ||
- p_dec->fmt_out.video.orientation != p_owner->fmt.video.orientation ||
- p_dec->fmt_out.video.multiview_mode != p_owner->fmt.video.multiview_mode )
+ if( p_owner->p_vout == NULL )
+ {
+ msg_Dbg(p_dec, "vout: none found");
+ need_vout = true;
+ }
+ if( p_dec->fmt_out.video.i_width != p_owner->fmt.video.i_width
+ || p_dec->fmt_out.video.i_height != p_owner->fmt.video.i_height )
+ {
+ msg_Dbg(p_dec, "vout change: decoder size");
+ need_vout = true;
+ }
+ if( p_dec->fmt_out.video.i_visible_width != p_owner->fmt.video.i_visible_width
+ || p_dec->fmt_out.video.i_visible_height != p_owner->fmt.video.i_visible_height
+ || p_dec->fmt_out.video.i_x_offset != p_owner->fmt.video.i_x_offset
+ || p_dec->fmt_out.video.i_y_offset != p_owner->fmt.video.i_y_offset )
+ {
+ msg_Dbg(p_dec, "vout change: visible size");
+ need_vout = true;
+ }
+ if( p_dec->fmt_out.i_codec != p_owner->fmt.video.i_chroma )
+ {
+ msg_Dbg(p_dec, "vout change: chroma");
+ need_vout = true;
+ }
+ if( (int64_t)p_dec->fmt_out.video.i_sar_num * p_owner->fmt.video.i_sar_den !=
+ (int64_t)p_dec->fmt_out.video.i_sar_den * p_owner->fmt.video.i_sar_num )
+ {
+ msg_Dbg(p_dec, "vout change: SAR");
+ need_vout = true;
+ }
+ if( p_dec->fmt_out.video.orientation != p_owner->fmt.video.orientation )
+ {
+ msg_Dbg(p_dec, "vout change: orientation");
+ need_vout = true;
+ }
+ if( p_dec->fmt_out.video.multiview_mode != p_owner->fmt.video.multiview_mode )
+ {
+ msg_Dbg(p_dec, "vout change: multiview");
+ need_vout = true;
+ }
+
+ if ( memcmp( &p_dec->fmt_out.video.mastering,
+ &p_owner->fmt.video.mastering,
+ sizeof(p_owner->fmt.video.mastering)) )
+ {
+ msg_Dbg(p_dec, "vout update: mastering data");
+ need_format_update = true;
+ }
+ if ( p_dec->fmt_out.video.lighting.MaxCLL !=
+ p_owner->fmt.video.lighting.MaxCLL ||
+ p_dec->fmt_out.video.lighting.MaxFALL !=
+ p_owner->fmt.video.lighting.MaxFALL )
+ {
+ msg_Dbg(p_dec, "vout update: lighting data");
+ need_format_update = true;
+ }
+
+ if( need_vout )
{
vout_thread_t *p_vout;
@@ -560,13 +608,7 @@ static int vout_update_format( decoder_t *p_dec )
vlc_fifo_Unlock( p_owner->p_fifo );
}
else
- if ( memcmp( &p_dec->fmt_out.video.mastering,
- &p_owner->fmt.video.mastering,
- sizeof(p_owner->fmt.video.mastering)) ||
- p_dec->fmt_out.video.lighting.MaxCLL !=
- p_owner->fmt.video.lighting.MaxCLL ||
- p_dec->fmt_out.video.lighting.MaxFALL !=
- p_owner->fmt.video.lighting.MaxFALL)
+ if ( need_format_update )
{
/* the format has changed but we don't need a new vout */
vlc_mutex_lock( &p_owner->lock );
More information about the vlc-commits
mailing list