3

我的目标是进行微调以找到适当的线程优先级。

我关注的线程位于 /hardware/my_company/codec/openmax_il/ 下

我修改了2个文件

  1. 安卓.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

听起来您想__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);

此签名并不完全是您想要使用的,因为在未定义属性的情况下您有一个默认值。由于__system_property_get()在未定义属性的情况下返回 0,因此您可以轻松地自行补充。

这是我在自己的本机代码中解决问题的方法,它对我来说效果很好(尽管它缺少缓冲区溢出检查,这将是一个更好的解决方案):

#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 回答
10

您必须在源文件中添加

#include <cutils/properties.h>

并链接到 android.mk 中的 libcutils:

LOCAL_STATIC_LIBRARIES := libcutils libc
于 2012-11-13T07:59:50.170 回答
1

您需要添加:

 #include <cutil/properties.h>

并链接 Andorid.mk 中的 libcutils

LOCAL_WHOLE_STATIC_LIBRARIES := libcutils`
于 2019-06-14T12:17:58.957 回答