GStreamer Playback tutorial 学习笔记(八)

1 自定义playbin输出

视频解码加速API:

VAAPI(Video Acceleration API):最初由英特尔于2007年设计,针对基于Unix操作系统的X Window System,现在是开源的。现在它也通过dmabuf支持Wayland。它目前不仅限于Intel GPU,其他制造商也可以自由使用此API,例如Imagination Technologies或S3 Graphics。通过gstreamer-vaapi包对GStreamer进行访问。

OVD(Open Video Decode):AMD Graphics的另一个API,旨在为软件开发人员提供利用AMD Radeon显卡内部的Universal Video Decode(UVD)硬件的跨平台方法。当前不可用于GStreamer。

DCE(Distributed Codec Engine):德州仪器的开源软件库(“libdce”)和API规范,针对Linux系统和ARM平台。通过gstreamer-ducati插件对GStreamer进行访问。

Android MediaCodec:这是Android的API,用于访问设备的硬件解码器和编码器(如果可用)。通过gst-plugins-bad中的androidmedia插件进行访问。包括编码和解码。

Apple VideoTool Box Framework:苹果的硬件访问API可以通过包含编码器(vtenc元素)和解码器(vtdec元素)的applemedia插件进行访问。

Video4Linux:最新的Linux内核具有一个内核API,以标准方式公开硬件解码器,这现在由gst-plugins-good中的v4l2插件支持。根据平台的不同,可以支持解码和编码。

1.1 硬件加速视频解码插件的内部工作原理

API通常提供多种功能,如视频解码、后处理或呈现解码帧。相应地,插件通常针对这些功能中的每一个提供不同的GStreamer元素,因此可以构建适应任何需求的管道。

1.2 更改硬件加速相关元素的rank
static void enable_factory (const gchar *name, gboolean enable) {
    GstRegistry *registry = NULL;
    GstElementFactory *factory = NULL;

    registry = gst_registry_get_default ();
    if (!registry) return;

    factory = gst_element_factory_find (name);
    if (!factory) return;

    if (enable) {
        gst_plugin_feature_set_rank (GST_PLUGIN_FEATURE (factory), GST_RANK_PRIMARY + 1);
    }
    else {
        gst_plugin_feature_set_rank (GST_PLUGIN_FEATURE (factory), GST_RANK_NONE);
    }

    gst_registry_add_feature (registry, GST_PLUGIN_FEATURE (factory));
    return;
}

2 函数与知识点

  1. gst_plugin_feature_set_rank (GstPluginFeature * feature, guint rank) 功能:为插件功能指定一个rank,以便自动插入机制使用最合适的功能。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

清墨韵染

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值