• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 /*
2  * Copyright (C) 2010 The Android Open Source Project
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 
17 #include <surfaceflinger/Surface.h>
18 #include <gui/ISurfaceTexture.h>
19 
20 
21 /**************************************************************************************************
22  * Player lifecycle
23  ****************************/
24 extern XAresult android_Player_checkSourceSink(CMediaPlayer *mp);
25 
26 extern XAresult android_Player_create(CMediaPlayer *mp);
27 
28 extern XAresult android_Player_realize(CMediaPlayer *mp, SLboolean async);
29 
30 extern XAresult android_Player_destroy(CMediaPlayer *mp);
31 
32 extern XAresult android_Player_preDestroy(CMediaPlayer *mp);
33 
34 
35 /**************************************************************************************************
36  * Configuration
37  ****************************/
38 
39 /**
40  *  pre-conditions:
41  *      pMediaPlayer != NULL
42  *      pMediaPlayer->mAVPlayer != 0 (player is realized)
43  *      nativeWindow can be NULL, but if NULL it is treated as an error
44  */
45 extern SLresult android_Player_setNativeWindow(CMediaPlayer *pMediaPlayer,
46         ANativeWindow *nativeWindow);
47 
48 /**
49  * pre-conditions:
50  *    pPlayItf != NULL
51  *    pDurMsec, pPosMsec ! = NULL
52  *    IObjectToObjectID( ((IPlay *) self)->mThis ) == XA_OBJECTID_MEDIAPLAYER
53  */
54 extern XAresult android_Player_getDuration(IPlay *pPlayItf, SLmillisecond *pDurMsec);
55 extern XAresult android_Player_getPosition(IPlay *pPlayItf, SLmillisecond *pPosMsec);
56 
57 /**
58  * pre-condition: mp != NULL
59  */
60 extern void android_Player_volumeUpdate(CMediaPlayer *mp);
61 extern void android_Player_usePlayEventMask(CMediaPlayer *mp);
62 
63 /**************************************************************************************************
64  * Playback control and events
65  ****************************/
66 /**
67  * pre-condition: gp != 0
68  */
69 extern XAresult android_Player_setPlayState(const android::sp<android::GenericPlayer> &gp,
70         SLuint32 playState,
71         AndroidObjectState* pObjState);
72 
73 /**
74  * for all functions below: pre-condition: mp != NULL
75  */
76 extern XAresult android_Player_seek(CMediaPlayer *mp, SLmillisecond posMsec);
77 extern XAresult android_Player_loop(CMediaPlayer *mp, SLboolean loopEnable);
78 
79 
80 
81 /**************************************************************************************************
82  * Buffer Queue events
83  ****************************/
84 
85 /**************************************************************************************************
86  * Android Buffer Queue
87  ****************************/
88 
89 /* must be called with a lock on mp->mThis */
90 extern void android_Player_androidBufferQueue_clear_l(CMediaPlayer *mp);
91 /* must be called with a lock on mp->mThis */
92 extern void android_Player_androidBufferQueue_onRefilled_l(CMediaPlayer *mp);
93