This post was updated on .
Hello,
I have a problem with v4l2src plugin. It works perfectly: “gst-launch-0.10 �v v4l2src ! ffmpegcolorspace ! xvimagesink” But the following codes failed to work: gst_init(NULL, NULL); pipeline = gst_pipeline_new("dpipeline"); source = gst_element_factory_make("v4l2src", "dsrc"); csp = gst_element_factory_make("ffmpegcolorspace", "dcsp"); sink = gst_element_factory_make("appsink", "dsink"); bus = gst_pipeline_get_bus(GST_PIPELINE(pipeline)); g_object_set(G_OBJECT(source), "device", “/dev/video0”, NULL); gst_bin_add_many(GST_BIN(pipeline), source, csp, sink, NULL); gst_bus_add_watch(bus, G_CALLBACK(bus_callback), pipeline); gst_object_unref(bus); gst_element_link(source, csp); caps = gst_caps_new_simple("video/x-raw-yuv", "format", GST_TYPE_FOURCC, GST_MAKE_FOURCC('U','Y','V','Y'), "width", G_TYPE_INT, 720, "height", G_TYPE_INT, 480, NULL); if (!gst_element_link_filtered(csp, sink, caps)) { printf("UYVY Format Not Supported.\n"); return NULL; } else { printf("Image Format Setting Finished.\n"); } gst_caps_unref(caps); // state = gst_element_set_state(GST_ELEMENT(sink), GST_STATE_PLAYING); // state = gst_element_set_state(GST_ELEMENT(csp), GST_STATE_PLAYING); // state = gst_element_set_state(GST_ELEMENT(source), GST_STATE_PLAYING); state = gst_element_set_state(GST_ELEMENT(pipeline), GST_STATE_PLAYING); switch(state) { case GST_STATE_CHANGE_SUCCESS: printf("Init Capture Succeed.\n"); break; case GST_STATE_CHANGE_FAILURE: printf("Init Capture Failure.\n"); break; case GST_STATE_CHANGE_ASYNC: if(GST_STATE_CHANGE_ASYNC == state) { printf("Trying to Sync...\n"); state = gst_element_get_state(csp, NULL, NULL, GST_CLOCK_TIME_NONE); } if (GST_STATE_CHANGE_SUCCESS == state) { printf("Sync Succeed.\n"); } else { printf("Init Capture...Failure.\n"); return NULL; } break; case GST_STATE_CHANGE_NO_PREROLL: printf("Init File Capture Succeed(with no data).\n"); break; default: printf("Init File Capture Error(unknown)\n"); } In fact, when I enabled these codes respectively state = gst_element_set_state(GST_ELEMENT(sink), GST_STATE_PLAYING); state = gst_element_set_state(GST_ELEMENT(csp), GST_STATE_PLAYING); state = gst_element_set_state(GST_ELEMENT(source), GST_STATE_PLAYING); // state = gst_element_set_state(GST_ELEMENT(pipeline), GST_STATE_PLAYING); I found that the source(v4l2src) could not be set to GST_STATE_PLAYING (GST_STATE_PAUSED neither) state. Maybe I should do some additional initialization? I’ve also used filesrc and it worked well. Please help me. Thanks & Best Regards _____ Frank Du --------------------------------------------------------------------------------------------------- Confidentiality Notice: The information contained in this e-mail and any accompanying attachment(s) is intended only for the use of the intended recipient and may be confidential and/or privileged of Neusoft Corporation, its subsidiaries and/or its affiliates. If any reader of this communication is not the intended recipient, unauthorized use, forwarding, printing, storing, disclosure or copying is strictly prohibited, and may be unlawful.If you have received this communication in error,please immediately notify the sender by return e-mail, and delete the original message and all copies from your system. Thank you. --------------------------------------------------------------------------------------------------- |
Free forum by Nabble | Edit this page |