Gstreamer: filter caps do not completely specify the output format : by flt
aish
aishdhan986 at gmail.com
Thu Jul 23 13:25:45 UTC 2020
Hi,
I have been trying to initialize a video player and play the video using
imx8 board. I have created the pipeline elements accordingly. But on trying
with the playback i get the error VP::Creating pipeline for Yocto build
VP::END of pipeline creation
VP::Window ID=0
VP::Creating thread to start core player
VP::Starting core playback
VP::Player start:Thread started
VP::Created thread to start core player
Video player started
VP::Player init success!
VP::Player init exit.
VP::Player play: Entering..
VP::Window ID=0
VP::setting to play
onVideoConfigChange : MRM handle[281473567429544] Video Resolution Type :2
VP::Pipeline state changed from NULL to READY :
====== VPUDEC: 4.4.2 build on Jun 29 2020 12:49:47. ======
wrapper: 3.0.0 (VPUWRAPPER_ARM64_LINUX Build on Jun 29 2020
12:22:33)
vpulib: 1.1.1
firmware: 1.1.1.0
VP::Pipeline state changed from READY to PAUSED :
VP::Pipeline play state change succeeded
VP::setting done
VP::Pipeline state changed from PAUSED to PLAYING :
onVideoFocusChange : MRM handle[281473567429544]Focus type1Video focus
change for AAP
Focus type is gain
ERR::VP::Error: Filter caps do not completely specify the output format : by
flt
ERR::VP::Error: Internal data stream error. : by source
ERR::VP::
End of stream. Please find the following piece of code:
printf("VP::Creating pipeline for Yocto build\n");
/* create all the elements we'll need */
psGstPlayer->pipeline = gst_pipeline_new("pipeline");
/* This is used to display the properties of all the
pipeline elements */
g_signal_connect (psGstPlayer->pipeline, "deep-notify",
G_CALLBACK (gst_object_default_deep_notify), NULL);
psGstPlayer->eMediaType = VIDEO_STREAM_H264;
psGstPlayer->source = gst_element_factory_make("appsrc",
"source");
psGstPlayer->queue = gst_element_factory_make("queue",
"queue");
psGstPlayer->Filter = gst_element_factory_make("capsfilter",
"flt");
g_object_set(G_OBJECT (psGstPlayer->Filter), "caps",
gst_caps_new_simple("video/x-h264",
"framerate", GST_TYPE_FRACTION,
psGstPlayer->uiFPS,
1, "width", G_TYPE_INT,
psGstPlayer->uiVideoWidth,
"pixel-aspect-ratio", GST_TYPE_FRACTION, 1, 1,
"colorimetry", G_TYPE_STRING, "bt709",
"format", G_TYPE_STRING, "avc",
"height", G_TYPE_INT,
psGstPlayer->uiVideoHeight, NULL), NULL);
psGstPlayer->Parser = gst_element_factory_make("h264parse",
"parser");
psGstPlayer->decoder = gst_element_factory_make("vpudec",
"decoder");
psGstPlayer->crop = gst_element_factory_make("videocrop",
"crop");
psGstPlayer->typefind =
gst_element_factory_make("videoconvert", "colorspace");
psGstPlayer->sink = gst_element_factory_make("waylandsink",
"sink");
g_object_set(G_OBJECT(psGstPlayer->source), "do-timestamp",
TRUE,
"is-live", TRUE, NULL);
psGstPlayer->capsfilter =
gst_element_factory_make("capsfilter", "flt1");
g_object_set(G_OBJECT (psGstPlayer->capsfilter), "caps",
gst_caps_new_simple("video/x-raw",
"framerate", GST_TYPE_FRACTION,
psGstPlayer->uiFPS,
1, "width", G_TYPE_INT,
psGstPlayer->uiDisplayWidth,
"colorimetry", G_TYPE_STRING, "bt709",
"format", G_TYPE_STRING, "BGRx",
"pixel-aspect-ratio", GST_TYPE_FRACTION, 1, 1,
"height", G_TYPE_INT,
psGstPlayer->uiDisplayHeight, NULL), NULL);
g_object_set(G_OBJECT(psGstPlayer->sink), "sync", FALSE,
NULL);
g_object_set(G_OBJECT(psGstPlayer->sink),"show-preroll-frame" ,FALSE ,NULL);
g_object_set(G_OBJECT(psGstPlayer->sink),"blocksize" ,0
,NULL);
g_object_set(G_OBJECT(psGstPlayer->sink),"async" ,0 ,NULL);
//g_object_set(G_OBJECT(psGstPlayer->sink),"ivi-surfaceid"
,IVI_SURFACE_ID ,NULL);
g_object_set(G_OBJECT(psGstPlayer->sink),"window-height"
,psGstPlayer->uiDisplayHeight ,NULL);
g_object_set(G_OBJECT(psGstPlayer->sink),"window-width"
,psGstPlayer->uiDisplayWidth ,NULL);
if (!psGstPlayer->pipeline || !psGstPlayer->source ||
!psGstPlayer->Parser ||
!psGstPlayer->decoder || !psGstPlayer->queue ||
!psGstPlayer->typefind
|| !psGstPlayer->crop ||
!psGstPlayer->capsfilter || !psGstPlayer->sink ||
!psGstPlayer->Filter)
{
printf("ERR::VP::Failed to create elements %p, %p, %p,
%p, %p, %p, %p, %p, %p, %p \n",
psGstPlayer->pipeline, psGstPlayer->source,
psGstPlayer->Parser,
psGstPlayer->queue,psGstPlayer->capsfilter,
psGstPlayer->Filter, psGstPlayer->decoder,
psGstPlayer->crop, psGstPlayer->sink,
psGstPlayer->typefind);
iRet = -1;
goto Exit;
}
I referred :
gst-inspect-1.0 vpudec
Factory Details:
Rank primary + 1 (257)
Long-name IMX VPU-based video decoder
Klass Codec/Decoder/Video
Description Decode compressed video to raw data
Author Multimedia Team <shmmmw at freescale.com>
Plugin Details:
Name vpu
Description VPU video codec
Filename /usr/lib/gstreamer-1.0/libgstvpu.so
Version 4.4.2
License LGPL
Source module imx-gst1.0-plugin
Binary package Freescle Gstreamer Multimedia Plugins
Origin URL http://www.freescale.com
GObject
+----GInitiallyUnowned
+----GstObject
+----GstElement
+----GstVideoDecoder
+----GstVpuDec
Pad Templates:
SRC template: 'src'
Availability: Always
Capabilities:
video/x-raw
format: { (string)NV12, (string)I420, (string)YV12,
(string)Y42B, (string)NV16, (string)Y444, (string)NV24, (string)NV12_10LE
}
width: [ 1, 2147483647 ]
height: [ 1, 2147483647 ]
framerate: [ 0/1, 2147483647/1 ]
SINK template: 'sink'
Availability: Always
Capabilities:
video/x-h265
video/x-vp9
video/x-vp8
video/x-vp6-flash
video/x-h264
video/mpeg
systemstream: false
mpegversion: { (int)1, (int)2 }
video/mpeg
mpegversion: 4
video/x-h263
video/x-flash-video
flvversion: 1
video/x-divx
divxversion: 3
video/x-divx
divxversion: 4
video/x-divx
divxversion: { (int)5, (int)6 }
video/x-xvid
video/x-cavs
video/x-wmv
wmvversion: 3
format: WMV3
video/x-wmv
wmvversion: 3
format: WVC1
video/x-pn-realvideo
image/jpeg
image/webp
Element has no clocking capabilities.
Element has no URI handling capabilities.
Pads:
SINK: 'sink'
Pad Template: 'sink'
SRC: 'src'
Pad Template: 'src'
Element Properties:
name : The name of the object
flags: readable, writable
String. Default: "vpudec0"
parent : The parent of the object
flags: readable, writable
Object of type "GstObject"
output-format : set raw video format for output (Y42B NV16 Y444 NV24
only for MJPEG)
flags: readable, writable
Enum "GstVpuDecOutputFormat" Default: 0, "auto"
(0): auto - enable chroma interleave.
(default)
(1): NV12 - NV12 format
(2): I420 - I420 format
(3): YV12 - YV12 format
(4): Y42B - Y42B format
(5): NV16 - NV16 format
(6): Y444 - Y444 format
(7): NV24 - NV24 format
frame-drop : enable adaptive frame drop for smoothly playback
flags: readable, writable
Boolean. Default: true
frame-plus : set number of addtional frames for smoothly playback
flags: readable, writable
Unsigned Integer. Range: 0 - 16 Default: 3
use-vpu-memory : use vpu allocate video frame buffer
flags: readable, writable
Boolean. Default: true
Kindly requesting you to assist with the same. Thank you.
--
Sent from: http://gstreamer-devel.966125.n4.nabble.com/
More information about the gstreamer-devel
mailing list