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

新网互联魔方手机网站建站系统系统维护一般要多长时间

新网互联魔方手机网站建站系统,系统维护一般要多长时间,my网站域名,同一虚拟主机 2个网站摘要#xff1a;本文描述FFmpeg中URLContext和URLProtocal的实现。   关键字#xff1a;URLContext、URLProtocal FFmpeg中URLProtocol是具体的协议的抽象#xff0c;其中定义了对应协议的抽象#xff0c;其中包含了具体协议的操作函数指针。而URLContext是对协议操作的抽…  摘要本文描述FFmpeg中URLContext和URLProtocal的实现。   关键字URLContext、URLProtocal FFmpeg中URLProtocol是具体的协议的抽象其中定义了对应协议的抽象其中包含了具体协议的操作函数指针。而URLContext是对协议操作的抽象描述了当前协议的读写状态。和其他结构体一样FFmpeg内部针对每一个协议都有一个static的结构体该结构体描述了对应协议的操作。   另外FFmpeg中有个list保存了所有URLProtocol的指针类似AVCodec都是定义好的静态变量。   该list存储在libavformat\protocol_list.c文件中需要注意的是该文件是通过脚本生成的如果新拉的代码应该看不到configure再make之后就能看到改文件了。 static const URLProtocol * const url_protocols[] {ff_async_protocol,//...ff_file_protocol,ff_ftp_protocol,//...ff_unix_protocol,NULL };1 URLContext 1.1 URLContext URLContext是对IO操作的抽象类似以AVCodecContext其中了当前媒体操作包含的基本信息 描述了当前IO操作的参数。使用过程中URLContext作为AVIO的一个成员用来操作文件流。 typedef struct URLContext {const AVClass *av_class; /** information for av_log(). Set by url_open(). */const struct URLProtocol *prot;void *priv_data;char *filename; /** specified URL */int flags;int max_packet_size; /** if non zero, the stream is packetized with this max packet size */int is_streamed; /** true if streamed (no seek possible), default false */int is_connected; //是否连接网络流AVIOInterruptCB interrupt_callback; //io终止时的callbackint64_t rw_timeout; /** maximum time to wait for (network) read/write operation completion, in mcs */const char *protocol_whitelist; //白名单const char *protocol_blacklist; //黑名单int min_packet_size; /** if non zero, the stream is packetized with this min packet size */ } URLContext;1.2 操作API概要 下面简单列举一些操作API来说明URLContext如何在FFmpeg中使用 int ffurl_alloc(URLContext **puc, const char *filename, int flags, const AVIOInterruptCB *int_cb)根据当前的文件名创建URLContext第一步在url_protocols中根据文件名搜索对应的URLProtocol然后初始化URLContext的默认参数不会做额外多余的动作简单说就是search-malloc-init仅仅参数 const AVIOInterruptCB *int_cb, AVDictionary **options,const char *whitelist, const char* blacklist,URLContext *parent);int ffurl_connect(URLContext *uc, AVDictionary **options);打开链接内部主要就是调用URLProtocol的url_open2函数打开链接然后将is_connected设置为1根据流的类型设置is_streamint ffurl_accept(URLContext *s, URLContext **c);accept链接直接调用的协议的url_accept一般只会用于网络请求对于普通的本地IO基本没用int ffurl_write(URLContext *h, const unsigned char *buf, int size);调用协议的url_write写文件。 从上面的流程大概能够看出URLContext大部分操作都是直接调用的URLProtocol的函数指针额外做一些参数检查与匹配。 2 URLProtocal URLProtocal是具体的IO的描述类类似于具体的AVCodec指针每个类型的IO操作都有其对应的静态对象指针。URLProtocal中用函数指针来表示当前文件操作需要调用的具体操作。 typedef struct URLProtocol {const char *name; //协议名比如httpint (*url_open)( URLContext *h, const char *url, int flags);/*** 下面的函数就是协议连接的api* This callback is to be used by protocols which open further nested* protocols. options are then to be passed to ffurl_open_whitelist()* or ffurl_connect() for those nested protocols.*/int (*url_open2)(URLContext *h, const char *url, int flags, AVDictionary **options);int (*url_accept)(URLContext *s, URLContext **c);int (*url_handshake)(URLContext *c);/*** 下面就是直接读写数据操作的接口* Read data from the protocol.* If data is immediately available (even less than size), EOF is* reached or an error occurs (including EINTR), return immediately.* Otherwise:* In non-blocking mode, return AVERROR(EAGAIN) immediately.* In blocking mode, wait for data/EOF/error with a short timeout (0.1s),* and return AVERROR(EAGAIN) on timeout.* Checking interrupt_callback, looping on EINTR and EAGAIN and until* enough data has been read is left to the calling function; see* retry_transfer_wrapper in avio.c.*/int (*url_read)( URLContext *h, unsigned char *buf, int size); //读数据int (*url_write)(URLContext *h, const unsigned char *buf, int size); //写数据int64_t (*url_seek)( URLContext *h, int64_t pos, int whence); //seekint (*url_close)(URLContext *h); //关闭int (*url_read_pause)(URLContext *h, int pause); //暂停读网络流int64_t (*url_read_seek)(URLContext *h, int stream_index, int64_t timestamp, int flags);int (*url_get_file_handle)(URLContext *h); //获取文件的handleint (*url_get_multi_file_handle)(URLContext *h, int **handles, int *numhandles);int (*url_get_short_seek)(URLContext *h); //int (*url_shutdown)(URLContext *h, int flags); //关闭const AVClass *priv_data_class; //私有数据int priv_data_size; //私有数据的大小int flags; //标志int (*url_check)(URLContext *h, int mask);int (*url_open_dir)(URLContext *h);int (*url_read_dir)(URLContext *h, AVIODirEntry **next);int (*url_close_dir)(URLContext *h);int (*url_delete)(URLContext *h);int (*url_move)(URLContext *h_src, URLContext *h_dst);const char *default_whitelist; } URLProtocol;FFmpeg中每个IO协议都有一个对应的URLProtocol描述该协议IO的具体操作比如文件IO就定义在libavformat/file.c中最终实际调用的都是文件IO那套接口。 const URLProtocol ff_file_protocol {.name file,.url_open file_open,.url_read file_read,.url_write file_write,.url_seek file_seek,.url_close file_close,.url_get_file_handle file_get_handle,.url_check file_check,.url_delete file_delete,.url_move file_move,.priv_data_size sizeof(FileContext),.priv_data_class file_class,.url_open_dir file_open_dir,.url_read_dir file_read_dir,.url_close_dir file_close_dir,.default_whitelist file,crypto,data };
http://www.dnsts.com.cn/news/279811.html

