From 4d802e182e835fef96ad7e6c0c5fbd155054b9c5 Mon Sep 17 00:00:00 2001 From: Laurent Aimar Date: Sat, 17 Jan 2009 17:59:40 +0100 Subject: [PATCH] Split out input item from include/vlc_input.h. --- include/vlc_input.h | 153 +------------------------------- include/vlc_input_item.h | 185 +++++++++++++++++++++++++++++++++++++++ src/Makefile.am | 1 + 3 files changed, 188 insertions(+), 151 deletions(-) create mode 100644 include/vlc_input_item.h diff --git a/include/vlc_input.h b/include/vlc_input.h index 46cc4488f6..d1619a5c0d 100644 --- a/include/vlc_input.h +++ b/include/vlc_input.h @@ -35,158 +35,9 @@ #include #include #include +#include -#include /* strcasestr() */ - -struct vlc_meta_t; - -/***************************************************************************** - * input_item_t: Describes an input and is used to spawn input_thread_t objects - *****************************************************************************/ -struct info_t -{ - char *psz_name; /**< Name of this info */ - char *psz_value; /**< Value of the info */ -}; - -struct info_category_t -{ - char *psz_name; /**< Name of this category */ - int i_infos; /**< Number of infos in the category */ - struct info_t **pp_infos; /**< Pointer to an array of infos */ -}; - -struct input_item_t -{ - VLC_GC_MEMBERS - int i_id; /**< Identifier of the item */ - - char *psz_name; /**< text describing this item */ - char *psz_uri; /**< mrl of this item */ - bool b_fixed_name; /**< Can the interface change the name ?*/ - - int i_options; /**< Number of input options */ - char **ppsz_options; /**< Array of input options */ - uint8_t *optflagv; /**< Some flags of input options */ - unsigned optflagc; - - mtime_t i_duration; /**< Duration in milliseconds*/ - - uint8_t i_type; /**< Type (file, disc, ...) */ - bool b_prefers_tree; /**< Do we prefer being displayed as tree*/ - - int i_categories; /**< Number of info categories */ - info_category_t **pp_categories; /**< Pointer to the first info category */ - - int i_es; /**< Number of es format descriptions */ - es_format_t **es; /**< Es formats */ - - input_stats_t *p_stats; /**< Statistics */ - int i_nb_played; /**< Number of times played */ - - bool b_error_when_reading; /**< Error When Reading */ - - vlc_meta_t *p_meta; - - vlc_event_manager_t event_manager; - - vlc_mutex_t lock; /**< Lock for the item */ -}; - -#define ITEM_TYPE_UNKNOWN 0 -#define ITEM_TYPE_FILE 1 -#define ITEM_TYPE_DIRECTORY 2 -#define ITEM_TYPE_DISC 3 -#define ITEM_TYPE_CDDA 4 -#define ITEM_TYPE_CARD 5 -#define ITEM_TYPE_NET 6 -#define ITEM_TYPE_PLAYLIST 7 -#define ITEM_TYPE_NODE 8 -#define ITEM_TYPE_NUMBER 9 - -VLC_EXPORT( void, input_item_CopyOptions, ( input_item_t *p_parent, input_item_t *p_child ) ); -VLC_EXPORT( void, input_item_SetName, ( input_item_t *p_item, const char *psz_name ) ); - -/* This won't hold the item, but can tell to interested third parties - * Like the playlist, that there is a new sub item. With this design - * It is not the input item's responsability to keep all the ref of - * the input item children. */ -VLC_EXPORT( void, input_item_AddSubItem, ( input_item_t *p_parent, input_item_t *p_child ) ); - - -/** - * Option flags - */ -enum input_item_option_e -{ - VLC_INPUT_OPTION_TRUSTED = 0x2, - VLC_INPUT_OPTION_UNIQUE = 0x100, -}; - -/** - * This function allows to add an option to an existing input_item_t. - */ -VLC_EXPORT( int, input_item_AddOption, (input_item_t *, const char *, unsigned i_flags ) ); - -/* */ -VLC_EXPORT( bool, input_item_HasErrorWhenReading, ( input_item_t * ) ); -VLC_EXPORT( void, input_item_SetMeta, ( input_item_t *, vlc_meta_type_t meta_type, const char *psz_val )); -VLC_EXPORT( bool, input_item_MetaMatch, ( input_item_t *p_i, vlc_meta_type_t meta_type, const char *psz ) ); -VLC_EXPORT( char *, input_item_GetMeta, ( input_item_t *p_i, vlc_meta_type_t meta_type ) ); -VLC_EXPORT( char *, input_item_GetName, ( input_item_t * p_i ) ); -VLC_EXPORT( char *, input_item_GetURI, ( input_item_t * p_i ) ); -VLC_EXPORT( void, input_item_SetURI, ( input_item_t * p_i, const char *psz_uri )); -VLC_EXPORT(mtime_t, input_item_GetDuration, ( input_item_t * p_i ) ); -VLC_EXPORT( void, input_item_SetDuration, ( input_item_t * p_i, mtime_t i_duration )); -VLC_EXPORT( bool, input_item_IsPreparsed, ( input_item_t *p_i )); -VLC_EXPORT( bool, input_item_IsArtFetched, ( input_item_t *p_i )); - - -#define input_item_SetTitle( item, b ) input_item_SetMeta( item, vlc_meta_Title, b ) -#define input_item_SetArtist( item, b ) input_item_SetMeta( item, vlc_meta_Artist, b ) -#define input_item_SetGenre( item, b ) input_item_SetMeta( item, vlc_meta_Genre, b ) -#define input_item_SetCopyright( item, b ) input_item_SetMeta( item, vlc_meta_Copyright, b ) -#define input_item_SetAlbum( item, b ) input_item_SetMeta( item, vlc_meta_Album, b ) -#define input_item_SetTrackNum( item, b ) input_item_SetMeta( item, vlc_meta_TrackNumber, b ) -#define input_item_SetDescription( item, b ) input_item_SetMeta( item, vlc_meta_Description, b ) -#define input_item_SetRating( item, b ) input_item_SetMeta( item, vlc_meta_Rating, b ) -#define input_item_SetDate( item, b ) input_item_SetMeta( item, vlc_meta_Date, b ) -#define input_item_SetSetting( item, b ) input_item_SetMeta( item, vlc_meta_Setting, b ) -#define input_item_SetURL( item, b ) input_item_SetMeta( item, vlc_meta_URL, b ) -#define input_item_SetLanguage( item, b ) input_item_SetMeta( item, vlc_meta_Language, b ) -#define input_item_SetNowPlaying( item, b ) input_item_SetMeta( item, vlc_meta_NowPlaying, b ) -#define input_item_SetPublisher( item, b ) input_item_SetMeta( item, vlc_meta_Publisher, b ) -#define input_item_SetEncodedBy( item, b ) input_item_SetMeta( item, vlc_meta_EncodedBy, b ) -#define input_item_SetArtURL( item, b ) input_item_SetMeta( item, vlc_meta_ArtworkURL, b ) -#define input_item_SetTrackID( item, b ) input_item_SetMeta( item, vlc_meta_TrackID, b ) - -#define input_item_GetTitle( item ) input_item_GetMeta( item, vlc_meta_Title ) -#define input_item_GetArtist( item ) input_item_GetMeta( item, vlc_meta_Artist ) -#define input_item_GetGenre( item ) input_item_GetMeta( item, vlc_meta_Genre ) -#define input_item_GetCopyright( item ) input_item_GetMeta( item, vlc_meta_Copyright ) -#define input_item_GetAlbum( item ) input_item_GetMeta( item, vlc_meta_Album ) -#define input_item_GetTrackNum( item ) input_item_GetMeta( item, vlc_meta_TrackNumber ) -#define input_item_GetDescription( item ) input_item_GetMeta( item, vlc_meta_Description ) -#define input_item_GetRating( item ) input_item_GetMeta( item, vlc_meta_Rating ) -#define input_item_GetDate( item ) input_item_GetMeta( item, vlc_meta_Date ) -#define input_item_GetGetting( item ) input_item_GetMeta( item, vlc_meta_Getting ) -#define input_item_GetURL( item ) input_item_GetMeta( item, vlc_meta_URL ) -#define input_item_GetLanguage( item ) input_item_GetMeta( item, vlc_meta_Language ) -#define input_item_GetNowPlaying( item ) input_item_GetMeta( item, vlc_meta_NowPlaying ) -#define input_item_GetPublisher( item ) input_item_GetMeta( item, vlc_meta_Publisher ) -#define input_item_GetEncodedBy( item ) input_item_GetMeta( item, vlc_meta_EncodedBy ) -#define input_item_GetArtURL( item ) input_item_GetMeta( item, vlc_meta_ArtworkURL ) -#define input_item_GetTrackID( item ) input_item_GetMeta( item, vlc_meta_TrackID ) -#define input_item_GetSetting( item ) input_item_GetMeta( item, vlc_meta_Setting ) - -VLC_EXPORT( char *, input_item_GetInfo, ( input_item_t *p_i, const char *psz_cat,const char *psz_name ) ); -VLC_EXPORT( int, input_item_AddInfo, ( input_item_t *p_i, const char *psz_cat, const char *psz_name, const char *psz_format, ... ) LIBVLC_FORMAT( 4, 5 ) ); -VLC_EXPORT( int, input_item_DelInfo, ( input_item_t *p_i, const char *psz_cat, const char *psz_name ) ); - -#define input_item_New( a,b,c ) input_item_NewExt( a, b, c, 0, NULL, -1 ) -#define input_item_NewExt(a,b,c,d,e,f) __input_item_NewExt( VLC_OBJECT(a),b,c,d,e,f) -VLC_EXPORT( input_item_t *, __input_item_NewExt, (vlc_object_t *, const char *, const char*, int, const char *const *, mtime_t i_duration ) ); -VLC_EXPORT( input_item_t *, input_item_NewWithType, ( vlc_object_t *, const char *, const char *e, int, const char *const *, mtime_t i_duration, int ) ); +#include /***************************************************************************** * Meta data helpers diff --git a/include/vlc_input_item.h b/include/vlc_input_item.h new file mode 100644 index 0000000000..bfacb54aa2 --- /dev/null +++ b/include/vlc_input_item.h @@ -0,0 +1,185 @@ +/***************************************************************************** + * vlc_input_item.h: Core input item + ***************************************************************************** + * Copyright (C) 1999-2009 the VideoLAN team + * $Id$ + * + * Authors: Christophe Massiot + * Laurent Aimar + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 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 General Public License for more details. + * + * You should have received a copy of the GNU 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__INPUT_ITEM_H +#define VLC__INPUT_ITEM_H 1 + +/** + * \file + * This file defines functions, structures and enums for input items in vlc + */ + +#include + +#include + +/***************************************************************************** + * input_item_t: Describes an input and is used to spawn input_thread_t objects + *****************************************************************************/ +struct info_t +{ + char *psz_name; /**< Name of this info */ + char *psz_value; /**< Value of the info */ +}; + +struct info_category_t +{ + char *psz_name; /**< Name of this category */ + int i_infos; /**< Number of infos in the category */ + struct info_t **pp_infos; /**< Pointer to an array of infos */ +}; + +struct input_item_t +{ + VLC_GC_MEMBERS + int i_id; /**< Identifier of the item */ + + char *psz_name; /**< text describing this item */ + char *psz_uri; /**< mrl of this item */ + bool b_fixed_name; /**< Can the interface change the name ?*/ + + int i_options; /**< Number of input options */ + char **ppsz_options; /**< Array of input options */ + uint8_t *optflagv; /**< Some flags of input options */ + unsigned optflagc; + + mtime_t i_duration; /**< Duration in milliseconds*/ + + uint8_t i_type; /**< Type (file, disc, ...) */ + bool b_prefers_tree; /**< Do we prefer being displayed as tree*/ + + int i_categories; /**< Number of info categories */ + info_category_t **pp_categories; /**< Pointer to the first info category */ + + int i_es; /**< Number of es format descriptions */ + es_format_t **es; /**< Es formats */ + + input_stats_t *p_stats; /**< Statistics */ + int i_nb_played; /**< Number of times played */ + + bool b_error_when_reading; /**< Error When Reading */ + + vlc_meta_t *p_meta; + + vlc_event_manager_t event_manager; + + vlc_mutex_t lock; /**< Lock for the item */ +}; + +#define ITEM_TYPE_UNKNOWN 0 +#define ITEM_TYPE_FILE 1 +#define ITEM_TYPE_DIRECTORY 2 +#define ITEM_TYPE_DISC 3 +#define ITEM_TYPE_CDDA 4 +#define ITEM_TYPE_CARD 5 +#define ITEM_TYPE_NET 6 +#define ITEM_TYPE_PLAYLIST 7 +#define ITEM_TYPE_NODE 8 +#define ITEM_TYPE_NUMBER 9 + +VLC_EXPORT( void, input_item_CopyOptions, ( input_item_t *p_parent, input_item_t *p_child ) ); +VLC_EXPORT( void, input_item_SetName, ( input_item_t *p_item, const char *psz_name ) ); + +/* This won't hold the item, but can tell to interested third parties + * Like the playlist, that there is a new sub item. With this design + * It is not the input item's responsability to keep all the ref of + * the input item children. */ +VLC_EXPORT( void, input_item_AddSubItem, ( input_item_t *p_parent, input_item_t *p_child ) ); + + +/** + * Option flags + */ +enum input_item_option_e +{ + VLC_INPUT_OPTION_TRUSTED = 0x2, + VLC_INPUT_OPTION_UNIQUE = 0x100, +}; + +/** + * This function allows to add an option to an existing input_item_t. + */ +VLC_EXPORT( int, input_item_AddOption, (input_item_t *, const char *, unsigned i_flags ) ); + +/* */ +VLC_EXPORT( bool, input_item_HasErrorWhenReading, ( input_item_t * ) ); +VLC_EXPORT( void, input_item_SetMeta, ( input_item_t *, vlc_meta_type_t meta_type, const char *psz_val )); +VLC_EXPORT( bool, input_item_MetaMatch, ( input_item_t *p_i, vlc_meta_type_t meta_type, const char *psz ) ); +VLC_EXPORT( char *, input_item_GetMeta, ( input_item_t *p_i, vlc_meta_type_t meta_type ) ); +VLC_EXPORT( char *, input_item_GetName, ( input_item_t * p_i ) ); +VLC_EXPORT( char *, input_item_GetURI, ( input_item_t * p_i ) ); +VLC_EXPORT( void, input_item_SetURI, ( input_item_t * p_i, const char *psz_uri )); +VLC_EXPORT(mtime_t, input_item_GetDuration, ( input_item_t * p_i ) ); +VLC_EXPORT( void, input_item_SetDuration, ( input_item_t * p_i, mtime_t i_duration )); +VLC_EXPORT( bool, input_item_IsPreparsed, ( input_item_t *p_i )); +VLC_EXPORT( bool, input_item_IsArtFetched, ( input_item_t *p_i )); + + +#define input_item_SetTitle( item, b ) input_item_SetMeta( item, vlc_meta_Title, b ) +#define input_item_SetArtist( item, b ) input_item_SetMeta( item, vlc_meta_Artist, b ) +#define input_item_SetGenre( item, b ) input_item_SetMeta( item, vlc_meta_Genre, b ) +#define input_item_SetCopyright( item, b ) input_item_SetMeta( item, vlc_meta_Copyright, b ) +#define input_item_SetAlbum( item, b ) input_item_SetMeta( item, vlc_meta_Album, b ) +#define input_item_SetTrackNum( item, b ) input_item_SetMeta( item, vlc_meta_TrackNumber, b ) +#define input_item_SetDescription( item, b ) input_item_SetMeta( item, vlc_meta_Description, b ) +#define input_item_SetRating( item, b ) input_item_SetMeta( item, vlc_meta_Rating, b ) +#define input_item_SetDate( item, b ) input_item_SetMeta( item, vlc_meta_Date, b ) +#define input_item_SetSetting( item, b ) input_item_SetMeta( item, vlc_meta_Setting, b ) +#define input_item_SetURL( item, b ) input_item_SetMeta( item, vlc_meta_URL, b ) +#define input_item_SetLanguage( item, b ) input_item_SetMeta( item, vlc_meta_Language, b ) +#define input_item_SetNowPlaying( item, b ) input_item_SetMeta( item, vlc_meta_NowPlaying, b ) +#define input_item_SetPublisher( item, b ) input_item_SetMeta( item, vlc_meta_Publisher, b ) +#define input_item_SetEncodedBy( item, b ) input_item_SetMeta( item, vlc_meta_EncodedBy, b ) +#define input_item_SetArtURL( item, b ) input_item_SetMeta( item, vlc_meta_ArtworkURL, b ) +#define input_item_SetTrackID( item, b ) input_item_SetMeta( item, vlc_meta_TrackID, b ) + +#define input_item_GetTitle( item ) input_item_GetMeta( item, vlc_meta_Title ) +#define input_item_GetArtist( item ) input_item_GetMeta( item, vlc_meta_Artist ) +#define input_item_GetGenre( item ) input_item_GetMeta( item, vlc_meta_Genre ) +#define input_item_GetCopyright( item ) input_item_GetMeta( item, vlc_meta_Copyright ) +#define input_item_GetAlbum( item ) input_item_GetMeta( item, vlc_meta_Album ) +#define input_item_GetTrackNum( item ) input_item_GetMeta( item, vlc_meta_TrackNumber ) +#define input_item_GetDescription( item ) input_item_GetMeta( item, vlc_meta_Description ) +#define input_item_GetRating( item ) input_item_GetMeta( item, vlc_meta_Rating ) +#define input_item_GetDate( item ) input_item_GetMeta( item, vlc_meta_Date ) +#define input_item_GetGetting( item ) input_item_GetMeta( item, vlc_meta_Getting ) +#define input_item_GetURL( item ) input_item_GetMeta( item, vlc_meta_URL ) +#define input_item_GetLanguage( item ) input_item_GetMeta( item, vlc_meta_Language ) +#define input_item_GetNowPlaying( item ) input_item_GetMeta( item, vlc_meta_NowPlaying ) +#define input_item_GetPublisher( item ) input_item_GetMeta( item, vlc_meta_Publisher ) +#define input_item_GetEncodedBy( item ) input_item_GetMeta( item, vlc_meta_EncodedBy ) +#define input_item_GetArtURL( item ) input_item_GetMeta( item, vlc_meta_ArtworkURL ) +#define input_item_GetTrackID( item ) input_item_GetMeta( item, vlc_meta_TrackID ) +#define input_item_GetSetting( item ) input_item_GetMeta( item, vlc_meta_Setting ) + +VLC_EXPORT( char *, input_item_GetInfo, ( input_item_t *p_i, const char *psz_cat,const char *psz_name ) ); +VLC_EXPORT( int, input_item_AddInfo, ( input_item_t *p_i, const char *psz_cat, const char *psz_name, const char *psz_format, ... ) LIBVLC_FORMAT( 4, 5 ) ); +VLC_EXPORT( int, input_item_DelInfo, ( input_item_t *p_i, const char *psz_cat, const char *psz_name ) ); + +#define input_item_New( a,b,c ) input_item_NewExt( a, b, c, 0, NULL, -1 ) +#define input_item_NewExt(a,b,c,d,e,f) __input_item_NewExt( VLC_OBJECT(a),b,c,d,e,f) +VLC_EXPORT( input_item_t *, __input_item_NewExt, (vlc_object_t *, const char *, const char*, int, const char *const *, mtime_t i_duration ) ); +VLC_EXPORT( input_item_t *, input_item_NewWithType, ( vlc_object_t *, const char *, const char *e, int, const char *const *, mtime_t i_duration, int ) ); + +#endif diff --git a/src/Makefile.am b/src/Makefile.am index 78c73d9fb5..c59d7dc5a3 100644 --- a/src/Makefile.am +++ b/src/Makefile.am @@ -61,6 +61,7 @@ pluginsinclude_HEADERS = \ ../include/vlc_httpd.h \ ../include/vlc_image.h \ ../include/vlc_input.h \ + ../include/vlc_input_item.h \ ../include/vlc_main.h \ ../include/vlc_md5.h \ ../include/vlc_messages.h \ -- 2.39.2