ffmpeg dec中AVCodecHWConfigInternal在那里使用

news2024/9/24 1:19:39

在做ffmpeg decode插件的时候,发现需要增加一个AVCodecHWConfigInternal数组,

//就是这个数组
static const AVCodecHWConfigInternal *efcodec_hw_configs[] = {
    &(const AVCodecHWConfigInternal) {
        .public= {
            .pix_fmt     = AV_PIX_FMT_EFCCODEC,
            .methods     = AV_CODEC_HW_CONFIG_METHOD_HW_DEVICE_CTX |
                           AV_CODEC_HW_CONFIG_METHOD_INTERNAL,
            .device_type = AV_HWDEVICE_TYPE_EFCODEC
        },
        .hwaccel = NULL,
    },
    NULL
};

#define EFCODEC_CLASS(NAME) \
    static const AVClass efcodec_ ## NAME ## _dec_class = { \
        .class_name = #NAME "_efcodec_decoder", \
        .item_name  = av_default_item_name, \
        .option     = options, \
        .version    = LIBAVUTIL_VERSION_INT, \
    };

#define EFCODECDEC(NAME, LONGNAME, CODEC, bsf_name) \
    EFCODEC_CLASS(NAME) \
    const AVCodec ff_ ## NAME ## _efcodec_decoder = { \
        .name           = #NAME "_efcodec" , \
        .long_name      = NULL_IF_CONFIG_SMALL("EFCODEC DEC " LONGNAME " decoder wrapper"), \
        .type           = AVMEDIA_TYPE_VIDEO, \
        .id             = CODEC , \
        .priv_data_size = sizeof(EFCodecDecContext_t), \
        .priv_class     = &efcodec_ ## NAME ## _dec_class, \
        .init           = efcodec_decode_init, \
        .receive_frame  = efcodec_receive_frame, \
        .close          = efcodec_decode_close, \
        .bsfs           = bsf_name, \
        .capabilities   = AV_CODEC_CAP_HARDWARE | AV_CODEC_CAP_DELAY | AV_CODEC_CAP_AVOID_PROBING, \
        .caps_internal  = FF_CODEC_CAP_SETS_PKT_DTS | FF_CODEC_CAP_INIT_CLEANUP, \
        .pix_fmts       = (const enum AVPixelFormat[]){AV_PIX_FMT_EFCCODEC,   AV_PIX_FMT_YUV420P,    \
                                                        AV_PIX_FMT_NV12,      AV_PIX_FMT_NV21,       \
                                                        AV_PIX_FMT_RGB24,     AV_PIX_FMT_RGB24P,     \
                                                        AV_PIX_FMT_BGR24,     AV_PIX_FMT_BGR24P,     \
                                                        AV_PIX_FMT_YUV444P,   AV_PIX_FMT_YUV444P10LE,\
                                                        AV_PIX_FMT_P010,      AV_PIX_FMT_P010LE,     \
                                                        AV_PIX_FMT_GRAY8,     AV_PIX_FMT_GRAY10,    AV_PIX_FMT_NONE },  \
        .hw_configs     = efcodec_hw_configs, \
        .wrapper_name   = "efcodec", \
    }

一直不清楚这个结构是做干什么用的,后来看ffmpeg.c的时候发现,实在avcodec_get_hw_config()函数中使用:
在这里插入图片描述

const AVCodecHWConfig *avcodec_get_hw_config(const AVCodec *codec, int index)
{
    int i;
    if (!codec->hw_configs || index < 0)
        return NULL;
    for (i = 0; i <= index; i++)
        if (!codec->hw_configs[i])
            return NULL;
    return &codec->hw_configs[index]->public;
}

不过大多数时候都是设置为NULL
在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/689680.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Jupyter notebook运行环境创建

进入到jupyter notebook,没找到自己之前创建的环境xzc_pytorch 进入到Anaconda prompt,输入如下命令 (xzc_pytorch) C:\Users\xzc> conda install ipykernel安装完后&#xff0c;重启jupyter notebook发现还是没有 &#xff0c;此时选择手动创建&#xff0c;在base环境下执…

