2064823_ja-JP

cancel
Showing results for 
Show  only  | Search instead for 
Did you mean: 

2064823_ja-JP

2064823_ja-JP

GstV4l2Src:v4l2src0: 必要なメモリの割り当てに失敗しました

私たちは、ADV7280A-M MIPI CSI-2経由のアナログ ビデオと Yocto Linux Scarthgap および Qt 6.8.2 を備えた i.MX 8X を使用しています。

以下の作品:

gst-launch-1.0v4l2src デバイス = /dev/video2 !ビデオ/x-raw、幅=720、高さ=567、フレームレート=25/1 !オートビデオシンク

しかし、同等のものは Qt からは機能しません ( gst_parse_element_make: no element "video" )。

したがって、私は次のことを試みています:

gst-launch-1.0-vvv v4l2src デバイス=/dev/video2 !rawvideoparse 幅=720 高さ=576 フォーマット=yuy2 !オートビデオシンク

しかし、それは失敗します

エラー: 要素 /GstPipeline:pipeline0/GstV4l2Src:v4l2src0 から: 必要なメモリを割り当てることができませんでした。

完全な出力は次のとおりです。

パイプラインを一時停止に設定しています...
エラー: XDG_RUNTIME_DIR が無効であるか、環境で設定されていません。
エラー: XDG_RUNTIME_DIR が無効であるか、環境で設定されていません。
EGL: 警告: Wayland ではデフォルトのディスプレイがサポートされていません
EGL: 警告: Wayland ではデフォルトのディスプレイがサポートされていません
パイプラインはライブなので PREROLL は必要ありません...
/GstPipeline:pipeline0/GstAutoVideoSink:autovideosink0/GstKMSSink:autovideosink0-actual-sink-kms: 表示幅 = 1280
/GstPipeline:pipeline0/GstAutoVideoSink:autovideosink0/GstKMSSink:autovideosink0-実際のシンクのkms: ディスプレイの高さ = 768
パイプラインは事前ロールされています...
パイプラインを再生中に設定しています...
新しい時計: GstSystemClock
/GstPipeline:pipeline0/GstV4l2Src:v4l2src0.GstPad:src: caps = video/x-raw、フォーマット=(文字列)YUY2、幅=(整数)3840、高さ=(整数)2160、フレームレート=(分数)120/1、インターレースモード=(文字列)プログレッシブ、カラーメトリ=(文字列)1:4:5:1
/GstPipeline:pipeline0/GstRawVideoParse:rawvideoparse0.GstPad:sink: caps = video/x-raw、フォーマット=(文字列)YUY2、幅=(整数)3840、高さ=(整数)2160、フレームレート=(分数)120/1、インターレースモード=(文字列)プログレッシブ、カラーメトリ=(文字列)1:4:5:1
エラー: 要素 /GstPipeline:pipeline0/GstV4l2Src:v4l2src0 から: 必要なメモリを割り当てることができませんでした。
追加のデバッグ情報:
/usr/src/debug/gstreamer1.0-plugins-good/1.24.0.imx/sys/v4l2/gstv4l2src.c(955): gst_v4l2src_decide_allocation(): /GstPipeline:pipeline0/GstV4l2Src:v4l2src0:
バッファプールのアクティブ化に失敗しました
実行は0:00:00.043197264後に終了しました
パイプラインを NULL に設定しています...
エラー: 要素 /GstPipeline:pipeline0/GstV4l2Src:v4l2src0 から: 内部データ ストリーム エラー。
追加のデバッグ情報:
/usr/src/debug/gstreamer1.0/1.24.0.imx/libs/gst/base/gstbasesrc.c(3175):gst_base_src_loop(): /GstPipeline:pipeline0/GstV4l2Src:v4l2src0:
ストリーミングが停止しました。理由は交渉されていません (-4)
パイプラインを解放します...

ありがとう
-- ピーター

i.MX 8ファミリ | i.MX 8QuadMax (8QM) | 8QuadPlusLinuxマルチメディアRe: GstV4l2Src:v4l2src0: Failed to allocate required memory

こんにちは@joanxie

