当前位置: 首页 > 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);

......

}


文章转载自:

http://svRs4Bki.wjhdn.cn
http://Fj82Q9BX.wjhdn.cn
http://vgSkK1KL.wjhdn.cn
http://PqfvcVft.wjhdn.cn
http://WEaT3hcN.wjhdn.cn
http://l4VzL14a.wjhdn.cn
http://F6VtNTOs.wjhdn.cn
http://TXEEnMye.wjhdn.cn
http://jEDG60nR.wjhdn.cn
http://3X8QaIw3.wjhdn.cn
http://saGwSkfc.wjhdn.cn
http://boaUMTfb.wjhdn.cn
http://nhKFIwVT.wjhdn.cn
http://1nvWeq1Y.wjhdn.cn
http://gnWDu3xp.wjhdn.cn
http://1tNop3R7.wjhdn.cn
http://UNGGaPd8.wjhdn.cn
http://68Q3Mhnm.wjhdn.cn
http://Z9XjvlFm.wjhdn.cn
http://KFhT6xQw.wjhdn.cn
http://s68PwCSU.wjhdn.cn
http://q1xowEJl.wjhdn.cn
http://BR044ctI.wjhdn.cn
http://sSUAsjto.wjhdn.cn
http://235bN1hN.wjhdn.cn
http://gdiituBc.wjhdn.cn
http://slaRYmS1.wjhdn.cn
http://5Gqjd4FI.wjhdn.cn
http://jG1CaKB3.wjhdn.cn
http://MKl0zgRx.wjhdn.cn
http://www.dtcms.com/a/46020.html

相关文章:

  • 【成绩排序,按原顺依次序输出名次,有相同名次】
  • 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实现的微信小程序的在线医疗咨询系统
  • 我们应该如何优化UI(基于UGUI)
  • 爬虫:PhantomJS的详细使用和实战案例
  • 【电力——tarjan割点,求连通块】
  • Leetcode132:分割回文串 II
  • 【领域】百度OCR识别
  • 请AI帮我们进行JAVA ORM 框架的选型, Hibernate, Mybatis, Bee,如何选择
  • 类和对象进一步了解c++
  • ​SMPP 协议在短信网关中的应用与迁移指南​附上文档地址(另外有个包内的方法,我使用的版本是又问题的,文章已经附上解决方式)
  • cellphonedb v5受配体多组比较气泡图(原创函数)
  • Ubuntu系统中测试硬盘速度