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

页面好看的蛋糕网站深圳华强北手机城

页面好看的蛋糕网站,深圳华强北手机城,夜场网站建设,百度站长工具怎么用一、引言 AVIOContext是FFmpeg#xff08;本文演示用的FFmpeg源码版本为5.0.3#xff09;中的字节流上下文结构体#xff0c;用来管理输入输出数据。打开一个媒体文件的时候#xff0c;需要先把数据从硬盘读到缓冲区#xff0c;然后会用到AVIOContext中的如下成员#x…一、引言 AVIOContext是FFmpeg本文演示用的FFmpeg源码版本为5.0.3中的字节流上下文结构体用来管理输入输出数据。打开一个媒体文件的时候需要先把数据从硬盘读到缓冲区然后会用到AVIOContext中的如下成员 typedef struct AVIOContext { //.../** The following shows the relationship between buffer, buf_ptr,* buf_ptr_max, buf_end, buf_size, and pos, when reading and when writing* (since AVIOContext is used for both):************************************************************************************ READING************************************************************************************ | buffer_size |* |---------------------------------------|* | |** buffer buf_ptr buf_end* --------------------------------------* |/ / / / / / / /|/ / / / / / /| |* read buffer: |/ / consumed / | to be read /| |* |/ / / / / / / /|/ / / / / / /| |* --------------------------------------** pos* ------------------------------------------------------------* input file: | | |* ------------------------------------------------------------************************************************************************************* WRITING************************************************************************************ | buffer_size |* |--------------------------------------|* | |** buf_ptr_max* buffer (buf_ptr) buf_end* -------------------------------------* |/ / / / / / / / / / / /| |* write buffer: | / / to be flushed / / | |* |/ / / / / / / / / / / /| |* -------------------------------------* buf_ptr can be in this* due to a backward seek** pos* -----------------------------------------------------------* output file: | | |* -----------------------------------------------------------**/unsigned char *buffer; /** Start of the buffer. */int buffer_size; /** Maximum buffer size */unsigned char *buf_ptr; /** Current position in the buffer */unsigned char *buf_end; /** End of the data, may be less thanbufferbuffer_size if the read function returnedless data than requested, e.g. for streams whereno more data has been received yet. */ //...int64_t pos; /** position in the file of the current buffer */ //... } AVIOContext; 从输入缓冲区读取数据的时候 成员变量buffer恒指向输入缓冲区的开头。 成员变量buffer_size成员buffer指向的缓冲区的大小单位为字节。 成员变量buf_ptr指向输入缓冲区中当前读取到的位置。 成员变量buf_end恒指向输入缓冲区的末尾。 简单来讲 * READING************************************************************************************ | buffer_size |* |---------------------------------------|* | |** buffer buf_ptr buf_end* --------------------------------------* |/ / / / / / / /|/ / / / / / /| |* read buffer: |/ / consumed / | to be read /| |* |/ / / / / / / /|/ / / / / / /| |* -------------------------------------- FFmpeg源码中通过下面函数读取AVIOContext结构体中成员变量buffer指向的输入缓冲区的数据。这些函数都声明在FFmpeg源码的头文件libavformat/avio.h中 /*** name Functions for reading from AVIOContext* {** note return 0 if EOF, so you cannot use it if EOF handling is* necessary*/ int avio_r8 (AVIOContext *s); unsigned int avio_rl16(AVIOContext *s); unsigned int avio_rl24(AVIOContext *s); unsigned int avio_rl32(AVIOContext *s); uint64_t avio_rl64(AVIOContext *s); unsigned int avio_rb16(AVIOContext *s); unsigned int avio_rb24(AVIOContext *s); unsigned int avio_rb32(AVIOContext *s); uint64_t avio_rb64(AVIOContext *s); 二、avio_r8函数的定义 avio_r8函数定义在FFmpeg源码的源文件libavformat/aviobuf.c中 /* XXX: put an inline version */ int avio_r8(AVIOContext *s) {if (s-buf_ptr s-buf_end)fill_buffer(s);if (s-buf_ptr s-buf_end)return *s-buf_ptr;return 0; } 该函数作用是如果还没有读取到输入缓冲区的结尾返回读取到的该输入缓冲区中的一个字节数据也就是返回s-buf_ptr指向的一个字节数据然后让s-buf_ptr指向下一个字节数据。如果已经读取到输入缓冲区的末尾返回0。注意读取到缓冲区的结尾时该函数返回0所以不能同时用它来读取ASCII值为0的字节并且判断是否读到了结尾否则会冲突。也就是说avio_r8函数要么只能读取字符串但可以判断是否到了结尾要么能读取二进制数据但不能判断是否到了结尾。一般来讲选择后者的用法即用它读取二进制数据包含ASCII值为0的数据但不判断是否到了结尾。 三、avio_rl16函数的定义 avio_rl16函数定义在FFmpeg源码的源文件libavformat/aviobuf.c中 unsigned int avio_rl16(AVIOContext *s) {unsigned int val;val avio_r8(s);val | avio_r8(s) 8;return val; } 该函数作用是如果还没有读取到输入缓冲区的结尾返回按照小端模式读取到的该输入缓冲区中的二个字节数据然后让s-buf_ptr指向下下个字节的数据。如果已经读取到输入缓冲区的末尾返回0。注意该函数跟avio_r8函数一样一般用它来读取二进制数据包含ASCII值为0的数据但不判断是否到了结尾。 四、其它相关函数 同理 avio_rl24函数如果还没有读取到输入缓冲区的结尾返回按照小端模式读取到的该输入缓冲区中的三个字节数据然后让s-buf_ptr的值3。如果已经读取到输入缓冲区的末尾返回0。 avio_rl32函数如果还没有读取到输入缓冲区的结尾返回按照小端模式读取到的该输入缓冲区中的四个字节数据然后让s-buf_ptr的值4。如果已经读取到输入缓冲区的末尾返回0。 avio_rl64函数如果还没有读取到输入缓冲区的结尾返回按照小端模式读取到的该输入缓冲区中的八个字节数据然后让s-buf_ptr的值8。如果已经读取到输入缓冲区的末尾返回0。 avio_rb16函数如果还没有读取到输入缓冲区的结尾返回按照大端模式读取到的该输入缓冲区中的二个字节数据然后让s-buf_ptr的值2。如果已经读取到输入缓冲区的末尾返回0。 avio_rb24函数如果还没有读取到输入缓冲区的结尾返回按照大端模式读取到的该输入缓冲区中的三个字节数据然后让s-buf_ptr的值3。如果已经读取到输入缓冲区的末尾返回0。 avio_rb32函数如果还没有读取到输入缓冲区的结尾返回按照大端模式读取到的该输入缓冲区中的四个字节数据然后让s-buf_ptr的值4。如果已经读取到输入缓冲区的末尾返回0。 avio_rb64函数如果还没有读取到输入缓冲区的结尾返回按照大端模式读取到的该输入缓冲区中的八个字节数据然后让s-buf_ptr的值8。如果已经读取到输入缓冲区的末尾返回0。 所有函数跟avio_r8函数一样一般用它们来读取二进制数据包含ASCII值为0的数据但不判断是否到了结尾。
http://www.w-s-a.com/news/261706/

