Skip to content
  • Categories
  • Recent
  • Tags
  • Popular
  • Users
  • Groups
  • Search
  • Get Qt Extensions
  • Unsolved
Collapse
Brand Logo
  1. Home
  2. International
  3. Japanese
  4. GStreamer-CRITICAL **: gst_object_ref_sink: assertion 'GST_IS_OBJECT (object)' failed

GStreamer-CRITICAL **: gst_object_ref_sink: assertion 'GST_IS_OBJECT (object)' failed

Scheduled Pinned Locked Moved Japanese
18 Posts 2 Posters 11.4k Views
  • Oldest to Newest
  • Newest to Oldest
  • Most Votes
Reply
  • Reply as topic
Log in to reply
This topic has been deleted. Only users with topic management privileges can see it.
  • C Offline
    C Offline
    chung.k
    wrote on 6 Oct 2014, 05:43 last edited by
    #1

    board : imx53(cortex-A8)
    os : Linux ccwmx53js 2.6.35.14 #1 Thu May 29 17:42:48 JST 2014 armv7l GNU/Linux

    Qt-5.3.2 の下記の4つの環境をボード上に構築しました。
    ・qtbase
    ・qtxmlpatterns
    ・qtdeclarative
    ・qtmultimedia
    Qt Creator-3.2.1 でサンプルアプリの player をビルドして実行させましたが、
    下記のエラーが出て止まります。
    ————————————————————————
    (player:937): GStreamer-CRITICAL **: gst_object_ref_sink: assertion 'GST_IS_OBJECT (object)' failed
    This plugin does not support setParent!
    This plugin does not support setParent!
    This plugin does not support setParent!
    This plugin does not support setParent!
    Panning swap enabled
    ———————————————————————
    これは、どのような意味のエラーでしょうか?

    以上、よろしくお願いします。

    1 Reply Last reply
    0
    • C Offline
      C Offline
      chung.k
      wrote on 5 Nov 2014, 04:41 last edited by
      #2

      ~# player -platform linuxfb
      とオプションを追加したところ同じエラーメッセージがでますが、画面が表示されました。
      タッチパネルやマウスが動作せず以降の確認はできていません。

      1 Reply Last reply
      0
      • C Offline
        C Offline
        chung.k
        wrote on 5 Nov 2014, 06:23 last edited by
        #3

        オプションで、-plugin evdevmouse を追加する事でマウスが有効になりました。
        *.mp3 が動作しました。
        *.mp4 で、音は出ますが動画が出ない状況です。

        1 Reply Last reply
        0
        • C Offline
          C Offline
          chung.k
          wrote on 5 Nov 2014, 09:24 last edited by
          #4

          videosinkを見つけられず動画が出力されないようです。(デコードはしている)

          このエラーはそういう意味なのか調べて見ます。
          (player:937): GStreamer-CRITICAL **: gst_object_ref_sink: assertion ‘GST_IS_OBJECT (object)’ failed

          1 Reply Last reply
          0
          • C Offline
            C Offline
            chung.k
            wrote on 15 Dec 2014, 05:07 last edited by
            #5

            調べましたが、原因がわかりません。音は出ますが映像表示しません。
            以下、実行時のコンソールの内容です。


            ~ # /usr/local/Qt-5.3.2/examples/multimediawidgets/player/player
            QIconvCodec::convertToUnicode: using Latin-1 for conversion, iconv_open failed
            QIconvCodec::convertFromUnicode: using Latin-1 for conversion, iconv_open failed

            (player:897): GStreamer-CRITICAL **: gst_object_ref_sink: assertion 'GST_IS_OBJECT (object)' failed
            This plugin does not support setParent!
            This plugin does not support setParent!
            This plugin does not support setParent!
            This plugin does not support setParent!
            [INFO] Product Info: i.MX53
            VPU Version: firmware 1.4.48; libvpu: 5.3.2
            MFW_GST_VPU_DECODER_PLUGIN 2.0.3 build on Dec 12 2014 15:46:44.
            BLN_MAD-MMCODECS_AACD_ARM_03.06.00 buildUnhandled fault: external abort on non-linefetch (0x1018) at 0x31f0e054
            on May 9 2011 17:11:11.
            MFW_GST_AAC_PLUGIN 2.0.3 build on Dec 12 2014 15:46:55.

            VPU_DEC: State: Ready to Null
            [--->FINALIZE vpu_dec


            gst-launch でパイプラインを組んで動作させた場合、下記のプラグインが表示されて正常に動作します。
            MFW_GST_V4LSINK_PLUGIN

            ~ # gst-launch filesrc location=720p_30sec.mp4 ! qtdemux name=demuxer demuxer. !
            queue ! mfw_vpudecoder ! mfw_v4lsink demuxer. ! queue ! mfw_aacdecoder ! alsasink

            Qtアプリ がこのプラグインを見つけられないと思うのですが、
            認識させる為に何か必要でしょうか?

            以上、よろしくお願いします。

            1 Reply Last reply
            0
            • C Offline
              C Offline
              chung.k
              wrote on 15 Dec 2014, 05:07 last edited by
              #6

              調べましたが、原因がわかりません。音は出ますが映像表示しません。
              以下、実行時のコンソールの内容です。


              ~ # /usr/local/Qt-5.3.2/examples/multimediawidgets/player/player
              QIconvCodec::convertToUnicode: using Latin-1 for conversion, iconv_open failed
              QIconvCodec::convertFromUnicode: using Latin-1 for conversion, iconv_open failed

              (player:897): GStreamer-CRITICAL **: gst_object_ref_sink: assertion 'GST_IS_OBJECT (object)' failed
              This plugin does not support setParent!
              This plugin does not support setParent!
              This plugin does not support setParent!
              This plugin does not support setParent!
              [INFO] Product Info: i.MX53
              VPU Version: firmware 1.4.48; libvpu: 5.3.2
              MFW_GST_VPU_DECODER_PLUGIN 2.0.3 build on Dec 12 2014 15:46:44.
              BLN_MAD-MMCODECS_AACD_ARM_03.06.00 buildUnhandled fault: external abort on non-linefetch (0x1018) at 0x31f0e054
              on May 9 2011 17:11:11.
              MFW_GST_AAC_PLUGIN 2.0.3 build on Dec 12 2014 15:46:55.

              VPU_DEC: State: Ready to Null
              [--->FINALIZE vpu_dec


              gst-launch でパイプラインを組んで動作させた場合、下記のプラグインが表示されて正常に動作します。
              MFW_GST_V4LSINK_PLUGIN

              ~ # gst-launch filesrc location=720p_30sec.mp4 ! qtdemux name=demuxer demuxer. !
              queue ! mfw_vpudecoder ! mfw_v4lsink demuxer. ! queue ! mfw_aacdecoder ! alsasink

              Qtアプリ がこのプラグインを見つけられないと思うのですが、
              認識させる為に何か必要でしょうか?

              以上、よろしくお願いします。

              1 Reply Last reply
              0
              • C Offline
                C Offline
                chung.k
                wrote on 16 Dec 2014, 05:34 last edited by
                #7

                mediaplayer について調べて見たのですが、
                mediaplayer は、最終的に Gstreamer の playbin を呼び出しているのでしょうか?

                現状、下記のようにパイプラインを組んで実行させた場合、正常に動作するのですが、
                $ gst-launch filesrc location=xxx.mp4 ! qtdemux name=demuxer demuxer. ! queue ! mfw_vpudecoder ! autovideosink demuxer. ! queue ! mfw_aacdecoder ! autoaudiosink

                $ gst-launch playbin uri="file:xxx.mp4" を実行させた場合、パフォーマンスが悪い状況です。(sinkは選択されている)
                videowidget や player と少し状況は違いますが、このあたりに何か原因がないかと考えております。

                playbin を呼び出しているのであれば、ソースを確認したいのですが、どのソースになるでしょうか? qgstreamerplayersession.cpp でしょうか?

                ソース確認後、ソースを変更するか、playbin を作り直すか、どちらかを試そうと思っております。

                以上、よろしくお願いします。

                1 Reply Last reply
                0
                • C Offline
                  C Offline
                  chung.k
                  wrote on 16 Dec 2014, 05:34 last edited by
                  #8

                  mediaplayer について調べて見たのですが、
                  mediaplayer は、最終的に Gstreamer の playbin を呼び出しているのでしょうか?

                  現状、下記のようにパイプラインを組んで実行させた場合、正常に動作するのですが、
                  $ gst-launch filesrc location=xxx.mp4 ! qtdemux name=demuxer demuxer. ! queue ! mfw_vpudecoder ! autovideosink demuxer. ! queue ! mfw_aacdecoder ! autoaudiosink

                  $ gst-launch playbin uri="file:xxx.mp4" を実行させた場合、パフォーマンスが悪い状況です。(sinkは選択されている)
                  videowidget や player と少し状況は違いますが、このあたりに何か原因がないかと考えております。

                  playbin を呼び出しているのであれば、ソースを確認したいのですが、どのソースになるでしょうか? qgstreamerplayersession.cpp でしょうか?

                  ソース確認後、ソースを変更するか、playbin を作り直すか、どちらかを試そうと思っております。

                  以上、よろしくお願いします。

                  1 Reply Last reply
                  0
                  • T Offline
                    T Offline
                    takumiasaki
                    wrote on 16 Dec 2014, 07:39 last edited by
                    #9

                    playbin2 を使用して途中の経路を決定した上で、Qt 内で作成した videosink に繋ぎます。
                    @qgstreamerplayersession.cpp: m_playbin = gst_element_factory_make("playbin2", NULL);@

                    この辺りは GStreamer 側の問題である可能性が大きいですが、デコーダが出力する画像の形式が Qt の videosink と合わない為に問題が出ることがあります。
                    videosink 周りは qtmultimedia/src/gsttools にあります。

                    1 Reply Last reply
                    0
                    • T Offline
                      T Offline
                      takumiasaki
                      wrote on 16 Dec 2014, 07:39 last edited by
                      #10

                      playbin2 を使用して途中の経路を決定した上で、Qt 内で作成した videosink に繋ぎます。
                      @qgstreamerplayersession.cpp: m_playbin = gst_element_factory_make("playbin2", NULL);@

                      この辺りは GStreamer 側の問題である可能性が大きいですが、デコーダが出力する画像の形式が Qt の videosink と合わない為に問題が出ることがあります。
                      videosink 周りは qtmultimedia/src/gsttools にあります。

                      1 Reply Last reply
                      0
                      • C Offline
                        C Offline
                        chung.k
                        wrote on 17 Dec 2014, 00:46 last edited by
                        #11

                        ①Qt 内で作成した videosink が正常にビルドできているか確認したいのですが、gst-inspect コマンドの実行で確認できますか?sink名を教えて下さい。

                        ②playbin2 を使用して最後(videosink)まで経路を決定させる事は可能ですか?

                        以上、よろしくお願いします。

                        1 Reply Last reply
                        0
                        • C Offline
                          C Offline
                          chung.k
                          wrote on 17 Dec 2014, 00:46 last edited by
                          #12

                          ①Qt 内で作成した videosink が正常にビルドできているか確認したいのですが、gst-inspect コマンドの実行で確認できますか?sink名を教えて下さい。

                          ②playbin2 を使用して最後(videosink)まで経路を決定させる事は可能ですか?

                          以上、よろしくお願いします。

                          1 Reply Last reply
                          0
                          • C Offline
                            C Offline
                            chung.k
                            wrote on 17 Dec 2014, 02:43 last edited by
                            #13

                            Qt で fakesink に繋げられているようです。
                            Qt の videosink がビルドできていなかったり、形式が合わない場合、fakesink に繋げられるでしょうか?
                            形式は、NV12 です。

                            以上、よろしくお願いします。

                            1 Reply Last reply
                            0
                            • C Offline
                              C Offline
                              chung.k
                              wrote on 17 Dec 2014, 02:43 last edited by
                              #14

                              Qt で fakesink に繋げられているようです。
                              Qt の videosink がビルドできていなかったり、形式が合わない場合、fakesink に繋げられるでしょうか?
                              形式は、NV12 です。

                              以上、よろしくお願いします。

                              1 Reply Last reply
                              0
                              • T Offline
                                T Offline
                                takumiasaki
                                wrote on 22 Dec 2014, 11:15 last edited by
                                #15
                                1. Qt内のvideosinkはQt Multimediaのプラグイン内で作成されるもので、GStreamerの環境にインストールされるものではありません。そのため gst-inspect 等の Qt Multimedia を使用しないコマンドからは確認できません。

                                GStreamer内のクラス名は "QVideoSurfaceGstSink" になるはずです。

                                1. 質問の意図を正確に把握しているかは不明ですが、
                                  GStreamerの各プラグインがその情報も含めて正しくインストールされている場合、playbin2は最後までその経路をちゃんと計算できるはずです。
                                  これは通常 gst-launch で playbin2 だけを指定して確認できます。

                                Qtではplaybin2で計算した後にvideosinkを置き換えています。(入力系も置き合える場合もあり得ます)
                                この置き換えを行わないようにするには qtmultimedia の変更が必要です。

                                1. fakesink について
                                  互いに形式のハンドシェークは行っていますが、それがうまくいかない場合は接続できずに映像が出力できないような場合があり得ます。
                                  エラーメッセージが出たかなどは覚えていませんが GST_DEBUG 環境変数などを用いて確認することは出来たと思います。GStreamer のデバッグ方法を調べてみてください。

                                Qt 側で対応している形式については qtmultimedia/src/gsttools/qvideosurfacegstsink.cpp の QVideoSurfaceGstSink::get_caps() を見てみてください。

                                1 Reply Last reply
                                0
                                • T Offline
                                  T Offline
                                  takumiasaki
                                  wrote on 22 Dec 2014, 11:15 last edited by
                                  #16
                                  1. Qt内のvideosinkはQt Multimediaのプラグイン内で作成されるもので、GStreamerの環境にインストールされるものではありません。そのため gst-inspect 等の Qt Multimedia を使用しないコマンドからは確認できません。

                                  GStreamer内のクラス名は "QVideoSurfaceGstSink" になるはずです。

                                  1. 質問の意図を正確に把握しているかは不明ですが、
                                    GStreamerの各プラグインがその情報も含めて正しくインストールされている場合、playbin2は最後までその経路をちゃんと計算できるはずです。
                                    これは通常 gst-launch で playbin2 だけを指定して確認できます。

                                  Qtではplaybin2で計算した後にvideosinkを置き換えています。(入力系も置き合える場合もあり得ます)
                                  この置き換えを行わないようにするには qtmultimedia の変更が必要です。

                                  1. fakesink について
                                    互いに形式のハンドシェークは行っていますが、それがうまくいかない場合は接続できずに映像が出力できないような場合があり得ます。
                                    エラーメッセージが出たかなどは覚えていませんが GST_DEBUG 環境変数などを用いて確認することは出来たと思います。GStreamer のデバッグ方法を調べてみてください。

                                  Qt 側で対応している形式については qtmultimedia/src/gsttools/qvideosurfacegstsink.cpp の QVideoSurfaceGstSink::get_caps() を見てみてください。

                                  1 Reply Last reply
                                  0
                                  • C Offline
                                    C Offline
                                    chung.k
                                    wrote on 24 Dec 2014, 05:56 last edited by
                                    #17

                                    Qtではplaybin2で計算した後にvideosinkを置き換えています。

                                    正しく置換えられず?fakesink が繋がれているようなのですが、
                                    置換え処理は、QGstreamerPlayerSession::setVideoRenderer でしょうか?

                                    サンプルのvideowidget起動時の出力です。再生後もfakesinkのままです。

                                    ~ # /usr/local/Qt-5.3.2/examples/multimediawidgets/videowidget/videowidget
                                    QIconvCodec::convertToUnicode: using Latin-1 for conversion, iconv_open failed
                                    QIconvCodec::convertFromUnicode: using Latin-1 for conversion, iconv_open failed
                                    void QGstreamerPlayerSession::setVideoRenderer(QObject*)

                                    (videowidget:985): GStreamer-CRITICAL **: gst_object_ref_sink: assertion 'GST_IS_OBJECT (object)' failed
                                    Set video output: QGstreamerVideoWidgetControl(0xd2668)
                                    Current sink: fakesink0 0xba568 pending: 0x0 new sink: fakesink0 0xba568
                                    Video sink has not changed, skip video output reconfiguration
                                    This plugin does not support setParent!
                                    This plugin does not support setParent!
                                     :

                                    Qt sink側で対応している形式はこのテーブルでしょうか?

                                    static const YuvFormat qt_yuvColorLookup[] =
                                    {
                                    { QVideoFrame::Format_YUV420P, GST_MAKE_FOURCC('I','4','2','0'), 8 },
                                    { QVideoFrame::Format_YV12, GST_MAKE_FOURCC('Y','V','1','2'), 8 },
                                    { QVideoFrame::Format_UYVY, GST_MAKE_FOURCC('U','Y','V','Y'), 16 },
                                    { QVideoFrame::Format_YUYV, GST_MAKE_FOURCC('Y','U','Y','2'), 16 },
                                    { QVideoFrame::Format_NV12, GST_MAKE_FOURCC('N','V','1','2'), 8 },
                                    { QVideoFrame::Format_NV21, GST_MAKE_FOURCC('N','V','2','1'), 8 },
                                    { QVideoFrame::Format_AYUV444, GST_MAKE_FOURCC('A','Y','U','V'), 32 }
                                    };

                                    videowidget を起動/再生させても、get_caps()は呼ばれていないようなのですが、
                                    何か呼び出すコマンドのようなものがありますか?

                                    以上、よろしくお願いします。

                                    1 Reply Last reply
                                    0
                                    • C Offline
                                      C Offline
                                      chung.k
                                      wrote on 24 Dec 2014, 05:56 last edited by
                                      #18

                                      Qtではplaybin2で計算した後にvideosinkを置き換えています。

                                      正しく置換えられず?fakesink が繋がれているようなのですが、
                                      置換え処理は、QGstreamerPlayerSession::setVideoRenderer でしょうか?

                                      サンプルのvideowidget起動時の出力です。再生後もfakesinkのままです。

                                      ~ # /usr/local/Qt-5.3.2/examples/multimediawidgets/videowidget/videowidget
                                      QIconvCodec::convertToUnicode: using Latin-1 for conversion, iconv_open failed
                                      QIconvCodec::convertFromUnicode: using Latin-1 for conversion, iconv_open failed
                                      void QGstreamerPlayerSession::setVideoRenderer(QObject*)

                                      (videowidget:985): GStreamer-CRITICAL **: gst_object_ref_sink: assertion 'GST_IS_OBJECT (object)' failed
                                      Set video output: QGstreamerVideoWidgetControl(0xd2668)
                                      Current sink: fakesink0 0xba568 pending: 0x0 new sink: fakesink0 0xba568
                                      Video sink has not changed, skip video output reconfiguration
                                      This plugin does not support setParent!
                                      This plugin does not support setParent!
                                       :

                                      Qt sink側で対応している形式はこのテーブルでしょうか?

                                      static const YuvFormat qt_yuvColorLookup[] =
                                      {
                                      { QVideoFrame::Format_YUV420P, GST_MAKE_FOURCC('I','4','2','0'), 8 },
                                      { QVideoFrame::Format_YV12, GST_MAKE_FOURCC('Y','V','1','2'), 8 },
                                      { QVideoFrame::Format_UYVY, GST_MAKE_FOURCC('U','Y','V','Y'), 16 },
                                      { QVideoFrame::Format_YUYV, GST_MAKE_FOURCC('Y','U','Y','2'), 16 },
                                      { QVideoFrame::Format_NV12, GST_MAKE_FOURCC('N','V','1','2'), 8 },
                                      { QVideoFrame::Format_NV21, GST_MAKE_FOURCC('N','V','2','1'), 8 },
                                      { QVideoFrame::Format_AYUV444, GST_MAKE_FOURCC('A','Y','U','V'), 32 }
                                      };

                                      videowidget を起動/再生させても、get_caps()は呼ばれていないようなのですが、
                                      何か呼び出すコマンドのようなものがありますか?

                                      以上、よろしくお願いします。

                                      1 Reply Last reply
                                      0

                                      • Login

                                      • Login or register to search.
                                      • First post
                                        Last post
                                      0
                                      • Categories
                                      • Recent
                                      • Tags
                                      • Popular
                                      • Users
                                      • Groups
                                      • Search
                                      • Get Qt Extensions
                                      • Unsolved