小编use*_*819的帖子

如何确认 opus 编码缓冲区大小?

函数 opus_encode 需要帧大小作为参数。在 api doc 中它说缓冲区大小是每个通道的样本数。但是如何确定我应该使用哪个尺寸?

我在android中使用opus。采样率 16k,缓冲区大小 1280。当我在编码和解码中将帧大小设置为 640 时,解码文件的长度是原始 pcm 的一半。当我设置为 960 时,解码文件是原始 pcm 的 2/3。但设置为 1280,encode 将返回 -1 作为 arg 错误。

当我使用酷编辑播放解码时,它比原始 pcm 快。

我的参数肯定有问题。任何使用 opus 的人都可以帮助我。非常感谢。

android opus

3
推荐指数
1
解决办法
3248
查看次数

dalvik如何找到图书馆?

首先,在System.java中,它将Runtime调用为loadLibrary.

public static void loadLibrary(String libName) {
    SecurityManager smngr = System.getSecurityManager();
    if (smngr != null) {
        smngr.checkLink(libName);
    }
    Runtime.getRuntime().loadLibrary(libName, VMStack.getCallingClassLoader());
}
Run Code Online (Sandbox Code Playgroud)

第二,它将VMStack.getCallingClassLoader()调用到findLibrary.

void loadLibrary(String libraryName, ClassLoader loader) {
    if (loader != null) {
        String filename = loader.findLibrary(libraryName);
        if (filename == null) {
            throw new UnsatisfiedLinkError("Couldn't load " + libraryName + ": " +
                    "findLibrary returned null");
        }
        //....
    }
}
Run Code Online (Sandbox Code Playgroud)

所以,我认为VMStack.getCallingClassLoader()是最有意义的.但是在其jni文件dalvik_system_VMStack.cpp中,该Dalvik_dalvik_system_VMStack_getCallingClassLoader功能很难学习.最后,dalvik如何找到图书馆?

static void Dalvik_dalvik_system_VMStack_getCallingClassLoader(const u4* args,
    JValue* pResult){
    ClassObject* clazz =
        dvmGetCaller2Class(dvmThreadSelf()->interpSave.curFrame);

    UNUSED_PARAMETER(args);

    if …
Run Code Online (Sandbox Code Playgroud)

android dalvik

2
推荐指数
1
解决办法
1401
查看次数

标签 统计

android ×2

dalvik ×1

opus ×1