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

pipeline状态的变化

  gst_element_set_state (pipeline, GST_STATE_PLAYING); 在插件创建,链接之后会调用该函数。

gst_element_set_state {

  if (oclass->set_state)

    result = (oclass->set_state) (element, state);

}

这个函数会调用element的gst_element_set_state_func函数,set_state会保存element的当前,下一个,最终状态。元素的四个状态,分别是NULL, READY,PASUED, PLAYING。set_state会调gst_element_change_state函数去改状态。

gst_element_change_state{

  if (oclass->change_state)

    ret = (oclass->change_state) (element, transition);

......

      ret = gst_element_continue_state (element, ret);

......

}

gst_pipeline_change_state{

  result = GST_ELEMENT_CLASS (parent_class)->change_state (element, transition);

}

gst_element_change_state里,会调用gst_pipeline_change_state,gst_pipeline_change_state又会调用父类的change_state,父类是bin,所以调用的是gst_bin_change_state_func,如下:

gst_bin_change_state_func{

.......

GST_STATE_PAUSED:

gst_bin_src_pads_activate

......

  /* iterate in state change order */

  it = gst_bin_iterate_sorted (bin);

        /* set state and base_time now */

        ret = gst_bin_element_set_state (bin, child, base_time, start_time,

            current, next);

}

 * Gets an iterator for the elements in this bin in topologically

 * sorted order. This means that the elements are returned from

 * the most downstream elements (sinks) to the sources.
gst_bin_iterate_sorted{

.......

  result = gst_bin_sort_iterator_new (bin);

.......

}

从备注上看,gst_bin_iterate_sorted 函数返回一个从后往前的迭代, 然后依次设置子插件的状态。为fakesink为例,就会调用

gst_fake_sink_change_state{

......

  ret = GST_ELEMENT_CLASS (parent_class)->change_state (element, transition);

......

}

相关文章:

  • 【成绩排序,按原顺依次序输出名次,有相同名次】
  • CSDN博客写作教学(四):标题优化与SEO实战
  • I2C驱动(十一) -- gpio模拟的i2c总线驱动i2c-gpio.c分析
  • EdgeNext模型详解及代码复现
  • 开启AI短剧新纪元!SkyReels-V1/A1双剑合璧!昆仑万维开源首个面向AI短剧的视频生成模型
  • 李宏毅机器学习课程学习笔记04 | 浅谈机器学习-宝可梦、数码宝贝分类器
  • javaEE初阶————多线程初阶(5)
  • Unity 接入本地部署的DeepSeek
  • C语言复习4:有关数组的基础常见算法
  • C语言复习8:动态内存分配
  • 流程定义和流程实例
  • rk3568 sysrq如何使用快捷键
  • 题解 | 牛客周赛83 Java ABCDEF
  • 多Agent协作智能系统
  • Flutter系列教程之(9)——Flutter调用Android原生
  • 让自己如何快速有用一台华为云桌面。
  • 2025国家护网HVV高频面试题总结来了01(题目+回答)
  • C# dll文件的反编译获取源码
  • 【蓝桥】大小写转换
  • [含文档+PPT+源码等]精品基于Python实现的微信小程序的在线医疗咨询系统
  • 在excel中怎么做邮箱网站/潍坊网站开发公司
  • p2p电影网站开发/深圳seo优化公司搜索引擎优化方案
  • 小程序模板源下载/引擎优化seo
  • 如何在阿里云云服务器上搭建网站/百度搜索引擎排行榜
  • 网站建设知识文章/搜索百度网页版
  • 洛阳疫情为啥不公布/长春关键词优化排名