2013-06-18 39 views
1

我想在android源代码(4.1)中找到tegra 3的硬件编解码器编解码器。在源代码中,我发现哪里是tegra的android源代码中的硬件编解码代码(4.1)

// /androidos/android4.1/frameworks/av/media/libstagefright/omx 
void OMXMaster::addVendorPlugin() { 
    addPlugin("libstagefrighthw.so"); 
} 

void OMXMaster::addPlugin(const char *libname) { 
    mVendorLibHandle = dlopen(libname, RTLD_NOW); 

    // some code 

    if (createOMXPlugin) { 
     addPlugin((*createOMXPlugin)()); 
    } 
} 

void OMXMaster::addPlugin(OMXPluginBase *plugin) { 
    // some code 
    while ((err = plugin->enumerateComponents(
        name, sizeof(name), index++)) == OMX_ErrorNone) { 
     String8 name8(name); 

     if (mPluginByComponentName.indexOfKey(name8) >= 0) { 
      ALOGE("A component of name '%s' already exists, ignoring this one.", 
       name8.string()); 

      continue; 
     } 

     mPluginByComponentName.add(name8, plugin); 
    } 

    // some code 
} 

因此,Android操作系统将加载 libstagefrighthw.so时需要编码/解码的视频硬件。由于tegre 3支持h.264 hareware编解码器(link),我想在android操作系统中找到代码。但我只能找到qcom和TI的代码。

有没有人可以帮忙指出在哪里可以找到tegra 3硬件编解码器的代码?

+0

它几乎肯定会作为'blob'发布 - 这是一个只有二进制文件的库。除非你有nVidia的NDA。 – marko

+0

@Marko感谢您的评论。对不起,我没有很好地描述我的问题。我只想知道构建'libstagefrighthw.so'的makefile在哪里。例如,对于omap3平台,Android.mk位于'/ androidOS/Android4.1/hardware/ti/omap3/libstagefrighthw'中。 – pyrisn

+0

好吧,我根据'/ androidOS/Android4.1/frameworks/av/media/libstraight'中的“Acodec.cpp”编写了一个例子。它可以工作,但解码具有很高的延迟(640x480分辨率约2〜4秒)。 – pyrisn

回答

0

libstagefrighthw库仅仅是一个“胶合”代码,可以在Android中将供应商专有的媒体框架与libstagefright框架进行修补。这种方法用于实现hardware specific custom codecs

qcom,ti您看到的代码是在某段时间内同步到“主线”Android库中的代码。对于tegra特定的代码,您需要掌握适当的Tegra开发存储库。 (This也许?)


您可能还需要到CM 10.2回购中检出Tegra3 libstagefrighthw代码。