summaryrefslogtreecommitdiff
path: root/include/metadata_extractor_private.h
blob: 262a498fa4ee71cc5fab47992a622a3b2a308f97 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
/*
* Copyright (c) 2011 Samsung Electronics Co., Ltd All Rights Reserved
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/


#ifndef __TIZEN_MULTIMEDIA_METADATA_EXTRACTOR_PRIVATE_H__
#define __TIZEN_MULTIMEDIA_METADATA_EXTRACTOR_PRIVATE_H__

#include <stdlib.h>
#include <stdbool.h>
#include <string.h>
#include <mm_types.h>
#include <dlog.h>

#ifdef __cplusplus
extern "C" {
#endif /* __cplusplus */

#ifdef LOG_TAG
#undef LOG_TAG
#endif
#define LOG_TAG "CAPI_MEDIA_METADATA_EXTRACTOR"

#define SAFE_FREE(src)      { if (src) {free(src); src = NULL; } }
#define ME_STRING_VALID(str)	(str != NULL && strlen(str) > 0)

#define metadata_extractor_debug(fmt, arg...) do { \
		LOGD(""fmt"", ##arg);     \
	} while (0)

#define metadata_extractor_info(fmt, arg...) do { \
		LOGI(""fmt"", ##arg);     \
	} while (0)

#define metadata_extractor_error(fmt, arg...) do { \
		LOGE(""fmt"", ##arg);     \
	} while (0)

#define metadata_extractor_debug_fenter() do { \
		LOGD("<Enter>");     \
	} while (0)

#define metadata_extractor_debug_fleave() do { \
		LOGD("<Leave>");     \
	} while (0)

#define metadata_extractor_secure_info(fmt, arg...) do { \
		SECURE_LOGI(""fmt"", ##arg);     \
	} while (0)

#define metadata_extractor_retv_free_if(expr, val, p_str) do { \
		if (expr) { \
			LOGE("Internal operation error"); \
			SAFE_FREE(p_str);	\
			return (val);	\
		}	\
	} while (0)

#define metadata_extractor_retvm_if(expr, val, fmt, arg...) do {	\
		if (expr) {	\
			LOGE(""fmt"", ##arg);	\
			return (val); \
		}	\
	} while (0)

typedef struct {
	char *path;
	const void *buffer;
	int buffer_size;
	bool extract_meta;

	int audio_track_cnt;
	int video_track_cnt;

	MMHandleType attr_h;
	MMHandleType tag_h;
} metadata_extractor_s;

/*TODO: Move attributes to metadata_extractor_type.h after ACR*/
#ifdef SUPPORT_GSPHERICAL_METADATA

