1 /* Copyright (c) 2015-2016, The Linux Foundation. All rights reserved.
2  *
3  * Redistribution and use in source and binary forms, with or without
4  * modification, are permitted provided that the following conditions are
5  * met:
6  *     * Redistributions of source code must retain the above copyright
7  *       notice, this list of conditions and the following disclaimer.
8  *     * Redistributions in binary form must reproduce the above
9  *       copyright notice, this list of conditions and the following
10  *       disclaimer in the documentation and/or other materials provided
11  *       with the distribution.
12  *     * Neither the name of The Linux Foundation nor the names of its
13  *       contributors may be used to endorse or promote products derived
14  *       from this software without specific prior written permission.
15  *
16  * THIS SOFTWARE IS PROVIDED "AS IS" AND ANY EXPRESS OR IMPLIED
17  * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
18  * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT
19  * ARE DISCLAIMED.  IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS
20  * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
21  * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
22  * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR
23  * BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
24  * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE
25  * OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN
26  * IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
27  *
28  */
29 
30 #ifndef __QCAMERA_BUFFERMAPS_H__
31 #define __QCAMERA_BUFFERMAPS_H__
32 
33 // Camera dependencies
34 #include "cam_types.h"
35 
36 namespace qcamera {
37 
38 class QCameraBufferMaps {
39 public:
40     QCameraBufferMaps();
41     QCameraBufferMaps(const QCameraBufferMaps& pBufferMaps);
42     QCameraBufferMaps(const cam_buf_map_type_list& pBufMapList);
43     QCameraBufferMaps(cam_mapping_buf_type pType,
44             uint32_t pStreamId,
45             uint32_t pFrameIndex,
46             int32_t pPlaneIndex,
47             uint32_t pCookie,
48             int32_t pFd,
49             size_t pSize,
50             void *buffer);
51 
52     ~QCameraBufferMaps();
53 
54     QCameraBufferMaps& operator=(const QCameraBufferMaps& pBufferMaps);
55 
56     uint32_t enqueue(cam_mapping_buf_type pType,
57             uint32_t pStreamId,
58             uint32_t pFrameIndex,
59             int32_t pPlaneIndex,
60             uint32_t pCookie,
61             int32_t pFd,
62             size_t pSize,
63             void *buffer);
64 
65     uint32_t getCamBufMapList(cam_buf_map_type_list& pBufMapList) const;
66 
67     static uint32_t makeSingletonBufMapList(cam_mapping_buf_type pType,
68             uint32_t pStreamId,
69             uint32_t pFrameIndex,
70             int32_t pPlaneIndex,
71             uint32_t pCookie,
72             int32_t pFd,
73             size_t pSize,
74             cam_buf_map_type_list& pBufMapList,
75             void *buffer);
76 
77 private:
78     cam_buf_map_type_list mBufMapList;
79 };
80 
81 }; // namespace qcamera
82 #endif /* __QCAMERA_BUFFERMAPS_H__ */
83 
84