1cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi/*
2cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi * Copyright (C) 2011 The Android Open Source Project
3cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi *
4cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi * Licensed under the Apache License, Version 2.0 (the "License");
5cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi * you may not use this file except in compliance with the License.
6cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi * You may obtain a copy of the License at
7cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi *
8cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi *      http://www.apache.org/licenses/LICENSE-2.0
9cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi *
10cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi * Unless required by applicable law or agreed to in writing, software
11cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi * distributed under the License is distributed on an "AS IS" BASIS,
12cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi * See the License for the specific language governing permissions and
14cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi * limitations under the License.
15cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi */
16cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi
17cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi
18cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi#ifndef VIDEO_BROWSER_INTERNAL_H
19cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi#define VIDEO_BROWSER_INTERNAL_H
20cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi
21cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi#include "VideoBrowserMain.h"
22cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi
23cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi#include "M4READER_Common.h"
24cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi#include "M4DECODER_Common.h"
25cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi
26cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi
27cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi#define VIDEO_BROWSER_BGR565
28cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi
29cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi/*---------------------------- MACROS ----------------------------*/
30cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi#define CHECK_PTR(fct, p, err, errValue) \
31cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi{ \
32cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi    if (M4OSA_NULL == p) \
33cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi    { \
34cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi        err = errValue ; \
35cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi        M4OSA_TRACE1_1("" #fct "(L%d): " #p " is NULL, returning " #errValue "", __LINE__) ; \
36cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi        goto fct##_cleanUp; \
37cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi    } \
38cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi}
39cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi
40cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi#define CHECK_ERR(fct, err) \
41cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi{ \
42cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi    if (M4OSA_ERR_IS_ERROR(err)) \
43cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi    { \
44cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi        M4OSA_TRACE1_2("" #fct "(L%d): ERROR 0x%.8x returned", __LINE__,err) ; \
45cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi        goto fct##_cleanUp; \
46cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi    } \
47cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi    else if (M4OSA_ERR_IS_WARNING(err)) \
48cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi    { \
49cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi        M4OSA_TRACE2_2("" #fct "(L%d): WARNING 0x%.8x returned", __LINE__,err) ; \
50cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi    } \
51cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi}
52cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi
53cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi#define CHECK_STATE(fct, state, pC) \
54cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi{ \
55cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi    if (state != pC->m_state) \
56cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi    { \
57cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi        M4OSA_TRACE1_1("" #fct " called in bad state %d", pC->m_state) ; \
58cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi        err = M4ERR_STATE ; \
59cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi        goto fct##_cleanUp; \
60cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi    } \
61cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi}
62cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi
63cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi#define SAFE_FREE(p) \
64cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi{ \
65cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi    if (M4OSA_NULL != p) \
66cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi    { \
67c0125dd4f1f8bb03ad16138f86d55ed3305240c4Shyam Pallapothu        free(p) ; \
68cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi        p = M4OSA_NULL ; \
69cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi    } \
70cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi}
71cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi
72cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi/*--- Video Browser state ---*/
73cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargitypedef enum
74cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi{
75cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi    VideoBrowser_kVBCreating,
76cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi    VideoBrowser_kVBOpened,
77cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi    VideoBrowser_kVBBrowsing
78cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi} VideoBrowser_videoBrowerState;
79cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi
80cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi
81cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi/*--- Video Browser execution context. ---*/
82cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargitypedef struct
83cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi{
84cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi    VideoBrowser_videoBrowerState       m_state ;
85cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi    VideoBrowser_videoBrowerDrawMode    m_drawmode;
86cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi
87cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi    M4OSA_Context                       g_hbmp2;
88cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi    M4OSA_Context                       dc;
89cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi    M4OSA_Int16*                        g_bmPixels2;
90cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi
91cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi    /*--- Reader parameters ---*/
92cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi    M4OSA_FileReadPointer               m_fileReadPtr;
93cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi    M4READER_GlobalInterface*           m_3gpReader ;
94cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi    M4READER_DataInterface*             m_3gpData ;
95cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi    M4READER_MediaType                  m_mediaType ;
96cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi    M4OSA_Context                       m_pReaderCtx ;
97cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi
98cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi    M4_StreamHandler*                   m_pStreamHandler ;
99cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi    M4_AccessUnit                       m_accessUnit ;
100cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi
101cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi    /*--- Decoder parameters ---*/
102cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi    M4DECODER_VideoInterface*           m_pDecoder ;
103cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi    M4OSA_Context                       m_pDecoderCtx ;
104cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi
105cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi    /*--- Common display parameters ---*/
106cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi    M4OSA_UInt32                        m_x ;
107cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi    M4OSA_UInt32                        m_y ;
108cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi    M4VIFI_ImagePlane                   m_outputPlane[3] ;
109cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi
110cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi    /*--- Current browsing time ---*/
111cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi    M4OSA_UInt32                        m_currentCTS ;
112cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi
113cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi    /*--- Platform dependent display parameters ---*/
114cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi    M4OSA_Context                       m_pCoreContext ;
115cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi
116cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi    /*--- Callback function settings ---*/
117cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi    videoBrowser_Callback               m_pfCallback;
118cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi    M4OSA_Void*                         m_pCallbackUserData;
119cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi
120cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi    /*--- Codec Loader core context ---*/
121cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi    M4OSA_Context                       m_pCodecLoaderContext;
122cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi
123cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi    /*--- Required color type ---*/
124cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi    VideoBrowser_VideoColorType         m_frameColorType;
125cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi
126cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi} VideoBrowserContext;
127cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi
128cd196d3727db641e581d4223815367a5ca5d5637Dharmaray Kundargi#endif /* VIDEO_BROWSER_INTERNAL_H */
129