参照元†
- FIXME: これは何?
- ロード済みの OpenMAX ライブラリの情報を返す。
もし一度もロードされていなければライブラリをロードする。
返り値†
static inline GOmxImp *
request_imp (const gchar * name)
{
GOmxImp *imp = NULL;
g_mutex_lock (imp_mutex);
imp = g_hash_table_lookup (implementations, name);
- 既に指定された OpenMAX ライブラリをロード済みなら、
キャッシュされた情報を返す。
if (!imp) {
imp = imp_new (name);
if (imp)
g_hash_table_insert (implementations, g_strdup (name), imp);
}
g_mutex_unlock (imp_mutex);
if (!imp)
return NULL;
- まだロードしていなければ OpenMAX ライブラリをロードし、
キャッシュに追加する。
g_mutex_lock (imp->mutex);
if (imp->client_count == 0) {
OMX_ERRORTYPE omx_error;
omx_error = imp->sym_table.init ();
- 初めて使うライブラリの場合、ライブラリの OMX_Init() を呼ぶ
if (omx_error) {
g_mutex_unlock (imp->mutex);
return NULL;
}
}
imp->client_count++;
g_mutex_unlock (imp->mutex);
return imp;
}
コメント†