mirror of https://code.videolan.org/videolan/vlc
110 lines
3.8 KiB
C
110 lines
3.8 KiB
C
/*****************************************************************************
|
|
* preparser.h
|
|
*****************************************************************************
|
|
* Copyright (C) 1999-2023 VLC authors and VideoLAN
|
|
*
|
|
* Authors: Samuel Hocevar <sam@zoy.org>
|
|
* Clément Stenac <zorglub@videolan.org>
|
|
*
|
|
* This program is free software; you can redistribute it and/or modify it
|
|
* under the terms of the GNU Lesser General Public License as published by
|
|
* the Free Software Foundation; either version 2.1 of the License, or
|
|
* (at your option) any later version.
|
|
*
|
|
* This program is distributed in the hope that it will be useful,
|
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
* GNU Lesser General Public License for more details.
|
|
*
|
|
* You should have received a copy of the GNU Lesser General Public License
|
|
* along with this program; if not, write to the Free Software Foundation,
|
|
* Inc., 51 Franklin Street, Fifth Floor, Boston MA 02110-1301, USA.
|
|
*****************************************************************************/
|
|
|
|
#ifndef VLC_PREPARSER_H
|
|
#define VLC_PREPARSER_H 1
|
|
|
|
#include <vlc_input_item.h>
|
|
|
|
/**
|
|
* @defgroup vlc_preparser Preparser
|
|
* @ingroup input
|
|
* @{
|
|
* @file
|
|
* VLC Preparser API
|
|
*/
|
|
|
|
/**
|
|
* Preparser opaque structure.
|
|
*
|
|
* The preparser object will retrieve the meta data of any given input item in
|
|
* an asynchronous way.
|
|
* It will also issue art fetching requests.
|
|
*/
|
|
typedef struct vlc_preparser_t vlc_preparser_t;
|
|
|
|
/**
|
|
* This function creates the preparser object and thread.
|
|
*
|
|
* @param obj the parent object
|
|
* @return a valid preparser object or NULL in case of error
|
|
*/
|
|
VLC_API vlc_preparser_t *vlc_preparser_New( vlc_object_t *obj );
|
|
|
|
/**
|
|
* This function enqueues the provided item to be preparsed or fetched.
|
|
*
|
|
* The input item is retained until the preparsing is done or until the
|
|
* preparser object is deleted.
|
|
*
|
|
* @param preparser the preparser object
|
|
* @param item a valid item to preparse
|
|
* @param option preparse flag, cf @ref input_item_meta_request_option_t
|
|
* @param cbs callback to listen to events (can't be NULL)
|
|
* @param cbs_userdata opaque pointer used by the callbacks
|
|
* @param timeout maximum time allowed to preparse the item. If -1, the default
|
|
* "preparse-timeout" option will be used as a timeout. If 0, it will wait
|
|
* indefinitely. If > 0, the timeout will be used (in milliseconds).
|
|
* @param id unique id provided by the caller. This is can be used to cancel
|
|
* the request with vlc_preparser_Cancel()
|
|
* @returns VLC_SUCCESS if the item was scheduled for preparsing, an error code
|
|
* otherwise
|
|
* If this returns an error, the on_preparse_ended will *not* be invoked
|
|
*/
|
|
VLC_API int vlc_preparser_Push( vlc_preparser_t *preparser, input_item_t *item,
|
|
input_item_meta_request_option_t option,
|
|
const struct vlc_metadata_cbs *cbs,
|
|
void *cbs_userdata,
|
|
int timeout, void *id );
|
|
|
|
/**
|
|
* This function cancel all preparsing requests for a given id
|
|
*
|
|
* @param preparser the preparser object
|
|
* @param id unique id given to vlc_preparser_Push()
|
|
*/
|
|
VLC_API void vlc_preparser_Cancel( vlc_preparser_t *preparser, void *id );
|
|
|
|
/**
|
|
* This function destroys the preparser object and thread.
|
|
*
|
|
* @param preparser the preparser object
|
|
* All pending input items will be released.
|
|
*/
|
|
VLC_API void vlc_preparser_Delete( vlc_preparser_t *preparser );
|
|
|
|
/**
|
|
* This function deactivates the preparser
|
|
*
|
|
* All pending requests will be removed, and it will block until the currently
|
|
* running entity has finished (if any).
|
|
*
|
|
* @param preparser the preparser object
|
|
*/
|
|
VLC_API void vlc_preparser_Deactivate( vlc_preparser_t *preparser );
|
|
|
|
/** @} vlc_preparser */
|
|
|
|
#endif
|
|
|