+static void EsOutMeta( es_out_t *p_out, const vlc_meta_t *p_meta )
+{
+ es_out_sys_t *p_sys = p_out->p_sys;
+ input_thread_t *p_input = p_sys->p_input;
+ input_item_t *p_item = input_GetItem( p_input );
+
+ if( vlc_meta_Get( p_meta, vlc_meta_Title ) != NULL )
+ input_item_SetName( p_item, vlc_meta_Get( p_meta, vlc_meta_Title ) );
+
+ char *psz_arturl = NULL;
+ if( vlc_meta_Get( p_item->p_meta, vlc_meta_ArtworkURL ) != NULL )
+ psz_arturl = input_item_GetArtURL( p_item ); /* save value */
+
+ vlc_mutex_lock( &p_item->lock );
+ vlc_meta_Merge( p_item->p_meta, p_meta );
+ vlc_mutex_unlock( &p_item->lock );
+
+ if( psz_arturl != NULL ) /* restore/favor previously set item art URL */
+ input_item_SetArtURL( p_item, psz_arturl );
+ else
+ psz_arturl = input_item_GetArtURL( p_item );
+
+ if( psz_arturl != NULL && !strncmp( psz_arturl, "attachment://", 13 ) )
+ { /* Clear art cover if streaming out.
+ * FIXME: Why? Remove this when sout gets meta data support. */
+ if( p_input->p->p_sout && !p_input->b_preparsing )
+ input_item_SetArtURL( p_item, NULL );
+ else
+ input_ExtractAttachmentAndCacheArt( p_input, psz_arturl + 13 );
+ }
+ free( psz_arturl );
+
+ input_item_SetPreparsed( p_item, true );
+
+ input_SendEventMeta( p_input );
+ /* TODO handle sout meta ? */
+}
+