当前位置: 首页 > news >正文

阳高县网站建设北京门窗优化

阳高县网站建设,北京门窗优化,一个网站怎么做提现自动到账,360怎么变成建设银行首选网站文章目录 一、av_packet_ref 函数1、函数原型2、函数源码分析3、函数使用代码示例 二、av_packet_clone 函数1、函数原型2、函数源码分析 FFmpeg 4.0 版本源码地址 : GitHub : https://github.com/FFmpeg/FFmpeg/tree/release/4.0GitCode : https://gitcode.com/gh_mirrors/ff… 文章目录 一、av_packet_ref 函数1、函数原型2、函数源码分析3、函数使用代码示例 二、av_packet_clone 函数1、函数原型2、函数源码分析 FFmpeg 4.0 版本源码地址 : GitHub : https://github.com/FFmpeg/FFmpeg/tree/release/4.0GitCode : https://gitcode.com/gh_mirrors/ff/FFmpeg/tree/release/4.0FFmpeg/libavcodec/avpacket.c 源码 : https://gitcode.com/gh_mirrors/ff/FFmpeg/blob/release/4.0/libavcodec/avpacket.c 一、av_packet_ref 函数 1、函数原型 av_packet_ref 函数 用于 将 源 AVPacket 结构体的属性 和 buf 数据引用 拷贝复制给 目标 AVPacket 结构体 , AVPacket 中的 实际数据 不会进行复制 , 新创建的 AVPacket 只会复制 实际音视频数据的 指针地址 , 函数原型如下 : int av_packet_ref(AVPacket *dst, const AVPacket *src)函数功能 : 将 src 的 结构体字段 复制到 dst ;拷贝 数据的引用 , 并增加 src 中底层数据的引用计数 ; 拷贝的是引用 , 不会对 src 中的实际数据缓冲区进行内存复制 , 避免不必要的性能开销 ; 参数解析 : AVPacket *dst 参数 : 指向 目标 AVPacket 的指针 , 被赋值的对象 ;const AVPacket *src 参数 : 指向 源 AVPacket 的指针 , 数据源 , 被拷贝的对象 ; 返回值 : 拷贝成功 , 返回 0 ;拷贝失败 , 返回 负值 , 该负值表示错误码 ; 2、函数源码分析 av_packet_ref 函数的源码如下 : 分析该函数的源码可知 , 该函数执行两个操作 , 分别是 : 第一步 : 复制 源 结构体 中的 字段值 到 目标结构体 中 ;第二步 : 将 原结构体 的 数据缓冲区 引用 赋值给 目标 数据缓冲区 引用 , 注意 这里 只 复制引用 , 不复制数据 ; 该函数中直接为 AVPacket 结构体字段辅助 , 因此执行该函数之前 , 目标 AVPacket 必须是已经分配好内存 ; int av_packet_ref(AVPacket *dst, const AVPacket *src) {int ret;// 复制源包src的属性到目标包dst包括时间戳、流索引等元数据。ret av_packet_copy_props(dst, src);if (ret 0) // 如果属性复制失败则返回错误码。return ret;// 检查源包是否有缓冲区 (buf)如果没有说明需要分配新的缓冲区。if (!src-buf) {// 为目标包分配缓冲区大小为源包的数据大小。ret packet_alloc(dst-buf, src-size);if (ret 0) // 如果缓冲区分配失败跳转到错误处理。goto fail;// 如果源包的数据大小不为 0将数据从源包复制到目标包的缓冲区。if (src-size)memcpy(dst-buf-data, src-data, src-size);// 将目标包的 data 指针指向分配的缓冲区。dst-data dst-buf-data;} else {// 如果源包有缓冲区通过引用计数创建缓冲区的引用。dst-buf av_buffer_ref(src-buf);if (!dst-buf) { // 如果引用创建失败返回内存分配错误。ret AVERROR(ENOMEM);goto fail;}// 目标包的 data 指针直接指向源包的 data。dst-data src-data;}// 将源包的大小复制到目标包。dst-size src-size;// 如果执行成功返回 0。return 0;fail:// 如果发生错误释放目标包的附加数据如 side data以防止资源泄漏。av_packet_free_side_data(dst);return ret; // 返回错误码。 }3、函数使用代码示例 代码示例 : #include libavcodec/avcodec.h #include libavformat/avformat.hint main() {AVPacket src_pkt, dst_pkt;// 初始化源包和目标包// av_init_packet 初始化 AVPacket 结构体为其成员赋初始值。av_init_packet(src_pkt);av_init_packet(dst_pkt);// 为源包分配内存并假设数据已填充// src_pkt.data 指向分配的 100 字节内存用于模拟填充数据。src_pkt.data av_malloc(100);src_pkt.size 100; // 数据大小设置为 100 字节。// 创建引用// av_packet_ref 创建目标包 dst_pkt 对源包 src_pkt 的引用。// 如果失败打印错误信息并返回 -1。if (av_packet_ref(dst_pkt, src_pkt) 0) {fprintf(stderr, Failed to create packet reference.\n);return -1;}// 此时src_pkt 和 dst_pkt 共享同一底层数据// 打印源包和目标包的数据大小以验证共享关系。printf(src size: %d, dst size: %d\n, src_pkt.size, dst_pkt.size);// 释放引用// 使用 av_packet_unref 释放源包和目标包的引用减少引用计数。av_packet_unref(src_pkt);av_packet_unref(dst_pkt);return 0; }二、av_packet_clone 函数 1、函数原型 av_packet_clone 函数 用于 克隆一个完整的 AVPacket , 该函数实际上相当于 av_packet_alloc 函数 av_packet_ref 函数 ; AVPacket *av_packet_clone(const AVPacket *src)const AVPacket *src 参数 : 指向 需要克隆的源 AVPacket 的指针 ;返回值 : 拷贝成功 : 返回一个指向 新克隆的 AVPacket 的指针 ;拷贝失败 : 返回 NULL , 通常是因为内存分配失败 ; 2、函数源码分析 在下面的 av_packet_clone 函数源码中可以分析处 , av_packet_clone 函数相当于 av_packet_alloc 函数 和 av_packet_ref 函数 的总体效果 ; 在 av_packet_clone 函数中 , 先调用了 av_packet_alloc 函数 , 创建 目标 AVPacket , 然后调用 av_packet_ref 函数 , 将 源 AVPacket 的 数据拷贝给 目标 AVPacket ; AVPacket *av_packet_clone(const AVPacket *src) {// 为克隆的包分配内存并初始化。// 调用 av_packet_alloc 返回一个新的 AVPacket 指针默认值为初始状态。AVPacket *ret av_packet_alloc();// 如果分配失败直接返回 NULL。if (!ret)return ret;// 使用 av_packet_ref 函数将源包 src 的数据和元信息复制到新包 ret 中。// av_packet_ref 返回非零值表示复制失败。if (av_packet_ref(ret, src))// 如果复制失败释放已分配的 AVPacket并将 ret 置为 NULL。av_packet_free(ret);// 返回克隆后的 AVPacket 指针成功或 NULL失败。return ret; }
http://www.w-s-a.com/news/284429/

