a611f18277722797adf21a27ccf777f5a5a97f2b
[platform/core/csapi/tizenfx.git] / src / Tizen.Multimedia.MediaPlayer / Player / PlayerEnums.cs
1 /*
2  * Copyright (c) 2016 Samsung Electronics Co., Ltd All Rights Reserved
3  *
4  * Licensed under the Apache License, Version 2.0 (the License);
5  * you may not use this file except in compliance with the License.
6  * You may obtain a copy of the License at
7  *
8  * http://www.apache.org/licenses/LICENSE-2.0
9  *
10  * Unless required by applicable law or agreed to in writing, software
11  * distributed under the License is distributed on an AS IS BASIS,
12  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13  * See the License for the specific language governing permissions and
14  * limitations under the License.
15  */
16 using System;
17 using Tizen.Internals.Errors;
18
19 namespace Tizen.Multimedia
20 {
21     /// <summary>
22     /// Specifies errors.
23     /// </summary>
24     /// <seealso cref="Player.ErrorOccurred"/>
25     /// <seealso cref="PlayerErrorOccurredEventArgs"/>
26     /// <since_tizen> 3 </since_tizen>
27     public enum PlayerError
28     {
29         /// <summary>
30         /// File does not exists.
31         /// </summary>
32         NoSuchFile = ErrorCode.NoSuchFile,
33
34         /// <summary>
35         /// Internal error.
36         /// </summary>
37         InternalError = ErrorCode.InvalidOperation,
38
39         /// <summary>
40         /// No space.
41         /// </summary>
42         NoSpaceOnDevice = PlayerErrorCode.NoSpaceOnDevice,
43
44         /// <summary>
45         /// Not enough buffer.
46         /// </summary>
47         BufferSpace = ErrorCode.BufferSpace,
48
49         /// <summary>
50         /// <see cref="Player.SetPlayPositionAsync(int, bool)"/> failed.
51         /// </summary>
52         SeekFailed = PlayerErrorCode.SeekFailed,
53
54         /// <summary>
55         /// Invalid state.
56         /// </summary>
57         InvalidState = PlayerErrorCode.InvalidState,
58
59         /// <summary>
60         /// Not supported file.
61         /// </summary>
62         NotSupportedFile = PlayerErrorCode.NotSupportedFile,
63
64         /// <summary>
65         /// Invalid uri.
66         /// </summary>
67         InvalidUri = PlayerErrorCode.InvalidUri,
68
69         /// <summary>
70         /// Connection to service failed.
71         /// </summary>
72         ConnectionFailed = PlayerErrorCode.ConnectionFailed,
73
74         /// <summary>
75         /// Not permitted DRM.
76         /// </summary>
77         DrmNotPermitted = PlayerErrorCode.DrmNotPermitted,
78
79         /// <summary>
80         /// Service disconnected.
81         /// </summary>
82         ServiceDisconnected = PlayerErrorCode.ServiceDisconnected,
83
84         /// <summary>
85         /// Not supported audio codec.
86         /// </summary>
87         /// <since_tizen> 4 </since_tizen>
88         AudioCodecNotSupported = PlayerErrorCode.NotSupportedAudioCodec,
89
90         /// <summary>
91         /// Not supported video codec.
92         /// </summary>
93         /// <since_tizen> 4 </since_tizen>
94         VideoCodecNotSupported = PlayerErrorCode.NotSupportedVideoCodec,
95
96         /// <summary>
97         /// Not supported subtitle file.
98         /// </summary>
99         SubtitleNotSupported = PlayerErrorCode.NotSupportedSubtitle,
100     }
101
102     /// <summary>
103     /// Specifies states that a <see cref="Player"/> can have.
104     /// </summary>
105     /// <since_tizen> 3 </since_tizen>
106     public enum PlayerState
107     {
108         /// <summary>
109         /// Initial state, unprepared.
110         /// </summary>
111         /// <seealso cref="Player.Unprepare"/>
112         Idle = 1,
113
114         /// <summary>
115         /// Prepared.
116         /// </summary>
117         /// <seealso cref="Player.PrepareAsync"/>
118         Ready,
119
120         /// <summary>
121         /// Playing.
122         /// </summary>
123         /// <seealso cref="Player.Start"/>
124         Playing,
125
126         /// <summary>
127         /// Paused while playing media.
128         /// </summary>
129         /// <seealso cref="Player.Pause"/>
130         Paused,
131
132         /// <summary>
133         /// Preparation in progress.
134         /// </summary>
135         /// <remarks>In this state, other methods and properties cannot be set.</remarks>
136         /// <seealso cref="Player.PrepareAsync"/>/>
137         Preparing,
138     }
139
140     internal static class PlayerStateExtensions
141     {
142         internal static bool IsAnyOf(this PlayerState thisState, params PlayerState[] states)
143         {
144             return Array.IndexOf(states, thisState) != -1;
145         }
146     }
147
148     /// <summary>
149     /// Specifies audio latency modes for <see cref="Player"/>.
150     /// </summary>
151     /// <seealso cref="Player.AudioLatencyMode"/>
152     /// <since_tizen> 3 </since_tizen>
153     public enum AudioLatencyMode
154     {
155         /// <summary>
156         /// Low audio latency mode.
157         /// </summary>
158         Low,
159
160         /// <summary>
161         ///  Middle audio latency mode.
162         /// </summary>
163         Mid,
164
165         /// <summary>
166         /// High audio latency mode.
167         /// </summary>
168         High,
169     }
170
171     /// <summary>
172     /// Specifies display modes for <see cref="Player"/>.
173     /// </summary>
174     /// <seealso cref="PlayerDisplaySettings.Mode"/>
175     /// <since_tizen> 3 </since_tizen>
176     public enum PlayerDisplayMode
177     {
178         /// <summary>
179         /// Letter box.
180         /// </summary>
181         LetterBox,
182
183         /// <summary>
184         /// Original size.
185         /// </summary>
186         OriginalSize,
187
188         /// <summary>
189         /// Full-screen.
190         /// </summary>
191         FullScreen,
192
193         /// <summary>
194         /// Cropped full-screen.
195         /// </summary>
196         CroppedFull,
197
198         /// <summary>
199         /// Original size (if surface size is larger than video size(width/height)) or
200         /// letter box (if video size(width/height) is larger than surface size).
201         /// </summary>
202         OriginalOrFull,
203
204         /// <summary>
205         /// Region of interest.
206         /// </summary>
207         /// <seealso cref="PlayerDisplaySettings.SetRoi(Rectangle)"/>
208         Roi
209     }
210
211     internal enum StreamType
212     {
213         /// <summary>
214         ///  Audio element stream type.
215         /// </summary>
216         Audio = 1,
217
218         /// <summary>
219         /// Video element stream type.
220         /// </summary>
221         Video,
222
223         /// <summary>
224         /// Text type.
225         /// </summary>
226         Text
227     }
228
229     /// <summary>
230     /// Specifies the streaming buffer status.
231     /// </summary>
232     /// <seealso cref="MediaStreamConfiguration.BufferStatusChanged"/>
233     /// <seealso cref="MediaStreamBufferStatusChangedEventArgs"/>
234     /// <since_tizen> 3 </since_tizen>
235     public enum MediaStreamBufferStatus
236     {
237         /// <summary>
238         /// Underrun.
239         /// </summary>
240         Underrun,
241
242         /// <summary>
243         ///  Completed.
244         /// </summary>
245         Overflow,
246     }
247
248     /// <summary>
249     /// Specifies the reason for the playback interruption.
250     /// </summary>
251     /// <seealso cref="Player.PlaybackInterrupted"/>
252     /// <since_tizen> 3 </since_tizen>
253     public enum PlaybackInterruptionReason
254     {
255         /// <summary>
256         /// Interrupted by a resource conflict and the <see cref="Player"/> will be unprepared automatically.
257         /// </summary>
258         ResourceConflict = 4
259     }
260
261     /// <summary>
262     /// Specifies keys for the metadata.
263     /// </summary>
264     /// <seealso cref="StreamInfo.GetMetadata(StreamMetadataKey)"/>
265     /// <since_tizen> 3 </since_tizen>
266     public enum StreamMetadataKey
267     {
268         /// <summary>
269         /// Album.
270         /// </summary>
271         Album,
272
273         /// <summary>
274         /// Artists.
275         /// </summary>
276         Artist,
277
278         /// <summary>
279         /// Author.
280         /// </summary>
281         Author,
282
283         /// <summary>
284         /// Genre.
285         /// </summary>
286         Genre,
287
288         /// <summary>
289         /// Title.
290         /// </summary>
291         Title,
292
293         /// <summary>
294         /// Year.
295         /// </summary>
296         Year
297     }
298
299     /// <summary>
300     /// Enumeration of audio extract option.
301     /// </summary>
302     /// <seealso cref="Player.EnableExportingAudioData"/>
303     /// <since_tizen> 6 </since_tizen>
304     public enum PlayerAudioExtractOption
305     {
306         /// <summary>
307         /// Sync with the playback clock and multichannel audio stream
308         /// </summary>
309         Default = 0x00,
310
311         /// <summary>
312         /// No sync with the playback clock
313         /// </summary>
314         NoSyncWithClock = 0x01,
315
316         /// <summary>
317         /// Splits one interleaved multichannel audio stream into many mono audio streams
318         /// </summary>
319         Deinterleave = 0x02,
320
321         /// <summary>
322         /// No sync with clock and splits into mono streams
323         /// </summary>
324         NoSyncAndDeinterleave = 0x03,
325     }
326 }