123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194 |
- /*****************************************************************************
- * VLCMedia.h: VLC.framework VLCMedia header
- *****************************************************************************
- * Copyright (C) 2007 Pierre d'Herbemont
- * Copyright (C) 2007 the VideoLAN team
- * $Id$
- *
- * Authors: Pierre d'Herbemont <pdherbemont # videolan.org>
- *
- * 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.
- *****************************************************************************/
- #import <Cocoa/Cocoa.h>
- #import "VLCMediaList.h"
- #import "VLCTime.h"
- /* Meta Dictionary Keys */
- /**
- * Standard dictionary keys for retreiving meta data.
- */
- extern NSString *VLCMetaInformationTitle; /* NSString */
- extern NSString *VLCMetaInformationArtist; /* NSString */
- extern NSString *VLCMetaInformationTitle; /* NSString */
- extern NSString *VLCMetaInformationArtist; /* NSString */
- extern NSString *VLCMetaInformationGenre; /* NSString */
- extern NSString *VLCMetaInformationCopyright; /* NSString */
- extern NSString *VLCMetaInformationAlbum; /* NSString */
- extern NSString *VLCMetaInformationTrackNumber; /* NSString */
- extern NSString *VLCMetaInformationDescription; /* NSString */
- extern NSString *VLCMetaInformationRating; /* NSString */
- extern NSString *VLCMetaInformationDate; /* NSString */
- extern NSString *VLCMetaInformationSetting; /* NSString */
- extern NSString *VLCMetaInformationURL; /* NSString */
- extern NSString *VLCMetaInformationLanguage; /* NSString */
- extern NSString *VLCMetaInformationNowPlaying; /* NSString */
- extern NSString *VLCMetaInformationPublisher; /* NSString */
- extern NSString *VLCMetaInformationEncodedBy; /* NSString */
- extern NSString *VLCMetaInformationArtworkURL; /* NSString */
- extern NSString *VLCMetaInformationArtwork; /* NSImage */
- extern NSString *VLCMetaInformationTrackID; /* NSString */
- /* Notification Messages */
- /**
- * Available notification messages.
- */
- extern NSString *VLCMediaMetaChanged; //< Notification message for when the media's meta data has changed
- // Forward declarations, supresses compiler error messages
- @class VLCMediaList;
- @class VLCMedia;
- /**
- * Informal protocol declaration for VLCMedia delegates. Allows data changes to be
- * trapped.
- */
- @protocol VLCMediaDelegate
- // TODO: SubItemAdded/SubItemRemoved implementation. Not sure if we really want to implement this.
- ///**
- // * Delegate method called whenever a sub item has been added to the specified VLCMedia.
- // * \param aMedia The media resource that has received the new sub item.
- // * \param childMedia The new sub item added.
- // * \param index Location of the new subitem in the aMedia's sublist.
- // */
- // - (void)media:(VLCMedia *)media addedSubItem:(VLCMedia *)childMedia atIndex:(int)index;
- ///**
- // * Delegate method called whenever a sub item has been removed from the specified VLCMedia.
- // * \param aMedia The media resource that has had a sub item removed from.
- // * \param childMedia The sub item removed.
- // * \param index The previous location of the recently removed sub item.
- // */
- // - (void)media:(VLCMedia *)aMedia removedSubItem:(VLCMedia *)childMedia atIndex:(int)index;
- /**
- * Delegate method called whenever the meta has changed for the receiver.
- * \param aMedia The media resource whose meta data has been changed.
- * \param oldValue The old meta data value.
- * \param key The key of the value that was changed.
- */
- - (void)media:(VLCMedia *)aMedia metaValueChangedFrom:(id)oldValue forKey:(NSString *)key;
- @end
- /**
- * Defines files and streams as a managed object. Each media object can be
- * administered seperately. VLCMediaPlayer or VLCMediaControl must be used
- * to execute the appropriate playback functions.
- * \see VLCMediaPlayer
- * \see VLCMediaControl
- */
- @interface VLCMedia : NSObject
- {
- void * p_md; //< Internal media descriptor instance
- NSString * url; //< URL for this media resource
- VLCMediaList * subitems; //< Sub list of items
- VLCTime * length; //< Duration of the media
- NSMutableDictionary * metaDictionary; //< Meta data storage
- id delegate; //< Delegate object
- BOOL preparsed; //< Value used to determine of the file has been preparsed
- }
- /* Object Factories */
- /**
- * Manufactures a new VLCMedia object using the URL specified. Will return nil if
- * the specified URL references a directory that does not comply with DVD file
- * structure.
- * \param anURL URL to media to be accessed.
- * \return A new VLCMedia object, only if there were no errors. This object
- * will be automatically released.
- * \see initWithMediaURL
- */
- + (id)mediaWithURL:(NSString *)anURL;
- /* Initializers */
- /**
- * Initializes a new VLCMedia object to use the specified URL. Will return nil if
- * the specified URL references a directory that does not comply with DVD file
- * structure.
- * \param anURL URL to media to be accessed.
- * \return A new VLCMedia object, only if there were no errors.
- */
- - (id)initWithURL:(NSString *)anURL;
- /**
- * Returns an NSComparisonResult value that indicates the lexical ordering of
- * the receiver and a given meda.
- * \param media The media with which to compare with the receiver.
- * \return NSOrderedAscending if the URL of the receiver precedes media in
- * lexical ordering, NSOrderedSame if the URL of the receiver and media are
- * equivalent in lexical value, and NSOrderedDescending if the URL of the
- * receiver follows media. If media is nil, returns NSOrderedDescending.
- */
- - (NSComparisonResult)compare:(VLCMedia *)media;
- /* Properties */
- /**
- * Sets the receiver's delegate.
- * \param delegate The delegate for the receiver.
- */
- - (void)setDelegate:(id)delegate;
- /**
- * Returns the receiver's delegate
- * \return The receiver's delegate
- */
- - (id)delegate;
- /**
- * Returns a VLCTime object describing the length of the media resource.
- * \return The length of the media resource.
- */
- - (VLCTime *)length;
- /**
- * Returns a VLCTime object describing the length of the media resource,
- * however, this is a blocking operation and will wait until the preparsing is
- * completed before returning anything.
- * \param aDate Time for operation to wait until, if there are no results
- * before specified date then nil is returned.
- * \return The length of the media resource, nil if it couldn't wait for it.
- */
- - (VLCTime *)lengthWaitUntilDate:(NSDate *)aDate;
- - (BOOL)isPreparsed;
- /**
- * Returns the URL for the receiver's media resource.
- * \return The URL for the receiver's media resource.
- */
- - (NSString *)url;
- /**
- * Returns the receiver's sub list.
- * \return The receiver's sub list.
- */
- - (VLCMediaList *)subitems;
- /**
- * Returns the receiver's meta data as a NSDictionary object.
- * \return The receiver's meta data as a NSDictionary object.
- */
- - (NSDictionary *)metaDictionary;
- @end
|