161ac0ade16f84d877dfd8d0e984eb203d4a2901dGlenn Kasten/*
261ac0ade16f84d877dfd8d0e984eb203d4a2901dGlenn Kasten * Copyright (C) 2010 The Android Open Source Project
361ac0ade16f84d877dfd8d0e984eb203d4a2901dGlenn Kasten *
461ac0ade16f84d877dfd8d0e984eb203d4a2901dGlenn Kasten * Licensed under the Apache License, Version 2.0 (the "License");
561ac0ade16f84d877dfd8d0e984eb203d4a2901dGlenn Kasten * you may not use this file except in compliance with the License.
661ac0ade16f84d877dfd8d0e984eb203d4a2901dGlenn Kasten * You may obtain a copy of the License at
761ac0ade16f84d877dfd8d0e984eb203d4a2901dGlenn Kasten *
861ac0ade16f84d877dfd8d0e984eb203d4a2901dGlenn Kasten *      http://www.apache.org/licenses/LICENSE-2.0
961ac0ade16f84d877dfd8d0e984eb203d4a2901dGlenn Kasten *
1061ac0ade16f84d877dfd8d0e984eb203d4a2901dGlenn Kasten * Unless required by applicable law or agreed to in writing, software
1161ac0ade16f84d877dfd8d0e984eb203d4a2901dGlenn Kasten * distributed under the License is distributed on an "AS IS" BASIS,
1261ac0ade16f84d877dfd8d0e984eb203d4a2901dGlenn Kasten * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
1361ac0ade16f84d877dfd8d0e984eb203d4a2901dGlenn Kasten * See the License for the specific language governing permissions and
1461ac0ade16f84d877dfd8d0e984eb203d4a2901dGlenn Kasten * limitations under the License.
1561ac0ade16f84d877dfd8d0e984eb203d4a2901dGlenn Kasten */
1661ac0ade16f84d877dfd8d0e984eb203d4a2901dGlenn Kasten
1761ac0ade16f84d877dfd8d0e984eb203d4a2901dGlenn Kasten/* MetadataExtraction implementation */
1861ac0ade16f84d877dfd8d0e984eb203d4a2901dGlenn Kasten
1961ac0ade16f84d877dfd8d0e984eb203d4a2901dGlenn Kasten#include "sles_allinclusive.h"
2061ac0ade16f84d877dfd8d0e984eb203d4a2901dGlenn Kasten
21ed46c29d6a09112dbbf584c82953f63289596fd6Glenn Kasten
22d2a7f0d6883a6d3835642e7b282f05ed1c54fe63Glenn Kastenstatic SLresult IMetadataExtraction_GetItemCount(SLMetadataExtractionItf self, SLuint32 *pItemCount)
2361ac0ade16f84d877dfd8d0e984eb203d4a2901dGlenn Kasten{
24ed46c29d6a09112dbbf584c82953f63289596fd6Glenn Kasten    SL_ENTER_INTERFACE
25ed46c29d6a09112dbbf584c82953f63289596fd6Glenn Kasten
26ed46c29d6a09112dbbf584c82953f63289596fd6Glenn Kasten    if (NULL == pItemCount) {
27ed46c29d6a09112dbbf584c82953f63289596fd6Glenn Kasten        result = SL_RESULT_PARAMETER_INVALID;
28ed46c29d6a09112dbbf584c82953f63289596fd6Glenn Kasten    } else {
297f5cc1afe49395fefaad9b2bbd728a45d1bfda6aJean-Michel Trivi        IMetadataExtraction *thiz = (IMetadataExtraction *) self;
307f5cc1afe49395fefaad9b2bbd728a45d1bfda6aJean-Michel Trivi        if (SL_OBJECTID_AUDIOPLAYER == InterfaceToObjectID(thiz)) {
317da229586b6c8893a1731bfe3eae7996e2ccffc6Glenn Kasten#ifdef ANDROID
327f5cc1afe49395fefaad9b2bbd728a45d1bfda6aJean-Michel Trivi            result = android_audioPlayer_metadata_getItemCount((CAudioPlayer *)thiz->mThis,
337f5cc1afe49395fefaad9b2bbd728a45d1bfda6aJean-Michel Trivi                    pItemCount);
347da229586b6c8893a1731bfe3eae7996e2ccffc6Glenn Kasten#else
357da229586b6c8893a1731bfe3eae7996e2ccffc6Glenn Kasten            result = SL_RESULT_FEATURE_UNSUPPORTED;
367da229586b6c8893a1731bfe3eae7996e2ccffc6Glenn Kasten#endif
377f5cc1afe49395fefaad9b2bbd728a45d1bfda6aJean-Michel Trivi        } else {
387f5cc1afe49395fefaad9b2bbd728a45d1bfda6aJean-Michel Trivi            result = SL_RESULT_PARAMETER_INVALID;
397f5cc1afe49395fefaad9b2bbd728a45d1bfda6aJean-Michel Trivi        }
40ed46c29d6a09112dbbf584c82953f63289596fd6Glenn Kasten    }
41ed46c29d6a09112dbbf584c82953f63289596fd6Glenn Kasten
42ed46c29d6a09112dbbf584c82953f63289596fd6Glenn Kasten    SL_LEAVE_INTERFACE
4361ac0ade16f84d877dfd8d0e984eb203d4a2901dGlenn Kasten}
4461ac0ade16f84d877dfd8d0e984eb203d4a2901dGlenn Kasten
45ed46c29d6a09112dbbf584c82953f63289596fd6Glenn Kasten
4661ac0ade16f84d877dfd8d0e984eb203d4a2901dGlenn Kastenstatic SLresult IMetadataExtraction_GetKeySize(SLMetadataExtractionItf self,
4761ac0ade16f84d877dfd8d0e984eb203d4a2901dGlenn Kasten    SLuint32 index, SLuint32 *pKeySize)
4861ac0ade16f84d877dfd8d0e984eb203d4a2901dGlenn Kasten{
49ed46c29d6a09112dbbf584c82953f63289596fd6Glenn Kasten    SL_ENTER_INTERFACE
50ed46c29d6a09112dbbf584c82953f63289596fd6Glenn Kasten
51ed46c29d6a09112dbbf584c82953f63289596fd6Glenn Kasten    if (NULL == pKeySize) {
52ed46c29d6a09112dbbf584c82953f63289596fd6Glenn Kasten        result = SL_RESULT_PARAMETER_INVALID;
53ed46c29d6a09112dbbf584c82953f63289596fd6Glenn Kasten    } else {
547f5cc1afe49395fefaad9b2bbd728a45d1bfda6aJean-Michel Trivi        IMetadataExtraction *thiz = (IMetadataExtraction *) self;
557f5cc1afe49395fefaad9b2bbd728a45d1bfda6aJean-Michel Trivi        if (SL_OBJECTID_AUDIOPLAYER == InterfaceToObjectID(thiz)) {
567da229586b6c8893a1731bfe3eae7996e2ccffc6Glenn Kasten#ifdef ANDROID
577f5cc1afe49395fefaad9b2bbd728a45d1bfda6aJean-Michel Trivi            result = android_audioPlayer_metadata_getKeySize((CAudioPlayer *)thiz->mThis,
587f5cc1afe49395fefaad9b2bbd728a45d1bfda6aJean-Michel Trivi                    index, pKeySize);
597da229586b6c8893a1731bfe3eae7996e2ccffc6Glenn Kasten#else
607da229586b6c8893a1731bfe3eae7996e2ccffc6Glenn Kasten            result = SL_RESULT_FEATURE_UNSUPPORTED;
617da229586b6c8893a1731bfe3eae7996e2ccffc6Glenn Kasten#endif
627f5cc1afe49395fefaad9b2bbd728a45d1bfda6aJean-Michel Trivi        } else {
637f5cc1afe49395fefaad9b2bbd728a45d1bfda6aJean-Michel Trivi            result = SL_RESULT_PARAMETER_INVALID;
647f5cc1afe49395fefaad9b2bbd728a45d1bfda6aJean-Michel Trivi        }
65ed46c29d6a09112dbbf584c82953f63289596fd6Glenn Kasten    }
66ed46c29d6a09112dbbf584c82953f63289596fd6Glenn Kasten
67ed46c29d6a09112dbbf584c82953f63289596fd6Glenn Kasten    SL_LEAVE_INTERFACE
6861ac0ade16f84d877dfd8d0e984eb203d4a2901dGlenn Kasten}
6961ac0ade16f84d877dfd8d0e984eb203d4a2901dGlenn Kasten
70ed46c29d6a09112dbbf584c82953f63289596fd6Glenn Kasten
7161ac0ade16f84d877dfd8d0e984eb203d4a2901dGlenn Kastenstatic SLresult IMetadataExtraction_GetKey(SLMetadataExtractionItf self,
7261ac0ade16f84d877dfd8d0e984eb203d4a2901dGlenn Kasten    SLuint32 index, SLuint32 keySize, SLMetadataInfo *pKey)
7361ac0ade16f84d877dfd8d0e984eb203d4a2901dGlenn Kasten{
74ed46c29d6a09112dbbf584c82953f63289596fd6Glenn Kasten    SL_ENTER_INTERFACE
75ed46c29d6a09112dbbf584c82953f63289596fd6Glenn Kasten
76ed46c29d6a09112dbbf584c82953f63289596fd6Glenn Kasten    if (NULL == pKey) {
77ed46c29d6a09112dbbf584c82953f63289596fd6Glenn Kasten        result = SL_RESULT_PARAMETER_INVALID;
78ed46c29d6a09112dbbf584c82953f63289596fd6Glenn Kasten    } else {
797f5cc1afe49395fefaad9b2bbd728a45d1bfda6aJean-Michel Trivi        IMetadataExtraction *thiz = (IMetadataExtraction *) self;
807f5cc1afe49395fefaad9b2bbd728a45d1bfda6aJean-Michel Trivi        if (SL_OBJECTID_AUDIOPLAYER == InterfaceToObjectID(thiz)) {
817da229586b6c8893a1731bfe3eae7996e2ccffc6Glenn Kasten#ifdef ANDROID
827f5cc1afe49395fefaad9b2bbd728a45d1bfda6aJean-Michel Trivi            result = android_audioPlayer_metadata_getKey((CAudioPlayer *)thiz->mThis,
837f5cc1afe49395fefaad9b2bbd728a45d1bfda6aJean-Michel Trivi                    index, keySize, pKey);
847da229586b6c8893a1731bfe3eae7996e2ccffc6Glenn Kasten#else
857da229586b6c8893a1731bfe3eae7996e2ccffc6Glenn Kasten            result = SL_RESULT_FEATURE_UNSUPPORTED;
867da229586b6c8893a1731bfe3eae7996e2ccffc6Glenn Kasten#endif
877f5cc1afe49395fefaad9b2bbd728a45d1bfda6aJean-Michel Trivi        } else {
887f5cc1afe49395fefaad9b2bbd728a45d1bfda6aJean-Michel Trivi            result = SL_RESULT_PARAMETER_INVALID;
897f5cc1afe49395fefaad9b2bbd728a45d1bfda6aJean-Michel Trivi        }
90ed46c29d6a09112dbbf584c82953f63289596fd6Glenn Kasten    }
91ed46c29d6a09112dbbf584c82953f63289596fd6Glenn Kasten
92ed46c29d6a09112dbbf584c82953f63289596fd6Glenn Kasten    SL_LEAVE_INTERFACE
9361ac0ade16f84d877dfd8d0e984eb203d4a2901dGlenn Kasten}
9461ac0ade16f84d877dfd8d0e984eb203d4a2901dGlenn Kasten
95ed46c29d6a09112dbbf584c82953f63289596fd6Glenn Kasten
9661ac0ade16f84d877dfd8d0e984eb203d4a2901dGlenn Kastenstatic SLresult IMetadataExtraction_GetValueSize(SLMetadataExtractionItf self,
9761ac0ade16f84d877dfd8d0e984eb203d4a2901dGlenn Kasten    SLuint32 index, SLuint32 *pValueSize)
9861ac0ade16f84d877dfd8d0e984eb203d4a2901dGlenn Kasten{
99ed46c29d6a09112dbbf584c82953f63289596fd6Glenn Kasten    SL_ENTER_INTERFACE
100ed46c29d6a09112dbbf584c82953f63289596fd6Glenn Kasten
101ed46c29d6a09112dbbf584c82953f63289596fd6Glenn Kasten    if (NULL == pValueSize) {
102ed46c29d6a09112dbbf584c82953f63289596fd6Glenn Kasten        result = SL_RESULT_PARAMETER_INVALID;
103ed46c29d6a09112dbbf584c82953f63289596fd6Glenn Kasten    } else {
1047f5cc1afe49395fefaad9b2bbd728a45d1bfda6aJean-Michel Trivi        IMetadataExtraction *thiz = (IMetadataExtraction *) self;
1057f5cc1afe49395fefaad9b2bbd728a45d1bfda6aJean-Michel Trivi        if (SL_OBJECTID_AUDIOPLAYER == InterfaceToObjectID(thiz)) {
1067da229586b6c8893a1731bfe3eae7996e2ccffc6Glenn Kasten#ifdef ANDROID
1077f5cc1afe49395fefaad9b2bbd728a45d1bfda6aJean-Michel Trivi            result = android_audioPlayer_metadata_getValueSize((CAudioPlayer *)thiz->mThis,
1087f5cc1afe49395fefaad9b2bbd728a45d1bfda6aJean-Michel Trivi                    index, pValueSize);
1097da229586b6c8893a1731bfe3eae7996e2ccffc6Glenn Kasten#else
1107da229586b6c8893a1731bfe3eae7996e2ccffc6Glenn Kasten            result = SL_RESULT_FEATURE_UNSUPPORTED;
1117da229586b6c8893a1731bfe3eae7996e2ccffc6Glenn Kasten#endif
1127f5cc1afe49395fefaad9b2bbd728a45d1bfda6aJean-Michel Trivi        } else {
1137f5cc1afe49395fefaad9b2bbd728a45d1bfda6aJean-Michel Trivi            result = SL_RESULT_PARAMETER_INVALID;
1147f5cc1afe49395fefaad9b2bbd728a45d1bfda6aJean-Michel Trivi        }
115ed46c29d6a09112dbbf584c82953f63289596fd6Glenn Kasten    }
116ed46c29d6a09112dbbf584c82953f63289596fd6Glenn Kasten
117ed46c29d6a09112dbbf584c82953f63289596fd6Glenn Kasten    SL_LEAVE_INTERFACE
11861ac0ade16f84d877dfd8d0e984eb203d4a2901dGlenn Kasten}
11961ac0ade16f84d877dfd8d0e984eb203d4a2901dGlenn Kasten
120ed46c29d6a09112dbbf584c82953f63289596fd6Glenn Kasten
12161ac0ade16f84d877dfd8d0e984eb203d4a2901dGlenn Kastenstatic SLresult IMetadataExtraction_GetValue(SLMetadataExtractionItf self,
12261ac0ade16f84d877dfd8d0e984eb203d4a2901dGlenn Kasten    SLuint32 index, SLuint32 valueSize, SLMetadataInfo *pValue)
12361ac0ade16f84d877dfd8d0e984eb203d4a2901dGlenn Kasten{
124ed46c29d6a09112dbbf584c82953f63289596fd6Glenn Kasten    SL_ENTER_INTERFACE
125ed46c29d6a09112dbbf584c82953f63289596fd6Glenn Kasten
126ed46c29d6a09112dbbf584c82953f63289596fd6Glenn Kasten    if (NULL == pValue) {
127ed46c29d6a09112dbbf584c82953f63289596fd6Glenn Kasten        result = SL_RESULT_PARAMETER_INVALID;
128ed46c29d6a09112dbbf584c82953f63289596fd6Glenn Kasten    } else {
1297f5cc1afe49395fefaad9b2bbd728a45d1bfda6aJean-Michel Trivi        IMetadataExtraction *thiz = (IMetadataExtraction *) self;
1307f5cc1afe49395fefaad9b2bbd728a45d1bfda6aJean-Michel Trivi        if (SL_OBJECTID_AUDIOPLAYER == InterfaceToObjectID(thiz)) {
1317da229586b6c8893a1731bfe3eae7996e2ccffc6Glenn Kasten#ifdef ANDROID
1327f5cc1afe49395fefaad9b2bbd728a45d1bfda6aJean-Michel Trivi            result = android_audioPlayer_metadata_getValue((CAudioPlayer *)thiz->mThis,
1337f5cc1afe49395fefaad9b2bbd728a45d1bfda6aJean-Michel Trivi                    index, valueSize, pValue);
1347da229586b6c8893a1731bfe3eae7996e2ccffc6Glenn Kasten#else
1357da229586b6c8893a1731bfe3eae7996e2ccffc6Glenn Kasten            result = SL_RESULT_FEATURE_UNSUPPORTED;
1367da229586b6c8893a1731bfe3eae7996e2ccffc6Glenn Kasten#endif
1377f5cc1afe49395fefaad9b2bbd728a45d1bfda6aJean-Michel Trivi        } else {
1387f5cc1afe49395fefaad9b2bbd728a45d1bfda6aJean-Michel Trivi            result = SL_RESULT_PARAMETER_INVALID;
1397f5cc1afe49395fefaad9b2bbd728a45d1bfda6aJean-Michel Trivi        }
140ed46c29d6a09112dbbf584c82953f63289596fd6Glenn Kasten    }
141ed46c29d6a09112dbbf584c82953f63289596fd6Glenn Kasten
142ed46c29d6a09112dbbf584c82953f63289596fd6Glenn Kasten    SL_LEAVE_INTERFACE
14361ac0ade16f84d877dfd8d0e984eb203d4a2901dGlenn Kasten}
14461ac0ade16f84d877dfd8d0e984eb203d4a2901dGlenn Kasten
145ed46c29d6a09112dbbf584c82953f63289596fd6Glenn Kasten
14661ac0ade16f84d877dfd8d0e984eb203d4a2901dGlenn Kastenstatic SLresult IMetadataExtraction_AddKeyFilter(SLMetadataExtractionItf self,
14761ac0ade16f84d877dfd8d0e984eb203d4a2901dGlenn Kasten    SLuint32 keySize, const void *pKey, SLuint32 keyEncoding,
14861ac0ade16f84d877dfd8d0e984eb203d4a2901dGlenn Kasten    const SLchar *pValueLangCountry, SLuint32 valueEncoding, SLuint8 filterMask)
14961ac0ade16f84d877dfd8d0e984eb203d4a2901dGlenn Kasten{
150ed46c29d6a09112dbbf584c82953f63289596fd6Glenn Kasten    SL_ENTER_INTERFACE
151ed46c29d6a09112dbbf584c82953f63289596fd6Glenn Kasten
152ed46c29d6a09112dbbf584c82953f63289596fd6Glenn Kasten    if (NULL == pKey || NULL == pValueLangCountry || (filterMask & ~(SL_METADATA_FILTER_KEY |
1536994a522f36bc882c60af4c5044fbbc0749a866fGlenn Kasten            SL_METADATA_FILTER_LANG | SL_METADATA_FILTER_ENCODING))) {
154ed46c29d6a09112dbbf584c82953f63289596fd6Glenn Kasten        result = SL_RESULT_PARAMETER_INVALID;
155ed46c29d6a09112dbbf584c82953f63289596fd6Glenn Kasten    } else {
156bcc5c7225e3b7a1dbf2e9e830987f69167acf06fGlenn Kasten        IMetadataExtraction *thiz = (IMetadataExtraction *) self;
157bcc5c7225e3b7a1dbf2e9e830987f69167acf06fGlenn Kasten        interface_lock_exclusive(thiz);
158bcc5c7225e3b7a1dbf2e9e830987f69167acf06fGlenn Kasten        thiz->mKeySize = keySize;
159bcc5c7225e3b7a1dbf2e9e830987f69167acf06fGlenn Kasten        thiz->mKey = pKey;
160bcc5c7225e3b7a1dbf2e9e830987f69167acf06fGlenn Kasten        thiz->mKeyEncoding = keyEncoding;
161bcc5c7225e3b7a1dbf2e9e830987f69167acf06fGlenn Kasten        thiz->mValueLangCountry = pValueLangCountry; // should make a local copy
162bcc5c7225e3b7a1dbf2e9e830987f69167acf06fGlenn Kasten        thiz->mValueEncoding = valueEncoding;
163bcc5c7225e3b7a1dbf2e9e830987f69167acf06fGlenn Kasten        thiz->mFilterMask = filterMask;
164bcc5c7225e3b7a1dbf2e9e830987f69167acf06fGlenn Kasten        interface_unlock_exclusive(thiz);
165ed46c29d6a09112dbbf584c82953f63289596fd6Glenn Kasten        result = SL_RESULT_SUCCESS;
166ed46c29d6a09112dbbf584c82953f63289596fd6Glenn Kasten    }
167ed46c29d6a09112dbbf584c82953f63289596fd6Glenn Kasten
168ed46c29d6a09112dbbf584c82953f63289596fd6Glenn Kasten    SL_LEAVE_INTERFACE
16961ac0ade16f84d877dfd8d0e984eb203d4a2901dGlenn Kasten}
17061ac0ade16f84d877dfd8d0e984eb203d4a2901dGlenn Kasten
171ed46c29d6a09112dbbf584c82953f63289596fd6Glenn Kasten
17261ac0ade16f84d877dfd8d0e984eb203d4a2901dGlenn Kastenstatic SLresult IMetadataExtraction_ClearKeyFilter(SLMetadataExtractionItf self)
17361ac0ade16f84d877dfd8d0e984eb203d4a2901dGlenn Kasten{
174ed46c29d6a09112dbbf584c82953f63289596fd6Glenn Kasten    SL_ENTER_INTERFACE
175ed46c29d6a09112dbbf584c82953f63289596fd6Glenn Kasten
176bcc5c7225e3b7a1dbf2e9e830987f69167acf06fGlenn Kasten    IMetadataExtraction *thiz = (IMetadataExtraction *) self;
177bcc5c7225e3b7a1dbf2e9e830987f69167acf06fGlenn Kasten    thiz->mKeyFilter = 0;
178ed46c29d6a09112dbbf584c82953f63289596fd6Glenn Kasten    result = SL_RESULT_SUCCESS;
179ed46c29d6a09112dbbf584c82953f63289596fd6Glenn Kasten
180ed46c29d6a09112dbbf584c82953f63289596fd6Glenn Kasten    SL_LEAVE_INTERFACE
18161ac0ade16f84d877dfd8d0e984eb203d4a2901dGlenn Kasten}
18261ac0ade16f84d877dfd8d0e984eb203d4a2901dGlenn Kasten
183ed46c29d6a09112dbbf584c82953f63289596fd6Glenn Kasten
18461ac0ade16f84d877dfd8d0e984eb203d4a2901dGlenn Kastenstatic const struct SLMetadataExtractionItf_ IMetadataExtraction_Itf = {
18561ac0ade16f84d877dfd8d0e984eb203d4a2901dGlenn Kasten    IMetadataExtraction_GetItemCount,
18661ac0ade16f84d877dfd8d0e984eb203d4a2901dGlenn Kasten    IMetadataExtraction_GetKeySize,
18761ac0ade16f84d877dfd8d0e984eb203d4a2901dGlenn Kasten    IMetadataExtraction_GetKey,
18861ac0ade16f84d877dfd8d0e984eb203d4a2901dGlenn Kasten    IMetadataExtraction_GetValueSize,
18961ac0ade16f84d877dfd8d0e984eb203d4a2901dGlenn Kasten    IMetadataExtraction_GetValue,
19061ac0ade16f84d877dfd8d0e984eb203d4a2901dGlenn Kasten    IMetadataExtraction_AddKeyFilter,
19161ac0ade16f84d877dfd8d0e984eb203d4a2901dGlenn Kasten    IMetadataExtraction_ClearKeyFilter
19261ac0ade16f84d877dfd8d0e984eb203d4a2901dGlenn Kasten};
19361ac0ade16f84d877dfd8d0e984eb203d4a2901dGlenn Kasten
19461ac0ade16f84d877dfd8d0e984eb203d4a2901dGlenn Kastenvoid IMetadataExtraction_init(void *self)
19561ac0ade16f84d877dfd8d0e984eb203d4a2901dGlenn Kasten{
196bcc5c7225e3b7a1dbf2e9e830987f69167acf06fGlenn Kasten    IMetadataExtraction *thiz = (IMetadataExtraction *) self;
197bcc5c7225e3b7a1dbf2e9e830987f69167acf06fGlenn Kasten    thiz->mItf = &IMetadataExtraction_Itf;
198bcc5c7225e3b7a1dbf2e9e830987f69167acf06fGlenn Kasten    thiz->mKeySize = 0;
199bcc5c7225e3b7a1dbf2e9e830987f69167acf06fGlenn Kasten    thiz->mKey = NULL;
200bcc5c7225e3b7a1dbf2e9e830987f69167acf06fGlenn Kasten    thiz->mKeyEncoding = 0 /*TBD*/;
201bcc5c7225e3b7a1dbf2e9e830987f69167acf06fGlenn Kasten    thiz->mValueLangCountry = 0 /*TBD*/;
202bcc5c7225e3b7a1dbf2e9e830987f69167acf06fGlenn Kasten    thiz->mValueEncoding = 0 /*TBD*/;
203bcc5c7225e3b7a1dbf2e9e830987f69167acf06fGlenn Kasten    thiz->mFilterMask = 0 /*TBD*/;
204bcc5c7225e3b7a1dbf2e9e830987f69167acf06fGlenn Kasten    thiz->mKeyFilter = 0;
20561ac0ade16f84d877dfd8d0e984eb203d4a2901dGlenn Kasten}
206