GST_DEBUG=3 gst-launch-1.0-v v4l2src バッファ数=5 デバイス=/dev/video0 !ビデオ/x-raw、フォーマット=GRAY8、深さ=8、幅=1280、高さ=800 !ビデオ変換!jpegenc !マルチファイルシンクの場所=ar0144_mono_image.jpg

問題は
GStreamer パイプラインを開始しています...
パイプラインを一時停止に設定しています...
パイプラインはライブなので PREROLL は必要ありません...
パイプラインは事前ロールされています...
パイプラインを再生中に設定しています...
0:00:00.244283375 784 0xffffb4000b70 警告 v4l2 gstv4l2object.c:5023:gst_v4l2_object_get_crop_rect:VIDIOC_G_SELECTIONでデフォルトの切り取り矩形を取得できませんでした: 無効な引数です
0:00:00.244416875 784 0xffffb4000b70 警告 v4l2 gstv4l2object.c:5230:gst_v4l2_object_probe_caps:VIDIOC_CROPCAP でピクセル アスペクト比を調査できませんでした: 無効な引数です
新しい時計: GstSystemClock
0:00:00.246845250 784 0xffffb4000b70 警告 v4l2 gstv4l2object.c:5023:gst_v4l2_object_get_crop_rect:VIDIOC_G_SELECTIONでデフォルトの切り取り矩形を取得できませんでした: 無効な引数です
/GstPipeline:pipeline0/GstV4l2Src:v4l2src0.GstPad:src: caps = video/x-raw、format=(string)GRAY8、depth=(int)8、width=(int)1280、height=(int)800、framerate=(fraction)120/1、interlace-mode=(string)progressive
/GstPipeline:pipeline0/GstCapsFilter:capsfilter0.GstPad:src: caps = video/x-raw、format=(string)GRAY8、depth=(int)8、width=(int)1280、height=(int)800、framerate=(fraction)120/1、interlace-mode=(string)progressie
/GstPipeline:pipeline0/GstVideoConvert:videoconvert0.GstPad:src: caps = video/x-raw、format=(string)GRAY8、depth=(int)8、width=(int)1280、height=(int)800、framerate=(fraction)120/1、interlace-mode=(string)progre
/GstPipeline:pipeline0/GstJpegEnc:jpegenc0.GstPad:sink: caps = video/x-raw、format=(string)GRAY8、depth=(int)8、width=(int)1280、height=(int)800、framerate=(fraction)120/1、interlace-mode=(string)progressive
/GstPipeline:pipeline0/GstVideoConvert:videoconvert0.GstPad:sink: caps = video/x-raw、format=(string)GRAY8、depth=(int)8、width=(int)1280、height=(int)800、framerate=(fraction)120/1、interlace-mode=(string)proge
/GstPipeline:pipeline0/GstCapsFilter:capsfilter0.GstPad:sink: caps = video/x-raw、format=(string)GRAY8、depth=(int)8、width=(int)1280、height=(int)800、framerate=(fraction)120/1、interlace-mode=(string)progresse
0:00:00.253795500 784 0xffffb4000b70 警告 v4l2 gstv4l2object.c:5023:gst_v4l2_object_get_crop_rect:VIDIOC_G_SELECTIONでデフォルトの切り取り矩形を取得できませんでした: 無効な引数です
0:00:00.253877250 784 0xffffb4000b70 警告 v4l2 gstv4l2object.c:5023:gst_v4l2_object_get_crop_rect:VIDIOC_G_SELECTIONでデフォルトの切り取り矩形を取得できませんでした: 無効な引数です
0:00:00.259326750 784 0xffffb4000b70 エラー v4l2bufferpool gstv4l2bufferpool.c:721:gst_v4l2_buffer_pool_streamon:STREAMON 32 のエラー (パイプ破損)
0:00:00.259393750 784 0xffffb4000b70 エラー バッファプール gstbufferpool.c:572:gst_buffer_pool_set_active:開始に失敗しました
0:00:00.259435250 784 0xffffb4000b70 警告 v4l2src gstv4l2src.c:955:gst_v4l2src_decide_allocation:エラー: 必要なメモリの割り当てに失敗しました。
0:00:00.259461750 784 0xffffb4000b70 警告 v4l2src gstv4l2src.c:955:gst_v4l2src_decide_allocation:エラー: バッファプールのアクティブ化に失敗しました
エラー: 要素 /GstPipeline:pipeline0/GstV4l2Src:v4l2src0 から: 必要なメモリを割り当てることができませんでした。
追加のデバッグ情報:
/usr/src/debug/gstreamer1.0-plugins-good/1.24.0.imx/sys/v4l2/gstv4l2src.c(955): gst_v4l2src_decide_allocation(): /GstPipeline:pipeline0/GstV4l2Src:v4l2src0:
バッファプールのアクティブ化に失敗しました
0:00:00.259690375 784 0xffffb4000b70 警告 basesrc gstbasesrc.c:3395:gst_base_src_prepare_allocation:サブクラスは割り当てを決定できませんでした
実行は0:00:00.015445250後に終了しました
パイプラインを NULL に設定しています...
0:00:00.259771000 784 0xffffb4000b70 警告 basesrc gstbasesrc.c:3175:gst_base_src_loop:エラー: 内部データ ストリーム エラー。
0:00:00.259796500 784 0xffffb4000b70 警告 basesrc gstbasesrc.c:3175:gst_base_src_loop:エラー: ストリーミングが停止しました。理由はネゴシエートされていません (-4)
エラー: 要素 /GstPipeline:pipeline0/GstV4l2Src:v4l2src0 から: 内部データ ストリーム エラー。
追加のデバッグ情報:
/usr/src/debug/gstreamer1.0/1.24.0.imx/libs/gst/base/gstbasesrc.c(3175):gst_base_src_loop(): /GstPipeline:pipeline0/GstV4l2Src:v4l2src0:
ストリーミングが停止しました。理由は交渉されていません (-4)
パイプラインを解放します...
GStreamer コマンドが終了しました。

