• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 /* ------------------------------------------------------------------
2  * Copyright (C) 1998-2009 PacketVideo
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
13  * express or implied.
14  * See the License for the specific language governing permissions
15  * and limitations under the License.
16  * -------------------------------------------------------------------
17  */
18 #ifndef PV_PLAYER_TYPES_H_INCLUDED
19 #define PV_PLAYER_TYPES_H_INCLUDED
20 
21 /**
22  * An enumeration of the major states of the pvPlayer engine.
23  **/
24 typedef enum
25 {
26     /**
27         The state immediately after the pvPlayer instance has been successfully created or instantiated.
28         pvPlayer also returns to this state after successful completion of reset command.
29         The player data source can be added during this state.
30         No resources have been allocated yet.
31     **/
32     PVP_STATE_IDLE          = 1,
33 
34     /**
35         pvPlayer is in this state after successfully completing initialization of data source or after stopping playback.
36         Player data sinks and user defined track selector can be added to the player in this state. Also metadata from the
37         data source can be queried and other playback parameters can be set at this state.
38     **/
39     PVP_STATE_INITIALIZED   = 2,
40 
41     /**
42         pvPlayer is in this state when it has successfully completed preparations and ready to start playback.
43     **/
44     PVP_STATE_PREPARED      = 3,
45 
46     /**
47      *  pvPlayer is in this state when it is playing back the specified data source. Even if playback is auto-paused, pvPlayer
48      *  will be in this state.
49     **/
50     PVP_STATE_STARTED       = 4,
51 
52     /**
53         pvPlayer is in this state after successfully completiong pausing of playback. All media datapaths have been stopped,
54         but the buffered data has not been flushed. The playback can be resumed or stopped from this state.
55     **/
56     PVP_STATE_PAUSED        = 5,
57 
58     /**
59         pvPlayer enters this state when it encounters an error. This is a transitional state and after pvPlayer performs
60         error recovery, it will end up in PVP_STATE_IDLE state.
61     **/
62     PVP_STATE_ERROR         = 6
63 } PVPlayerState;
64 
65 typedef union PVPPlaybackPositionValueUnion
66 {
67     uint32 millisec_value;
68     uint32 sec_value;
69     uint32 min_value;
70     uint32 hour_value;
71     uint8 smpte_value[4];
72     uint8 percent_value;
73     uint32 samplenum_value;
74     uint32 datapos_value;
75 } _PVPPlaybackPositionValueUnion;
76 
77 typedef enum _PVPPlaybackPositionUnit
78 {
79     PVPPBPOSUNIT_UNKNOWN = -1,
80     PVPPBPOSUNIT_MILLISEC = 0,
81     PVPPBPOSUNIT_SEC    = 1,
82     PVPPBPOSUNIT_MIN    = 2,
83     PVPPBPOSUNIT_HOUR   = 3,
84     PVPPBPOSUNIT_SMPTE  = 4,
85     PVPPBPOSUNIT_PERCENT = 5,
86     PVPPBPOSUNIT_SAMPLENUMBER = 6,
87     PVPPBPOSUNIT_DATAPOSITION = 7,
88     PVPPBPOSUNIT_PLAYLIST = 8
89 } PVPPlaybackPositionUnit;
90 
91 /**
92 * Playback positon mode indicates when the provided playback position is expected to take effect.
93 * 1) Now => implies that pause any current playback session and start playback from the new position
94 * 2) End of current play element => A play session can be composed of multiple play elements (say a
95 * playlist session) and the provided playlist position is to take effect once the current play
96 * element is complete (say reposition to song 7 after the current song is done)
97 * 3) End of current play session => This playback position is to take effect once the entire current
98 * play session is done.
99 *
100 */
101 typedef enum _PVPPlaybackPositionMode
102 {
103     PVPPBPOS_MODE_UNKNOWN = -1,
104     PVPPBPOS_MODE_NOW = 0,
105     PVPPBPOS_MODE_END_OF_CURRENT_PLAY_ELEMENT = 1,
106     PVPPBPOS_MODE_END_OF_CURRENT_PLAY_SESSION = 2,
107 } PVPPlaybackPositionMode;
108 
109 typedef struct _PVPPlaybackPosition
110 {
111     _PVPPlaybackPositionValueUnion iPosValue;
112     PVPPlaybackPositionUnit iPosUnit;
113 #ifdef __cplusplus
114     bool iIndeterminate;
115 #else
116     c_bool iIndeterminate;
117 #endif
118     PVPPlaybackPositionMode iMode;
119     /*
120      * Typically provided in case of a seek within a playsession
121      * with multiple elements. This is the index ON which the
122      * position info provided above applies. Say go to 30 seconds
123      * into play element 7.
124      */
125     int32 iPlayElementIndex;
126     _PVPPlaybackPositionValueUnion iPlayListPosValue;
127     PVPPlaybackPositionUnit iPlayListPosUnit;
128     char* iPlayListUri;
129 } PVPPlaybackPosition;
130 
131 #endif
132 
133 
134