Wasabi ExpressPlay SDK for Desktop Systems  1.10
WsbMediaFile.h
Go to the documentation of this file.
1 /*****************************************************************
2 |
3 | Wasabi - Media File API
4 |
5 | $Id: WsbMediaFile.h 10793 2014-06-25 12:46:08Z jebaseelir $
6 | Original author: Gilles Boccon-Gibod
7 |
8 | This software is provided to you pursuant to your agreement
9 | with Intertrust Technologies Corporation ("Intertrust").
10 | This software may be used only in accordance with the terms
11 | of the agreement.
12 |
13 | Copyright (c) 2008-2014 by Intertrust. All rights reserved.
14 |
15 ****************************************************************/
21 #ifndef _WSB_MEDIA_FILE_H_
22 #define _WSB_MEDIA_FILE_H_
23 
24 /*----------------------------------------------------------------------
25 | includes
26 +---------------------------------------------------------------------*/
27 #include "WsbTypes.h"
28 #include "ShiAttributes.h"
29 #include "ShiData.h"
30 
31 /*----------------------------------------------------------------------
32 | types
33 +---------------------------------------------------------------------*/
38 
44 
48 typedef struct WSB_AudioMediaInfo {
53 
57 typedef struct WSB_VideoMediaInfo {
62 
66 typedef enum {
71 
75 typedef enum {
84 
88 typedef enum {
95 
99 typedef struct WSB_MediaInfo {
105  union {
108  } specific;
109 } WSB_MediaInfo;
110 
114 typedef struct WSB_FileProgress {
119 
123 typedef enum {
130  WSB_PROTECTION_TYPE_CENC = 6,/* Mpeg Dash Common Encryption */
131  WSB_PROTECTION_TYPE_HLS_AES = 7 /* HLS Encryption defined in IETF draft */
133 
134 /*----------------------------------------------------------------------
135 | constants
136 +---------------------------------------------------------------------*/
140 #define WSB_CONTENT_TYPE_VIDEO_MP4 "video/mp4"
141 #define WSB_CONTENT_TYPE_AUDIO_MP4 "audio/mp4"
142 #define WSB_CONTENT_TYPE_VIDEO_MPEG2TS "video/MP2T"
143 #define WSB_CONTENT_TYPE_DASH "application/dash+xml"
144 #define WSB_CONTENT_TYPE_HLS "application/vnd.apple.mpegurl"
145 #define WSB_CONTENT_TYPE_DCF "application/vnd.oma.drm.dcf"
146 #define WSB_CONTENT_TYPE_DECE "video/vnd.dece.mp4"
147 
151 #define WSB_MEDIA_FILE_METADATA_FILTER_MINIMAL_SET 1
152 #define WSB_MEDIA_FILE_METADATA_FILTER_BASIC_SET 2
153 #define WSB_MEDIA_FILE_METADATA_FILTER_EXTENDED_SET 4
154 #define WSB_MEDIA_FILE_METADATA_FILTER_LICENSE 8
155 #define WSB_MEDIA_FILE_METADATA_FILTER_ALL 0xFFFFFFFF
156 
160 #define WSB_MEDIA_FILE_FLAG_PROGRESS_CAN_START 1
161 
165 #define WSB_FILE_METADATA_NAME "Name" /* string */
166 #define WSB_FILE_METADATA_ARTIST "Artist" /* string */
167 #define WSB_FILE_METADATA_ALBUM_ARTIST "AlbumArtist" /* string */
168 #define WSB_FILE_METADATA_COMPOSER "Composer" /* string */
169 #define WSB_FILE_METADATA_WRITER "Writer" /* string */
170 #define WSB_FILE_METADATA_ALBUM "Album" /* string */
171 #define WSB_FILE_METADATA_GENRE_CODE "GenreCode" /* integer */
172 #define WSB_FILE_METADATA_GENRE_NAME "GenreName" /* string */
173 #define WSB_FILE_METADATA_GROUPING "Grouping" /* string */
174 #define WSB_FILE_METADATA_DATE "Date" /* string */
175 #define WSB_FILE_METADATA_ENCODING_TOOL "Tool", /* string */
176 #define WSB_FILE_METADATA_COMMENT "Comment" /* string */
177 #define WSB_FILE_METADATA_LYRICS "Lyrics" /* string */
178 #define WSB_FILE_METADATA_COPYRIGHT "Copyright" /* string */
179 #define WSB_FILE_METADATA_TRACK_NUMBER "Track" /* integer */
180 #define WSB_FILE_METADATA_DISC_NUMBER "Disc" /* integer */
181 #define WSB_FILE_METADATA_COVER_ART "Cover" /* byte array */
182 #define WSB_FILE_METADATA_DESCRIPTION "Description" /* string */
183 #define WSB_FILE_METADATA_RATING "Rating" /* integer */
184 #define WSB_FILE_METADATA_TEMPO "Tempo" /* integer */
185 #define WBS_FILE_METADATA_COMPILATION "Compilation" /* boolean */
186 #define WSB_FILE_METADATA_IS_GAPLESS "IsGapless" /* boolean */
187 #define WSB_FILE_METADATA_TITLE "Title" /* string */
188 #define WSB_FILE_METADATA_DESCRIPTION "Description" /* string */
189 #define WSB_FILE_METADATA_STORE_FRONT "StoreFrontId" /* integer */
190 #define WSB_FILE_METADATA_FILE_KIND "FileKind" /* integer */
191 #define WSB_FILE_METADATA_SHOW_NAME "ShowName" /* string */
192 #define WSB_FILE_METADATA_SHOW_SEASON "ShowSeason" /* integer */
193 #define WSB_FILE_METADATA_SHOW_EPISODE_NUM "ShowEpisodeNumber" /* integer */
194 #define WSB_FILE_METADATA_SHOW_EPISONE_NAME "ShowEpisodeName" /* string */
195 #define WSB_FILE_METADATA_TV_NETWORK_NAME "TVNetworkName" /* string */
196 #define WSB_FILE_METADATA_IS_PODCAST "IsPodcast" /* boolean */
197 #define WSB_FILE_METADATA_PODCAST_URL "PodcastUrl" /* string */
198 #define WSB_FILE_METADATA_PODCAST_GUID "PodcastGuid" /* byte array */
199 #define WSB_FILE_METADATA_PODCAST_CATEGORY "PodcastCategory" /* string */
200 #define WSB_FILE_METADATA_KEYWORDS "Keywords" /* string */
201 #define WSB_FILE_METADATA_PURCHASE_DATE "PurchaseDate" /* string */
202 #define WSB_FILE_METADATA_ICON_URI "IconUri" /* string */
203 #define WSB_FILE_METADATA_INFO_URL "Info URL" /* string */
204 #define WSB_FILE_METADATA_COVER_ART_URI "CoverUri" /* string */
205 #define WSB_FILE_METADATA_LYRICS_URI "LyricsUri" /* string */
206 #define WSB_FILE_METADATA_DURATION "Duration" /* integer */
207 #define WSB_FILE_METADATA_PERFORMER "Performer" /* string */
208 #define WSB_FILE_METADATA_AUTHOR "Author" /* string */
209 
213 #define WSB_SLAS_ATTRIBUTE_NAME "SilentLicenseAcquisitionUrls"
214 #define WSB_RI_ATTRIBUTE_NAME "RightsIssuerUrls"
215 
216 /*----------------------------------------------------------------------
217 | functions
218 +---------------------------------------------------------------------*/
219 #if defined(__cplusplus)
220 extern "C" {
221 #endif
222 
238 WSB_EXPORT const char*
240 
251 WSB_EXPORT WSB_UInt32
253 
264 WSB_EXPORT WSB_Result
266  WSB_MediaInfo* media_info);
267 
278 WSB_EXPORT void
280 
302 WSB_EXPORT WSB_Result
303 WSB_MediaFile_Open(const char* name, const char* mime_type, WSB_MediaFile** file);
304 
312 WSB_EXPORT WSB_Result
315 
334 WSB_EXPORT WSB_Result
336  SHI_Attribute** metadata);
337 
348 WSB_EXPORT WSB_Result
350  WSB_FileProgress* progress);
351 
361 WSB_EXPORT WSB_Result
363  const void* license_data,
364  WSB_Size license_data_size);
365 
378 WSB_EXPORT const char*
380 
391 WSB_EXPORT const char*
393 
401 WSB_EXPORT WSB_Result
403  WSB_MediaInfo* media_info);
404 
411 WSB_EXPORT WSB_Cardinal
413 
427 WSB_EXPORT WSB_Result
429  WSB_Ordinal index,
430  WSB_TrackInfo** track_info);
431 
443 WSB_EXPORT WSB_Result
445  SHI_Data** license);
446 
464 WSB_EXPORT WSB_Result
466  SHI_Attribute** ri_urls); /* mapping contentid -> ri_urls */
467 
486 WSB_EXPORT WSB_Result
488  SHI_Attribute** slas); /* mapping contentid -> sla */
489 
497 WSB_EXPORT const char*
499 
507 WSB_EXPORT WSB_Result
509  WSB_UInt32 file_ready_timeout_ms);
519 WSB_EXPORT WSB_Result
521 
524 #if defined(__cplusplus)
525 }
526 #endif
527 
528 #endif /* _WSB_MEDIA_FILE_H_ */