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

仿站能被百度收录吗网站YYQQ建设

仿站能被百度收录吗,网站YYQQ建设,网络空间搜索引擎,网站的备案怎么处理本章主要介绍AVBSF 文章目录 结构体定义对外函数常见的过滤器 从名字我们可以知道这是个码流过滤器#xff0c;我们最常用的是一个叫做h264_mp4toannexb_bsf的东东 这个过滤器的作用是把h264以MP4格式的NALU转换为annexb#xff08;0x000001#xff09; const AVBitStreamF…本章主要介绍AVBSF 文章目录 结构体定义对外函数常见的过滤器 从名字我们可以知道这是个码流过滤器我们最常用的是一个叫做h264_mp4toannexb_bsf的东东 这个过滤器的作用是把h264以MP4格式的NALU转换为annexb0x000001 const AVBitStreamFilter ff_h264_mp4toannexb_bsf {.name h264_mp4toannexb,.priv_data_size sizeof(H264BSFContext),.init h264_mp4toannexb_init,.filter h264_mp4toannexb_filter,.flush h264_mp4toannexb_flush,.codec_ids codec_ids, };结构体定义 /*** addtogroup lavc_core* {*//*** The bitstream filter state.** This struct must be allocated with av_bsf_alloc() and freed with* av_bsf_free().** The fields in the struct will only be changed (by the caller or by the* filter) as described in their documentation, and are to be considered* immutable otherwise.*/ typedef struct AVBSFContext {/*** A class for logging and AVOptions*/const AVClass *av_class;/*** The bitstream filter this context is an instance of.*/const struct AVBitStreamFilter *filter;/*** Opaque filter-specific private data. If filter-priv_class is non-NULL,* this is an AVOptions-enabled struct.*/void *priv_data;/*** Parameters of the input stream. This field is allocated in* av_bsf_alloc(), it needs to be filled by the caller before* av_bsf_init().*/AVCodecParameters *par_in;/*** Parameters of the output stream. This field is allocated in* av_bsf_alloc(), it is set by the filter in av_bsf_init().*/AVCodecParameters *par_out;/*** The timebase used for the timestamps of the input packets. Set by the* caller before av_bsf_init().*/AVRational time_base_in;/*** The timebase used for the timestamps of the output packets. Set by the* filter in av_bsf_init().*/AVRational time_base_out; } AVBSFContext;上面是bsf的上下文下面的是它的插件回调函数 typedef struct AVBitStreamFilter {const char *name;/*** A list of codec ids supported by the filter, terminated by* AV_CODEC_ID_NONE.* May be NULL, in that case the bitstream filter works with any codec id.*/const enum AVCodecID *codec_ids;/*** A class for the private data, used to declare bitstream filter private* AVOptions. This field is NULL for bitstream filters that do not declare* any options.** If this field is non-NULL, the first member of the filter private data* must be a pointer to AVClass, which will be set by libavcodec generic* code to this class.*/const AVClass *priv_class;/****************************************************************** No fields below this line are part of the public API. They* may not be used outside of libavcodec and can be changed and* removed at will.* New public fields should be added right above.******************************************************************/int priv_data_size;int (*init)(AVBSFContext *ctx);int (*filter)(AVBSFContext *ctx, AVPacket *pkt);void (*close)(AVBSFContext *ctx);void (*flush)(AVBSFContext *ctx); } AVBitStreamFilter;看多了就会发现非常相似基本就一个套路一个上下文结构体一个回调插件结构体上下文中一个私有的指针大小为priv_data_size所以如果想要实现插件简单的实现这几个回调函数就可以了。 对外函数 核心对外函数 /*** return a bitstream filter with the specified name or NULL if no such* bitstream filter exists.*/ const AVBitStreamFilter *av_bsf_get_by_name(const char *name);/*** Iterate over all registered bitstream filters.** param opaque a pointer where libavcodec will store the iteration state. Must* point to NULL to start the iteration.** return the next registered bitstream filter or NULL when the iteration is* finished*/ const AVBitStreamFilter *av_bsf_iterate(void **opaque);/*** Allocate a context for a given bitstream filter. The caller must fill in the* context parameters as described in the documentation and then call* av_bsf_init() before sending any data to the filter.** param filter the filter for which to allocate an instance.* param ctx a pointer into which the pointer to the newly-allocated context* will be written. It must be freed with av_bsf_free() after the* filtering is done.** return 0 on success, a negative AVERROR code on failure*/ int av_bsf_alloc(const AVBitStreamFilter *filter, AVBSFContext **ctx);/*** Prepare the filter for use, after all the parameters and options have been* set.*/ int av_bsf_init(AVBSFContext *ctx);/*** Submit a packet for filtering.** After sending each packet, the filter must be completely drained by calling* av_bsf_receive_packet() repeatedly until it returns AVERROR(EAGAIN) or* AVERROR_EOF.** param pkt the packet to filter. The bitstream filter will take ownership of* the packet and reset the contents of pkt. pkt is not touched if an error occurs.* If pkt is empty (i.e. NULL, or pkt-data is NULL and pkt-side_data_elems zero),* it signals the end of the stream (i.e. no more non-empty packets will be sent;* sending more empty packets does nothing) and will cause the filter to output* any packets it may have buffered internally.** return 0 on success. AVERROR(EAGAIN) if packets need to be retrieved from the* filter (using av_bsf_receive_packet()) before new input can be consumed. Another* negative AVERROR value if an error occurs.*/ int av_bsf_send_packet(AVBSFContext *ctx, AVPacket *pkt);/*** Retrieve a filtered packet.** param[out] pkt this struct will be filled with the contents of the filtered* packet. It is owned by the caller and must be freed using* av_packet_unref() when it is no longer needed.* This parameter should be clean (i.e. freshly allocated* with av_packet_alloc() or unreffed with av_packet_unref())* when this function is called. If this function returns* successfully, the contents of pkt will be completely* overwritten by the returned data. On failure, pkt is not* touched.** return 0 on success. AVERROR(EAGAIN) if more packets need to be sent to the* filter (using av_bsf_send_packet()) to get more output. AVERROR_EOF if there* will be no further output from the filter. Another negative AVERROR value if* an error occurs.** note one input packet may result in several output packets, so after sending* a packet with av_bsf_send_packet(), this function needs to be called* repeatedly until it stops returning 0. It is also possible for a filter to* output fewer packets than were sent to it, so this function may return* AVERROR(EAGAIN) immediately after a successful av_bsf_send_packet() call.*/ int av_bsf_receive_packet(AVBSFContext *ctx, AVPacket *pkt);/*** Reset the internal bitstream filter state. Should be called e.g. when seeking.*/ void av_bsf_flush(AVBSFContext *ctx);/*** Free a bitstream filter context and everything associated with it; write NULL* into the supplied pointer.*/ void av_bsf_free(AVBSFContext **ctx);其实这些函数内部也很简单主要就是对回调函数的封装。 常见的过滤器 extern const AVBitStreamFilter ff_aac_adtstoasc_bsf; extern const AVBitStreamFilter ff_av1_frame_merge_bsf; extern const AVBitStreamFilter ff_av1_frame_split_bsf; extern const AVBitStreamFilter ff_av1_metadata_bsf; extern const AVBitStreamFilter ff_chomp_bsf; extern const AVBitStreamFilter ff_dump_extradata_bsf; extern const AVBitStreamFilter ff_dca_core_bsf; extern const AVBitStreamFilter ff_eac3_core_bsf; extern const AVBitStreamFilter ff_extract_extradata_bsf; extern const AVBitStreamFilter ff_filter_units_bsf; extern const AVBitStreamFilter ff_h264_metadata_bsf; extern const AVBitStreamFilter ff_h264_mp4toannexb_bsf; extern const AVBitStreamFilter ff_h264_redundant_pps_bsf; extern const AVBitStreamFilter ff_hapqa_extract_bsf; extern const AVBitStreamFilter ff_hevc_metadata_bsf; extern const AVBitStreamFilter ff_hevc_mp4toannexb_bsf; extern const AVBitStreamFilter ff_imx_dump_header_bsf; extern const AVBitStreamFilter ff_mjpeg2jpeg_bsf; extern const AVBitStreamFilter ff_mjpega_dump_header_bsf; extern const AVBitStreamFilter ff_mp3_header_decompress_bsf; extern const AVBitStreamFilter ff_mpeg2_metadata_bsf; extern const AVBitStreamFilter ff_mpeg4_unpack_bframes_bsf; extern const AVBitStreamFilter ff_mov2textsub_bsf; extern const AVBitStreamFilter ff_noise_bsf; extern const AVBitStreamFilter ff_null_bsf; extern const AVBitStreamFilter ff_opus_metadata_bsf; extern const AVBitStreamFilter ff_pcm_rechunk_bsf; extern const AVBitStreamFilter ff_prores_metadata_bsf; extern const AVBitStreamFilter ff_remove_extradata_bsf; extern const AVBitStreamFilter ff_setts_bsf; extern const AVBitStreamFilter ff_text2movsub_bsf; extern const AVBitStreamFilter ff_trace_headers_bsf; extern const AVBitStreamFilter ff_truehd_core_bsf; extern const AVBitStreamFilter ff_vp9_metadata_bsf; extern const AVBitStreamFilter ff_vp9_raw_reorder_bsf; extern const AVBitStreamFilter ff_vp9_superframe_bsf; extern const AVBitStreamFilter ff_vp9_superframe_split_bsf;
http://www.hkea.cn/news/14368478/

