Gstreamer on Qt iOS

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

Gstreamer on Qt iOS

doon
I try to use Gstreamer-1.0 in my Qt iOS project, so I set my .pro file as I described below:

INCLUDEPATH += /Users/user/Library/Developer/GStreamer/iPhone.sdk/GStreamer.framework/Headers
LIBS += -F/Users/user/Library/Developer/GStreamer/iPhone.sdk -framework GStreamer

But I get:

error: symbol(s) not found for architecture x86_64

So, how can I configure my Qt iOS project for use Gstreamer?
Reply | Threaded
Open this post in threaded view
|

Re: Gstreamer on Qt iOS

Sebastian Dröge-3
On Di, 2016-04-05 at 18:53 -0700, doon wrote:

> I try to use Gstreamer-1.0 in my Qt iOS project, so I set my .pro
> file as I
> described below:
>
> INCLUDEPATH +=
> /Users/user/Library/Developer/GStreamer/iPhone.sdk/GStreamer.framewor
> k/Headers
> LIBS += -F/Users/user/Library/Developer/GStreamer/iPhone.sdk
> -framework
> GStreamer
>
> But I get:
>
> error: symbol(s) not found for architecture x86_64
>
> So, how can I configure my Qt iOS project for use Gstreamer?
You're missing the actually important part of the error message. It
should tell you above which symbols are not found.

--
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
Reply | Threaded
Open this post in threaded view
|

Re: Gstreamer on Qt iOS

doon
Sebastian Dröge-3 wrote
On Di, 2016-04-05 at 18:53 -0700, doon wrote:
> I try to use Gstreamer-1.0 in my Qt iOS project, so I set my .pro
> file as I
> described below:
>
> INCLUDEPATH +=
> /Users/user/Library/Developer/GStreamer/iPhone.sdk/GStreamer.framewor
> k/Headers
> LIBS += -F/Users/user/Library/Developer/GStreamer/iPhone.sdk
> -framework
> GStreamer
>
> But I get:
>
> error: symbol(s) not found for architecture x86_64
>
> So, how can I configure my Qt iOS project for use Gstreamer?

You're missing the actually important part of the error message. It
should tell you above which symbols are not found.

--
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) <http://gstreamer-devel.966125.n4.nabble.com/attachment/4676776/0/signature.asc>
Yes, of course. Compile output:

Undefined symbols for architecture x86_64:
  "_iconv", referenced from:
      _g_iconv in GStreamer(libglib-2_0_a_x86_64_-libglib_2_0_la-gconvert.o)
      _g_convert_with_iconv in GStreamer(libglib-2_0_a_x86_64_-libglib_2_0_la-gconvert.o)
      _g_convert_with_fallback in GStreamer(libglib-2_0_a_x86_64_-libglib_2_0_la-gconvert.o)
      __nl_find_msg in GStreamer(libintl_a_x86_64_-dcigettext.o)
     (maybe you meant: _g_iconv_close, _g_iconv , _g_iconv_open , _g_convert_with_iconv )
  "_iconv_close", referenced from:
      _g_iconv_close in GStreamer(libglib-2_0_a_x86_64_-libglib_2_0_la-gconvert.o)
      _g_convert in GStreamer(libglib-2_0_a_x86_64_-libglib_2_0_la-gconvert.o)
      _g_convert_with_fallback in GStreamer(libglib-2_0_a_x86_64_-libglib_2_0_la-gconvert.o)
     (maybe you meant: _g_iconv_close)
  "_iconv_open", referenced from:
      _try_conversion in GStreamer(libglib-2_0_a_x86_64_-libglib_2_0_la-gconvert.o)
      __nl_find_msg in GStreamer(libintl_a_x86_64_-dcigettext.o)
     (maybe you meant: _g_iconv_open)
  "_libiconv_set_relocation_prefix", referenced from:
      _libintl_set_relocation_prefix in GStreamer(libintl_a_x86_64_-relocatable.o)
Reply | Threaded
Open this post in threaded view
|

Re: Gstreamer on Qt iOS

Sebastian Dröge-3
On Mi, 2016-04-06 at 05:06 -0700, doon wrote:

