*参照元 [#j397dbff] #backlinks *説明 [#i05f1a75] -パス: [[gstomx-0.10.1/omx/gstomx_util.c]] -FIXME: これは何? --ロード済みの OpenMAX ライブラリの情報を返す。 もし一度もロードされていなければライブラリをロードする。 **引数 [#adac9bbb] -const gchar * name --OpenMAX ライブラリの名前。 --[[gstomx-0.10.1/gchar]] **返り値 [#e239b8a0] -GOmxImp * --OpenMAX ライブラリの情報。 --[[gstomx-0.10.1/GOmxImp]] **参考 [#sf0b83e2] *実装 [#uc5a7e61] static inline GOmxImp * request_imp (const gchar * name) { GOmxImp *imp = NULL; g_mutex_lock (imp_mutex); imp = g_hash_table_lookup (implementations, name); -既に指定された OpenMAX ライブラリをロード済みなら、 キャッシュされた情報を返す。 --[[gstomx-0.10.1/g_mutex_lock()]] --[[gstomx-0.10.1/g_hach_table_lookup()]] if (!imp) { imp = imp_new (name); if (imp) g_hash_table_insert (implementations, g_strdup (name), imp); } g_mutex_unlock (imp_mutex); - --[[gstomx-0.10.1/g_mutex_lock()]] - --[[gstomx-0.10.1/g_hach_table_lookup()]] - if (!imp) return NULL; -まだロードしていなければ OpenMAX ライブラリをロードし、 キャッシュに追加する。 --[[gstomx-0.10.1/imp_new()]] - --[[gstomx-0.10.1/g_hash_table_insert()]] - --[[gstomx-0.10.1/g_mutex_unlock()]] if (!imp) return NULL; g_mutex_lock (imp->mutex); if (imp->client_count == 0) { OMX_ERRORTYPE omx_error; omx_error = imp->sym_table.init (); -初めて使うコンポーネントの場合、コンポーネントの OMX_Init() を呼ぶ -初めて使うライブラリの場合、ライブラリの OMX_Init() を呼ぶ --[[gstomx-0.10.1/OMX_Init()]] if (omx_error) { g_mutex_unlock (imp->mutex); return NULL; } } imp->client_count++; g_mutex_unlock (imp->mutex); return imp; } *コメント [#fb1957e1]