Invalid buffer size error when convert from gst-launch pipeline to C code with imxvideoconvert_ipu

classic Classic list List threaded Threaded
2 messages Options
Reply | Threaded
Open this post in threaded view
|

Invalid buffer size error when convert from gst-launch pipeline to C code with imxvideoconvert_ipu

Tran Tu
This post was updated on .
Hi all,

I do the study test to rezise the raw video in fullhd to wvga and streaming it over RTP/UDP
The pipeline I use is:
"filersc  blocksize=4147200 location=/home/root/file.raw ! video/x-raw, format=(string){I420},width=1920, height=1080, framerate=30/1 ! imxvideoconvert_ipu  livestreaming=true ! video/x-raw, width=1280, height=720 ! imxvpuenc_h264 gop-size=30 bitrate=2000 ! h264parse ! rtph264pay name=pay0 pt=96 timestamp-offset=0 ! udpsink host=192.168.2.10 port=5000"

I can run successfully with gst-launch. But when I convert this to object model in C programming, I got the following error:
video/video-frame.c:155:gst_video_frame_map_id: invalid buffer size 70700 < 3110400
:<imxvideoconvert_ipu0> posting message: Internal GStreamer error: code not implemented.  Please file a bug at http://bugzilla.gnome.org/enter_bug.cgi?product=GStreamer.


Below is the way I construct the pipeline:

    GstElement *Pipeline = NULL;
    GstElement *FileSrc = NULL;
    GstCaps *Filtercaps = NULL;
    GstElement *Filter = NULL;
    GstElement *VideoConvert = NULL;
    GstCaps *H264caps = NULL;
    GstElement *FilterH264 = NULL;
    GstElement *EncodePlugin = NULL;

 Pipeline = gst_pipeline_new("streaming-pipeline");
    if (!Pipeline)
    {
        return NULL;
    }

    /* Create the source element */
    FileSrc = gst_element_factory_make("filesrc", "filesrc");
    if (!FileSrc)
    {
        return -1;
    }

    /* Setting properties for source element */
    g_object_set(G_OBJECT(FileSrc), "blocksize", "4147200", (const char*)NULL);
    g_object_set(G_OBJECT(FileSrc), "location", "/home/root/file.raw", (const char*)NULL);

    /* Create the capfilters element */
    Filter = gst_element_factory_make("capsfilter", NULL);
    if (!Filter)
    {
        return -1;
    }

    /* Configure property for capfiler element */

    Filtercaps = gst_caps_new_simple("video/x-raw", "width", G_TYPE_INT, 1920, "height",
            G_TYPE_INT, 1080, "framerate", GST_TYPE_FRACTION, 30,
            1, "format", G_TYPE_STRING, "I420", NULL);
    g_object_set(G_OBJECT(Filter), "caps", Filtercaps, NULL);
    gst_caps_unref(Filtercaps);

    /* Create plugin to convert video */
    VideoConvert = gst_element_factory_make("imxvideoconvert_ipu", NULL);
    if (!VideoConvert)
    {
        return -1;
    }
    /* Set property for the converter */
    g_object_set(G_OBJECT(VideoConvert), "livestreaming", true, (const char*)NULL);

    /* Create the capfilters element for converter plugin */
    FilterH264 = gst_element_factory_make("capsfilter", NULL);

    if (!FilterH264)
    {
       return -1;

    }

    /* Configure property for capfiler element */
    H264caps = gst_caps_new_simple("video/x-raw", "width", G_TYPE_INT, 1280, "height",
            G_TYPE_INT, 720, NULL);
    g_object_set(G_OBJECT(FilterH264), "caps", H264caps, NULL);
    gst_caps_unref(H264caps);
    STRMN_WriteLog(LOG_LEVEL_INFO, "caps filter for converter created\n");

    /* Create the encode plugin element for H264 codec */
    EncodePlugin = gst_element_factory_make("imxvpuenc_h264", NULL);
    if (!EncodePlugin)
    {
        return -1;
    }
    ...

  Can anybody help me to show out whether I can use two capsfilters for imxvideoconvert_ipu? And why the invalid buffer received only occurs in the C code?

Thanks alot for your support.

Best regard,
Tran Tu
Reply | Threaded
Open this post in threaded view
|

Re: Invalid buffer size error when convert from gst-launch pipeline to C code with imxvideoconvert_ipu

Sebastian Dröge-3
On Mo, 2016-05-23 at 20:15 -0700, Tran Tu wrote:

> Hi all,
>
> I do the study test to rezise the raw video in fullhd to wvga and streaming
> it over RTP/UDP
> The pipeline I use is:
> "filersc  blocksize=4147200 location=/home/root/file.raw ! video/x-raw,
> format=(string){I420},width=1920, height=1080, framerate=30/1 !
> imxvideoconvert_ipu  livestreaming=true ! video/x-raw, width=1280,
> height=720 ! imxvpuenc_h264 gop-size=30 bitrate=2000 ! h264parse !
> rtph264pay name=pay0 pt=96 timestamp-offset=0 ! udpsink host=192.168.2.10
> port=5000"
>
> I can run successfully with gst-launch. But when I convert this to object
> model in C programming, I got the following error:
> *video/video-frame.c:155:gst_video_frame_map_id: invalid buffer size 70700 <
> 3110400
> : posting message: Internal GStreamer error: code not
> implemented.  Please file a bug at
> http://bugzilla.gnome.org/enter_bug.cgi?product=GStreamer.*
> [...]
>    g_object_set(G_OBJECT(FileSrc), "blocksize", "4147200", (const
> char*)NULL);
blocksize is an integer property, not a string property.

--
Sebastian Dröge, Centricular Ltd · http://www.centricular.com


_______________________________________________
gstreamer-devel mailing list
[hidden email]
https://lists.freedesktop.org/mailman/listinfo/gstreamer-devel

signature.asc (968 bytes) Download Attachment