> Yes, of course. Compile output:
>
> Undefined symbols for architecture x86_64:
>   "_iconv", referenced from:
>       _g_iconv in GStreamer(libglib-2_0_a_x86_64_-libglib_2_0_la-
> gconvert.o)
>       _g_convert_with_iconv in
> GStreamer(libglib-2_0_a_x86_64_-libglib_2_0_la-gconvert.o)
>       _g_convert_with_fallback in
> GStreamer(libglib-2_0_a_x86_64_-libglib_2_0_la-gconvert.o)
>       __nl_find_msg in GStreamer(libintl_a_x86_64_-dcigettext.o)
>      (maybe you meant: _g_iconv_close, _g_iconv , _g_iconv_open ,
> _g_convert_with_iconv )
>   "_iconv_close", referenced from:
>       _g_iconv_close in
> GStreamer(libglib-2_0_a_x86_64_-libglib_2_0_la-gconvert.o)
>       _g_convert in
> GStreamer(libglib-2_0_a_x86_64_-libglib_2_0_la-gconvert.o)
>       _g_convert_with_fallback in
> GStreamer(libglib-2_0_a_x86_64_-libglib_2_0_la-gconvert.o)
>      (maybe you meant: _g_iconv_close)
>   "_iconv_open", referenced from:
>       _try_conversion in
> GStreamer(libglib-2_0_a_x86_64_-libglib_2_0_la-gconvert.o)
>       __nl_find_msg in GStreamer(libintl_a_x86_64_-dcigettext.o)
>      (maybe you meant: _g_iconv_open)
>   "_libiconv_set_relocation_prefix", referenced from:
>       _libintl_set_relocation_prefix in
> GStreamer(libintl_a_x86_64_-relocatable.o)
You need to do the equivalent of this commit in your project:
https://cgit.freedesktop.org/~slomo/gst-sdk-tutorials/commit/?id=77b2656d6d661f422c0ddd1b4357f829a0ef9e5d

--
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
Reply | Threaded
Open this post in threaded view
|

Re: Gstreamer on Qt iOS

doon
Sebastian Dröge-3 wrote
On Mi, 2016-04-06 at 05:06 -0700, doon wrote:
> Yes, of course. Compile output:
>
> Undefined symbols for architecture x86_64:
>   "_iconv", referenced from:
>       _g_iconv in GStreamer(libglib-2_0_a_x86_64_-libglib_2_0_la-
> gconvert.o)
>       _g_convert_with_iconv in
> GStreamer(libglib-2_0_a_x86_64_-libglib_2_0_la-gconvert.o)
>       _g_convert_with_fallback in
> GStreamer(libglib-2_0_a_x86_64_-libglib_2_0_la-gconvert.o)
>       __nl_find_msg in GStreamer(libintl_a_x86_64_-dcigettext.o)
>      (maybe you meant: _g_iconv_close, _g_iconv , _g_iconv_open ,
> _g_convert_with_iconv )
>   "_iconv_close", referenced from:
>       _g_iconv_close in
> GStreamer(libglib-2_0_a_x86_64_-libglib_2_0_la-gconvert.o)
>       _g_convert in
> GStreamer(libglib-2_0_a_x86_64_-libglib_2_0_la-gconvert.o)
>       _g_convert_with_fallback in
> GStreamer(libglib-2_0_a_x86_64_-libglib_2_0_la-gconvert.o)
>      (maybe you meant: _g_iconv_close)
>   "_iconv_open", referenced from:
>       _try_conversion in
> GStreamer(libglib-2_0_a_x86_64_-libglib_2_0_la-gconvert.o)
>       __nl_find_msg in GStreamer(libintl_a_x86_64_-dcigettext.o)
>      (maybe you meant: _g_iconv_open)
>   "_libiconv_set_relocation_prefix", referenced from:
>       _libintl_set_relocation_prefix in
> GStreamer(libintl_a_x86_64_-relocatable.o)

You need to do the equivalent of this commit in your project:
https://cgit.freedesktop.org/~slomo/gst-sdk-tutorials/commit/?id=77b2656d6d661f422c0ddd1b4357f829a0ef9e5d

