Jetson AGX Xavier MIPI CSI-2 Capture from FPGA Multiple Pixels per Clock (PPC)

Hello NVIDIA Developers,

This is somewhat of continuation of my post: Jetson AGX Xavier MIPI CSI-2 without I2C from FPGA

Since the previous post, I have been able to successfully capture a 4-lane MIPI CSI-2 signal from an FPGA on the Jetson AGX Xavier. This has been accomplished at 1080p @ 30 fps and 4k @ 30 fps.

The problem now is that the FPGA signal has been changed from 1 to 2 pixels per clock (PPC). The Xavier is no longer able to capture the stream properly. The trace report shows a CHANSEL_SHORT_FRAME error.

root@xavier:/home/nvidia# cat /sys/kernel/debug/tracing/trace
 . . .
     kworker/0:4-2275  [000] ....  2915.766112: rtos_queue_send_from_isr_failed: tstamp:91467421075 queue:0x0bcb41f8
     kworker/0:4-2275  [000] ....  2915.766113: rtos_queue_send_from_isr_failed: tstamp:91467421242 queue:0x0bcb8a60
     kworker/0:4-2275  [000] ....  2915.766114: rtos_queue_send_from_isr_failed: tstamp:91467421407 queue:0x0bcba5e0
     kworker/0:4-2275  [000] ....  2915.766114: rtos_queue_send_from_isr_failed: tstamp:91467421564 queue:0x0bcbb3a0
     kworker/0:4-2275  [000] ....  2915.766115: rtos_queue_send_from_isr_failed: tstamp:91467421719 queue:0x0bcbc160
     kworker/0:4-2275  [000] ....  2915.766116: rtos_queue_peek_from_isr_failed: tstamp:91467659742 queue:0x0bcbcf78
     kworker/0:4-2275  [000] ....  2915.766117: rtcpu_vinotify_event: tstamp:91467693288 tag:RESERVED_19 channel:0x23 frame:0 vi_tstamp:92278701824 data:0x0702009c
     kworker/0:4-2275  [000] ....  2915.766118: rtcpu_vinotify_event: tstamp:91467693444 tag:FS channel:0x00 frame:0 vi_tstamp:91467410965 data:0x00000010
     kworker/0:4-2275  [000] ....  2915.766118: rtcpu_vinotify_event: tstamp:91467693622 tag:ATOMP_FS channel:0x00 frame:0 vi_tstamp:91467410965 data:0x00000000
     kworker/0:4-2275  [000] ....  2915.766119: rtcpu_vinotify_event: tstamp:91467693772 tag:RESERVED_18 channel:0x23 frame:0 vi_tstamp:92278787040 data:0x10000000
     kworker/0:4-2275  [000] ....  2915.766119: rtcpu_vinotify_event: tstamp:91467693943 tag:RESERVED_18 channel:0x23 frame:0 vi_tstamp:92278790944 data:0x3100009d
     kworker/0:4-2275  [000] ....  2915.766120: rtcpu_vinotify_event: tstamp:91467694091 tag:CHANSEL_PXL_SOF channel:0x23 frame:0 vi_tstamp:91467414179 data:0x00000001
     kworker/0:4-2275  [000] ....  2915.766120: rtcpu_vinotify_event: tstamp:91467694261 tag:RESERVED_19 channel:0x23 frame:0 vi_tstamp:92278838880 data:0x0802009c
  gst-launch-1.0-11140 [000] ....  2915.818524: tegra_channel_set_stream: enable : 0x0
  gst-launch-1.0-11140 [000] ....  2915.818527: tegra_channel_set_stream: ov5693 30-001a : 0x0
  gst-launch-1.0-11140 [000] ....  2915.818543: tegra_channel_set_stream: 15a00000.nvcsi--1 : 0x0
  gst-launch-1.0-11140 [000] ....  2915.818545: csi_s_stream: enable : 0x0
     kworker/0:4-2275  [000] ....  2915.822142: rtcpu_vinotify_event: tstamp:91468454050 tag:FE channel:0x00 frame:0 vi_tstamp:91468451307 data:0x00000020
     kworker/0:4-2275  [000] ....  2915.822146: rtcpu_vinotify_event: tstamp:91468454243 tag:CHANSEL_SHORT_FRAME channel:0x01 frame:0 vi_tstamp:91468451307 data:0x01000000
     kworker/0:4-2275  [000] ....  2915.822146: rtcpu_vinotify_event: tstamp:91468454437 tag:RESERVED_19 channel:0x23 frame:0 vi_tstamp:92312028544 data:0x0102009c
     kworker/0:4-2275  [000] ....  2915.822147: rtcpu_vinotify_event: tstamp:91468454612 tag:ATOMP_FE channel:0x00 frame:0 vi_tstamp:91468451307 data:0x00000000
     kworker/0:4-2275  [000] ....  2915.822148: rtcpu_vinotify_event: tstamp:91468454760 tag:RESERVED_19 channel:0x23 frame:0 vi_tstamp:92312032608 data:0x0702009d
     kworker/0:4-2275  [000] ....  2915.822149: rtcpu_vinotify_event: tstamp:91468454927 tag:FS channel:0x00 frame:0 vi_tstamp:91468452575 data:0x00000010
     kworker/0:4-2275  [000] ....  2915.822149: rtcpu_vinotify_event: tstamp:91468455075 tag:ATOMP_FS channel:0x00 frame:0 vi_tstamp:91468452575 data:0x00000000
     kworker/0:4-2275  [000] ....  2915.822150: rtcpu_vinotify_event: tstamp:91468455245 tag:RESERVED_18 channel:0x23 frame:0 vi_tstamp:92312093312 data:0x10000000
     kworker/0:4-2275  [000] ....  2915.822150: rtcpu_vinotify_event: tstamp:91468455390 tag:RESERVED_18 channel:0x23 frame:0 vi_tstamp:92312097248 data:0x3100009e
     kworker/0:4-2275  [000] ....  2915.822163: rtos_queue_send_from_isr_failed: tstamp:91468461380 queue:0x0bcb41f8
     kworker/0:4-2275  [000] ....  2915.822164: rtos_queue_send_from_isr_failed: tstamp:91468461547 queue:0x0bcb8a60
     kworker/0:4-2275  [000] ....  2915.822165: rtos_queue_send_from_isr_failed: tstamp:91468461710 queue:0x0bcba5e0
     kworker/0:4-2275  [000] ....  2915.822165: rtos_queue_send_from_isr_failed: tstamp:91468461867 queue:0x0bcbb3a0
     kworker/0:4-2275  [000] ....  2915.822166: rtos_queue_send_from_isr_failed: tstamp:91468462023 queue:0x0bcbc160
     kworker/0:4-2275  [000] ....  2915.822166: rtcpu_vinotify_event: tstamp:91468757473 tag:CHANSEL_PXL_SOF channel:0x23 frame:0 vi_tstamp:91468455790 data:0x00000001
     kworker/0:4-2275  [000] ....  2915.822167: rtcpu_vinotify_event: tstamp:91468757624 tag:RESERVED_19 channel:0x23 frame:0 vi_tstamp:92312170400 data:0x0802009d
     kworker/0:4-2275  [000] ....  2915.822168: rtos_queue_send_from_isr_failed: tstamp:91469509769 queue:0x0bcb41f8
     kworker/0:4-2275  [000] ....  2915.822169: rtos_queue_send_from_isr_failed: tstamp:91469509935 queue:0x0bcb8a60
     kworker/0:4-2275  [000] ....  2915.822170: rtos_queue_send_from_isr_failed: tstamp:91469510099 queue:0x0bcba5e0
     kworker/0:4-2275  [000] ....  2915.822170: rtos_queue_send_from_isr_failed: tstamp:91469510257 queue:0x0bcbb3a0
     kworker/0:4-2275  [000] ....  2915.822171: rtos_queue_send_from_isr_failed: tstamp:91469510412 queue:0x0bcbc160
  gst-launch-1.0-11140 [003] ....  2915.831883: tegra_channel_close: vi-output, ov5693 30-001a
  gst-launch-1.0-11140 [003] ....  2915.831907: tegra_channel_set_power: ov5693 30-001a : 0x0
  gst-launch-1.0-11140 [003] ....  2915.831924: camera_common_s_power: status : 0x0
  gst-launch-1.0-11140 [000] ....  2915.835148: tegra_channel_set_power: 15a00000.nvcsi--1 : 0x0
  gst-launch-1.0-11140 [000] ....  2915.835157: csi_s_power: enable : 0x0
     kworker/0:4-2275  [000] ....  2915.878112: rtcpu_vinotify_event: tstamp:91469696513 tag:FE channel:0x00 frame:0 vi_tstamp:91469492918 data:0x00000020
     kworker/0:4-2275  [000] ....  2915.878117: rtcpu_vinotify_event: tstamp:91469696668 tag:CHANSEL_SHORT_FRAME channel:0x01 frame:0 vi_tstamp:91469492918 data:0x01000000
     kworker/0:4-2275  [000] ....  2915.878117: rtcpu_vinotify_event: tstamp:91469696846 tag:RESERVED_19 channel:0x23 frame:0 vi_tstamp:92345360032 data:0x0102009d
     kworker/0:4-2275  [000] ....  2915.878118: rtcpu_vinotify_event: tstamp:91469696999 tag:ATOMP_FE channel:0x00 frame:0 vi_tstamp:91469492918 data:0x00000000
     kworker/0:4-2275  [000] ....  2915.878118: rtcpu_vinotify_event: tstamp:91469697172 tag:RESERVED_19 channel:0x23 frame:0 vi_tstamp:92345364128 data:0x0702009e
     kworker/0:4-2275  [000] ....  2915.878119: rtcpu_vinotify_event: tstamp:91469697317 tag:FS channel:0x00 frame:0 vi_tstamp:91469494186 data:0x00000010
     kworker/0:4-2275  [000] ....  2915.878120: rtcpu_vinotify_event: tstamp:91469697491 tag:ATOMP_FS channel:0x00 frame:0 vi_tstamp:91469494186 data:0x00000000
     kworker/0:4-2275  [000] ....  2915.878120: rtcpu_vinotify_event: tstamp:91469697636 tag:RESERVED_18 channel:0x23 frame:0 vi_tstamp:92345423520 data:0x10000000
     kworker/0:4-2275  [000] ....  2915.878121: rtcpu_vinotify_event: tstamp:91469697807 tag:RESERVED_18 channel:0x23 frame:0 vi_tstamp:92345427424 data:0x3100009f
     kworker/0:4-2275  [000] ....  2915.878122: rtcpu_vinotify_event: tstamp:91469697954 tag:CHANSEL_PXL_SOF channel:0x23 frame:0 vi_tstamp:91469497400 data:0x00000001
     kworker/0:4-2275  [000] ....  2915.878128: rtcpu_vinotify_event: tstamp:91469698126 tag:RESERVED_19 channel:0x23 frame:0 vi_tstamp:92345501984 data:0x0802009e
     kworker/0:4-2275  [000] ....  2915.878134: rtos_queue_send_from_isr_failed: tstamp:91469842491 queue:0x0bcb41f8
     kworker/0:4-2275  [000] ....  2915.878135: rtos_queue_send_from_isr_failed: tstamp:91469842694 queue:0x0bcb8a60
     kworker/0:4-2275  [000] ....  2915.878135: rtos_queue_send_from_isr_failed: tstamp:91469842898 queue:0x0bcba5e0
     kworker/0:4-2275  [000] ....  2915.878136: rtos_queue_send_from_isr_failed: tstamp:91469843095 queue:0x0bcbb3a0
     kworker/0:4-2275  [000] ....  2915.878137: rtos_queue_send_from_isr_failed: tstamp:91469843294 queue:0x0bcbc160
     kworker/0:4-2275  [000] ....  2915.878137: rtcpu_vinotify_event: tstamp:91469844524 tag:CHANSEL_LOAD_FRAMED channel:0x01 frame:0 vi_tstamp:91469843891 data:0x380003c4
     kworker/0:4-2275  [000] ....  2915.878138: rtcpu_vinotify_event: tstamp:91469844747 tag:CHANSEL_FAULT_FE channel:0x01 frame:0 vi_tstamp:91469843891 data:0x00000000
     kworker/0:4-2275  [000] ....  2915.878138: rtcpu_vinotify_event: tstamp:91469844936 tag:ATOMP_FE channel:0x00 frame:0 vi_tstamp:91469843891 data:0x00000000
     kworker/0:4-2275  [000] ....  2915.934135: rtos_queue_peek_from_isr_failed: tstamp:91472659755 queue:0x0bcbcf78
     kworker/0:4-2275  [000] ....  2916.102189: rtos_queue_peek_from_isr_failed: tstamp:91477659751 queue:0x0bcbcf78
     kworker/0:4-2275  [000] ....  2916.270108: rtos_queue_peek_from_isr_failed: tstamp:91482659758 queue:0x0bcbcf78
     kworker/0:4-2275  [000] ....  2916.438130: rtos_queue_peek_from_isr_failed: tstamp:91487659751 queue:0x0bcbcf78
     kworker/0:4-2275  [000] ....  2916.606245: rtos_queue_peek_from_isr_failed: tstamp:91492659751 queue:0x0bcbcf78
     kworker/0:4-2275  [000] ....  2916.774159: rtos_queue_peek_from_isr_failed: tstamp:91497659751 queue:0x0bcbcf78
     kworker/0:4-2275  [000] ....  2916.886148: rtos_queue_peek_from_isr_failed: tstamp:91502659751 queue:0x0bcbcf78
     kworker/0:4-2275  [000] ....  2917.054130: rtos_queue_peek_from_isr_failed: tstamp:91507659755 queue:0x0bcbcf78
     kworker/0:4-2275  [000] ....  2917.222121: rtos_queue_peek_from_isr_failed: tstamp:91512659752 queue:0x0bcbcf78
     kworker/0:4-2275  [000] ....  2917.390125: rtos_queue_peek_from_isr_failed: tstamp:91517659752 queue:0x0bcbcf78
     kworker/0:4-2275  [000] ....  2917.558107: rtos_queue_peek_from_isr_failed: tstamp:91522659751 queue:0x0bcbcf78
     kworker/0:4-2275  [000] ....  2917.726110: rtos_queue_peek_from_isr_failed: tstamp:91527659751 queue:0x0bcbcf78
     kworker/0:4-2275  [000] ....  2917.894087: rtos_queue_peek_from_isr_failed: tstamp:91532659752 queue:0x0bcbcf78
     kworker/0:4-2275  [000] ....  2918.006141: rtos_queue_peek_from_isr_failed: tstamp:91537659751 queue:0x0bcbcf78
     kworker/0:4-2275  [000] ....  2918.174097: rtos_queue_peek_from_isr_failed: tstamp:91542659754 queue:0x0bcbcf78
     kworker/0:4-2275  [000] ....  2918.342149: rtos_queue_peek_from_isr_failed: tstamp:91547659752 queue:0x0bcbcf78
     kworker/0:4-2275  [000] ....  2918.510103: rtos_queue_peek_from_isr_failed: tstamp:91552659751 queue:0x0bcbcf78
     kworker/0:4-2275  [000] ....  2918.678149: rtos_queue_peek_from_isr_failed: tstamp:91557659752 queue:0x0bcbcf78
     kworker/0:4-2275  [000] ....  2918.846137: rtos_queue_peek_from_isr_failed: tstamp:91562659751 queue:0x0bcbcf78
     kworker/0:4-2275  [000] ....  2919.014115: rtos_queue_peek_from_isr_failed: tstamp:91567659751 queue:0x0bcbcf78
     kworker/0:4-2275  [000] ....  2919.126155: rtos_queue_peek_from_isr_failed: tstamp:91572659751 queue:0x0bcbcf78
     kworker/0:4-2275  [000] ....  2919.294099: rtos_queue_peek_from_isr_failed: tstamp:91577659751 queue:0x0bcbcf78
     kworker/0:4-2275  [000] ....  2919.462114: rtos_queue_peek_from_isr_failed: tstamp:91582659751 queue:0x0bcbcf78
     kworker/0:1-9796  [000] ....  2919.630126: rtos_queue_peek_from_isr_failed: tstamp:91587659805 queue:0x0bcbcf78
     kworker/0:1-9796  [000] ....  2919.798115: rtos_queue_peek_from_isr_failed: tstamp:91592659729 queue:0x0bcbcf78
     kworker/0:1-9796  [000] ....  2919.966081: rtos_queue_peek_from_isr_failed: tstamp:91597659730 queue:0x0bcbcf78
     kworker/0:1-9796  [000] ....  2920.134147: rtos_queue_peek_from_isr_failed: tstamp:91602659734 queue:0x0bcbcf78
     kworker/0:1-9796  [000] ....  2920.246140: rtos_queue_peek_from_isr_failed: tstamp:91607659751 queue:0x0bcbcf78
     kworker/0:1-9796  [000] ....  2920.414141: rtos_queue_peek_from_isr_failed: tstamp:91612659755 queue:0x0bcbcf78
     kworker/0:1-9796  [000] ....  2920.582089: rtos_queue_peek_from_isr_failed: tstamp:91617659752 queue:0x0bcbcf78