相关文章:

  • 石排仿做网站绿色风格 网站
  • 十堰网站建设多少钱门户网站建设招标文件
  • 贵州网站建设设计局域网wordpress
  • 做骗子网站互联网专业主要学什么
  • 网站建设的申请上海协会网站建设
  • wordpress 首页模版江门百度seo
  • 网站备案几天服务商类型是什么意思
  • 网站前台数据库微信高端网站建设
  • 公司做网站都需要什么南昌集团网站建设公司
  • 换网站了吗vps网站访问不了
  • 网站备案服务号电邮注册网站
  • 长沙电子商务网站建设清华大学网站建设方案
  • 厦门本地网站虚拟机做网站有用吗
  • 云南网站新备案制做淘宝必备网站
  • 做预售的网站网站建设背景怎么设置成
  • 口碑好网站建设哪家好手机建站服务
  • 企业建设网站的空间有哪些有必要花钱学视频剪辑吗
  • icp备案网站名称是什么意思营销网站建设服务
  • 吴江区经济开发区建设工程网站宝塔面板
  • 建网站公司是如何赚钱深鑫辉网站建设
  • 网站建设那些公司比较好招聘网站做专题的目的
  • 四川网站营销seo费用汽车网站建设页面
  • 中企动力科技股份有限公司网站erp系统是干嘛的
  • 软件公司网站源码电子商务门户网站的研究与实现
  • 网站域名在哪里注册科技公司的网站建设费入什么科目
  • 手机网站优化 工具装饰网站建设的方案
  • 深圳企业网站建设专业广告设计网站都有哪些
  • 做刀模线网站唐山做网站公司费用
  • 网站设计与制作包括代做网站毕业设计
  • 青岛网站建设方案维护中小企业网站建设如何