1 /******************************************************************************
2 *
3 * Copyright (C) 2015 The Android Open Source Project
4 *
5 * Licensed under the Apache License, Version 2.0 (the "License");
6 * you may not use this file except in compliance with the License.
7 * You may obtain a copy of the License at:
8 *
9 * http://www.apache.org/licenses/LICENSE-2.0
10 *
11 * Unless required by applicable law or agreed to in writing, software
12 * distributed under the License is distributed on an "AS IS" BASIS,
13 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14 * See the License for the specific language governing permissions and
15 * limitations under the License.
16 *
17 *****************************************************************************
18 * Originally developed and contributed by Ittiam Systems Pvt. Ltd, Bangalore
19 */
20
21 /**
22 *******************************************************************************
23 * @file
24 * ih264e_version.c
25 *
26 * @brief
27 * Contains version info for H264 encoder
28 *
29 * @author
30 * ittiam
31 *
32 * @par List of Functions:
33 * - ih264e_get_version()
34 *
35 * @remarks
36 * None
37 *
38 *******************************************************************************
39 */
40
41 /*****************************************************************************/
42 /* File Includes */
43 /*****************************************************************************/
44 /* system include files */
45 #include <stdio.h>
46 #include <stddef.h>
47 #include <stdlib.h>
48 #include <string.h>
49
50 /* user include files */
51 #include "ih264_typedefs.h"
52 #include "iv2.h"
53 #include "ive2.h"
54 #include "ih264e.h"
55 #include "ih264_defs.h"
56 #include "ih264_debug.h"
57 #include "ih264_structs.h"
58 #include "ih264e_version.h"
59
60
61 /*****************************************************************************/
62 /* Constant Macros */
63 /*****************************************************************************/
64
65 /**
66 * Name of the codec and target platform (All Cortex A processors in this case)
67 */
68 #define CODEC_NAME "H264ENC"
69 /**
70 * Codec release type, production or evaluation
71 */
72 #define CODEC_RELEASE_TYPE "production"
73 /**
74 * Version string. First two digits signify major version and last two minor
75 */
76 #define CODEC_RELEASE_VER "01.00"
77 /**
78 * Vendor name
79 */
80 #define CODEC_VENDOR "ITTIAM"
81
82 #define MAX_STRLEN 511
83 /**
84 *******************************************************************************
85 * Concatenates various strings to form a version string
86 *******************************************************************************
87 */
88 #ifdef __ANDROID__
89 #define VERSION(version_string, codec_name, codec_release_type, codec_release_ver, codec_vendor) \
90 snprintf(version_string, MAX_STRLEN, \
91 "@(#)Id:%s_%s Ver:%s Released by %s", \
92 codec_name, codec_release_type, codec_release_ver, codec_vendor)
93 #else
94 #define VERSION(version_string, codec_name, codec_release_type, codec_release_ver, codec_vendor) \
95 snprintf(version_string, MAX_STRLEN, \
96 "@(#)Id:%s_%s Ver:%s Released by %s Build: %s @ %s", \
97 codec_name, codec_release_type, codec_release_ver, codec_vendor, __DATE__, __TIME__)
98 #endif
99
100 /*****************************************************************************/
101 /* Function Definitions */
102 /*****************************************************************************/
103
104 /**
105 *******************************************************************************
106 *
107 * @brief
108 * Fills the version info in the given char pointer
109 *
110 * @par Description:
111 * Fills the version info in the given char pointer
112 *
113 * @param[in] pc_version
114 * Pointer to hold version info
115 *
116 * @param[in] u4_version_bufsize
117 * Size of the buffer passed
118 *
119 * @returns error status
120 *
121 * @remarks none
122 *
123 *******************************************************************************
124 */
ih264e_get_version(CHAR * pc_version,UWORD32 u4_version_bufsize)125 IV_STATUS_T ih264e_get_version(CHAR *pc_version, UWORD32 u4_version_bufsize)
126 {
127 CHAR ac_version_tmp[MAX_STRLEN];
128
129 VERSION(ac_version_tmp, CODEC_NAME, CODEC_RELEASE_TYPE, CODEC_RELEASE_VER,
130 CODEC_VENDOR);
131
132 if (u4_version_bufsize >= (strlen(ac_version_tmp) + 1))
133 {
134 memcpy(pc_version, ac_version_tmp, (strlen(ac_version_tmp) + 1));
135 return IV_SUCCESS;
136 }
137 else
138 {
139 return IV_FAIL;
140 }
141 }
142