相关文章:

  • 沈阳网站建设培训班帮别人起名 做ppt的网站
  • 网站建设企业如何为公司建设wordpress 教育模版
  • wordpress 批量修改文章分类辽宁好的百度seo公司
  • 崇仁网站建设推广费用crm客户管理系统简历
  • h5制作的网站网站建设与管理总结
  • 图片分享网站源码京东商城官网入口
  • 网站搭建官网wordpress添加wow
  • 广东省交通建设监理检测协会网站小白怎么做网站赚钱
  • 网站设计的英文运城购物网站开发设计
  • 网站建设的岗位叫什么推广企业网站最主要的方式
  • 网站建设策划实训总结网站开发 税率
  • 焊接加工订单网seo咨询顾问
  • 辽宁省营商环境建设局网站备案时网站名称
  • 成交型网站建设方案做会员卡网站
  • 怎么样自己制作网站百度地图在线导航查询
  • 旅游网站开发近五年参考文献wordpress端口更改
  • 沈阳城市建设学院官网网站中山做营销型网站
  • 响应试网站和移动端如何推广一个平台
  • 手机网站字体大小规范做网站如何被收录
  • 重新安wordpress网站分毫报价小程序
  • 网站推广 方法psd企业网站模板
  • 建设网站软件帝国和织梦哪个做网站好
  • 邢台中北世纪城网站兼职WordPress mk主题
  • 网站前端开发培训西安珠海溢动网络科技有限公司
  • 北海市住房和城乡建设局网站成都较出名的广告公司
  • 属于网站的管理 更新 维护怎么自己公司名下的网站
  • 电商网站开发文献综述莱芜最新钟点工招聘
  • 2018建设工程管理招团支部网站佛山主题网站设计多少钱
  • 3d打印 东莞网站建设Wordpress development
  • 杭州自助建站模板项目名称