#define METADATA_360_V1_STITCHED					35 /**< Flag indicating if the video is stitched. Spherical Video Metadata RFC v1 (Since 4.0) */
#define METADATA_360_V1_STITCHING_SOFTWARE			36 /**< Software used to stitch the spherical video. Spherical Video Metadata RFC v1 (Since 4.0) */
#define METADATA_360_V1_PROJECTION_TYPE				37 /**< Projection type used in the video frames. Spherical Video Metadata RFC v1 (Since 4.0) */
#define METADATA_360_V1_STEREO_MODE					38 /**< Description of stereoscopic 3D layout. Spherical Video Metadata RFC v1 (Since 4.0) */
#define METADATA_360_V1_SOURCE_COUNT				39 /**< Number of cameras used to create the spherical video. Spherical Video Metadata RFC v1 (Since 4.0) */
#define METADATA_360_V1_INIT_VIEW_HEADING			40 /**< The heading angle of the initial view in degrees. Spherical Video Metadata RFC v1 (Since 4.0) */
#define METADATA_360_V1_INIT_VIEW_PITCH				41 /**< The pitch angle of the initial view in degrees. Spherical Video Metadata RFC v1 (Since 4.0) */
#define METADATA_360_V1_INIT_VIEW_ROLL				42 /**< The roll angle of the initial view in degrees. Spherical Video Metadata RFC v1 (Since 4.0) */
#define METADATA_360_V1_TIMESTAMP					43 /**< Epoch timestamp of when the first frame in the video was recorded. Spherical Video Metadata RFC v1 (Since 4.0) */
#define METADATA_360_V1_FULL_PANO_WIDTH				44 /**< Width of the encoded video frame in pixels. Spherical Video Metadata RFC v1 (Since 4.0) */
#define METADATA_360_V1_FULL_PANO_HEIGHT			45 /**< Height of the encoded video frame in pixels. Spherical Video Metadata RFC v1 (Since 4.0) */
#define METADATA_360_V1_CROPPED_AREA_IMAGE_WIDTH	46 /**< Width of the video frame to display (e.g. cropping). Spherical Video Metadata RFC v1 (Since 4.0) */
#define METADATA_360_V1_CROPPED_AREA_IMAGE_HEIGHT	47 /**< Height of the video frame to display (e.g. cropping). Spherical Video Metadata RFC v1 (Since 4.0) */
#define METADATA_360_V1_CROPPED_AREA_LEFT			48 /**< Column where the left edge of the image was cropped from the full sized panorama. Spherical Video Metadata RFC v1 (Since 4.0) */
#define METADATA_360_V1_CROPPED_AREA_TOP			49 /**< Row where the top edge of the image was cropped from the full sized panorama. Spherical Video Metadata RFC v1 (Since 4.0) */
#define METADATA_360_V2_STEREO_MODE					50 /**< Stereo frame layout. Spherical Video Metadata RFC v2 (Since 4.0) */
#define METADATA_360_V2_METADATA_SOURCE				51 /**< Tool used to create the Spherical Video Metadata V2 (Since 4.0) */
#define METADATA_360_V2_PROJ_TYPE					52 /**< Projection type. Spherical Video Metadata RFC v2 (Since 4.0) */
#define METADATA_360_V2_POSE_YAW					53 /**< Counter-clockwise rotation in degrees around the up vector. Spherical Video Metadata RFC v2 (Since 4.0) */
#define METADATA_360_V2_POSE_PITCH					54 /**< Counter-clockwise rotation in degrees around the right vector post yaw transform. Spherical Video Metadata RFC v2 (Since 4.0) */
#define METADATA_360_V2_POSE_ROLL					55 /**< Clockwise-rotation in degrees around the forward vector post yaw and pitch transform. Spherical Video Metadata RFC v2 (Since 4.0) */
#define METADATA_360_V2_CBMP_LAYOUT					56 /**< Layout of cube faces for the Cubemap Projection. Spherical Video Metadata RFC v2 (Since 4.0) */
#define METADATA_360_V2_CBMP_PADDING				57 /**< Number of pixels to pad from the edge of each cube face for the Cubemap Projection. Spherical Video Metadata RFC v2 (Since 4.0) */
#define METADATA_360_V2_EQUI_BOUNDS_TOP				58 /**< Amount from the top of the frame to crop. Spherical Video Metadata RFC v2 (Since 4.0) */
#define METADATA_360_V2_EQUI_BOUNDS_BOTTOM			59 /**< Amount from the bottom of the frame to crop. Spherical Video Metadata RFC v2 (Since 4.0) */
#define METADATA_360_V2_EQUI_BOUNDS_LEFT			60 /**< Amount from the left of the frame to crop. Spherical Video Metadata RFC v2 (Since 4.0) */
#define METADATA_360_V2_EQUI_BOUNDS_RIGHT			61 /**< Amount from the right of the frame to crop. Spherical Video Metadata RFC v2 (Since 4.0) */
#define METADATA_AMBISONIC_TYPE						62 /**< Ambisonics type in User Data Information (Since 4.0) */
#define METADATA_AMBISONIC_FORMAT					63 /**< Ambisonics format in User Data Information (Since 4.0) */
#define METADATA_AMBISONIC_ORDER					64 /**< Ambisonics order in User Data Information (Since 4.0) */

#endif

#ifdef __cplusplus
}
#endif /* __cplusplus */
#endif /*__TIZEN_MULTIMEDIA_METADATA_EXTRACTOR_PRIVATE_H__*/