Android 13 - Media框架(21)- ACodec(三)

这一节我们将继续来学习 ACodec 的剩余部分。

    enum {
   
        kFlagIsSecure                                 = 1,
        kFlagPushBlankBuffersToNativeWindowOnShutdown = 2,
        kFlagIsGrallocUsageProtected                  = 4,
        kFlagPreregisterMetadataBuffers               = 8,
    };

    enum {
   
        kVideoGrallocUsage = (GRALLOC_USAGE_HW_TEXTURE
                            | GRALLOC_USAGE_HW_COMPOSER
                            | GRALLOC_USAGE_EXTERNAL_DISP)
                            | static_cast<uint64_t>(BufferUsage::VIDEO_DECODER),
    };

    struct BufferInfo {
   
        enum Status {
   
            OWNED_BY_US,
            OWNED_BY_COMPONENT,
            OWNED_BY_UPSTREAM,
            OWNED_BY_DOWNSTREAM,
            OWNED_BY_NATIVE_WINDOW,
            UNRECOGNIZED,            // not a tracked buffer
        };

        static inline Status getSafeStatus(BufferInfo *info) {
   
            return info == NULL ? UNRECOGNIZED : info->mStatus;
        }

        IOMX::buffer_id mBufferID;
        Status mStatus;
        unsigned mDequeuedAt;

        sp<MediaCodecBuffer> mData;  // the client's buffer; if not using data conversion, this is
                                     // the codec buffer; otherwise, it is allocated separately
        sp<RefBase> mMemRef;         // and a reference to the IMemory, so it does not go away
        sp<MediaCodecBuffer> mCodecData;  // the codec's buffer
        sp<RefBase> mCodecRef;            // and a reference to the IMemory

        sp<GraphicBuffer> mGraphicBuffer;
        bool mNewGraphicBuffer;
        int mFenceFd;
        FrameRenderTracker::Info *mRenderInfo;

        // The following field and 4 methods are used for debugging only
        bool mIsReadFence;
        // Store |fenceFd| and set read/write flag. Log error, if there is already a fence stored.
        void setReadFence(int fenceFd, const char *dbg);
        void setWriteFence(int fenceFd, const char *dbg);
        // Log error, if the current fence is not a read/write fence.
        void checkReadFence(const char *dbg);
        void checkWriteFence(const char *dbg);
    };

相关推荐

  1. Android 13 - Media框架21)- ACodec

    2024-01-09 02:14:05       35 阅读
  2. Android 13 - Media框架21)- ACodec

    2024-01-09 02:14:05       37 阅读
  3. Android 13 - Media框架20)- ACodec(二)

    2024-01-09 02:14:05       31 阅读
  4. Android 13 - Media框架22)- ACodec(四)

    2024-01-09 02:14:05       88 阅读
  5. Android 13 - Media框架(31)- ACodec(七)

    2024-01-09 02:14:05       35 阅读
  6. Android 13 - Media框架(33)- ACodec(九)

    2024-01-09 02:14:05       33 阅读
  7. Android 13 - Media框架22)- MediaCodec(

    2024-01-09 02:14:05       39 阅读

最近更新

  1. TCP协议是安全的吗?

    2024-01-09 02:14:05       19 阅读
  2. 阿里云服务器执行yum,一直下载docker-ce-stable失败

    2024-01-09 02:14:05       19 阅读
  3. 【Python教程】压缩PDF文件大小

    2024-01-09 02:14:05       19 阅读
  4. 通过文章id递归查询所有评论(xml)

    2024-01-09 02:14:05       20 阅读

热门阅读

  1. 2023年终总结

    2024-01-09 02:14:05       37 阅读
  2. 统计素数并求和

    2024-01-09 02:14:05       32 阅读
  3. Kibana相关问题及答案(2024)

    2024-01-09 02:14:05       36 阅读
  4. 面试经典题---151.反转字符串中的单词

    2024-01-09 02:14:05       38 阅读
  5. Logstash相关问题及答案(2024)

    2024-01-09 02:14:05       35 阅读
  6. det_keypoint_unite的C++部署(jetson)

    2024-01-09 02:14:05       36 阅读
  7. 面试算法101:分割等和子集

    2024-01-09 02:14:05       37 阅读
  8. C#_var

    C#_var

    2024-01-09 02:14:05      32 阅读
  9. 2. Mybatis 中SQL 执行原理

    2024-01-09 02:14:05       33 阅读
  10. 2024年1月9日 晨会报告

    2024-01-09 02:14:05       28 阅读