1 /*****************************************************************************
3 *****************************************************************************
4 * Copyright (C) 1999-2008 VLC authors and VideoLAN
6 * Authors: Samuel Hocevar <sam@zoy.org>
7 * Clément Stenac <zorglub@videolan.org>
9 * This program is free software; you can redistribute it and/or modify it
10 * under the terms of the GNU Lesser General Public License as published by
11 * the Free Software Foundation; either version 2.1 of the License, or
12 * (at your option) any later version.
14 * This program is distributed in the hope that it will be useful,
15 * but WITHOUT ANY WARRANTY; without even the implied warranty of
16 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
17 * GNU Lesser General Public License for more details.
19 * You should have received a copy of the GNU Lesser General Public License
20 * along with this program; if not, write to the Free Software Foundation,
21 * Inc., 51 Franklin Street, Fifth Floor, Boston MA 02110-1301, USA.
22 *****************************************************************************/
24 #ifndef _INPUT_PREPARSER_H
25 #define _INPUT_PREPARSER_H 1
27 #include <vlc_input_item.h>
29 * Preparser opaque structure.
31 * The preparser object will retrieve the meta data of any given input item in
32 * an asynchronous way.
33 * It will also issue art fetching requests.
35 typedef struct input_preparser_t input_preparser_t
;
38 * This function creates the preparser object and thread.
40 input_preparser_t
*input_preparser_New( vlc_object_t
* );
43 * This function enqueues the provided item to be preparsed.
45 * The input item is retained until the preparsing is done or until the
46 * preparser object is deleted.
48 * @param timeout maximum time allowed to preparse the item. If -1, the default
49 * "preparse-timeout" option will be used as a timeout. If 0, it will wait
50 * indefinitely. If > 0, the timeout will be used (in milliseconds).
51 * @param id unique id provided by the caller. This is can be used to cancel
52 * the request with input_preparser_Cancel()
54 void input_preparser_Push( input_preparser_t
*, input_item_t
*,
55 input_item_meta_request_option_t
,
56 const input_preparser_callbacks_t
*cbs
,
58 int timeout
, void *id
);
60 void input_preparser_fetcher_Push( input_preparser_t
*, input_item_t
*,
61 input_item_meta_request_option_t
,
62 const input_fetcher_callbacks_t
*cbs
,
66 * This function cancel all preparsing requests for a given id
68 * @param id unique id given to input_preparser_Push()
70 void input_preparser_Cancel( input_preparser_t
*, void *id
);
73 * This function destroys the preparser object and thread.
75 * All pending input items will be released.
77 void input_preparser_Delete( input_preparser_t
* );
80 * This function deactivates the preparser
82 * All pending requests will be removed, and it will block until the currently
83 * running entity has finished (if any).
85 void input_preparser_Deactivate( input_preparser_t
* );