Hi all, I'm Mario again. I did some changes:
The new code is: #include <gst/gst.h> #include <stddef.h> #include <stdlib.h> #include <string.h> #include <stdio.h> #include <gst/app/gstappsrc.h> #include <gst/app/gstappsink.h> #include <malloc.h> #include <unistd.h> #define TOP 10 #define HEIGHTF 512 #define WIDTHF 640 int main(int argc, char *argv[]) { GstElement *pipeline, *source, *convert, *enc, *parse, *rtppay, *sink, *capsFilter1, *capsFilter2, *queue1, *queue2; GstCaps *capsSource, *capsConvert, *capsEnc; GstBus *bus; GstMessage *msg; GstStateChangeReturn ret; GstFlowReturn Ret; GstClockTime timestamp = 0; /* Initialize GStreamer */ gst_init (&argc, &argv); /* Create the elements */ //1-SOURCE source = gst_element_factory_make ("appsrc", NULL); //Source caps capsSource = gst_caps_new_simple ("video/x-raw", "format", G_TYPE_STRING, "GRAY8", "width", G_TYPE_INT, 640, "height", G_TYPE_INT, 512, "framerate", GST_TYPE_FRACTION, 25, 1, "pixel-aspect-ratio", GST_TYPE_FRACTION, 1, 1, "interlace-mode", G_TYPE_STRING, "progressive", NULL) ; gst_app_src_set_caps (GST_APP_SRC(source), capsSource); //Set the block propierty to TRUE g_object_set(source, "block", TRUE, NULL); //Set the max-bytes propierty g_object_set(source, "max-bytes", 655360, NULL); //2-FIRST Queue queue1 = gst_element_factory_make ("queue", NULL); //3-CONVERSION convert = gst_element_factory_make ("videoconvert", NULL); //4-CAPS Filter1 capsFilter1 = gst_element_factory_make ("capsfilter", NULL); capsConvert = gst_caps_new_simple ("video/x-raw", "format", G_TYPE_STRING, "I420", NULL); g_object_set(capsFilter1, "caps", capsConvert, NULL); //5-SECOND queue queue2 = gst_element_factory_make ("queue", NULL); //6-CODEC enc = gst_element_factory_make ("omxh264enc", "enc"); g_object_set(enc, "bitrate", 1000000, NULL); g_object_set(enc, "profile", 1, NULL); g_object_set(enc, "control-rate", 2, NULL); //7-CAPS filter2 capsFilter2 = gst_element_factory_make ("capsfilter", NULL); capsEnc = gst_caps_new_simple ("video/x-h264", "stream-format", G_TYPE_STRING, "byte-stream", NULL); g_object_set(capsFilter2, "caps", capsEnc, NULL); //8-PARSSING parse = gst_element_factory_make ("h264parse", "parse"); g_object_set (G_OBJECT (parse), "config-interval", 1, NULL); //9-RTP PAYLOAD rtppay = gst_element_factory_make ("rtph264pay", "rtppay"); g_object_set (G_OBJECT (rtppay), "ssrc", 575096457, NULL); //10-DESTINATION sink = gst_element_factory_make ("udpsink", "sink"); g_object_set(G_OBJECT (sink), "host", "127.0.0.1", NULL ); g_object_set(G_OBJECT (sink), "port", 9078, NULL ); g_object_set(G_OBJECT (sink), "sync", FALSE, NULL ); /* Create the empty pipeline */ pipeline = gst_pipeline_new ("test-pipeline"); if (!pipeline || !source || !queue1 || !convert || !capsFilter1 || !queue2 || !enc || !capsFilter2 || !parse || !rtppay || !sink) { g_printerr ("Not all elements could be created.\n"); return -1; } /* Build the pipeline */ gst_bin_add_many (GST_BIN (pipeline), source, queue1, convert, capsFilter1, queue2, enc, capsFilter2, parse, rtppay, sink, NULL); if (gst_element_link_many (source, queue1, convert, capsFilter1 , queue2, enc, capsFilter2, parse, rtppay, sink, NULL) != TRUE) { g_printerr ("Elements could not be linked.\n"); gst_object_unref (pipeline); return -1; } /* Start playing */ ret = gst_element_set_state (pipeline, GST_STATE_PLAYING); if (ret == GST_STATE_CHANGE_FAILURE) { g_printerr ("Unable to set the pipeline to the playing state.\n"); gst_object_unref (pipeline); return -1; } //CREATE AND FEED BUFFER GstBuffer *buf; GstMapInfo map; int imageCount=0; while (imageCount<TOP){ //Allocate and create Buffer buf=gst_buffer_new_and_alloc(HEIGHTF*WIDTHF); //To avoid coping in memory gst_buffer_map(buf, &map, GST_MAP_WRITE); // We set the buffer to values from 0 (black) to 234 (almost white) memset (map.data, 26*imageCount, HEIGHTF*WIDTHF); //Unmap gst_buffer_unmap(buf, &map); //Timestamps //Set frame timestamp GST_BUFFER_PTS (buf) = timestamp; GST_BUFFER_DTS (buf) = timestamp; GST_BUFFER_DURATION (buf) = gst_util_uint64_scale_int (1, GST_SECOND, 1); timestamp += GST_BUFFER_DURATION (buf); printf("Frame is at %lu\n", timestamp); //Push Ret=gst_app_src_push_buffer(GST_APP_SRC(source), buf); if (Ret!=GST_FLOW_OK) printf ("\nError pushing buffer"); //keep the loop alive imageCount++; if(imageCount==10) imageCount=0; usleep(20000); } gst_app_src_end_of_stream (GST_APP_SRC (source)); printf("End Program.\n"); usleep(100000); /* Wait until error or EOS */ bus = gst_element_get_bus (pipeline); msg = gst_bus_timed_pop_filtered (bus, GST_CLOCK_TIME_NONE, GST_MESSAGE_ERROR | GST_MESSAGE_EOS); /* Parse message */ if (msg != NULL) { GError *err; gchar *debug_info; switch (GST_MESSAGE_TYPE (msg)) { case GST_MESSAGE_ERROR: gst_message_parse_error (msg, &err, &debug_info); g_printerr ("Error received from element %s: %s\n", GST_OBJECT_NAME (msg->src), err->message); g_printerr ("Debugging information: %s\n", debug_info ? debug_info : "none"); g_clear_error (&err); g_free (debug_info); break; case GST_MESSAGE_EOS: g_print ("End-Of-Stream reached.\n"); break; default: /* We should not reach here because we only asked for ERRORs and EOS */ g_printerr ("Unexpected message received.\n"); break; } gst_message_unref (msg); } /* Free resources */ gst_object_unref (bus); gst_element_set_state (pipeline, GST_STATE_NULL); gst_object_unref (pipeline);/* Create the empty pipeline */ pipeline = gst_pipeline_new ("test-pipeline"); return 0; } It still compile without errors but the new warnings are: (ALLIMAGESMEM:7075): GLib-GObject-WARNING **: g_object_set_valist: object class 'GstAppSrc' has no property named 'width' 0:00:00.080860250 7075 0x1523a0 WARN omx /dvs/git/dirty/git-master_linux/external/gstreamer/gst-omx/omx/gstomx.c:2814:plugin_init: Failed to load configuration file: Valid key file could not be found in search dirs (searched in: /home/ubuntu/.config:/etc/xdg/xdg-ubuntu:/usr/share/upstart/xdg:/etc/xdg as per GST_OMX_CONFIG_DIR environment variable, the xdg user config directory (or XDG_CONFIG_HOME) and the system config directory (or XDG_CONFIG_DIRS) Inside NvxLiteH264DecoderLowLatencyInitNvxLiteH264DecoderLowLatencyInit set DPB and MjstreamingFrame is at 0 0:00:00.131855000 7075 0x1508c0 FIXME default gstutils.c:3648:gst_pad_create_stream_id_printf_valist:<appsrc0:src> Creating random stream-id, consider implementing a deterministic way of creating a stream-id 0:00:00.150974000 7075 0x150a90 FIXME videoencoder gstvideoencoder.c:591:gst_video_encoder_setcaps:<enc> GstVideoEncoder::reset() is deprecated Framerate set to : 25 at NvxVideoEncoderSetParameter0:00:00.151198417 7075 0x150a90 WARN omxh264enc /dvs/git/dirty/git-master_linux/external/gstreamer/gst-omx/omx/gstomxh264enc.c:252:gst_omx_h264_enc_set_format:<enc> Setting profile/level not supported by component NvMMLiteOpen : Block : BlockType = 4 Frame is at 0 ===== MSENC ===== NvMMLiteBlockCreate : Block : BlockType = 4 ===== MSENC blits (mode: 1) into tiled surfaces ===== Frame is at 0 0:00:00.172950750 7075 0xb3605350 DEBUG omxh264enc /dvs/git/dirty/git-master_linux/external/gstreamer/gst-omx/omx/gstomxh264enc.c:565:gst_omx_h264_enc_handle_output_frame:<enc> got codecconfig in byte-stream format 0:00:00.177570500 7075 0xb3605350 ERROR omxvideoenc /dvs/git/dirty/git-master_linux/external/gstreamer/gst-omx/omx/gstomxvideoenc.c:982:gst_omx_video_enc_handle_output_frame:<enc> No corresponding frame found 0:00:00.188272417 7075 0xb3605350 WARN h264parse gsth264parse.c:957:gst_h264_parse_handle_frame:<parse> no SPS/PPS yet, nal Type: 1 Slice, Size: 1462 will be dropped Frame is at 0 Any help is welcome. Thanks in advance. Mario. _______________________________________________ gstreamer-devel mailing list [hidden email] https://lists.freedesktop.org/mailman/listinfo/gstreamer-devel |
In you mail you have not mentioned about your problem
(ALLIMAGESMEM:7075): GLib-GObject-WARNING **: g_object_set_valist: object class 'GstAppSrc' has no property named '*width*' 0:00:00.080860250 7075 0x1523a0 WARN omx /dvs/git/dirty/git-master_linux/external/gstreamer/gst-omx/omx/gstomx.c:2814:plugin_init: Failed to load configuration file: Valid key file could not be found in search dirs (searched in: /home/ubuntu/.config:/etc/xdg/xdg-ubuntu:/usr/share/upstart/xdg:/etc/xdg as per *GST_OMX_CONFIG_DIR environment variable, the xdg user config directory (or XDG_CONFIG_HOME) and the system config directory (or XDG_CONFIG_DIRS)* You are trying to set *width * property on GstAppSrc which is not correct. Though I could not find in the log. There is some problem in GST_OMX_CONFIG* environment. -- Sent from: http://gstreamer-devel.966125.n4.nabble.com/ _______________________________________________ gstreamer-devel mailing list [hidden email] https://lists.freedesktop.org/mailman/listinfo/gstreamer-devel |
In reply to this post by Mario García
------------------------------ ------------------- Hi again, "In you mail you have not mentioned about your problem" Yes, sorry, it was my fault. I ansewered to my own thread when I did some changes, please, to find my app problem, go to the previous treath called "appsrc warning" which also was posted by me. Mario. _______________________________________________ gstreamer-devel mailing list [hidden email] https://lists.freedesktop.org/mailman/listinfo/gstreamer-devel |
Free forum by Nabble | Edit this page |