Re: GstV4l2Src:v4l2src0: Failed to allocate required memory

完全を期すために、このThreadの元の問題は rawvideoparse ではなく capsfilter を使用して解決されました。

player.source = "gstreamer-pipeline: v4l2src デバイス=/dev/video2 !capsfilter caps=video/x-raw、幅=720、高さ=480、フレームレート=25/1"

Qt で使用すると、gst_v4l2_object_fill_format_list で断続的に SIGSEGV が発生しますが、これは別の問題だと思います。

Re: GstV4l2Src:v4l2src0: Failed to allocate required memory

こんにちは@Ahmed230 さん、あなたのメッセージのフォント サイズが非常に大きいため、読みにくいです。

このThreadは、ADV7280A-M (NTSC/PAL) が以下の条件で正常に動作することに関するものです: "!video/x-raw..." では正しく動作しますが、次の場合は動作しません: "!rawvideoparse..."

あなたのメッセージは、AR0144 イメージ センサが動作しないという内容です: "!「video/x-raw」。

別のトピック。新しい投稿を開始し、Ctrl + Shift + V を押して、大きなフォントなしでテキストのみを貼り付けるのが最適です。

また、$NUMBER_OF_PIC、$VID_DEVICE、$FRAME_SIZE を実際の値に置き換えます。

Re: GstV4l2Src:v4l2src0: Failed to allocate required memory

私の問題は、iMX8MMボード上のカメラar0144で画像やビデオをキャプチャするためのnxp 6.6.36カーネルにあります

GST_DEBUG=3 gst-launch-1.0-v v4l2src バッファ数=$NUMBER_OF_PIC デバイス=$VID_DEVICE !ビデオ/x-raw、フォーマット=GRAY8、深度=8、$FRAME_SIZE !ビデオ変換!
jpegenc !マルチファイルシンクの場所=ar0144_mono_image.jpg

