• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 /*
2  * Copyright (C) 2011 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 
18 #ifndef VIDEO_BROWSER_MAIN_H
19 #define VIDEO_BROWSER_MAIN_H
20 
21 /**
22  ************************************************************************
23  * @file    VideoBrowserMain.h
24  * @brief   Video browser Interface functions
25  ************************************************************************
26 */
27 
28 #define VIDEOBROWSER    0x423
29 
30 #include "M4OSA_Memory.h"
31 #include "M4OSA_CharStar.h"
32 #include "M4OSA_OptionID.h"
33 #include "M4OSA_Debug.h"
34 #include "M4VIFI_FiltersAPI.h"
35 #include "M4OSA_FileReader.h"
36 
37 
38 /**
39  ************************************************************************
40  * @brief    Error codes definition.
41  * @note    These value are the Browser engine specific error codes.
42  ************************************************************************
43 */
44 #define M4ERR_VB_MEDIATYPE_NOT_SUPPORTED    M4OSA_ERR_CREATE(M4_ERR, VIDEOBROWSER, 0x01)
45 #define M4ERR_VB_NO_VIDEO                   M4OSA_ERR_CREATE(M4_ERR, VIDEOBROWSER, 0x02)
46 
47 #ifdef __cplusplus
48 extern "C" {
49 #endif
50 
51 /*
52  *  Video Browser draw mode, extension for angle based bliting can be done
53  */
54 typedef enum
55 {
56     VideoBrowser_kVBNormalBliting
57 } VideoBrowser_videoBrowerDrawMode;
58 
59 
60 /*--- Video Browser output frame color type ---*/
61 typedef enum
62 {
63     VideoBrowser_kYUV420,
64     VideoBrowser_kGB565
65 } VideoBrowser_VideoColorType;
66 
67 /**
68  ************************************************************************
69  * enumeration  VideoBrowser_Notification
70  * @brief       Video Browser notification type.
71  * @note        This callback mechanism must be used to wait the completion of an asynchronous
72  * operation, before calling another API function.
73  ************************************************************************
74 */
75 typedef enum
76 {
77     /**
78      * A frame is ready to be displayed, it should be displayed in the callback function
79      * pCbData type = M4VIFI_ImagePlane*
80      */
81     VIDEOBROWSER_DISPLAY_FRAME            = 0x00000001,
82     VIDEOBROWSER_NOTIFICATION_NONE        = 0xffffffff
83 }VideoBrowser_Notification;
84 
85 
86 /**
87  ************************************************************************
88  * @brief    videoBrowser_Callback type definition
89  * @param    pInstance          (IN) Video Browser context.
90  * @param    notificationID     (IN) Id of the callback which generated the error
91  * @param    errCode            (IN) Error code from the core
92  * @param    pCbData            (IN) pointer to data associated wit the callback.
93  * @param    pCbUserData        (IN) pointer to application user data passed in init.
94  * @note    This callback mechanism is used to request display of an image
95  ************************************************************************
96 */
97 typedef M4OSA_Void (*videoBrowser_Callback) (M4OSA_Context pInstance,
98                                         VideoBrowser_Notification notificationID,
99                                         M4OSA_ERR errCode,
100                                         M4OSA_Void* pCbData,
101                                         M4OSA_Void* pCallbackUserData);
102 
103 
104 /******************************************************************************
105 * @brief   This function allocates the resources needed for browsing a video file.
106 * @param   ppContext     (OUT): Pointer on a context filled by this function.
107 * @param   pURL          (IN) : Path of File to browse
108 * @param   DrawMode      (IN) : Indicate which method is used to draw (Direct draw etc...)
109 * @param   pfCallback    (IN) : Callback function to be called when a frame must be displayed
110 * @param   pCallbackData (IN)  : User defined data that will be passed as parameter of the callback
111 * @param   clrType       (IN) : Required color type.
112 * @return  M4NO_ERROR / M4ERR_PARAMETER / M4ERR_STATE / M4ERR_ALLOC
113 ******************************************************************************/
114 M4OSA_ERR videoBrowserCreate(M4OSA_Context* ppContext, M4OSA_Char* pURL,
115                                         M4OSA_UInt32 DrawMode,
116                                         M4OSA_FileReadPointer* ptrF,
117                                         videoBrowser_Callback pfCallback,
118                                         M4OSA_Void* pCallbackData,
119                                         VideoBrowser_VideoColorType clrType);
120 
121 /******************************************************************************
122 * @brief        This function frees the resources needed for browsing a video file.
123 * @param        pContext     (IN) : Video browser context
124 * @return       M4NO_ERROR / M4ERR_PARAMETER / M4ERR_STATE
125 ******************************************************************************/
126 M4OSA_ERR videoBrowserCleanUp(M4OSA_Context pContext) ;
127 
128 
129 /******************************************************************************
130 * @brief        This function allocates the resources needed for browsing a video file.
131 * @param        pContext  (IN)      : Video browser context
132 * @param        pTime     (IN/OUT)  : Pointer on the time to reach. Updated by
133 *                                     this function with the reached time
134 * @return       M4NO_ERROR / M4ERR_PARAMETER / M4ERR_STATE / M4ERR_ALLOC
135 ******************************************************************************/
136 M4OSA_ERR videoBrowserPrepareFrame(M4OSA_Context pContext, M4OSA_UInt32* pTime,
137         M4OSA_UInt32 tolerance);
138 
139 /******************************************************************************
140 * @brief        This function sets the size and the position of the display.
141 * @param        pContext     (IN) : Video Browser context
142 * @param        pixelArray   (IN) : Array to hold the video frame.
143 * @param        x            (IN) : Horizontal position of the top left corner
144 * @param        y            (IN) : Vertical position of the top left corner
145 * @param        dx           (IN) : Width of the display window
146 * @param        dy           (IN) : Height of the video window
147 * @return       M4NO_ERROR / M4ERR_PARAMETER / M4ERR_STATE / M4ERR_ALLOC
148 ******************************************************************************/
149 M4OSA_ERR videoBrowserSetWindow(M4OSA_Context pContext, M4OSA_Int32* pixelArray,
150                                 M4OSA_UInt32 x, M4OSA_UInt32 y,
151                                 M4OSA_UInt32 dx, M4OSA_UInt32 dy);
152 
153 /******************************************************************************
154 * @brief        This function displays the current frame.
155 * @param        pContext     (IN) : Video browser context
156 * @return       M4NO_ERROR / M4ERR_PARAMETER / M4ERR_STATE / M4ERR_ALLOC
157 ******************************************************************************/
158 M4OSA_ERR videoBrowserDisplayCurrentFrame(M4OSA_Context pContext);
159 
160 #ifdef __cplusplus
161 }
162 #endif
163 
164 #endif /* VIDEO_BROWSER_MAIN_H */
165