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

六安网站排名优化电话一个具体网站的seo优化方案

六安网站排名优化电话,一个具体网站的seo优化方案,专注网站建设16年,在哪里查网站是什么时候建站AVFrame和AVPacket是ffmpeg中保存音视频数据的结构体#xff0c;AVFrame保存未压缩的原始音视频数据#xff0c;AVPacket保存编码后的音视频数据#xff0c;AVFrame和AVPacket都是使用引用计数进行的内存管理。 一、AVFrame 内存分配#xff1a; 视频#xff1a; AVFra…        AVFrame和AVPacket是ffmpeg中保存音视频数据的结构体AVFrame保存未压缩的原始音视频数据AVPacket保存编码后的音视频数据AVFrame和AVPacket都是使用引用计数进行的内存管理。 一、AVFrame 内存分配 视频 AVFrame* frame av_frame_alloc(); frame-width 1920; frame-height 1080; frame-format AV_PIX_FMT_YUV420P; 音频 AVFrame* pcm av_frame_alloc(); pcm-format outSampleFmt;//位深 16/32位 pcm-channels channels; pcm-channel_layout av_get_default_channel_layout(channels); pcm-nb_samples nbSample;//样本数 AVFrame *av_frame_clone(const AVFrame *src);//作用同av_frame_ref类似增加src的引用计数但同时会初始化av_frame_clone 对象 AVFrame buf内存分配 av_frame_get_buffer(AVFrame *frame, int algin); AVFrame 释放 void av_frame_free(AVFrame** frame) 音视频内存操作相关API 其中AVPictureav_image_* 的函数就是涉及到了保存视频帧的方式av_samples_*的函数则涉及了如何保存音频数据。 typedef struct AVPicture {attribute_deprecateduint8_t *data[AV_NUM_DATA_POINTERS]; /// pointers to the image data planesattribute_deprecatedint linesize[AV_NUM_DATA_POINTERS]; /// number of bytes per line } AVPicture; 下面API中的align一般设置为1按实际字节存储。 1、视频buf操作 void av_image_copy(uint8_t *dst_data[4], int dst_linesizes[4],const uint8_t *src_data[4], const int src_linesizes[4],enum AVPixelFormat pix_fmt, int width, int height)//根据图像的宽、高、像素格式进行图像拷贝int av_image_copy_to_buffer(uint8_t *dst, int dst_size,const uint8_t * const src_data[4],const int src_linesize[4],enum AVPixelFormat pix_fmt,int width, int height, int align)//把图像数据拷贝到指定缓冲区int av_image_get_buffer_size(enum AVPixelFormat pix_fmt, int width, int height, int align);//函数的作用是通过指定像素格式、图像宽、图像高来计算所需的内存大小int av_image_alloc(uint8_t *pointers[4], int linesizes[4],int w, int h, enum AVPixelFormat pix_fmt, int align);//根据宽高、格式分配buf尝试使用av_freep(pointers[0]释放否则可能内存泄漏int avpicture_fill(AVPicture *picture, const uint8_t *ptr,enum AVPixelFormat pix_fmt, int width, int height);//尝试使用av_freep(pointers[0]释放否则可能内存泄漏这个API在新版本弃用eg:avpicture_fill((AVPicture *)frame, (const uint8_t *)ptr,(enum AVPixelFormat)frame-format, in_width, in_height);int av_image_fill_arrays(uint8_t *dst_data[4], int dst_linesize[4],const uint8_t *src, enum AVPixelFormat pix_fmt, int width, int height, int align);//avpicture_fill的替代APIavpicture_fill()就是调用av_image_fill_arrays实现的 2、音频buf操作 buf分配视频帧最多有4个分量音频帧只需要一个linesize而略有变化其本质是完全相同的。 int av_samples_copy(uint8_t **dst, uint8_t * const *src, int dst_offset,int src_offset, int nb_samples, int nb_channels,enum AVSampleFormat sample_fmt)//音频帧拷贝av_samples_copy_to_buffer音频没有这个函数int av_samples_get_buffer_size(int *linesize, int nb_channels, int nb_samples, enum AVSampleFormat sample_fmt, int align);//获取音频帧缓冲区大小int av_samples_alloc(uint8_t **audio_data, int *linesize, int nb_channels,int nb_samples, enum AVSampleFormat sample_fmt, int align);//根据通道数、样本个数采样格式分配bufint av_samples_fill_arrays(uint8_t **audio_data, int *linesize,const uint8_t *buf, int nb_channels, int nb_samples,enum AVSampleFormat sample_fmt, int align)//同av_image_fill_arraysint av_samples_alloc_array_and_samples(uint8_t ***audio_data, int *linesize, int nb_channels,int nb_samples, enum AVSampleFormat sample_fmt, int align)//av_samples_alloc()和av_samples_alloc_array_and_samples()函数都是用于分配存储音频数据的空间int av_samples_set_silence(uint8_t **audio_data, int offset,int nb_samples,int nb_channels,enum AVSampleFormat sample_fmt);//以静音数据填充缓冲区 二、AVPacket av_free_packet其实就是清空pkt中data以及buf的内容并没有把pkt的指针清空我们可以看到其函数内部调用了av_buffer_unref。 void av_free_packet(AVPacket *pkt) {if (pkt) {if (pkt-buf)av_buffer_unref(pkt-buf);pkt-data NULL;pkt-size 0;av_packet_free_side_data(pkt);} } 而av_packet_free是先把pkt中的内容清空然后再把指针清空让pkt彻底无法使用了如果需要重新使用需要重新分配内存。 void av_packet_free(AVPacket **pkt) {if (!pkt || !*pkt)return;av_packet_unref(*pkt);av_freep(pkt); } 其他API void av_packet_ref(AVPacket *dst, const AVPacket *src)void av_init_packet(AVPacket *pkt);//初始化packet的值为默认值该函数不会影响data引用的数据缓存空间和size需要单独处理。int av_new_packet(AVPacket *pkt, int size);//av_init_packet的增强版不但会初始化字段还为data分配了存储空间AVPacket *av_packet_alloc(void);//创建一个AVPacket将其字段设为默认值data为空没有数据缓存空间。void av_packet_free(AVPacket **pkt);//释放使用av_packet_alloc创建的AVPacket如果该Packet有引用计数packet-buf不为空则先调用av_packet_unref。AVPacket *av_packet_clone(const AVPacket *src);//其功能是av_packet_alloc和av_packet_refint av_copy_packet(AVPacket *dst, const AVPacket *src);//复制一个新的packet包括数据缓存废弃 int av_copy_packet_side_data(AVPacket *dst, const AVPacket *src);//初始化一个引用计数的packet并指定了其数据缓存 替换接口 int av_packet_copy_props(AVPacket *dst, const AVPacket *src);int av_grow_packet(AVPacket *pkt, int grow_by);//增大Packet-data指向的数据缓存void av_shrink_packet(AVPacket *pkt, int size);//减小Packet-data指向的数据缓存int av_packet_from_data(AVPacket *pkt, uint8_t *data, int size)//通过压缩数据来初始化一个引用计数的AVPacket(pkt必须是创建好的),一般在读取流媒体时使用,因为解码函数的参数必须是AVPacketint av_buffer_get_ref_count (const AVBufferRef *buf)//获取引用个数 三、其他 av_get_pix_fmt_name(AVPixelFormat) //获取视频像素格式名称字符串 av_get_sample_fmt_name(AVSampleFormat) //获取音频格式名称字符串
http://www.pierceye.com/news/271802/

