+void input_DecoderFrameNext( decoder_t *p_dec, mtime_t *pi_duration )
+{
+ decoder_owner_sys_t *p_owner = p_dec->p_owner;
+
+ *pi_duration = 0;
+
+ vlc_mutex_lock( &p_owner->lock );
+ if( p_dec->fmt_out.i_cat == VIDEO_ES )
+ {
+ if( p_owner->b_paused && p_owner->p_vout )
+ {
+ vout_NextPicture( p_owner->p_vout, pi_duration );
+ p_owner->pause.i_ignore++;
+ vlc_cond_signal( &p_owner->wait );
+ }
+ }
+ else
+ {
+ /* TODO subtitle should not be flushed */
+ DecoderFlush( p_dec );
+ }
+ vlc_mutex_unlock( &p_owner->lock );
+}
+
+bool input_DecoderHasFormatChanged( decoder_t *p_dec, es_format_t *p_fmt, vlc_meta_t **pp_meta )
+{
+ decoder_owner_sys_t *p_owner = p_dec->p_owner;
+ bool b_changed;
+
+ vlc_mutex_lock( &p_owner->lock );
+ b_changed = p_owner->b_fmt_description;
+ if( b_changed )
+ {
+ if( p_fmt )
+ es_format_Copy( p_fmt, &p_owner->fmt_description );
+
+ if( pp_meta )
+ {
+ *pp_meta = NULL;
+ if( p_owner->p_description )
+ {
+ *pp_meta = vlc_meta_New();
+ if( *pp_meta )
+ vlc_meta_Merge( *pp_meta, p_owner->p_description );
+ }
+ }
+ p_owner->b_fmt_description = false;
+ }
+ vlc_mutex_unlock( &p_owner->lock );
+ return b_changed;
+}
+