--
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) <http://gstreamer-devel.966125.n4.nabble.com/attachment/4676780/0/signature.asc>
Yes, thanks, I already use linking with -liconv.
Now I try to register some plugins for playback test but get an issue with this - I can't register any plugin. Code:
GST_PLUGIN_STATIC_DECLARE(videotestsrc);
GST_PLUGIN_STATIC_REGISTER(videotestsrc);

Output:
Undefined symbols for architecture x86_64:
  "gst_plugin_videotestsrc_register()", referenced from:
      MainWindow::play() in mainwindow.o
ld: symbol(s) not found for architecture x86_64

Then I tried to link against another libraries(-lgstreamer-1.0 -lgstreamer -lvideotestsrc etc.) but linker said "library not found for %library name%". I also tried to find pkg-config but I can't open Libraries dir(http://i.stack.imgur.com/Voq6b.png).
How can I register plugins?
Reply | Threaded
Open this post in threaded view
|

Re: Gstreamer on Qt iOS

Sebastian Dröge-3
On Mi, 2016-04-06 at 15:49 -0700, doon wrote:

> Yes, thanks, I already use linking with -liconv.
> Now I try to register some plugins for playback test but get an issue
> with
> this - I can't register any plugin. Code:
> GST_PLUGIN_STATIC_DECLARE(videotestsrc);
> GST_PLUGIN_STATIC_REGISTER(videotestsrc);
>
> Output:
> Undefined symbols for architecture x86_64:
>   "gst_plugin_videotestsrc_register()", referenced from:
>       MainWindow::play() in mainwindow.o
> ld: symbol(s) not found for architecture x86_64
Are you linking to GStreamer.framework? Does it work with the examples at
https://cgit.freedesktop.org/~slomo/gst-sdk-tutorials/tree/gst-sdk/tutorials/xcode%20iOS
?

--
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
Reply | Threaded
Open this post in threaded view
|

Re: Gstreamer on Qt iOS

doon
Sebastian Dröge-3 wrote
On Mi, 2016-04-06 at 15:49 -0700, doon wrote:
> Yes, thanks, I already use linking with -liconv.
> Now I try to register some plugins for playback test but get an issue
> with
> this - I can't register any plugin. Code:
> GST_PLUGIN_STATIC_DECLARE(videotestsrc);
> GST_PLUGIN_STATIC_REGISTER(videotestsrc);
>
> Output:
> Undefined symbols for architecture x86_64:
>   "gst_plugin_videotestsrc_register()", referenced from:
>       MainWindow::play() in mainwindow.o
> ld: symbol(s) not found for architecture x86_64

Are you linking to GStreamer.framework? Does it work with the examples at
https://cgit.freedesktop.org/~slomo/gst-sdk-tutorials/tree/gst-sdk/tutorials/xcode%20iOS
?

--
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) <http://gstreamer-devel.966125.n4.nabble.com/attachment/4676795/0/signature.asc>
Yes, I use -framework GStreamer. Your tutorials are works fine. I think the problem occurs due to libraries - I got the same issue with Gstreamer Android project, but after linking with some libraries all works ok. For this I need to open a Libraries dir, but how(because I have this: http://i.stack.imgur.com/Voq6b.png, reinstalling has not helped)?
By the way, how can I use a Gstreamer pkg-config files for Android? I set PKG_CONFIG_PATH to "/home/user/Downloads/gstreamer-1.0-android-armv7-1.8.0/lib/pkgconfig", and project to:
CONFIG += link_pkgconfig
PKGCONFIG += gstreamer-1.0
But get: Project ERROR: gstreamer-1.0 development package not found.
Reply | Threaded
Open this post in threaded view
|

Re: Gstreamer on Qt iOS

doon
In reply to this post by Sebastian Dröge-3
Sebastian Dröge-3 wrote
On Mi, 2016-04-06 at 15:49 -0700, doon wrote:
> Yes, thanks, I already use linking with -liconv.
> Now I try to register some plugins for playback test but get an issue
> with
> this - I can't register any plugin. Code:
> GST_PLUGIN_STATIC_DECLARE(videotestsrc);
> GST_PLUGIN_STATIC_REGISTER(videotestsrc);
>
> Output:
> Undefined symbols for architecture x86_64:
>   "gst_plugin_videotestsrc_register()", referenced from:
>       MainWindow::play() in mainwindow.o
> ld: symbol(s) not found for architecture x86_64

Are you linking to GStreamer.framework? Does it work with the examples at
https://cgit.freedesktop.org/~slomo/gst-sdk-tutorials/tree/gst-sdk/tutorials/xcode%20iOS
?

--
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) <http://gstreamer-devel.966125.n4.nabble.com/attachment/4676795/0/signature.asc>
Ok, I resolved previous problem by adding G_BEGIN_DECLS and G_END_DECLS, but I still don't know how to run a test pipelines:

