/************************************************************************** * Parse the media but do not wait. **************************************************************************/ void libvlc_media_parse_async(libvlc_media_t *media) { bool needed; vlc_mutex_lock(&media->parsed_lock); needed = !media->has_asked_preparse; media->has_asked_preparse = true; vlc_mutex_unlock(&media->parsed_lock); if (needed) media_parse(media); }
/************************************************************************** * Parse the media and wait. **************************************************************************/ void libvlc_media_parse(libvlc_media_t *media) { vlc_mutex_lock(&media->parsed_lock); if (!media->has_asked_preparse) { media->has_asked_preparse = true; vlc_mutex_unlock(&media->parsed_lock); if (media_parse(media)) /* Parse failed: do not wait! */ return; vlc_mutex_lock(&media->parsed_lock); } while (!media->is_parsed) vlc_cond_wait(&media->parsed_cond, &media->parsed_lock); vlc_mutex_unlock(&media->parsed_lock); }
/************************************************************************** * Parse the media but do not wait. **************************************************************************/ void libvlc_media_parse_async(libvlc_media_t *media) { media_parse( media, true, libvlc_media_fetch_local ); }
/************************************************************************** * Parse the media asynchronously with options. **************************************************************************/ int libvlc_media_parse_with_options( libvlc_media_t *media, libvlc_media_parse_flag_t parse_flag ) { return media_parse( media, true, parse_flag ) == VLC_SUCCESS ? 0 : -1; }
/************************************************************************** * Parse the media and wait. **************************************************************************/ void libvlc_media_parse(libvlc_media_t *media) { media_parse( media, false, libvlc_media_fetch_local ); }