• Mediacodec 编码过程源码解析


    Mediacodec 编码过程源码解析

    背景:

    Mediacodec 编码过程中,会createinptsurface,然后opengl eglcontext 进行绑定,我们就从源码角度剖析整个过程

    首先看下createInputSurface的过程

    createInputSurface

    C++
    static jobject android_media_MediaCodec_createInputSurface(JNIEnv* env,
            jobject thiz) {
        ALOGV("android_media_MediaCodec_createInputSurface");
        sp codec = getMediaCodec(env, thiz);
        if (codec == NULL || codec->initCheck() != OK) {
            throwExceptionAsNecessary(env, INVALID_OPERATION);
            return NULL;
        }
        // Tell the MediaCodec that we want to use a Surface as input.
        sp bufferProducer;
        status_t err = codec->createInputSurface(&bufferProducer);
        if (err != NO_ERROR) {
            throwExceptionAsNecessary(env, err);
            return NULL;
        }
        // Wrap the IGBP in a Java-language Surface.
        return android_view_Surface_createFromIGraphicBufferProducer(env,
                bufferProducer);
    }

    jobject android_view_Surface_createFromIGraphicBufferProducer(JNIEnv* env,
            const sp& bufferProducer) {
        if (bufferProducer == NULL) {
            return NULL;
        }
        sp surface(new Surface(bufferProducer, true));
        return android_view_Surface_createFromSurface(env, surface);
    }
    jobject android_view_Surface_createFromSurface(JNIEnv* env, const sp& surface) {

  • 相关阅读:
    css3鼠标悬停图片特效,图片悬停效果
    Spring学习(1) 初识Spring
    POSIX 真的不适合对象存储吗?
    RLHF的替代算法之DPO原理解析:从Zephyr的DPO到Claude的RAILF
    kafka+ubuntu20.04+docker配置
    std::async 源码解析
    报表工具应该具备哪些特性?_光点科技
    rest参数
    松散正则表达式在Python中的用法详解
    详细讲解js实现电梯导航
  • 原文地址:https://blog.csdn.net/c553110519/article/details/127102958