• 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_INTERNAL_H
19 #define VIDEO_BROWSER_INTERNAL_H
20 
21 #include "VideoBrowserMain.h"
22 
23 #include "M4READER_Common.h"
24 #include "M4DECODER_Common.h"
25 
26 
27 #define VIDEO_BROWSER_BGR565
28 
29 /*---------------------------- MACROS ----------------------------*/
30 #define CHECK_PTR(fct, p, err, errValue) \
31 { \
32     if (M4OSA_NULL == p) \
33     { \
34         err = errValue ; \
35         M4OSA_TRACE1_1("" #fct "(L%d): " #p " is NULL, returning " #errValue "", __LINE__) ; \
36         goto fct##_cleanUp; \
37     } \
38 }
39 
40 #define CHECK_ERR(fct, err) \
41 { \
42     if (M4OSA_ERR_IS_ERROR(err)) \
43     { \
44         M4OSA_TRACE1_2("" #fct "(L%d): ERROR 0x%.8x returned", __LINE__,err) ; \
45         goto fct##_cleanUp; \
46     } \
47     else if (M4OSA_ERR_IS_WARNING(err)) \
48     { \
49         M4OSA_TRACE2_2("" #fct "(L%d): WARNING 0x%.8x returned", __LINE__,err) ; \
50     } \
51 }
52 
53 #define CHECK_STATE(fct, state, pC) \
54 { \
55     if (state != pC->m_state) \
56     { \
57         M4OSA_TRACE1_1("" #fct " called in bad state %d", pC->m_state) ; \
58         err = M4ERR_STATE ; \
59         goto fct##_cleanUp; \
60     } \
61 }
62 
63 #define SAFE_FREE(p) \
64 { \
65     if (M4OSA_NULL != p) \
66     { \
67         free(p) ; \
68         p = M4OSA_NULL ; \
69     } \
70 }
71 
72 /*--- Video Browser state ---*/
73 typedef enum
74 {
75     VideoBrowser_kVBCreating,
76     VideoBrowser_kVBOpened,
77     VideoBrowser_kVBBrowsing
78 } VideoBrowser_videoBrowerState;
79 
80 
81 /*--- Video Browser execution context. ---*/
82 typedef struct
83 {
84     VideoBrowser_videoBrowerState       m_state ;
85     VideoBrowser_videoBrowerDrawMode    m_drawmode;
86 
87     M4OSA_Context                       g_hbmp2;
88     M4OSA_Context                       dc;
89     M4OSA_Int16*                        g_bmPixels2;
90 
91     /*--- Reader parameters ---*/
92     M4OSA_FileReadPointer               m_fileReadPtr;
93     M4READER_GlobalInterface*           m_3gpReader ;
94     M4READER_DataInterface*             m_3gpData ;
95     M4READER_MediaType                  m_mediaType ;
96     M4OSA_Context                       m_pReaderCtx ;
97 
98     M4_StreamHandler*                   m_pStreamHandler ;
99     M4_AccessUnit                       m_accessUnit ;
100 
101     /*--- Decoder parameters ---*/
102     M4DECODER_VideoInterface*           m_pDecoder ;
103     M4OSA_Context                       m_pDecoderCtx ;
104 
105     /*--- Common display parameters ---*/
106     M4OSA_UInt32                        m_x ;
107     M4OSA_UInt32                        m_y ;
108     M4VIFI_ImagePlane                   m_outputPlane[3] ;
109 
110     /*--- Current browsing time ---*/
111     M4OSA_UInt32                        m_currentCTS ;
112 
113     /*--- Platform dependent display parameters ---*/
114     M4OSA_Context                       m_pCoreContext ;
115 
116     /*--- Callback function settings ---*/
117     videoBrowser_Callback               m_pfCallback;
118     M4OSA_Void*                         m_pCallbackUserData;
119 
120     /*--- Codec Loader core context ---*/
121     M4OSA_Context                       m_pCodecLoaderContext;
122 
123     /*--- Required color type ---*/
124     VideoBrowser_VideoColorType         m_frameColorType;
125 
126 } VideoBrowserContext;
127 
128 #endif /* VIDEO_BROWSER_INTERNAL_H */
129