17f47f6bd7178f8bf54cf78a003a52c3f4585158cZhijun He/* Copyright (c) 2015-2016, The Linux Foundation. All rights reserved.
27f47f6bd7178f8bf54cf78a003a52c3f4585158cZhijun He *
37f47f6bd7178f8bf54cf78a003a52c3f4585158cZhijun He * Redistribution and use in source and binary forms, with or without
47f47f6bd7178f8bf54cf78a003a52c3f4585158cZhijun He * modification, are permitted provided that the following conditions are
57f47f6bd7178f8bf54cf78a003a52c3f4585158cZhijun He * met:
67f47f6bd7178f8bf54cf78a003a52c3f4585158cZhijun He *     * Redistributions of source code must retain the above copyright
77f47f6bd7178f8bf54cf78a003a52c3f4585158cZhijun He *       notice, this list of conditions and the following disclaimer.
87f47f6bd7178f8bf54cf78a003a52c3f4585158cZhijun He *     * Redistributions in binary form must reproduce the above
97f47f6bd7178f8bf54cf78a003a52c3f4585158cZhijun He *       copyright notice, this list of conditions and the following
107f47f6bd7178f8bf54cf78a003a52c3f4585158cZhijun He *       disclaimer in the documentation and/or other materials provided
117f47f6bd7178f8bf54cf78a003a52c3f4585158cZhijun He *       with the distribution.
127f47f6bd7178f8bf54cf78a003a52c3f4585158cZhijun He *     * Neither the name of The Linux Foundation nor the names of its
137f47f6bd7178f8bf54cf78a003a52c3f4585158cZhijun He *       contributors may be used to endorse or promote products derived
147f47f6bd7178f8bf54cf78a003a52c3f4585158cZhijun He *       from this software without specific prior written permission.
157f47f6bd7178f8bf54cf78a003a52c3f4585158cZhijun He *
167f47f6bd7178f8bf54cf78a003a52c3f4585158cZhijun He * THIS SOFTWARE IS PROVIDED "AS IS" AND ANY EXPRESS OR IMPLIED
177f47f6bd7178f8bf54cf78a003a52c3f4585158cZhijun He * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
187f47f6bd7178f8bf54cf78a003a52c3f4585158cZhijun He * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT
197f47f6bd7178f8bf54cf78a003a52c3f4585158cZhijun He * ARE DISCLAIMED.  IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS
207f47f6bd7178f8bf54cf78a003a52c3f4585158cZhijun He * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
217f47f6bd7178f8bf54cf78a003a52c3f4585158cZhijun He * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
227f47f6bd7178f8bf54cf78a003a52c3f4585158cZhijun He * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR
237f47f6bd7178f8bf54cf78a003a52c3f4585158cZhijun He * BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
247f47f6bd7178f8bf54cf78a003a52c3f4585158cZhijun He * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE
257f47f6bd7178f8bf54cf78a003a52c3f4585158cZhijun He * OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN
267f47f6bd7178f8bf54cf78a003a52c3f4585158cZhijun He * IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
277f47f6bd7178f8bf54cf78a003a52c3f4585158cZhijun He *
287f47f6bd7178f8bf54cf78a003a52c3f4585158cZhijun He */
297f47f6bd7178f8bf54cf78a003a52c3f4585158cZhijun He
307f47f6bd7178f8bf54cf78a003a52c3f4585158cZhijun He#ifndef __QCAMERA_BUFFERMAPS_H__
317f47f6bd7178f8bf54cf78a003a52c3f4585158cZhijun He#define __QCAMERA_BUFFERMAPS_H__
327f47f6bd7178f8bf54cf78a003a52c3f4585158cZhijun He
337f47f6bd7178f8bf54cf78a003a52c3f4585158cZhijun He// Camera dependencies
347f47f6bd7178f8bf54cf78a003a52c3f4585158cZhijun He#include "cam_types.h"
357f47f6bd7178f8bf54cf78a003a52c3f4585158cZhijun He
367f47f6bd7178f8bf54cf78a003a52c3f4585158cZhijun Henamespace qcamera {
377f47f6bd7178f8bf54cf78a003a52c3f4585158cZhijun He
387f47f6bd7178f8bf54cf78a003a52c3f4585158cZhijun Heclass QCameraBufferMaps {
397f47f6bd7178f8bf54cf78a003a52c3f4585158cZhijun Hepublic:
407f47f6bd7178f8bf54cf78a003a52c3f4585158cZhijun He    QCameraBufferMaps();
417f47f6bd7178f8bf54cf78a003a52c3f4585158cZhijun He    QCameraBufferMaps(const QCameraBufferMaps& pBufferMaps);
427f47f6bd7178f8bf54cf78a003a52c3f4585158cZhijun He    QCameraBufferMaps(const cam_buf_map_type_list& pBufMapList);
437f47f6bd7178f8bf54cf78a003a52c3f4585158cZhijun He    QCameraBufferMaps(cam_mapping_buf_type pType,
447f47f6bd7178f8bf54cf78a003a52c3f4585158cZhijun He            uint32_t pStreamId,
457f47f6bd7178f8bf54cf78a003a52c3f4585158cZhijun He            uint32_t pFrameIndex,
467f47f6bd7178f8bf54cf78a003a52c3f4585158cZhijun He            int32_t pPlaneIndex,
477f47f6bd7178f8bf54cf78a003a52c3f4585158cZhijun He            uint32_t pCookie,
487f47f6bd7178f8bf54cf78a003a52c3f4585158cZhijun He            int32_t pFd,
497f47f6bd7178f8bf54cf78a003a52c3f4585158cZhijun He            size_t pSize,
507f47f6bd7178f8bf54cf78a003a52c3f4585158cZhijun He            void *buffer);
517f47f6bd7178f8bf54cf78a003a52c3f4585158cZhijun He
527f47f6bd7178f8bf54cf78a003a52c3f4585158cZhijun He    ~QCameraBufferMaps();
537f47f6bd7178f8bf54cf78a003a52c3f4585158cZhijun He
547f47f6bd7178f8bf54cf78a003a52c3f4585158cZhijun He    QCameraBufferMaps& operator=(const QCameraBufferMaps& pBufferMaps);
557f47f6bd7178f8bf54cf78a003a52c3f4585158cZhijun He
567f47f6bd7178f8bf54cf78a003a52c3f4585158cZhijun He    uint32_t enqueue(cam_mapping_buf_type pType,
577f47f6bd7178f8bf54cf78a003a52c3f4585158cZhijun He            uint32_t pStreamId,
587f47f6bd7178f8bf54cf78a003a52c3f4585158cZhijun He            uint32_t pFrameIndex,
597f47f6bd7178f8bf54cf78a003a52c3f4585158cZhijun He            int32_t pPlaneIndex,
607f47f6bd7178f8bf54cf78a003a52c3f4585158cZhijun He            uint32_t pCookie,
617f47f6bd7178f8bf54cf78a003a52c3f4585158cZhijun He            int32_t pFd,
627f47f6bd7178f8bf54cf78a003a52c3f4585158cZhijun He            size_t pSize,
637f47f6bd7178f8bf54cf78a003a52c3f4585158cZhijun He            void *buffer);
647f47f6bd7178f8bf54cf78a003a52c3f4585158cZhijun He
657f47f6bd7178f8bf54cf78a003a52c3f4585158cZhijun He    uint32_t getCamBufMapList(cam_buf_map_type_list& pBufMapList) const;
667f47f6bd7178f8bf54cf78a003a52c3f4585158cZhijun He
677f47f6bd7178f8bf54cf78a003a52c3f4585158cZhijun He    static uint32_t makeSingletonBufMapList(cam_mapping_buf_type pType,
687f47f6bd7178f8bf54cf78a003a52c3f4585158cZhijun He            uint32_t pStreamId,
697f47f6bd7178f8bf54cf78a003a52c3f4585158cZhijun He            uint32_t pFrameIndex,
707f47f6bd7178f8bf54cf78a003a52c3f4585158cZhijun He            int32_t pPlaneIndex,
717f47f6bd7178f8bf54cf78a003a52c3f4585158cZhijun He            uint32_t pCookie,
727f47f6bd7178f8bf54cf78a003a52c3f4585158cZhijun He            int32_t pFd,
737f47f6bd7178f8bf54cf78a003a52c3f4585158cZhijun He            size_t pSize,
747f47f6bd7178f8bf54cf78a003a52c3f4585158cZhijun He            cam_buf_map_type_list& pBufMapList,
757f47f6bd7178f8bf54cf78a003a52c3f4585158cZhijun He            void *buffer);
767f47f6bd7178f8bf54cf78a003a52c3f4585158cZhijun He
777f47f6bd7178f8bf54cf78a003a52c3f4585158cZhijun Heprivate:
787f47f6bd7178f8bf54cf78a003a52c3f4585158cZhijun He    cam_buf_map_type_list mBufMapList;
797f47f6bd7178f8bf54cf78a003a52c3f4585158cZhijun He};
807f47f6bd7178f8bf54cf78a003a52c3f4585158cZhijun He
817f47f6bd7178f8bf54cf78a003a52c3f4585158cZhijun He}; // namespace qcamera
827f47f6bd7178f8bf54cf78a003a52c3f4585158cZhijun He#endif /* __QCAMERA_BUFFERMAPS_H__ */
837f47f6bd7178f8bf54cf78a003a52c3f4585158cZhijun He
84