Only the first frame is corrupted after the resolution change?
No, unfortunately.
I saw one corrupted picture every GOP, not only the first picture after the resolution change.
In my environment, a few minutes after started it is reproduced 100%.
Today I’m testing memory leak and segmentation fault issue of streaming server side,
(the resolution change every 3 seconds)
for 25 minutes it was not reproduced, (25-32 min the green image was reproduced)
it was only once with re-open v4l2 device (converter/encoder).
Because the test script uses sample/10_camera_recording,
each resolution sequences are independent from converter/encoder internal state.
I have not yet found the conditions.
My environment:
6 core enabled
max clock
tmpfs for logging
change irq smp_affinity
#!/bin/bash
# Set to 6 Core mode
nvpmodel -m 0
# Set interrupt procedures to certain CPU core
# ether_qos.common_irq
sh -c "echo 38 > /proc/irq/42/smp_affinity"
# 2490000.ether_qos.rx0
sh -c "echo 38 > /proc/irq/44/smp_affinity"
# 2490000.ether_qos.tx0
sh -c "echo 30 > /proc/irq/45/smp_affinity"
# xhci-hcd:usb1
sh -c "echo 20 > /proc/irq/59/smp_affinity"
# Set clocks to the highest fix mode
~/jetson_clocks.sh
Hi mynaemi,
We don’t reproduce the issue in running default 00_video_decode on r28.2/TX2. Do you install all via Jetpack 3.2? Maybe you applied some patches on default tegra_multimedia_api package, making the issue?
I have installed JetPack 3.2 normally, MMAPI was installed in the JetPack.
All the libtegrav4l2.so file, include files and C++ source files are original.
(Timestamp is 2nd March 2018)
00_video_decode sample source is modified for this analysis:
fix capture plane resolution of Converter
fix display resolution of Renderer
add logging output by “cout <<”
It have been sent souce files on this #9 comment as an attached file “20180418_DecConvIssue.zip”.
You can “diff” them.
Today I have uploaded an executable binary file on the ftp server.
I don’t know how to get patches for MMAPI.
For the encoder timestamp issue, I replaced .so file of R28.1.
For other workaround, I modified MMAPI R28.2 of only server (encoder) side.
Now in my test environment, there are 3 JetsonTx2s.
R28.1 for encoder and decoder (comparison between R28.1 and R28.2)
R28.2 for encoder (modified for dqBuffer, denitPlane workaround)
R28.2 for decoder
What else can I do?
Should I re-install JetPack 3.2 again ?
(remove JetPack on the UbuntuPC, re-download, and erase JetsonTX2 flash memory ?)
I replaced .so file for only R28.1 JetsonTX2, not for R28.2.
Today I borrowed a new one JetsonTX2 from another division in our company,
flashed Linux for Tegra, and installed JetPack 3.2.
(I borrowed another JetsonTX2, and installed JetPack 3.1 for comparison.)
Then I have tried it with:
Executable Binary: Original sample/00_video_decode/video_decode
My test stream data
Your test stream data
Without:
jetson_clock.sh
change smp_affinity for interrupt
tmpfs for logging
Unfortunately, the issue was reproduced on R28.2 every trial (5-6 times).
On R28.1, the issue was not reproduced.
I have uploaded 2 videos to your ftp server, please see them.
We can’t reproduce corrupt image issue.
Decoding and playing “testStream.h264” result looks good without problem.
List our reproduced steps:
Install JetPack-3.2 (include all package)
scp your "testStream.h264" H264 file to tx2 device
Start decoding and playing
nvidia@tegra-ubuntu:~/tegra_multimedia_api/samples/00_video_decode$ ./video_decode H264 /home/nvidia/testStream-user.h264
---> App run was successful, check 4K monitor in resolution change, I don't see corrupt image issue.
Is your steps the same with us? Could you also share your steps (if different), I can try to repro issue.
I have been waiting for new information for the past 4 months,
but unfortunately no new (good or bad) information has been announced.
What is the state of your analysis ?
Now I’m using 4 Core mode for H.264 decoder with L4T R28.1,
because my system is one way communication.
But our next plan is using the bidirectional communication,
this problem will be fatal.
(For H.264 encoder, higher throughput is required,
then using 6 Core mode and L4T R28.2 or R28.2.1.)
when i disable dpb,I found that there were still several frames of delay.
I feel that the algorithm has set up an input buffer. When several frames are read, the decoding starts. My problem is how to make the algorithm read a frame of data and decode a frame of data.