1/*
2 * Copyright (C) 2008 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#ifndef bpi_FACE_FINDER_REF_EM_H
18#define bpi_FACE_FINDER_REF_EM_H
19
20/* ---- includes ----------------------------------------------------------- */
21
22#include "b_BasicEm/UInt16Arr.h"
23#include "b_APIEm/FaceFinder.h"
24
25/* ---- related objects  --------------------------------------------------- */
26
27/* ---- typedefs ----------------------------------------------------------- */
28
29/* ---- constants ---------------------------------------------------------- */
30
31/* ---- object definition -------------------------------------------------- */
32
33/** type independent reference to a faceFinder module */
34struct bpi_FaceFinderRef
35{
36	/* ---- private data --------------------------------------------------- */
37
38	/* ---- public data ---------------------------------------------------- */
39
40	/** object buffer */
41	struct bbs_UInt16Arr objBufE;
42
43	/** faceFinder pointer */
44	struct bpi_FaceFinder* faceFinderPtrE;
45
46	/* ---- functions ------------------------------------------------------ */
47
48};
49
50/* ---- associated objects ------------------------------------------------- */
51
52/* ---- external functions ------------------------------------------------- */
53
54/* ---- \ghd{ constructor/destructor } ------------------------------------- */
55
56/** initializes bpi_FaceFinderRef  */
57void bpi_FaceFinderRef_init( struct bbs_Context* cpA,
58							 struct bpi_FaceFinderRef* ptrA );
59
60/** resets bpi_FaceFinderRef  */
61void bpi_FaceFinderRef_exit( struct bbs_Context* cpA,
62 							 struct bpi_FaceFinderRef* ptrA );
63
64/* ---- \ghd{ operators } -------------------------------------------------- */
65
66/** copy operator */
67void bpi_FaceFinderRef_copy( struct bbs_Context* cpA,
68							 struct bpi_FaceFinderRef* ptrA,
69							 const struct bpi_FaceFinderRef* srcPtrA );
70
71/** equal operator */
72flag bpi_FaceFinderRef_equal( struct bbs_Context* cpA,
73							  const struct bpi_FaceFinderRef* ptrA,
74							  const struct bpi_FaceFinderRef* srcPtrA );
75
76/* ---- \ghd{ query functions } -------------------------------------------- */
77
78/* ---- \ghd{ modify functions } ------------------------------------------- */
79
80/* ---- \ghd{ memory I/O } ------------------------------------------------- */
81
82/** word size (16-bit) object needs when written to memory */
83uint32 bpi_FaceFinderRef_memSize( struct bbs_Context* cpA,
84						          const struct bpi_FaceFinderRef* ptrA );
85
86/** writes object to memory; returns number of words (16-bit) written */
87uint32 bpi_FaceFinderRef_memWrite( struct bbs_Context* cpA,
88							       const struct bpi_FaceFinderRef* ptrA, uint16* memPtrA );
89
90/** reads object from memory; returns number of words (16-bit) read */
91uint32 bpi_FaceFinderRef_memRead( struct bbs_Context* cpA,
92							      struct bpi_FaceFinderRef* ptrA,
93								  uint32 maxImageWidthA,
94								  uint32 maxImageHeightA,
95								  const uint16* memPtrA,
96								  struct bbs_MemTbl* mtpA );
97
98/* ---- \ghd{ exec functions } --------------------------------------------- */
99
100/** sets detection range */
101void bpi_FaceFinderRef_setRange( struct bbs_Context* cpA,
102								 struct bpi_FaceFinderRef* ptrA,
103								 uint32 minEyeDistanceA,
104								 uint32 maxEyeDistanceA );
105
106/** single face processing function; returns confidence (8.24) */
107int32 bpi_FaceFinderRef_process( struct bbs_Context* cpA,
108							     const struct bpi_FaceFinderRef* ptrA,
109								 struct bpi_DCR* dcrPtrA );
110
111/** multiple face processing function; returns number of faces detected */
112int32 bpi_FaceFinderRef_putDcr( struct bbs_Context* cpA,
113							 	const struct bpi_FaceFinderRef* ptrA,
114								struct bpi_DCR* dcrPtrA );
115
116/** retrieves indexed face from face finder after calling PutDCR */
117void bpi_FaceFinderRef_getDcr( struct bbs_Context* cpA,
118							   const struct bpi_FaceFinderRef* ptrA,
119							   uint32 indexA,
120							   struct bpi_DCR* dcrPtrA );
121
122#endif /* bpi_FACE_FINDER_REF_EM_H */
123
124