如何强制Gstreamer playbin使用jpegparse插件?

时间:2016-09-11 14:15:54

标签: gstreamer

在linux平台上,我开发了一个名为xxxhwjpegdec的基于硬件的Jpeg解码插件来取代jpegdec(基于软件的解码),我将xxxhwjpegdec等级调整到最高257. xxxhwjpegdec pulgin需要jpegparse来解析jpeg头。 当我使用时:

"gst-launch-1.0 -v filesrc location="/tmp/MJPEG.AVI" ! avidemux name=t t.video_0 ! jpegparse ! xxxhwjpegdec ! waylandsink"

它可以顺利播放/tmp/MJPEG.AVI。 我的目标是使用"gst-launch-1.0 playbin uri=file:///tmp/MJPEG.AVI"通过硬件解码顺利播放文件。

但我使用"gst-launch-1.0 playbin uri=file:///tmp/MJPEG.AVI"它使用jpegdec插件,它基于软件进行解码,因此导致/tmp/MJPEG.AVI播放不顺畅。我检查了playbin管道" jpegparse"未使用。 如果我删除了jpegdec插件,

然后使用"gst-launch-1.0 playbin uri=file:///tmp/MJPEG.AVI",它无法使用"filesink--avidemux--xxxhwjpegdec--waylandsink" /tmp/MJPEG.AVI。我检查了密钥管道是readLine,没有插入jpegparse。

我通过以上信息判断playbin Form两个不同的管道, 一个是 " filesink - avidemux - xxxhwjpegdec - waylandsink(不能玩)" , 另一个是 " filesink - avidemux-jpegdec - waylandsink(可以玩)" 。 因为我的xxxhwjpegdec需要jpegparse插件才能支持它。 playbin没有插入jpegparse,因此playbin无法选择要播放的第一个更高优先级的硬件管道,它必须选择第二个低优先级软件管道才能播放它。
所以我认为根本原因是playbin不能自动选择jpegparse插件。

那么,有谁知道如何强制Gstreamer playbin使用jpegparse插件? 或者欢迎其他解决方案! 感谢。

1 个答案:

答案 0 :(得分:0)

jpegparse输出:

Pad Templates:
  SRC template: 'src'
    Availability: Always
    Capabilities:
      image/jpeg
                 format: { I420, Y41B, UYVY, YV12 }
                  width: [ 0, 2147483647 ]
                 height: [ 0, 2147483647 ]
              framerate: [ 0/1, 2147483647/1 ]
                 parsed: true

也许您可以将jpegdecoder的sink-caps更改为inlcude parsed: true以指示您需要解析的jpeg缓冲区。