相关文章:

  • 深圳最简单的网站建设家居网站建设全网营销
  • 如何取消网站备案佛山网站优化公司
  • 网站开发 成都广水网站设计
  • 音乐网站建设目标合同管理系统
  • jq网站特效插件如何知道网站是否被k
  • 自己的网站怎么接广告网站搭建收费
  • 宁波大型网站制作建立一个网站 优帮云
  • 大连零基础网站建设教学电话有哪些比较好的做ppt好的网站
  • 哪个网站做logo设计我的建筑网
  • php电子商务网站开发沂源手机网站建设公司
  • html和php做网站哪个好3gcms企业手机网站整站源码asp
  • 网站建设网页设计案例云南建设厅网站删除
  • 杏坛网站制作太原做网站要多少钱呢
  • 做新闻类网站还有市场吗东莞黄页网广告
  • 地方网站做外卖专业做互联网招聘的网站有哪些
  • 网站推广公司兴田德润紧急网页升级紧急通知
  • 厦门做网站哪家强企业网站网页设计的步骤
  • 普拓网站建设济南行业网站建设
  • 燕郊 网站开发网站里的地图定位怎么做
  • 门户网站建设招标互联网创业项目概述
  • 用什么做网站比较好市场调研公司是做什么的
  • 电商网站充值消费系统绍兴网站优化
  • 深圳网站建设公司联虚拟币交易网站开发
  • 专业网站设计建设公司抖音代运营公司排名前十强
  • 做网站架构肃北蒙古族自治县建设局网站
  • 推广网站怎么建经济研究院网站建设方案
  • 网站建设商家淘宝客自建网站做还是用微信qq做
  • django做网站效率高吗涉县移动网站建设报价
  • 做外贸网站注册什么邮箱能够做渗透的网站
  • 购物网站 怎么做织梦网站会员功能