【Nginx】第四章 Nginx配置实例-反向代理

4.1 反向代理实例一 实现效果&#xff1a;使用nginx反向代理&#xff0c;访问 www.123.com 直接跳转到localhost:8080 4.1.1 实验准备工作 启动一个 tomcat&#xff0c;浏览器地址栏输入 localhost:8080&#xff0c;出现如下界面 在liunx系统安装tomcat&#xff0c;使用默认…

【运维部署】亚马逊云服务器安装后通过Xhell远程登录提示“所选的用户密钥未在远程主机上注册。请再试一次”

这里写自定义目录标题 背景解决方案第一步 确认配置第二步 确认权限方案C 背景 最新亚马逊云服务准备扩容&#xff0c;新建了一台Ubuntu服务器&#xff0c;密钥对使用原来服务器上的密钥对&#xff0c;创建后直接迁移到了新的服务器上。 通过 less .ssh/authorized_keys 可以查…

【Rust】1、实战:语法和数据结构、生命周期-所有权-借用、自制 CPU、内存

文章目录 一、概述1.1 安全性1.1.1 垂悬指针1.1.2 数据竞争1.1.3 迭代器失效 1.2 性能1.3 vscode 設置 二、基础语法2.1 循环2.2 引用2.3 生命周期2.4 泛型2.5 实战grep项目2.6 数组2.6.1 数组和切片2.6.2 动态数组2.6.3 初始化 2.7 包含第三方库2.8 命令行参数2.9 读文件2.9.1…

Python零基础入门(六)——超详细的字符串与正则表达式

系列文章目录 个人简介&#xff1a;机电专业在读研究生&#xff0c;CSDN内容合伙人&#xff0c;博主个人首页 Python入门专栏&#xff1a;《Python入门》欢迎阅读&#xff0c;一起进步&#xff01;&#x1f31f;&#x1f31f;&#x1f31f; 码字不易&#xff0c;如果觉得文章不…

基于java的汽车服务管理系统(Car Service Management System)

设计一款基于java的管理和跟踪对车辆所做服务的系统。我们的系统允许服务技术人员跟踪客户、他们的车辆以及对这些车辆所做的服务。 需要项目的朋友私信我&#xff01;&#xff01;&#xff01;&#xff01;&#xff01;&#xff01; Car Service Management System 基本的使用…

【OpenCV • c++】颜色数据结构与颜色空间转换

&#x1f680; 个人简介&#xff1a;CSDN「博客新星」TOP 10 &#xff0c; C/C 领域新星创作者&#x1f49f; 作 者&#xff1a;锡兰_CC ❣️&#x1f4dd; 专 栏&#xff1a;【OpenCV • c】计算机视觉&#x1f308; 若有帮助&#xff0c;还请关注➕点赞➕收藏&#xff…

chatgpt赋能python:Python:一个值得花钱学习的编程语言

Python&#xff1a;一个值得花钱学习的编程语言 近年来&#xff0c;Python成为了一款备受欢迎的编程语言&#xff0c;尤其在数据科学、人工智能等领域表现出色。许多人开始进入Python编程领域&#xff0c;而且Python培训课程也爆发式增长。但是&#xff0c;一些人对于Python的…

react中基于腾讯云cos上传图片组件

react中基于腾讯云cos上传图片组件 效果示例图上传图片组件imageUploadcomponents/imageUpload/index.jsxcomponents/imageUpload/upload.scss 使用组件 效果示例图 上传图片组件imageUpload npm install cos-js-sdk-v5 -S components/imageUpload/index.jsx import ".…

Mac 打开/关闭 iCloud 后导致桌面文件夹、文档删除,恢复步骤!

不小心打开/关闭了 iCloud 后&#xff0c;导致桌面内容全部丢失&#xff0c;再次打开同步&#xff0c;发现还是确实很多内容&#xff0c;如何找回最初的文件副本。 当 iCloud 关闭时&#xff0c;会将任何未上传到 iCloud 云盘的文稿内容转移打包放到当前 Mac 电脑的个人文件夹…

ChatGPT批量生成文章软件:助力创作高效快捷文章