GStreamer パイプラインを開始しています...
パイプラインを一時停止に設定しています...
パイプラインはライブなので PREROLL は必要ありません...
パイプラインは事前ロールされています...
パイプラインを再生中に設定しています...
0:00:00.244283375 784 0xffffb4000b70 警告 v4l2 gstv4l2object.c:5023:gst_v4l2_object_get_crop_rect:VIDIOC_G_SELECTIONでデフォルトの切り取り矩形を取得できませんでした: 無効な引数です
0:00:00.244416875 784 0xffffb4000b70 警告 v4l2 gstv4l2object.c:5230:gst_v4l2_object_probe_caps:VIDIOC_CROPCAP でピクセル アスペクト比を調査できませんでした: 無効な引数です
新しい時計: GstSystemClock
0:00:00.246845250 784 0xffffb4000b70 警告 v4l2 gstv4l2object.c:5023:gst_v4l2_object_get_crop_rect:VIDIOC_G_SELECTIONでデフォルトの切り取り矩形を取得できませんでした: 無効な引数です
/GstPipeline:pipeline0/GstV4l2Src:v4l2src0.GstPad:src: caps = video/x-raw、format=(string)GRAY8、depth=(int)8、width=(int)1280、height=(int)800、framerate=(fraction)120/1、interlace-mode=(string)progressive
/GstPipeline:pipeline0/GstCapsFilter:capsfilter0.GstPad:src: caps = video/x-raw、format=(string)GRAY8、depth=(int)8、width=(int)1280、height=(int)800、framerate=(fraction)120/1、interlace-mode=(string)progressie
/GstPipeline:pipeline0/GstVideoConvert:videoconvert0.GstPad:src: caps = video/x-raw、format=(string)GRAY8、depth=(int)8、width=(int)1280、height=(int)800、framerate=(fraction)120/1、interlace-mode=(string)progre
/GstPipeline:pipeline0/GstJpegEnc:jpegenc0.GstPad:sink: caps = video/x-raw、format=(string)GRAY8、depth=(int)8、width=(int)1280、height=(int)800、framerate=(fraction)120/1、interlace-mode=(string)progressive
/GstPipeline:pipeline0/GstVideoConvert:videoconvert0.GstPad:sink: caps = video/x-raw、format=(string)GRAY8、depth=(int)8、width=(int)1280、height=(int)800、framerate=(fraction)120/1、interlace-mode=(string)proge
/GstPipeline:pipeline0/GstCapsFilter:capsfilter0.GstPad:sink: caps = video/x-raw、format=(string)GRAY8、depth=(int)8、width=(int)1280、height=(int)800、framerate=(fraction)120/1、interlace-mode=(string)progresse
0:00:00.253795500 784 0xffffb4000b70 警告 v4l2 gstv4l2object.c:5023:gst_v4l2_object_get_crop_rect:VIDIOC_G_SELECTIONでデフォルトの切り取り矩形を取得できませんでした: 無効な引数です
0:00:00.253877250 784 0xffffb4000b70 警告 v4l2 gstv4l2object.c:5023:gst_v4l2_object_get_crop_rect:VIDIOC_G_SELECTIONでデフォルトの切り取り矩形を取得できませんでした: 無効な引数です
0:00:00.259326750 784 0xffffb4000b70 エラー v4l2bufferpool gstv4l2bufferpool.c:721:gst_v4l2_buffer_pool_streamon:STREAMON 32 のエラー (パイプ破損)
0:00:00.259393750 784 0xffffb4000b70 エラー バッファプール gstbufferpool.c:572:gst_buffer_pool_set_active:開始に失敗しました
0:00:00.259435250 784 0xffffb4000b70 警告 v4l2src gstv4l2src.c:955:gst_v4l2src_decide_allocation:エラー: 必要なメモリの割り当てに失敗しました。
0:00:00.259461750 784 0xffffb4000b70 警告 v4l2src gstv4l2src.c:955:gst_v4l2src_decide_allocation:エラー: バッファプールのアクティブ化に失敗しました
エラー: 要素 /GstPipeline:pipeline0/GstV4l2Src:v4l2src0 から: 必要なメモリを割り当てることができませんでした。
追加のデバッグ情報:
/usr/src/debug/gstreamer1.0-plugins-good/1.24.0.imx/sys/v4l2/gstv4l2src.c(955): gst_v4l2src_decide_allocation(): /GstPipeline:pipeline0/GstV4l2Src:v4l2src0:
バッファプールのアクティブ化に失敗しました
0:00:00.259690375 784 0xffffb4000b70 警告 basesrc gstbasesrc.c:3395:gst_base_src_prepare_allocation:サブクラスは割り当てを決定できませんでした
実行は0:00:00.015445250後に終了しました
パイプラインを NULL に設定しています...
0:00:00.259771000 784 0xffffb4000b70 警告 basesrc gstbasesrc.c:3175:gst_base_src_loop:エラー: 内部データ ストリーム エラー。
0:00:00.259796500 784 0xffffb4000b70 警告 basesrc gstbasesrc.c:3175:gst_base_src_loop:エラー: ストリーミングが停止しました。理由はネゴシエートされていません (-4)
エラー: 要素 /GstPipeline:pipeline0/GstV4l2Src:v4l2src0 から: 内部データ ストリーム エラー。
追加のデバッグ情報:
/usr/src/debug/gstreamer1.0/1.24.0.imx/libs/gst/base/gstbasesrc.c(3175):gst_base_src_loop(): /GstPipeline:pipeline0/GstV4l2Src:v4l2src0:
ストリーミングが停止しました。理由は交渉されていません (-4)
パイプラインを解放します...
GStreamer コマンドが終了しました。