相关文章:

  • 佛山 做网站公司有哪些网站排名忽然不见了
  • 广告网站建设最专业东莞大朗网站设计
  • 网站做流量的论坛贴吧分销商城系统源码
  • 新手建立网站的步骤网站建设费怎么入分录
  • 哪里建网站性价比高做网站赚取广告费
  • 邢台集团网站建设价格微信怎么做捐钱的网站
  • 做网站费用需要分摊吗装修公司一般多少钱一平方
  • 公司主页的网站格式wordpress自动推送给百度
  • 网站建设辶金手指排名十二wordpress 当数据库
  • 无锡手机网站建设服务苏州展厅设计企业
  • 无锡网站制作需要多少钱北京二次感染最新消息
  • 网站开发视频播放无画面杭州房产信息网官网
  • 网站开发 改进如何创建公众号平台
  • wordpress网站响应很慢只有asp网站代码可以重新编译吗
  • 哪个网站教做饭做的好wordpress热点文章
  • 可以做推广东西的网站重庆网站建设 重庆网站制作
  • 珠海网站建设培训学校wordpress去版权 合法
  • 建设食品商购网站学校网站设计实验报告
  • 建个网站多少钱沭阳奥体小区做网站的
  • 广州视频网站建站公司php网页设计作业代码
  • 成都公司网站设计如何制作网址最简单的方法
  • 温州 做网站福建住房城乡建设部网站
  • 网站自动化采集成都网站设计费用
  • 广东专业网站定制建设淘宝网站的人员组织结构
  • 网站改版seo无锡有多少家公司
  • h5美食制作网站模板下载wordpress大学百度云
  • 零陵做网站建立网站的公司平台
  • 某企业电子商务网站建设网站开发实验结论
  • 自己做的网站突然打不开杭州哪些做网站公司好
  • 株洲专业建设网站免费cms内容管理系统