随着人工智能技术的不断发展&#xff0c;ChatGPT批量生成文章软件已经成为了一种强大的创作工具。它能够通过自然语言处理和机器学习算法&#xff0c;快速生成高质量的文章&#xff0c;为创作者提供了高效快捷的创作体验。本文将从随机8-20个方面对ChatGPT批量生成文章软件进行…

【从零开始学习JAVA | 第二十一篇】常见API介绍 System

目录 前言&#xff1a; System&#xff1a; System类中静态方法&#xff1a; 总结&#xff1a; 前言&#xff1a; system 是一个很底层的 API&#xff0c;是一个工具类&#xff0c;提供了一些与系统相关的方法。他在我们写项目的时候提供了一些非常实用的方法&#xff0c;本…

基于Filebeat+Kafka+ELK实现Nginx日志收集并采用Elastalert2实现钉钉告警

目录 基于FilebeatKafkaELK实现Nginx日志收集1.规划好项目架构图2.部署前端web集群3.部署ES集群集群介绍环境准备集群搭建分片和副本 4.部署kafka集群环境准备静态IP配置重启网络服务域名解析设置安装时间同步服务关闭防火墙和selinux kafka集群依赖于zookeeperkafaka和zookeep…

8 系统定时器(Systick)

目录 系统定时器&#xff08;Systick&#xff09; SysTick定时器特性介绍 SysTick定时器的功能 SysTick定时器寄存器介绍 Systick定时器的使用 系统定时器&#xff08;Systick&#xff09; SysTick定时器特性介绍 计数宽度&#xff1a; 24bit来存储数据&#xff0c;2^24…

HOT21-搜索二维矩阵II

leetcode原题链接&#xff1a; 搜索二维矩阵II 题目描述 编写一个高效的算法来搜索 m x n 矩阵 matrix 中的一个目标值 target 。该矩阵具有以下特性&#xff1a; 每行的元素从左到右升序排列。每列的元素从上到下升序排列。 示例 1&#xff1a; 输入&#xff1a;matrix [[…

【CSS3系列】第八章 · 伸缩盒模型

写在前面 Hello大家好&#xff0c; 我是【麟-小白】&#xff0c;一位软件工程专业的学生&#xff0c;喜好计算机知识。希望大家能够一起学习进步呀&#xff01;本人是一名在读大学生&#xff0c;专业水平有限&#xff0c;如发现错误或不足之处&#xff0c;请多多指正&#xff0…

基于matlab使用深度学习的语义分割算法实现(附源码)

一、前言 此示例演示如何使用语义分割网络对图像进行分割。 语义分割网络对图像中的每个像素进行分类&#xff0c;从而生成按类分割的图像。语义分割的应用包括自动驾驶的道路分割和医疗诊断的癌细胞分割。 此示例首先向您展示如何使用预训练的 Deeplab v3 [1] 网络分割图像&am…

git权限异常:fatal: Authentication failed for

本地电脑用户密码修改了&#xff0c;git 提交&#xff0c;拉取出现异常, 就会报这个错误fatal: Authentication failed for http://xxx/xxx/xxx 解决方法&#xff1a; git config --system --unset credential.helper 免输入用户密码方法&#xff1a; git config --global…

【超简单】Ubuntu 安装 bcompare 对比工具

下载 bcompare 安装包&#xff1a;《bcompare-4.4.6.27483_amd64.deb》 https://www.scootersoftware.com/download.php?zzdl4 安装 becompare 安装&#xff1a; sudo dpkg -i bcompare-4.4.6.27483_amd64.deb破解 cd /usr/lib/beyondcompare/ sudo sed -i "s/kee…

革新写作方式:ChatGPT最新版带来高质量聚合文章的批量生成

随着人工智能技术的不断发展&#xff0c;自然语言处理模型也在不断进步。ChatGPT最新版作为一种强大的语言模型&#xff0c;可以生成高质量的聚合文章&#xff0c;为写作方式带来了革新。本文将详细阐述ChatGPT最新版带来的革新之处&#xff0c;包括其应用领域、生成文章的流程…