6,capsfilter的作用

我们看一下jpegenc的Capabilities

Pad Templates:
  SINK template: 'sink'
    Availability: Always
    Capabilities:
      video/x-raw
                 format: { (string)I420, (string)YV12, (string)YUY2, (string)UYVY, (string)Y41B, (string)Y42B, (string)YVYU, (string)Y444, (string)NV21, (string)NV12, (string)RGB, (string)BGR, (string)RGBx, (string)xRGB, (string)BGRx, (string)xBGR, (string)GRAY8 }

上篇文章里,我们提到的一个pipe:

appsrc - avdec_h264 - videoconvert - jpegenc - multifilesink

实际上这个pipe里面,如果把videoconvert去掉,也是可以正常工作的。

我们打印一下jpegenc的实际的sinkpad,发现format是I420.

Caps for the sink pad:
      video/x-raw
                 format: I420

如果我想让jpegenc的sinkpad的format是RGB,应该怎么来实现?你会发现jpegenc是没有caps属性设置的,为什么appsrc有caps属性呢?其实这个想一下也能明白,如果有jpegenc有caps属性,那到底是设置src还是sink的caps呢?

我们可以在中间拼接一个capsfilter,设置capsfilter的caps属性:

appsrc - avdec_h264 - videoconvert - capsfilter - jpegenc - multifilesink

g_object_set(G_OBJECT(filter), "caps",
				gst_caps_new_simple("video/x-raw", "format", G_TYPE_STRING,
						"RGB", NULL),
				NULL);

在运行一下程序,打印一下jpegenc的sinkpad:

Caps for the sink pad:
      video/x-raw
                 format: RGB

使用probe获取一下sink流过的数据大小,发现的确是width * height * 3.

Enjoy!

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值