Wasabi ExpressPlay SDK for Desktop Systems
1.10
Main Page
Modules
Data Structures
Files
File List
Globals
Client
Source
Interface
Core
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
+---------------------------------------------------------------------*/
37
typedef
struct
WSB_MediaFile
WSB_MediaFile
;
38
43
typedef
struct
WSB_TrackInfo
WSB_TrackInfo
;
44
48
typedef
struct
WSB_AudioMediaInfo
{
49
WSB_UInt32
channel_count
;
50
WSB_UInt32
sample_rate
;
51
WSB_UInt32
sample_size
;
52
}
WSB_AudioMediaInfo
;
53
57
typedef
struct
WSB_VideoMediaInfo
{
58
WSB_UInt32
width
;
59
WSB_UInt32
height
;
60
WSB_UInt32
depth
;
61
}
WSB_VideoMediaInfo
;
62
66
typedef
enum
{
67
WSB_MEDIA_TYPE_UNKNOWN
= 0,
68
WSB_MEDIA_TYPE_AUDIO
= 1,
69
WSB_MEDIA_TYPE_VIDEO
= 2
70
}
WSB_MediaType
;
71
75
typedef
enum
{
76
WSB_MEDIA_FORMAT_UNKNOWN
= 0,
77
WSB_MEDIA_FORMAT_AAC
= 1,
78
WSB_MEDIA_FORMAT_AVC
= 2,
79
WSB_MEDIA_FORMAT_MP3
= 3,
80
WSB_MEDIA_FORMAT_MPEG4_VID
= 4,
81
WSB_MEDIA_FORMAT_HEVC
= 5,
82
WSB_MEDIA_FORMAT_AC3
= 6
83
}
WSB_MediaFormat
;
84
88
typedef
enum
{
89
WSB_STREAM_ENCRYPTION_METHOD_UNKNOWN
= 0,
90
WSB_STREAM_ENCRYPTION_METHOD_NULL
= 1,
91
WSB_STREAM_ENCRYPTION_METHOD_AES_128_CBC
= 2,
92
WSB_STREAM_ENCRYPTION_METHOD_AES_128_CTR
= 3,
93
WSB_STREAM_ENCRYPTION_METHOD_DVB_CSA
= 4
94
}
WSB_StreamEncryptionMethod
;
95
99
typedef
struct
WSB_MediaInfo
{
100
WSB_MediaType
type
;
101
WSB_MediaFormat
format
;
102
WSB_UInt32
duration
;
103
WSB_UInt32
bitrate
;
104
WSB_StreamEncryptionMethod
encryption_method
;
105
union
{
106
WSB_AudioMediaInfo
audio
;
107
WSB_VideoMediaInfo
video
;
108
}
specific
;
109
}
WSB_MediaInfo
;
110
114
typedef
struct
WSB_FileProgress
{
115
WSB_Flags
flags
;
116
WSB_LargeSize
available
;
117
WSB_LargeSize
total_size
;
118
}
WSB_FileProgress
;
119
123
typedef
enum
{
124
WSB_PROTECTION_TYPE_UNKNOWN
= 0,
125
WSB_PROTECTION_TYPE_CLEAR_TEXT
= 1,
126
WSB_PROTECTION_TYPE_DCF
= 2,
127
WSB_PROTECTION_TYPE_PDCF
= 3,
128
WSB_PROTECTION_TYPE_PIFF
= 4,
129
WSB_PROTECTION_TYPE_BBTS
= 5,
130
WSB_PROTECTION_TYPE_CENC
= 6,
/* Mpeg Dash Common Encryption */
131
WSB_PROTECTION_TYPE_HLS_AES
= 7
/* HLS Encryption defined in IETF draft */
132
}
WSB_MediaFileProtectionType
;
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
*
239
WSB_TrackInfo_GetContentId
(
WSB_TrackInfo
* track_info);
240
251
WSB_EXPORT
WSB_UInt32
252
WSB_TrackInfo_GetTrackId
(
WSB_TrackInfo
* track_info);
253
264
WSB_EXPORT
WSB_Result
265
WSB_TrackInfo_GetMediaInfo
(
WSB_TrackInfo
* track_info,
266
WSB_MediaInfo
* media_info);
267
278
WSB_EXPORT
void
279
WSB_TrackInfo_Release
(
WSB_TrackInfo
* track_info);
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
313
WSB_MediaFile_GetProtectionType
(
WSB_MediaFile
* file,
314
WSB_MediaFileProtectionType
* type);
315
334
WSB_EXPORT
WSB_Result
335
WSB_MediaFile_GetMetadata
(
WSB_MediaFile
* file,
336
SHI_Attribute
** metadata);
337
348
WSB_EXPORT
WSB_Result
349
WSB_MediaFile_GetProgress
(
WSB_MediaFile
* file,
350
WSB_FileProgress
* progress);
351
361
WSB_EXPORT
WSB_Result
362
WSB_MediaFile_SetLicense
(
WSB_MediaFile
* file,
363
const
void
* license_data,
364
WSB_Size
license_data_size);
365
378
WSB_EXPORT
const
char
*
379
WSB_MediaFile_GetContentId
(
WSB_MediaFile
* file);
380
391
WSB_EXPORT
const
char
*
392
WSB_MediaFile_GetContentType
(
WSB_MediaFile
* file);
393
401
WSB_EXPORT
WSB_Result
402
WSB_MediaFile_GetMediaInfo
(
WSB_MediaFile
* file,
403
WSB_MediaInfo
* media_info);
404
411
WSB_EXPORT
WSB_Cardinal
412
WSB_MediaFile_GetTrackCount
(
WSB_MediaFile
* file);
413
427
WSB_EXPORT
WSB_Result
428
WSB_MediaFile_GetTrackInfo
(
WSB_MediaFile
* file,
429
WSB_Ordinal
index,
430
WSB_TrackInfo
** track_info);
431
443
WSB_EXPORT
WSB_Result
444
WSB_MediaFile_GetLicense
(
WSB_MediaFile
* file,
445
SHI_Data
** license);
446
464
WSB_EXPORT
WSB_Result
465
WSB_MediaFile_GetRightsIssuerUrls
(
WSB_MediaFile
* file,
466
SHI_Attribute
** ri_urls);
/* mapping contentid -> ri_urls */
467
486
WSB_EXPORT
WSB_Result
487
WSB_MediaFile_GetSilentLicenseAcquisitionUrls
(
WSB_MediaFile
* file,
488
SHI_Attribute
** slas);
/* mapping contentid -> sla */
489
497
WSB_EXPORT
const
char
*
498
WSB_MediaFile_GetName
(
WSB_MediaFile
* file);
499
507
WSB_EXPORT
WSB_Result
508
WSB_MediaFile_WaitUntilReady
(
WSB_MediaFile
* file,
509
WSB_UInt32
file_ready_timeout_ms);
519
WSB_EXPORT
WSB_Result
520
WSB_MediaFile_Close
(
WSB_MediaFile
* file);
521
524
#if defined(__cplusplus)
525
}
526
#endif
527
528
#endif
/* _WSB_MEDIA_FILE_H_ */