19c13e191ea2d9622d00621d6acb009a9a759dc92Ruben Brunk/*
29c13e191ea2d9622d00621d6acb009a9a759dc92Ruben Brunk * Copyright 2014 The Android Open Source Project
39c13e191ea2d9622d00621d6acb009a9a759dc92Ruben Brunk *
49c13e191ea2d9622d00621d6acb009a9a759dc92Ruben Brunk * Licensed under the Apache License, Version 2.0 (the "License");
59c13e191ea2d9622d00621d6acb009a9a759dc92Ruben Brunk * you may not use this file except in compliance with the License.
69c13e191ea2d9622d00621d6acb009a9a759dc92Ruben Brunk * You may obtain a copy of the License at
79c13e191ea2d9622d00621d6acb009a9a759dc92Ruben Brunk *
89c13e191ea2d9622d00621d6acb009a9a759dc92Ruben Brunk *      http://www.apache.org/licenses/LICENSE-2.0
99c13e191ea2d9622d00621d6acb009a9a759dc92Ruben Brunk *
109c13e191ea2d9622d00621d6acb009a9a759dc92Ruben Brunk * Unless required by applicable law or agreed to in writing, software
119c13e191ea2d9622d00621d6acb009a9a759dc92Ruben Brunk * distributed under the License is distributed on an "AS IS" BASIS,
129c13e191ea2d9622d00621d6acb009a9a759dc92Ruben Brunk * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
139c13e191ea2d9622d00621d6acb009a9a759dc92Ruben Brunk * See the License for the specific language governing permissions and
149c13e191ea2d9622d00621d6acb009a9a759dc92Ruben Brunk * limitations under the License.
159c13e191ea2d9622d00621d6acb009a9a759dc92Ruben Brunk */
169c13e191ea2d9622d00621d6acb009a9a759dc92Ruben Brunk
179c13e191ea2d9622d00621d6acb009a9a759dc92Ruben Brunk#ifndef SYSTEM_MEDIA_PRIVATE_INCLUDE_CAMERA_METADATA_HIDDEN_H
189c13e191ea2d9622d00621d6acb009a9a759dc92Ruben Brunk#define SYSTEM_MEDIA_PRIVATE_INCLUDE_CAMERA_METADATA_HIDDEN_H
199c13e191ea2d9622d00621d6acb009a9a759dc92Ruben Brunk
209c13e191ea2d9622d00621d6acb009a9a759dc92Ruben Brunk#include <system/camera_vendor_tags.h>
219c13e191ea2d9622d00621d6acb009a9a759dc92Ruben Brunk
229c13e191ea2d9622d00621d6acb009a9a759dc92Ruben Brunk/**
239c13e191ea2d9622d00621d6acb009a9a759dc92Ruben Brunk * Error codes returned by vendor tags ops operations. These are intended
249c13e191ea2d9622d00621d6acb009a9a759dc92Ruben Brunk * to be used by all framework code that uses the return values from the
259c13e191ea2d9622d00621d6acb009a9a759dc92Ruben Brunk * vendor operations object.
269c13e191ea2d9622d00621d6acb009a9a759dc92Ruben Brunk */
279c13e191ea2d9622d00621d6acb009a9a759dc92Ruben Brunk#define VENDOR_SECTION_NAME_ERR   NULL
289c13e191ea2d9622d00621d6acb009a9a759dc92Ruben Brunk#define VENDOR_TAG_NAME_ERR       NULL
299c13e191ea2d9622d00621d6acb009a9a759dc92Ruben Brunk#define VENDOR_TAG_COUNT_ERR      (-1)
309c13e191ea2d9622d00621d6acb009a9a759dc92Ruben Brunk#define VENDOR_TAG_TYPE_ERR       (-1)
319c13e191ea2d9622d00621d6acb009a9a759dc92Ruben Brunk
329c13e191ea2d9622d00621d6acb009a9a759dc92Ruben Brunk#ifdef __cplusplus
339c13e191ea2d9622d00621d6acb009a9a759dc92Ruben Brunkextern "C" {
349c13e191ea2d9622d00621d6acb009a9a759dc92Ruben Brunk#endif
359c13e191ea2d9622d00621d6acb009a9a759dc92Ruben Brunk/** **These are private functions for use only by the camera framework.** **/
369c13e191ea2d9622d00621d6acb009a9a759dc92Ruben Brunk
379c13e191ea2d9622d00621d6acb009a9a759dc92Ruben Brunk/**
389c13e191ea2d9622d00621d6acb009a9a759dc92Ruben Brunk * Set the global vendor tag operations object used to define vendor tag
399c13e191ea2d9622d00621d6acb009a9a759dc92Ruben Brunk * structure when parsing camera metadata with functions defined in
409c13e191ea2d9622d00621d6acb009a9a759dc92Ruben Brunk * system/media/camera/include/camera_metadata.h.
419c13e191ea2d9622d00621d6acb009a9a759dc92Ruben Brunk */
429c13e191ea2d9622d00621d6acb009a9a759dc92Ruben BrunkANDROID_API
439c13e191ea2d9622d00621d6acb009a9a759dc92Ruben Brunkint set_camera_metadata_vendor_ops(const vendor_tag_ops_t *query_ops);
449c13e191ea2d9622d00621d6acb009a9a759dc92Ruben Brunk
45a26996379965c552df9001618afce4d02b659abbEmilian Peev/**
46a26996379965c552df9001618afce4d02b659abbEmilian Peev * Set the global vendor tag cache operations object used to define vendor tag
47a26996379965c552df9001618afce4d02b659abbEmilian Peev * structure when parsing camera metadata with functions defined in
48a26996379965c552df9001618afce4d02b659abbEmilian Peev * system/media/camera/include/camera_metadata.h.
49a26996379965c552df9001618afce4d02b659abbEmilian Peev */
50a26996379965c552df9001618afce4d02b659abbEmilian PeevANDROID_API
51a26996379965c552df9001618afce4d02b659abbEmilian Peevint set_camera_metadata_vendor_cache_ops(
52a26996379965c552df9001618afce4d02b659abbEmilian Peev        const struct vendor_tag_cache_ops *query_cache_ops);
53a26996379965c552df9001618afce4d02b659abbEmilian Peev
54a26996379965c552df9001618afce4d02b659abbEmilian Peev/**
55a26996379965c552df9001618afce4d02b659abbEmilian Peev * Set the vendor id for a particular metadata buffer.
56a26996379965c552df9001618afce4d02b659abbEmilian Peev */
57a26996379965c552df9001618afce4d02b659abbEmilian PeevANDROID_API
58a26996379965c552df9001618afce4d02b659abbEmilian Peevvoid set_camera_metadata_vendor_id(camera_metadata_t *meta,
59a26996379965c552df9001618afce4d02b659abbEmilian Peev        metadata_vendor_id_t id);
60a26996379965c552df9001618afce4d02b659abbEmilian Peev
61a26996379965c552df9001618afce4d02b659abbEmilian Peev/**
62a26996379965c552df9001618afce4d02b659abbEmilian Peev * Retrieve the vendor id for a particular metadata buffer.
63a26996379965c552df9001618afce4d02b659abbEmilian Peev */
64a26996379965c552df9001618afce4d02b659abbEmilian PeevANDROID_API
65a26996379965c552df9001618afce4d02b659abbEmilian Peevmetadata_vendor_id_t get_camera_metadata_vendor_id(
66a26996379965c552df9001618afce4d02b659abbEmilian Peev        const camera_metadata_t *meta);
67a26996379965c552df9001618afce4d02b659abbEmilian Peev
68a26996379965c552df9001618afce4d02b659abbEmilian Peev/**
69a26996379965c552df9001618afce4d02b659abbEmilian Peev * Retrieve the type of a tag. Returns -1 if no such tag is defined.
70a26996379965c552df9001618afce4d02b659abbEmilian Peev */
71a26996379965c552df9001618afce4d02b659abbEmilian PeevANDROID_API
72a26996379965c552df9001618afce4d02b659abbEmilian Peevint get_local_camera_metadata_tag_type_vendor_id(uint32_t tag,
73a26996379965c552df9001618afce4d02b659abbEmilian Peev        metadata_vendor_id_t id);
74a26996379965c552df9001618afce4d02b659abbEmilian Peev
75a26996379965c552df9001618afce4d02b659abbEmilian Peev/**
76a26996379965c552df9001618afce4d02b659abbEmilian Peev * Retrieve the name of a tag. Returns NULL if no such tag is defined.
77a26996379965c552df9001618afce4d02b659abbEmilian Peev */
78a26996379965c552df9001618afce4d02b659abbEmilian PeevANDROID_API
79a26996379965c552df9001618afce4d02b659abbEmilian Peevconst char *get_local_camera_metadata_tag_name_vendor_id(uint32_t tag,
80a26996379965c552df9001618afce4d02b659abbEmilian Peev        metadata_vendor_id_t id);
81a26996379965c552df9001618afce4d02b659abbEmilian Peev
82a26996379965c552df9001618afce4d02b659abbEmilian Peev/**
83a26996379965c552df9001618afce4d02b659abbEmilian Peev * Retrieve the name of a tag section. Returns NULL if no such tag is defined.
84a26996379965c552df9001618afce4d02b659abbEmilian Peev */
85a26996379965c552df9001618afce4d02b659abbEmilian PeevANDROID_API
86a26996379965c552df9001618afce4d02b659abbEmilian Peevconst char *get_local_camera_metadata_section_name_vendor_id(uint32_t tag,
87a26996379965c552df9001618afce4d02b659abbEmilian Peev        metadata_vendor_id_t id);
88a26996379965c552df9001618afce4d02b659abbEmilian Peev
89a26996379965c552df9001618afce4d02b659abbEmilian Peev/**
90a26996379965c552df9001618afce4d02b659abbEmilian Peev * Retrieve the type of a tag. Returns -1 if no such tag is defined.
91a26996379965c552df9001618afce4d02b659abbEmilian Peev */
92a26996379965c552df9001618afce4d02b659abbEmilian PeevANDROID_API
93a26996379965c552df9001618afce4d02b659abbEmilian Peevint get_local_camera_metadata_tag_type_vendor_id(uint32_t tag,
94a26996379965c552df9001618afce4d02b659abbEmilian Peev        metadata_vendor_id_t id);
95a26996379965c552df9001618afce4d02b659abbEmilian Peev
969c13e191ea2d9622d00621d6acb009a9a759dc92Ruben Brunk#ifdef __cplusplus
979c13e191ea2d9622d00621d6acb009a9a759dc92Ruben Brunk} /* extern "C" */
989c13e191ea2d9622d00621d6acb009a9a759dc92Ruben Brunk#endif
999c13e191ea2d9622d00621d6acb009a9a759dc92Ruben Brunk
1009c13e191ea2d9622d00621d6acb009a9a759dc92Ruben Brunk#endif /* SYSTEM_MEDIA_PRIVATE_INCLUDE_CAMERA_METADATA_HIDDEN_H */
101