Re: GstV4l2Src:v4l2src0: Failed to allocate required memory

今回は、どのような印刷エラー情報が得られますか?bsp 6.6 と bsp 5.10 を比較すると、bsp 6.6 ではこのパッチに基づいて 5.10 からコードが削除されていますが、5.10 bsp を試しましたか?

https://github.com/nxptest/linux-imx/commit/4f87610383a0f365ee0c68d9354ddcf099240144

Re: GstV4l2Src:v4l2src0: Failed to allocate required memory

追伸@joanxie

返信:

0:00:00.518350875 427 0xffff80000b70 警告 v4l2 gstv4l2object.c:5023:gst_v4l2_object_get_crop_rect:v4l2src0:srcVIDIOC_G_SELECTIONでデフォルトの切り取り矩形を取得できませんでした: 引数が無効です

これは、mxc_isi_cap_g_selection() が次のように呼び出されているためです。
タイプ1 V4L2_BUF_TYPE_VIDEO_CAPTUREと
ターゲット 1 V4L2_SEL_TGT_CROP_DEFAULT (およびターゲット 2 V4L2_SEL_TGT_CROP_BOUNDS)
ただし、V4L2_BUF_TYPE_VIDEO_OUTPUT または V4L2_BUF_TYPE_VIDEO_OUTPUT_MPLANE 型のみを期待しています

https://github.com/nxp-imx/linux-imx/blob/lf-6.6.y/drivers/staging/media/imx/imx8-isi-cap.c#L1164

これらに対する処理を追加すると、警告は消えます。

