GStreamer-0.10-至-1.0-移植指南

来源:https://github.com/ApsOps/GStreamer-0.10-to-1.0-porting-guide/blob/master/porting-to-1.0.md

前言

  1. 所有弃用的方法均已删除。使用 DISABLE_DEPRECATED 针对 0.10 重新编译并修复问题,然后再尝试移植到 1.0。

  2. API 更改通常很容易发现,因为编译器会生成警告,至少在参数数量或类型不同时会生成警告

  3. 其他更改则比较微妙。请参阅底部的检查表,了解编译器不会发出警告的一些“软”更改。

  4. Python 开发人员可能会发现https://wiki.ubuntu.com/Novacut/GStreamer1.0 很有用

  5. 应用程序开发人员可能首先希望查看应用程序开发手册中影响应用程序的更改列表: http://gstreamer.freedesktop.org/data/doc/gstreamer/head/manual/html/chapter-porting-1.0.html

变化

  1. GST_BOILERPLATE 已消失,改用 G_DEFINE_TYPE(请注意,以前称为 parent_class 的变量现在称为 gst_foo_bar_parent_class)

  2. 当谈论内存大小时,各种方法都采用 gsize 而不是 guint。

  3. multifdsink、tcpclientsink、tcpclientsrc、tcpserversrc 协议属性被删除,使用 gdppay 和 gdpdepay。

  4. 预设和插件已移至 $XDG_DATA_HOME/gstreamer-1.0/ 根目录。注册表已移至 $XDG_CACHE_HOME/gstreamer-1.0/。XDG_CACHE_HOME 通常指向 $HOME/.cache,而 XDG_DATA_HOME 通常是 $HOME/.local/share/。

  5. GstObject:GST_OBJECT_DISPOSING 标志已删除 GST_OBJECT_IS_DISPOSING 已删除 GST_OBJECT_FLOATING 标志已删除,GstObject 现在是 GInitiallyUnowned GST_OBJECT_IS_FLOATING 已删除,使用 g_object_is_floating()

    GST_CLASS_GET_LOCK、GST_CLASS_LOCK、GST_CLASS_TRYLOCK、GST_CLASS_UNLOCK,曾经是线程不安全的 glib <2.8 的解决方法

    gst_object_ref_sink() 以 gpointer 作为结果,使其更像 GObject 版本。

    gst_object_sink() 已删除,请改用 gst_object_ref_sink()。

    gst_class_signal_connect() 已删除,仅用于 XML

    已删除 parent-set 和 parent-unset 信号。使用通知:parent。由于深度通知锁定问题,目前仍处于禁用状态。

  6. GstElement:GstElementDetails 被删除并被更通用的元数据取代。

    <span style="background-color:var(--bgColor-muted, var(--color-canvas-subtle))"><span style="color:var(--fgColor-default, var(--color-fg-default))"><span style="background-color:var(--bgColor-muted, var(--color-canvas-subtle))"><code>gst_element_class_set_details_simple() -> gst_element_class_set_metadata()
    gst_element_class_set_documentation_uri -> gst_element_class_add_metadata
    gst_element_class_set_icon_name -> gst_element_class_add_metadata
    also gst_element_class_get_metadata()
    
    gst_element_factory_get_longname -> gst_element_factory_get_metadata
    gst_element_factory_get_klass -> gst_element_factory_get_metadata
    gst_element_factory_get_description -> gst_element_factory_get_metadata
    gst_element_factory_get_author -> gst_element_factory_get_metadata
    gst_element_factory_get_documentation_uri -> gst_element_factory_get_metadata
    gst_element_factory_get_icon_name -> gst_element_factory_get_metadata
    </code></span></span></span>

    gstelementmetadata.h 包含所有标准元数据的键。

    gst_element_factory_can_{src,sink} caps() => gst_element_factory_can {src,sink}_{any,all}_caps()

    元素元数据和 pad 模板从父类继承而来,应该在 class_init 而不是 base_init 中添加。

    gst_element_class_add_pad_template() 取得模板的所有权

    gst_element_class_add_static_pad_template (element_class,&src_template) => gst_element_class_add_pad_template (element_class,gst_static_pad_template_get (&src_template));

    当持续时间在 PAUSED 或 PLAYING 中发生变化时,改变持续时间的元素必须在总线上发布 DURATION 消息。

    gst_element_lost_state_full() -> gst_element_lost_state() gst_element_lost_state() -> gst_element_lost_state(,TRUE)

    请求新 pad 的完整 ()-> 请求新 pad ()

    gst_element_found_tags() 和 gst_element_found_tags_for_pad() 已经消失,只需推送标签事件。

  7. GstPad:gst_pad_get_caps() 被 gst_pad_query_caps() 取代,它不再返回可写的 caps,需要执行显式 gst_caps_make_writable()。这是 gst_pad_get_caps_reffed() 的功能,现已删除。

    对 gst_pad_peer_get_caps() 和 gst_pad_peer_get_caps_reffed() 也进行了类似的更改

    gst_pad_set_bufferalloc_function()、g

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值