The kernel shows the same repeated messages. Frame numbers do not increment and reports error 131072.

Actually, the frame numbers never incremented properly and reported err_data 0. Video captures were successful under these conditions, so it’s likely to be a different problem altogether

nvidia@xavier:~$ dmesg
  . . .
[ 2914.051593] tegra194-vi5 15c10000.vi: corr_err: discarding frame 0, flags: 0, err_data 131072
[ 2914.084900] tegra194-vi5 15c10000.vi: corr_err: discarding frame 0, flags: 0, err_data 131072
[ 2914.118234] tegra194-vi5 15c10000.vi: corr_err: discarding frame 0, flags: 0, err_data 131072
[ 2914.151585] tegra194-vi5 15c10000.vi: corr_err: discarding frame 0, flags: 0, err_data 131072
[ 2914.184888] tegra194-vi5 15c10000.vi: corr_err: discarding frame 0, flags: 0, err_data 131072
[ 2914.218223] tegra194-vi5 15c10000.vi: corr_err: discarding frame 0, flags: 0, err_data 131072
[ 2914.251572] tegra194-vi5 15c10000.vi: corr_err: discarding frame 0, flags: 0, err_data 131072
[ 2914.284886] tegra194-vi5 15c10000.vi: corr_err: discarding frame 0, flags: 0, err_data 131072
[ 2914.318218] tegra194-vi5 15c10000.vi: corr_err: discarding frame 0, flags: 0, err_data 131072
[ 2914.351580] tegra194-vi5 15c10000.vi: corr_err: discarding frame 0, flags: 0, err_data 131072
[ 2914.384906] tegra194-vi5 15c10000.vi: corr_err: discarding frame 0, flags: 0, err_data 131072
[ 2914.418212] tegra194-vi5 15c10000.vi: corr_err: discarding frame 0, flags: 0, err_data 131072
[ 2914.451556] tegra194-vi5 15c10000.vi: corr_err: discarding frame 0, flags: 0, err_data 131072
[ 2914.484878] tegra194-vi5 15c10000.vi: corr_err: discarding frame 0, flags: 0, err_data 131072
[ 2914.518198] tegra194-vi5 15c10000.vi: corr_err: discarding frame 0, flags: 0, err_data 131072
[ 2914.551539] tegra194-vi5 15c10000.vi: corr_err: discarding frame 0, flags: 0, err_data 131072
[ 2914.584901] tegra194-vi5 15c10000.vi: corr_err: discarding frame 0, flags: 0, err_data 131072
[ 2914.618207] tegra194-vi5 15c10000.vi: corr_err: discarding frame 0, flags: 0, err_data 131072
[ 2914.651570] tegra194-vi5 15c10000.vi: corr_err: discarding frame 0, flags: 0, err_data 131072
[ 2914.684896] tegra194-vi5 15c10000.vi: corr_err: discarding frame 0, flags: 0, err_data 131072
[ 2914.718216] tegra194-vi5 15c10000.vi: corr_err: discarding frame 0, flags: 0, err_data 131072
[ 2914.751533] tegra194-vi5 15c10000.vi: corr_err: discarding frame 0, flags: 0, err_data 131072
[ 2914.784880] tegra194-vi5 15c10000.vi: corr_err: discarding frame 0, flags: 0, err_data 131072
[ 2914.818237] tegra194-vi5 15c10000.vi: corr_err: discarding frame 0, flags: 0, err_data 131072
[ 2914.851534] tegra194-vi5 15c10000.vi: corr_err: discarding frame 0, flags: 0, err_data 131072
[ 2914.884871] tegra194-vi5 15c10000.vi: corr_err: discarding frame 0, flags: 0, err_data 131072
[ 2914.918184] tegra194-vi5 15c10000.vi: corr_err: discarding frame 0, flags: 0, err_data 131072
[ 2914.951522] tegra194-vi5 15c10000.vi: corr_err: discarding frame 0, flags: 0, err_data 131072
[ 2914.984861] tegra194-vi5 15c10000.vi: corr_err: discarding frame 0, flags: 0, err_data 131072
[ 2915.018186] tegra194-vi5 15c10000.vi: corr_err: discarding frame 0, flags: 0, err_data 131072
[ 2915.051519] tegra194-vi5 15c10000.vi: corr_err: discarding frame 0, flags: 0, err_data 131072
[ 2915.084839] tegra194-vi5 15c10000.vi: corr_err: discarding frame 0, flags: 0, err_data 131072
[ 2915.118218] tegra194-vi5 15c10000.vi: corr_err: discarding frame 0, flags: 0, err_data 131072
[ 2915.151516] tegra194-vi5 15c10000.vi: corr_err: discarding frame 0, flags: 0, err_data 131072
[ 2915.184853] tegra194-vi5 15c10000.vi: corr_err: discarding frame 0, flags: 0, err_data 131072
[ 2915.218193] tegra194-vi5 15c10000.vi: corr_err: discarding frame 0, flags: 0, err_data 131072
[ 2915.251508] tegra194-vi5 15c10000.vi: corr_err: discarding frame 0, flags: 0, err_data 131072
[ 2915.284832] tegra194-vi5 15c10000.vi: corr_err: discarding frame 0, flags: 0, err_data 131072
[ 2915.318183] tegra194-vi5 15c10000.vi: corr_err: discarding frame 0, flags: 0, err_data 131072
[ 2915.351498] tegra194-vi5 15c10000.vi: corr_err: discarding frame 0, flags: 0, err_data 131072
[ 2915.384841] tegra194-vi5 15c10000.vi: corr_err: discarding frame 0, flags: 0, err_data 131072
[ 2915.418194] tegra194-vi5 15c10000.vi: corr_err: discarding frame 0, flags: 0, err_data 131072
[ 2915.451498] tegra194-vi5 15c10000.vi: corr_err: discarding frame 0, flags: 0, err_data 131072
[ 2915.484824] tegra194-vi5 15c10000.vi: corr_err: discarding frame 0, flags: 0, err_data 131072
[ 2915.518163] tegra194-vi5 15c10000.vi: corr_err: discarding frame 0, flags: 0, err_data 131072
[ 2915.551482] tegra194-vi5 15c10000.vi: corr_err: discarding frame 0, flags: 0, err_data 131072
[ 2915.584814] tegra194-vi5 15c10000.vi: corr_err: discarding frame 0, flags: 0, err_data 131072
[ 2915.618158] tegra194-vi5 15c10000.vi: corr_err: discarding frame 0, flags: 0, err_data 131072
[ 2915.651549] tegra194-vi5 15c10000.vi: corr_err: discarding frame 0, flags: 0, err_data 131072
[ 2915.684813] tegra194-vi5 15c10000.vi: corr_err: discarding frame 0, flags: 0, err_data 131072
[ 2915.718138] tegra194-vi5 15c10000.vi: corr_err: discarding frame 0, flags: 0, err_data 131072
[ 2915.751502] tegra194-vi5 15c10000.vi: corr_err: discarding frame 0, flags: 0, err_data 131072
[ 2915.784798] tegra194-vi5 15c10000.vi: corr_err: discarding frame 0, flags: 0, err_data 131072
[ 2915.818253] tegra194-vi5 15c10000.vi: corr_err: discarding frame 0, flags: 0, err_data 131072