(ただし、その後mxc_isi_cap_s_fmt_mplaneが呼び出されます
そして何らかの理由で、fmt は RGB565 720x480 から YUYV-16 3840x2160 に変更されます。

Re: GstV4l2Src:v4l2src0: Failed to allocate required memory

こんにちは@joanxie

Yocto Scarthgapとlinux-imxを使用しています
unameは6.6.52を表示します
このコミットの後に linux-imx からフォークしました:
https://github.com/nxp-imx/linux-imx/commit/e0f9e2afd4cff3f02d71891244b4aa5899dfc786

drivers/staging/プレスリリース、製品ニュース/imx/imx8-mipi-csi2.c mxc_csi2_get_sensor_fmt()にデバッグを追加すると、次のように表示されます。
720×480。

だから混乱している
v4l2-ctl --get-fmt-video -d /dev/video2
3840/2160を表示

一貫性を高めるために、VIDIOC_G_SELECTION または VIDIOC_CROPCAP をどこかに実装するかどうかを検討しています。

ありがとう
-- ピーター

Re: GstV4l2Src:v4l2src0: Failed to allocate required memory

どのBSPバージョンをお使いですか?スケールの問題のようです。そのため、特定の解像度でテストするようにお願いしました。そうしないと、3840にアップスケールする必要があり、エラーが発生します。

Re: GstV4l2Src:v4l2src0: Failed to allocate required memory

こんにちは@joanxie 、返信ありがとうございます。

v4l2-ctl -d /dev/v4l-subdev1 --set-standard PAL

video/x-raw、幅=720、高さ=480」を使用すると、gst-launch-1.0 で動作します。

しかし、問題は、Qt 6.8.2 (QML MediaPlayer) の gstreamer-pipeline: で video/x-raw を使用すると失敗することです。

エラー GST_PIPELINE grammar.y:630:gst_parse_element_make:要素「video」がありません

Qt (playbin を使用) では、video/x-raw はキャップ フィルターであるため、要素として認識されません。

そのため、ビデオ/x-raw キャップ フィルターを必要とせずにパイプラインを動作させようとしていました...

さて、capsfilter 要素があることがわかった。SO、代わりにそれを明示的に使用します。

player.source = "gstreamer-pipeline: v4l2src デバイス=/dev/video2 !capsfilter caps=video/x-raw、幅=720、高さ=480、フレームレート=25/1"

Qt からほぼ動作します。しばらくビデオが表示されますが、その後、次のエラーでセグメントフォールトが発生します。

1 フォーマット_cmp_func gstv4l2object.c1276 0xffffd80668dc
2 g_slist_insert_sorted_real gslist.c913 0xfffff604fab4
3 g_slist_insert_sorted gslist.c964 0xfffff60504e0
4 gst_v4l2_object_fill_format_list gstv4l2object.c1324 0xffffd8065a60
5 gst_v4l2_object_get_format_list gstv4l2object.c1373 0xffffd8065f2c
6 gst_v4l2_object_probe_caps gstv4l2object.c5212 0xffffd806ed34
7 gst_v4l2_object_get_caps gstv4l2object.c5310 0xffffd806ef38
8 gst_base_src_default_query gstbasesrc.c1373 0xffffd9219490
9 gst_pad_query gstpad.c4228 0xffffd90ec24c
10 gst_pad_query_caps gstutils.c3117 0xffffd913140c
11 gst_v4l2src_negotiate gstv4l2src.c786 0xffffd8079a04
12 gst_base_src_negotiate_unlocked gstbasesrc.c3490 0xffffd9213e9c
13 gst_base_src_loop gstbasesrc.c2915 0xffffd9215e7c
14 gst_task_func gsttask.c399 0xffffd9122090
15 g_thread_pool_thread_proxy gthreadpool.c350 0xfffff605d780
16 g_thread_proxy gthread.c831 0xfffff605cad8
17 start_thread pthread_create.c447 0xfffff6730fc4
18 スレッドスタート クローン3.S 76 0xfffff67931cc

何がCANるか見てみましょう。

いずれにせよ、疑問に思うのは:

v4l2-ctl --device /dev/video2 --all
mxc-isi-cap_v1 の幅/高さ: 3840/2160 を返します...

ADV は 720 幅までしか対応していないのに、MIPI CSI-2 は 3840 幅に対応しているからでしょう。

これは変更されますが、一時的なものだけです。
v4l2-ctl -d /dev/video2 -vwidth=720,height=480

gstreamer を capsfilter なしで実行すると、3840 に戻ります。

当社の i.MX 8X ベースのボードでは、MIPI CSI-2 は ADV にハードワイヤードされており、720 幅としてのみ使用されるのですが、3840 幅ではなく 720 幅のままに構成する方法はありますか?そうすれば、それが「そのまま動作する」ようになり、Qt などの gstreamer パイプラインが簡素化されるのでしょうか?

ありがとう
-- ピーター

Re: GstV4l2Src:v4l2src0: Failed to allocate required memory

ADV7280 にどのようなフォーマットを設定しますか? パイプラインで特定の解像度を設定するのはどうでしょうか?例えば、video/x-raw、幅=720、高さ=480の場合、切り抜きに関連する問題のようです。解像度を設定して再度テストしてみてください。

Re: GstV4l2Src:v4l2src0: Failed to allocate required memory

https://github.com/GStreamer/gst-plugins-good/blob/master/sys/v4l2/gstv4l2bufferpool.c#L668

if (obj->ioctl (pool->video_fd, VIDIOC_STREAMON, &obj->type) < 0)
streamon_failed に移動します。

Tags (1)
No ratings
Version history
Last update:
‎11-21-2025 06:40 PM
Updated by: