3

私の目的は、適切なスレッドの優先順位を見つけるために微調整を行うことです。

私が懸念しているスレッドは、/hardware/my_company/codec/openmax_il/ の下にあります。

2つのファイルを修正しました

  1. Android.mk

    以下のように、LOCAL_C_INCLUDES のリストに「$(TOP)/system/core/include」を追加します。

    LOCAL_C_INCLUDES:= \
    
        blur blur blur
        $(TOP)/hardware/my_company/camera/v4l2_camerahal \
        $(TOP)/system/core/include
    
  2. 私のソースファイルで。

    #include <cutils/properties.h>
    
    int componentInit(blur blur blur)
    {
       int ret = 0;
    
       blur blur blur
    
       // To find proper thread priority
       char value[92];
       property_get("omx.video_enc.priority", value, "0");
       setVideoEncoderPriority(atoi(value));
    
       return ret;
    }
    

しかし、私はのリンクエラーが発生しました

 error: undefined reference to 'property_get'
 collect2: ld returned 1 exit status

誰かがこれを手伝ってくれるなら、それは私にとって良いことです。:)

ありがとう

4

3 に答える 3

10

ソースファイルに追加する必要があります

#include <cutils/properties.h>

android.mk で libcutils にリンクします。

LOCAL_STATIC_LIBRARIES := libcutils libc
于 2012-11-13T07:59:50.170 に答える
10

__system_property_get()で定義されているを使用したいようです<sys/system_properties.h>。そのヘッダーから:

/* Look up a system property by name, copying its value and a
** \0 terminator to the provided pointer.  The total bytes
** copied will be no greater than PROP_VALUE_MAX.  Returns
** the string length of the value.  A property that is not
** defined is identical to a property with a length 0 value.
*/
int __system_property_get(const char *name, char *value);

プロパティが定義されていない場合に備えてデフォルト値があるため、この署名はまさにあなたが使用しようとしているものではありません。プロパティが定義されていない場合は 0 を返すため__system_property_get()、これを自分で簡単に補足できます。

これが私自身のネイティブコードで問題を解決した方法であり、私にとってはうまく機能します(ただし、バッファオーバーフローチェックが欠けているため、より良い解決策になります):

#include <sys/system_properties.h>
int android_property_get(const char *key, char *value, const char *default_value)
{
    int iReturn = __system_property_get(key, value);
    if (!iReturn) strcpy(value, default_value);
    return iReturn;
}
于 2012-08-10T15:16:35.193 に答える