相关文章:

  • 南京城乡住房建设厅网站wordpress文章模板下载
  • 有一个做搞笑英语视频网站外贸建站优化
  • 苏州公司建设网站深圳品牌蛋糕店有哪些品牌排行
  • 手机网站建设视频教程、网站建设项目功能需求分析报告
  • 纸 技术支持 东莞网站建设wordpress 手机 自建站
  • 网站后台 搜索广告发布合同模板
  • 手机网站设计教程网站建设 职位
  • 外贸网站图片素材谷歌seo和百度seo区别
  • 龙华网站 建设深圳信科潍坊网站建设培训
  • 域名网站平台qq在线登录
  • 成都做网站建设公司网站建设公司销售技巧
  • 打开网站是iis7三亚最新发布
  • php外贸网站中山网站建设方案报价
  • 好网站建设公司开发方案广告传媒公司加盟
  • 郑州膏药网站建设石家庄seo管理
  • 做国外产品描述的网站营销wordpress
  • 服务器2003怎么做网站枣庄网站建设电话
  • 南京网站建设一条龙汶上网站制作
  • 黑龙江微信网站开发郑州热门网络推广免费咨询
  • 深圳坪山站永久免费linux服务器
  • 东莞网站建议ipv6在家做网站
  • 政务网站源码1688电脑网页版
  • 大连企业网站网站rar文件
  • 揭阳东莞网站建设手机网站分享代码
  • 网站设计风格分析wordpress 用户介绍
  • 中国教育网站官网wordpress 自定义循环
  • 中国婚恋网站排名苏州网站建设设计公司哪家好
  • 微软雅黑做网站是否侵权杭州标志设计公司
  • 个人网站如何制作教程网站通栏广告设计
  • 网站建设与维护要求wordpress 常数函数