The same dmesg output can be achieved by running Cheese, which outputs a black screen, as pictured below.

Capture attempts using v4l2-ctl freeze. However, I have managed to get some kind of partial output by running the following Gstreamer pipeline for 4k.

gst-launch-1.0 nvv4l2camerasrc ! 'video/x-raw(memory:NVMM), format=(string)UYVY, \
  width=(int)3840, height=(int)2160' ! nvvidconv ! \
  'video/x-raw(memory:NVMM), format=(string)I420' ! \
  nvv4l2h264enc ! 'video/x-h264, \
  stream-format=(string)byte-stream' ! h264parse ! \
  qtmux ! filesink location=test-4k-2PPC.mp4 -e

This pipeline crashes after 5 seconds, but outputs a single-frame MP4 file that can be converted to JPEG. VLC failed to open this mp4, but I was able to do it with SMPlayer and mpv Media Player. My attempts to capture directly to JPEG using Gstreamer failed, presumably because of the shorter than expected frame. This a screenshot of the single-frame MP4/JPEG file:

The following image was captured from a similar Gstreamer pipeline while streaming a 1 PPC signal from the FPGA. This is what the image should look like, regardless of number of pixels per clock:

I’ve read through the AGX Xavier TRM, particularly about handling 4 PPC / 8 PPC, and, quite frankly, much of it is over my head. Am I able to control these registers? Should I need to worry about making additional changes to the camera sensor driver or device tree to accommodate PPC changes from the incoming stream, or does VI/CSI on the Xavier handle it automatically?

Any advice would be greatly appreciated.

Thanks!
Ian

Have a try to boost the clocks to try. Also try to modify the pixel_clk_hz in the device tree.

https://elinux.org/index.php?title=Jetson_TX2_Camera_BringUp

Hi @ShaneCCC ,

Thank you for your suggestion. Looks like we had a couple bugs on the FPGA side. We’re still working through it, but I would consider this case closed.

Thanks!
Ian