1. On Android

Code(video test):
G_BEGIN_DECLS
GST_PLUGIN_STATIC_DECLARE(coreelements);
GST_PLUGIN_STATIC_DECLARE(videotestsrc);
GST_PLUGIN_STATIC_DECLARE(playback);
G_END_DECLS
//...
    GST_PLUGIN_STATIC_REGISTER(coreelements);
    GST_PLUGIN_STATIC_REGISTER(videotestsrc);
    GST_PLUGIN_STATIC_REGISTER(playback);

      GstElement *pipeline;
      GError *error = NULL;

      pipeline = gst_parse_launch("videotestsrc ! autovideosink", &error);

      gst_element_set_state(pipeline, GST_STATE_PLAYING);

Output(video test):
descriptions.c:828: error: undefined reference to 'gst_audio_format_from_string'
descriptions.c:832: error: undefined reference to 'gst_audio_format_get_info'
___________________________________________________________________________________________

Code(audio test):
G_BEGIN_DECLS
GST_PLUGIN_STATIC_DECLARE(coreelements);
GST_PLUGIN_STATIC_DECLARE(audiotestsrc);
GST_PLUGIN_STATIC_DECLARE(playback);
G_END_DECLS
//...
    GST_PLUGIN_STATIC_REGISTER(coreelements);
    GST_PLUGIN_STATIC_REGISTER(audiotestsrc);
    GST_PLUGIN_STATIC_REGISTER(playback);

      GstElement *pipeline;
      GError *error = NULL;

      pipeline = gst_parse_launch("audiotestsrc ! autoaudiosink", &error);
      if (!pipeline) {
          ui->label->setText("error");
          return;
      }
      gst_element_set_state(pipeline, GST_STATE_PLAYING);
      ui->label->setText("Playing...");

Output(audio test):
Label set to "Playing...", but I can't hear any sound(but your tutorial works fine).
___________________________________________________________________________________________

2. On iOS:

Code(video test):
G_BEGIN_DECLS
GST_PLUGIN_STATIC_DECLARE(coreelements);
GST_PLUGIN_STATIC_DECLARE(videotestsrc);
GST_PLUGIN_STATIC_DECLARE(videoconvert);
GST_PLUGIN_STATIC_DECLARE(playback);

G_END_DECLS
//…
  GST_PLUGIN_STATIC_REGISTER(coreelements);
  GST_PLUGIN_STATIC_REGISTER(videotestsrc);
  GST_PLUGIN_STATIC_REGISTER(videoconvert);
  GST_PLUGIN_STATIC_REGISTER(playback);

    GstElement *pipeline, *video_sink;
    GError *error = NULL;

    pipeline = gst_parse_launch("videotestsrc ! videoconvert ! autovideosink", &error);

    gst_element_set_state(pipeline, GST_STATE_READY);

    video_sink = gst_bin_get_by_interface(GST_BIN(pipeline), GST_TYPE_VIDEO_OVERLAY);
    if (!video_sink) {
        GST_ERROR ("Could not retrieve video sink");
        ui->label->setText("error");
        return;
    }

    gst_video_overlay_set_window_handle(GST_VIDEO_OVERLAY(video_sink), this->ui->play_widget->winId());

    gst_element_set_state(pipeline, GST_STATE_PLAYING);
    ui->label->setText("Playing...");

Output(video test):
I just get an “error” string in the label without any Application Output and playback.