【FFMPEG源码终极解析】void av_packet_unref(AVPacket *pkt)
av_packet_unref
该接口使用了如下调用,该接口主要作用是清理AVPacket中的所有空间数据,清理完毕后进行初始化操作,并且将 data 与 size 置为0,方便下次调用。
void av_packet_unref(AVPacket *pkt)
{av_packet_free_side_data(pkt);av_buffer_unref(&pkt->buf);av_init_packet(pkt);pkt->data = NULL;pkt->size = 0;
}
void av_packet_free_side_data(AVPacket *pkt)
接口解析:根据AVPacket中side_data_elems来使用for循环逐个清理其中的数据,最后将side_data_elems置为0
void av_packet_free_side_data(AVPacket *pkt)
{int i;for (i = 0; i < pkt->side_data_elems; i++)av_freep(&pkt->side_data[i].data);av_freep(&pkt->side_data);pkt->side_data_elems = 0;
}
av_freep
void av_freep(void *arg)
{void *val;memcpy(&val, arg, sizeof(val));memcpy(arg, &(void *){ NULL }, sizeof(val));av_free(val);
}
av_buffer_unref
void av_buffer_unref(AVBufferRef **buf)
{if (!buf || !*buf)return;buffer_replace(buf, NULL);
}
buffer_replace
static void buffer_replace(AVBufferRef **dst, AVBufferRef **src)
{AVBuffer *b;b = (*dst)->buffer;if (src) {**dst = **src;av_freep(src);} elseav_freep(dst);if (atomic_fetch_sub_explicit(&b->refcount, 1, memory_order_acq_rel) == 1) {b->free(b->opaque, b->data);av_freep(&b);}
}
av_free参考av_free
【FFMPEG源码终极解析】void av_packet_unref(AVPacket *pkt)相关推荐
- 【FFMPEG源码终极解析】 av_packet_alloc 与 av_packet_free
关于void *av_malloc(size_t size)可以参考av_malloc av_packet_alloc实际是分配AVPacket以后,调用av_init_packet对AVPacket ...
- 【FFMPEG源码终极解析】 avformat_open_input (一)
avformat_open_input 打开媒体函数,先上全部源码.然后逐语句分析. int avformat_open_input(AVFormatContext **ps, const cha ...
- FFmpeg 源码之分配与释放 AVPacket 常用函数
查看 packet.h 源码,可以看到一系列的 AVPacket 分配与释放函数.熟悉这些 API 有利于方便在不同场景下使用 AVPacket. 一.av_packet_alloc 分配一个 AVP ...
- 偏向锁、轻量级锁、重量级锁,Synchronized底层源码终极解析!
synchronized是掌握Java高并发的关键知识点,底层源码更是面试重灾区.本文从源码学习synchronized的原理,讲解对象头.偏向锁.轻量级锁.重量级锁等概念. 扫码关注<Java ...
- ffmpeg源码笔记-AvFrame和AvPacket(四)
在FFmpeg中,未压缩的图像和压缩的视频码流分别使用AVFrame结构和AVPacket结构保存; 针对视频编码器,其流程为从数据源获取图像格式的输入数据,保存为AVFrame对象并传入编码器,从编 ...
- FFMPEG 源码分析
FFMPEG基本概念: ffmpeg是一个开源的编解码框架,它提供了一个音视频录制,解码和编码库.FFMPEG是在linux下开发的,但也有windows下的编译版本. ffmpeg项目由以下几部分组 ...
- ffmpeg源码分析与应用示例(一)——H.264解码与QP提取
本文包含以下内容 1.H.264解码流程详述与对应ffmpeg源码解析 2.针对一个应用实例介绍通过修改ffmpeg源码解决问题的方案 具有较强的综合性. 先介绍一下在第二部分中将要解决的实际问题:自 ...
- FFMPEG源码分析(二)
ffmpeg源码分析之数据流 本文主要介绍ffmpeg的数据流,在ffmpeg中主要分有三个主要用途用于媒体流的解码播放,媒体流的转换(解码之后再编码)和媒体流录制. 媒体流的解码播放 在ffmpeg ...
- 从头用脚分析FFmpeg源码 --- avformat_open_input
本文所使用的是FFmpeg n4.4的源码,所有分析均来自博主瞎猜,如果有误,欢迎批评指正. 建议边调试源码,边看对应的源码分析.走上一遍就了解个大概了. avformat_open_input 作用 ...
最新文章
- 基于Vuejs+ElementUI的答案录入功能的一些总结
- 【Python刷题】_2
- Java 添加、更新和移除PDF超链接
- QT学习笔记(四):Qt5+MSVC编译 中文字符显示乱码问题解决
- u8 附件上传后存放路径_织梦DedeCms附件按月份保存的修改方法
- (王道408考研数据结构)第七章查找-第二节2:二分查找及其判定树
- JEECG 3.6.3版本发布 企业级JAVA快速开发平台
- OpenShift 4 - Knative教程 (5) Eventing之Source和Sink
- 【BZOJ4200】[Noi2015]小园丁与老司机 DP+最小流
- java判断字符串不为空_Java判断字符串是否为空的方法
- 2019年春季学期《软件工程》教学总结
- Dataformatstring属性设置(详解)
- AMS1117手册解析
- SAP LSMW 快照批量处理总账科目数据
- 我用python实现了一个量化选股程序
- 如何生成github上的动态gif图
- 学术不端网查重靠谱吗_学术不端网知网查重万方哪一个权威
- 购物商场积分卡小程序开发制作
- Markdown 你真的懂了吗
- 【开源项目】花密(Flower Password)之入门指南