linux-sunxi / libvdpau-sunxi

Experimental VDPAU for Allwinner sunxi SoCs (obsolete, see https://linux-sunxi.org/Sunxi-Cedrus)
https://linux-sunxi.org/Cedrus
166 stars 80 forks source link

Video panning/jitter observed with hardware acceleration on mplayer using libvdpau-sunxi #50

Open navjotsingh07 opened 8 years ago

navjotsingh07 commented 8 years ago

I am working on 1080p MP4 (around 20 Mbps/29.97 fps) video play with hardware acceleration on mplayer that use video output as vdpau and video codecs as ffmpeg12vdpau, ffh264vdpau, ffwmv3vdpau, ffvc1vdpau I already installed libvdpau-sunxi on my debian system. The debian version I am using is 3.4.90+ (wheezy). The hardware is based on Allwinner A20. But when I play video using serial console command: mplayer video1.mp4 I observed panning/jitters on many frames of the video. The audio and video are also out of sync in the first iteration of the video. The out of sync problem happens only in the first iteration of the video; if I play the same video again, the audio-video remains in sync, but the panning/jitters are still there in the video. I tried to troubleshoot the issue with different videos/web forums, but couldn't get success. Since A20 can easily play 30 Mbps/30 fps 1080p videos, I don't understand why my hardware is not playing it smoothly. Is there any kind of specific settings that I need to look upon. Since I am quite new to A20 allwinner based development, so need a direction to fix my issue.

Can anyone help me out to solve the issue?

thanks Nav

rellla commented 8 years ago

logs? Do known-to-work videos play? Did you try mpv? Which kernel version are you using? The linux-sunxi one? How is your display output configured? 50Hz, 60Hz?

Regards rellla

navjotsingh07 commented 8 years ago

Hi rellla thanks for the reply. I am using kernel version 3.4.90+ debian wheezy. I set the display output frequency to 1080p 60 Hz in my script.bin file by selecting HDMI as output mode.

My mplayer logs: test.txt

I didn't tried the mpv yet. Will it makes any difference or is it better than mplayer??

thanks Nav

rellla commented 8 years ago

What libvdpau-sunxi version do you use? I meant, did you build your kernel yourself? And do other videos work, for example the ones from here http://linux-sunxi.org/Cedrus/libvdpau-sunxi#Playing_video ? Are you working on any prebuilt distro/image? I don't know of mplayer and his versions. I always use mpv.

navjotsingh07 commented 8 years ago

I am using kernel image build by olimex.com. I followed the steps on olimex and made the kernel for my board. I don't know how to check libvdpau-sunxi version??

rellla commented 8 years ago

Link?

navjotsingh07 commented 8 years ago

https://github.com/OLIMEX/OLINUXINO/tree/master/SOFTWARE/A20/A20-build-3.4.90

navjotsingh07 commented 8 years ago

And i use this link for libvdpau-sunxi installation on my board: https://github.com/linux-sunxi/libvdpau-sunxi

rellla commented 8 years ago

Kernel is not the newest one, but that should not be the issue. For libvdpau-sunxi, you are for sure using some old revision and not the recent master branch. Check that! Did you build it yourself and did you check linux-sunxi.org? And, most important question which one you still didn't answer, are other videos working, esp. the big bunny h264 video? Rellla

navjotsingh07 commented 8 years ago

Yes, the big buck bunny video works fine especially the 1080p/30 fps one. But in many other videos, I am facing the same issue as I discussed before. So I think its not with any of the special video, the problem is somewhere with some kind of settings or so which I don't understand. Will the libvdpau-sunxi version must be same as of the kernel version?? Because I didn't have a look at the branch version which I download for my board..

rellla commented 8 years ago

libvdpau-sunxi has nothing to do with kernel version. Go read the wiki and use a recent version. With the olimex link above I still don't know if you use some precompiled version or compiled it by yourself. I can't find any word on vdpau. The only thing I know is, it's an old version and may produce issues with certain video files. Because of the bunny video, it's proved, that hardware acceleration basically works. So, check that first by reading the wiki and building libvdpau-sunxi, than let's go on searching for the issue. Rellla

navjotsingh07 commented 8 years ago

ok let me find out the recent version of the kernel. then will let you know about this. thanks for your help Nav

rellla commented 8 years ago

Not of the kernel, libvdpau-sunxi!! You don't need to find out the version. It's too old, because the log of recent ones is different! Read the wiki and build it yourself. Read, otherwise you won't succeed. Rellla

navjotsingh07 commented 8 years ago

Ok, I will work on the libvdpau-sunxi new build. Could you please give me the link to start reading for the new build? thanks

navjotsingh07 commented 8 years ago

Hi Rellla I worked on libvdpau-sunxi new build and tried to play video using mplayer again but it makes no difference with the panning/jittering issue. I am enclosing the mplayer logs: logs.txt

If you want I can post a screenshot of the video so u can have better understanding of what I am trying to explain? And then you might suggest something important which I missed in my built.

thanks Nav

rellla commented 8 years ago

How did you build libvdpau-sunxi? You are still using an old Version.

navjotsingh07 commented 8 years ago

I used this link to build libvdpau-sunxi: https://github.com/rellla/libvdpau-sunxi

Remember I am using mplayer not mpv to play my video, so may be thats why the logs are different. My logs indicate the version: [VDPAU SUNXI] VE version 0x1623 opened. Does this correctly indicate the version? If so can you let me know what the version number should be?

I am now trying to build with mpv so that we both are on same page. thanks

navjotsingh07 commented 8 years ago

Hi Rella,

i appreciate all your assistance. If possible can I send you the video I am having issues with and give the the time (in seconds) that the video anomaly occurs? I can find a place to post so that you can download.

I would be really interested to see if the video plays perfectly without (apparent frame loss) on your system.

To be clear most videos have acceptable playback on my system but any video with full screen panning I get what looks like frame skipping and the playback is not smooth. Looks like the video is jumping frames.

Let me know if you think sending the video would be helpful.

rellla commented 8 years ago

First you said, you are using https://github.com/linux-sunxi/libvdpau-sunxi, now you say https://github.com/rellla/libvdpau-sunxi ?? Try either https://github.com/linux-sunxi/libvdpau-sunxi/tree/master or maybe https://github.com/linux-sunxi/libvdpau-sunxi/tree/dev Meaning master or dev branch. Then you should have sth. like the following in the logs: [VDPAU SUNXI] VE version 0x1623 opened [VDPAU SUNXI] OSD enabled, using G2D [VDPAU SUNXI] Using display v1.0 (<- if using the dev branch)

If you don't see at least the osd enabled/disabled line, you are not using a recent version. Once you are feeling, you are using a recent version of libvdpau-sunxi, post your syslog and dmesg.

You can link your sample file somewhere, maybe someone else can try. I have no machine running with MPV online atm and can't try. I can just give you the theory. And it should make no difference if you using MPV or mplayer if it basically works.

navjotsingh07 commented 8 years ago

Hey Rellla

One question I believe I am using the latest version. However I will defer to you. One question the line [VDPAU SUNXI] OSD enabled, using G2D does not show up on my console output but is guaranteed due to not using the latest libvdpau-sunxi drivers OR is this due to the fact that I am using the 3.4.90+ kernel and not using Jessie version? Is there another way to determine the driver version I am using to 100% confirm my driver is older?

Since I am not 100% sure that my driver is older (although I trust your expertise) I will not post syslog and dmesg until we can figure out the driver version.

I have rebuilt with the libvdpau driver from the link you confirmed and still do not see this line in my console output.

[VDPAU SUNXI] OSD enabled, using G2D

Please let me know if there is another way to confirm the driver?

Nav

rellla commented 8 years ago

Hi nav, this all has nothing to do with the kernel imho.

If you follow https://github.com/linux-sunxi/libvdpau-sunxi/blob/master/device.c#L54 and following, you can conclude, that you have to see exactly one debug line, that comments about OSD.

If you use the dev branch, you have the debug line about the display version, too. https://github.com/linux-sunxi/libvdpau-sunxi/blob/dev/device.c#L86

That is the reason, why i think, you are using an old version. How do you build libvdpau-sunxi? What are the exact steps on console to get the libvdpau-sunxi.so.1 into the right directory?

rellla

ssvb commented 8 years ago

Please let me know if there is another way to confirm the driver?

Just add some debugging prints, and you will know for sure that libvdpau-sunxi had been really built by you and loaded correctly.

navjotsingh07 commented 8 years ago

Let me tell you the steps i followed:

For the prerequisites:

libvdpau >= 1.1 libcedrus (https://github.com/linux-sunxi/libcedrus) pixman (http://www.pixman.org) libcsptr (https://github.com/Snaipe/libcsptr) gcc >= 4.6

the libvdpau 1.1. is already been installed and verified by me using: ldconfig -p | grep libvdpau It shows: libvdpau.so.1 (libc6,hard-float) => /usr/lib/arm-linux-gnueabihf/libvdpau.so.1 libvdpau.so.1 (libc6,hard-float) => /usr/local/lib/libvdpau.so.1 libvdpau.so (libc6,hard-float) => /usr/lib/arm-linux-gnueabihf/libvdpau.so libvdpau.so (libc6,hard-float) => /usr/local/lib/libvdpau.so

Then for libcedrus: I followed the same link https://github.com/linux-sunxi/libcedrus and my ldconfig -p | grep libcedrus shows: libcedrus.so.1 (libc6,hard-float) => /usr/local/lib/libcedrus.so.1 libcedrus.so (libc6,hard-float) => /usr/local/lib/libcedrus.so

Then i build necessary dependencies: apt-get install gettext xserver-xorg-dev xserver-xorg xutils-dev \ psmisc libxcb-screensaver0-dev libxcb-randr0-dev libxcb-dpms0-dev libxcb-icccm4-dev \ libx11-xcb-dev libxcb-ewmh-dev libasound2-dev libxcb-xv0 libxcb-keysyms1 libxcb-util0 \ libxcb-shm0 libfreetype6-dev libfontconfig1-dev alsa-base libcap-dev libjpeg62-turbo-dev \ x11-xserver-utils liblockdev1-dev libudev-dev libxrandr-dev python-dev swig libpixman-1-0 libpixman-1-dev

My ldconfig -p | grep libpixman shows: libpixman-1.so.0 (libc6,hard-float) => /usr/lib/arm-linux-gnueabihf/libpixman-1.so.0 libpixman-1.so (libc6,hard-float) => /usr/lib/arm-linux-gnueabihf/libpixman-1.so

gcc 4.6 is already been there in my file system.

For libcsptr: cd /usr/local/src/ git clone https://github.com/Snaipe/libcsptr.git cd libcsptr mkdir build cd build cmake -DCMAKE_INSTALL_PREFIX=/usr/local .. make make install

Then i follow: git clone https://github.com/rellla/libvdpau-sunxi.git cd libvdpau-sunxi make make install

I found ldconfig -p | grep libvdpau_sunxi.so.1 shows libvdpau_sunxi.so.1 in directory /usr/local/lib/vdpau .

Is it the right way to check the installed libvdpau-sunxi??

These are the steps I followed to install libvdpau-sunxi. I am not sure if these are correct steps or not??

thanks Nav

rellla commented 8 years ago

Seems ok so far. Please test this branch https://github.com/rellla/libvdpau-sunxi/tree/navtemp

You should see "Hello nav!" when libvdpau is opened.

rellla

navjotsingh07 commented 8 years ago

Hi Rellla thanks for assisting me with test libvdpau-sunxi.

these are my logs afetr installing libvdpau-sunxi from the branch u want me to test:

mpv player logs:

Compiled without libass.
There will be no OSD and no text subtitles.
Playing: /root/seven10.mp4
 (+) Video --vid=1 (*) (h264)
 (+) Audio --aid=1 --alang=eng (*) (aac)
[VDPAU SUNXI] VE version 0x1623 opened.
[VDPAU SUNXI] vdp_output_surface_put_bits_native called but unimplemented!
AO: [alsa] 48000Hz stereo 2ch float
Using hardware decoding (vdpau).
VO: [vdpau] 1920x1<4>[DISP] layer allocated: 0,102
[  699.659928] [DISP] layer allocated: 0,102
080 vdpau
[VDPAU SUNXI] Presentation time not supported
AV: 00:00:41 / 00:03:48 (18%) A-V:  0.001

mplayer logs:

MPlayer2 UNKNOWN (C) 2000-2012 MPlayer Team
mplayer: could not connect to socket
mplayer: No such file or directory
Failed to open LIRC support. You will not be able to use your remote control.

Playing video1.mp4.
Detected file format: QuickTime/MPEG-4/Motion JPEG 2000 format (libavformat)
[lavf] stream 0: video (h264), -vid 0
[lavf] stream 1: audio (aac), -aid 0, -alang eng
VIDEO:  [H264]  1920x1080  24bpp  29.970 fps  10032.1 kbps (1224.6 kbyte/s)
Clip info:
 major_brand: mp42
 minor_version: 0
 compatible_brands: mp42mp41
 creation_time: 2016-06-01 20:45:15
Load subtitles in .
[VDPAU SUNXI] VE version 0x1623 opened.

Forced video codec: ffmpeg12vdpau
Forced video codec: ffh264vdpau
Opening video decoder: [ffmpeg] FFmpeg's libavcodec codec family
Selected video codec: [ffh264vdpau] vfm: ffmpeg (FFmpeg H.264 (VDPAU))
==========================================================================
==========================================================================
Opening audio decoder: [ffmpeg] FFmpeg/libavcodec audio decoders
AUDIO: 48000 Hz, 2 ch, s16le, 189.4 kbit/12.33% (ratio: 23671->192000)
Selected audio codec: [ffaac] afm: ffmpeg (FFmpeg AAC (MPEG-2/MPEG-4 Audio))
==========================================================================
AO: [pulse] Init failed: Connection refused
Failed to initialize audio driver 'pulse'
AO: [alsa] 48000Hz 2ch s16le (2 bytes per sample)
Starting playback...
Movie-Aspect is undefined - no prescaling applied.
VO: [vdpau] 1920x1080 => 1920x1080 H.264 VDPAU acceleration  [fs]
<4>[DISP] layer allocated: 0,102
[  538.069327] [DISP] layer allocated: 0,102
[vdpau] Got display refresh rate 60.000 Hz.
[vdpau] If that value looks wrong give the -vo vdpau:fps=X suboption manually.
[VDPAU SUNXI] Presentation time not supported
A: 101.6 V: 101.7 A-V:  0.000 ct: -0.000   0/  0 54%  9%  7.7% 0 0

But I don't see "Hello nav!" anywhere?? Is libvdpau opens when mpv or mplayer starts??

thanks Nav

WereCatf commented 8 years ago

I can't help but wonder if @navjotsingh07 is actually installing his self-compiled versions of the libraries in a different location than the libraries he already had in his system, thereby having multiple versions of the libraries installed and the applications using the old ones...

rellla commented 8 years ago

@navjotsingh07 definitely uses some old version. You may build it right and do a "make install" but it's not used. You have to see the following with the said branch:

[VDPAU SUNXI] VE version 0x1623 opened [VDPAU SUNXI] Hello nav!

Do a find / -name libvdpau* and tell us the output...

navjotsingh07 commented 8 years ago

@rellla and @WereCatf

The output of find / -name libvdpau* :

/usr/share/doc/libvdpau-dev /usr/share/doc/libvdpau1

/usr/local/lib/vdpau/libvdpau_trace.so /usr/local/lib/vdpau/libvdpau_trace.la /usr/local/lib/vdpau/libvdpau_sunxi.so /usr/local/lib/vdpau/libvdpau_trace.so.1.0.0 /usr/local/lib/vdpau/libvdpau_trace.so.1 /usr/local/lib/vdpau/libvdpau_sunxi.so.1 /usr/local/lib/libvdpau.so /usr/local/lib/libvdpau.so.1.0.0 /usr/local/lib/libvdpau.la /usr/local/lib/libvdpau.so.1

/usr/lib/arm-linux-gnueabihf/vdpau/libvdpau_trace.so.1.0.0 /usr/lib/arm-linux-gnueabihf/vdpau/libvdpau_trace.so.1 /usr/lib/arm-linux-gnueabihf/vdpau/libvdpau_sunxi.so.1 /usr/lib/arm-linux-gnueabihf/libvdpau.so /usr/lib/arm-linux-gnueabihf/libvdpau.so.1.0.0 /usr/lib/arm-linux-gnueabihf/libvdpau.so.1

/var/cache/apt/archives/libvdpau-dev_0.4.1-7_armhf.deb /var/lib/dpkg/info/libvdpau1:armhf.symbols /var/lib/dpkg/info/libvdpau1:armhf.postinst /var/lib/dpkg/info/libvdpau1:armhf.list /var/lib/dpkg/info/libvdpau-dev:armhf.list /var/lib/dpkg/info/libvdpau1:armhf.postrm /var/lib/dpkg/info/libvdpau1:armhf.conffiles /var/lib/dpkg/info/libvdpau1:armhf.shlibs /var/lib/dpkg/info/libvdpau1:armhf.md5sums /var/lib/dpkg/info/libvdpau-dev:armhf.md5sums

navjotsingh07 commented 8 years ago

The one which are in directory /usr/lib/arm-linux-gnueabihf/ are of date Aug 2012. I think mplayer or mpv picks the libvdpau-sinxi and libvdpau from this directory, thats why its not showing up the logs that Rellla was talking about. Now how I can un-install the old version and put the new version??

rellla commented 8 years ago

Just delete them. Maybe do a ldconfig afterwards.

navjotsingh07 commented 8 years ago

Hi

I replace them with the new drivers and now I am getting the mplayer logs as:

In the first iteration of the a looping video, the logs are:

MPlayer2 UNKNOWN (C) 2000-2012 MPlayer Team mplayer: could not connect to socket mplayer: No such file or directory Failed to open LIRC support. You will not be able to use your remote control.

Playing seven10.mp4. Detected file format: QuickTime/MPEG-4/Motion JPEG 2000 format (libavformat) [lavf] stream 0: video (h264), -vid 0 [lavf] stream 1: audio (aac), -aid 0, -alang eng VIDEO: [H264] 1920x1080 24bpp 29.970 fps 10032.1 kbps (1224.6 kbyte/s) Clip info: major_brand: mp42 minor_version: 0 compatible_brands: mp42mp41 creation_time: 2016-06-01 20:45:15 Load subtitles in . rc = 0 result == 0 is triggered lednovideoplaying: pattern = 2 interval = 1 [VDPAU SUNXI] VE version 0x0000 opened [VDPAU SUNXI] OSD enabled, using G2D!

Forced video codec: ffmpeg12vdpau
Forced video codec: ffh264vdpau
Opening video decoder: [ffmpeg] FFmpeg's libavcodec codec family Opening audio decoder: [ffmpeg] FFmpeg/libavcodec audio decoders
AUDIO: 48000 Hz, 2 ch, s16le, 189.4 kbit/12.33% (ratio: 23671->192000)
AO: [alsa] 48000Hz 2ch s16le (2 bytes per sample) Starting playback... Movie-Aspect is undefined - no prescaling applied. VO: [vdpau] 1920x1080 => 1920x1080 H.264 VDPAU acceleration [fs]

<4>[DISP] layer allocated: 0,102 [ 23.274683] [DISP] layer allocated: 0,102 <4>[DISP] layer allocated: 0,103 [ 23.281793] [DISP] layer allocated: 0,103 [vdpau] Got display refresh rate 60.000 Hz. [vdpau] If that value looks wrong give the -vo vdpau:fps=X suboption manually. **In the 2nd iteration of loopvideo, the logs are:** MPlayer2 UNKNOWN (C) 2000-2012 MPlayer Team mplayer: could not connect to socket mplayer: No such file or directory Failed to open LIRC support. You will not be able to use your remote control. Playing seven10.mp4. Detected file format: QuickTime/MPEG-4/Motion JPEG 2000 format (libavformat) [lavf] stream 0: video (h264), -vid 0 [lavf] stream 1: audio (aac), -aid 0, -alang eng VIDEO: [H264] 1920x1080 24bpp 29.970 fps 10032.1 kbps (1224.6 kbyte/s) Clip info: major_brand: mp42 minor_version: 0 compatible_brands: mp42mp41 creation_time: 2016-06-01 20:45:15 Load subtitles in . **[VDPAU SUNXI] VE version 0x1623 opened** **[VDPAU SUNXI] OSD enabled, using G2D!** Forced video codec: ffmpeg12vdpau Forced video codec: ffh264vdpau Opening video decoder: [ffmpeg] FFmpeg's libavcodec codec family Opening audio decoder: [ffmpeg] FFmpeg/libavcodec audio decoders AUDIO: 48000 Hz, 2 ch, s16le, 189.4 kbit/12.33% (ratio: 23671->192000) AO: [alsa] 48000Hz 2ch s16le (2 bytes per sample) Starting playback... Movie-Aspect is undefined - no prescaling applied. VO: [vdpau] 1920x1080 => 1920x1080 H.264 VDPAU acceleration [fs] 4>[DISP] layer allocated: 0,102 [ 63.334667] [DISP] layer allocated: 0,102 [vdpau] Got display refresh rate 60.000 Hz. [vdpau] If that value looks wrong give the -vo vdpau:fps=X suboption manually Why it is showing **VE version 0x0000 opened** in the first iteration and **VE version 0x1623 opened** in second iteration?? **And there is no difference in Video Playback, even I tried MPV player also. The Video panning/jitters still observed whenever I am using a video that has fullscreen panning and also when video bit rate is 20MB/s+** Now what to do to make the playback smooth?? Suggest something now. thanks Nav
rellla commented 8 years ago

Ok. So at least you are now using a newer libvdpau-sunxi. Which one exactly is it now? The version output 0x0000 should be no problem imho. I have encountered this too and did not yet look into why this happens.

Maybe it's really a problem with the specific video files. You said, some videos are working ok. Can you again link some sample of the videos that don't work, so others can test? Maybe you can also give some information about the videos using the output of https://mediaarea.net/en/MediaInfo .

Not sure if that is codec, libvdpau-sunxi or display related ... rellla

PS: Can you use some online pasting service or gist for your log files, to not blow up this conversation?

rellla commented 8 years ago

@navjotsingh07 now that you know the issue why you were using old versions, can you try the dev branch? It minimizes the usage of XClearWindow which could be a performance killer on 1080p ... Anyway i think, this is no VE/Codec related issue, but has something to do with disp or X itself... rellla

navjotsingh07 commented 8 years ago

@rellla I have tested the dev branch of libvdpau-sunxi also, but when I try to play the video I can see it is running on console but no video is displayed on my HDMI TV. May be disp driver is not matched with the display output!! ??

Secondly, I am posting a link to the video that gives me trouble and playback is not smooth. Even though it plays smooth on PC computer via VLC player but on A20 Olinuxino Micro board, it gives issues like: ---> Your system is too slow to play this ---> The playback is not smooth, shows jitters/hiccups on full screen panning.

Link to the video: http://mbf.cc/Qtedxo

MediaInfo of this file: Video: 13.7 Mbps, 1920X1080 (16:9), at 29.970 fps, AVC (Main@L4.1) (CABAC / 4 Ref Frames) Audio: 159 kbps, 48 Hz, 2 channels, AAC (LC)

I wish anyone on the forum test this video on their development board and share the results. Can you suggest any other parameter to look upon to make playback smooth??

thanks Nav

navjotsingh07 commented 8 years ago

Hi @rellla I tried the dev branch of libvdpau-sunxi today to minimize the usage of XClearWindow as you said. But the HDMI TV display doesn't show the video even though it is running on my serial console. Moreover the audio is also not working. Isn't it because of the line shown in mplayer logs: Using display v1.0 . What this means?? You can have a look at my mplayer logs attached. And please suggest something to show the video on HDMI display so that i can compare it with the previous results. logs.txt

thanks Nav

rellla commented 8 years ago

@navjotsingh07, display v1.0 means, that you are using the kernel display driver v1.0 which fits to A10 or A20. So it's correct. I think you have an issue with your destination output. screen0/1 and/or fb0/fb1. libvdpau-sunxi is hardcoded to fb0 on screen0 atm. or your DISPLAY variable is not correct. can you share your script.bin/fex and your kernel command line and check dmesg and syslog if you can find anything regarding disp and X? audio seems to be another issues according to your log. there is something wrong with it. check if the script.bin is ok for your setup (hdmi?) misconfigured script.bin was the issue in this thread, too: http://forum.armbian.com/index.php/topic/1158-black-screen-mpv-player/

according to the logs, the libvdpau-sunxi side seems ok.

rellla

navjotsingh07 commented 8 years ago

Hi @rellla I am sharing the script.fex file:

script.txt

I am using : export DISPLAY=:0 to send the mplayer output to HDMI screen.

And these are the kernel command line: logs.txt I found sunxi disp at lines 412-415 in the text file. And it says : Warning: this sunxi disp driver will see significant redesign. Applications using /dev/disp directly will break.

Just have a look and suggest why it is breaking up the display??

thanks Nav

rellla commented 8 years ago

You can ignore this message. It's not relevant. You can try export DIPSLAY=:0.0 ? script.bin and dmesg looks fine. Can you share the X server log, too? It's just the video not showing up, isn't it? Can you see console or X output on hdmi? In case some kind of screensaving, fb console blank, dpms off thing has happened in between .... rellla

navjotsingh07 commented 8 years ago

Hi @rellla I made the video to work. I need to enable the OSD support : export VDPAU_OSD=1 before I give mpv command to play the video. Now the video is showing up on HDMI screen. But the don't see any change in the playback as compared to vdpau-master branch drivers. Still video playback is not smooth and full screen panning/jitters can be observed at many instances of the video. So I think its not the vdpau driver issue, but something else. Could u suggest something else to look upon?

thanks Nav

rellla commented 8 years ago

No, i have no clue about the panning/jitters. I try to playback the video this evening. Maybe someone else can test your video file, too. With vlc on i386 it's ok.

Does that mean, with "VDPAU_OSD=1" you have video output, and without that, you have no output? If so, we have a bug here.

Rellla

navjotsingh07 commented 8 years ago

Hi @rellla

Yes with "VDPAU_OSD=1", I have the video on HDMI TV screen. If I don't write this, I don't have video on screen. Even though I can hear the audio and can see the console output. What kid of bug is this?? Is it with the VDPAU-DEV branch driver or in my system??

thanks Nav

rellla commented 8 years ago

this sounds libvdpau-sunxi related and isn't related to your jitters. i have an idea how to fix this, maybe the next days.

navjotsingh07 commented 8 years ago

Hi Rellla,

Want to clearly state the issue again for clarity.

If we play a video 1080p or 720p where most of the pixels in the video are panning / moving (the quicker they move the more serious the video anomaly). We get what looks like frame loss or jitter / skipping. The video I uploaded is representative of the issue. We think our base kernel / video playback is okay as if we play a video without this type of panning i.e. "large percentage of pixels moving in a scene", the video playback is as expected. For example the Big Buck Bunny video plays as expected. 70% of our videos playback as expected but on videos with large areas of the picture panning the issue is very pronounced.

A couple of follow up questions / comments.

  1. Should I post this in another section of the forum we are still having issues and this seems like something that should be able to be solved.
  2. Is there someone else that you could recommend to answer some question or assist?
  3. Our overall hw performance is very good as the device is stable running stress tests.
  4. The only other possible issue is the frambuffer size / ram timings / cpu timings / etc as the kernel we use is based on the Olimex A20 micro and everyone knows they have everything turned down to safe levels. Do you think this could be an issue?
  5. As per point number 4... We have tried scaling the CPU / RAM / etc up and increasing the buffer size however everything we do has no impact on the video issues we have stated.

Just want to know where to go from here.

thanks

jemk commented 8 years ago

I think the jitter while panning is a display problem and has nothing to do with decoding/cpu/memory.

The output driver doesn't provide any way to synchronise the output frames with the display VSync, so some frames might be visible too long, and others too short, which is barely visible except when panning.

navjotsingh07 commented 8 years ago

Hi @jemk

Thanks very much for the information. I would like to give you some other info as we would like to try and solve this issue.

The video output jitter is very noticeable during the 1st playback of the video file. During the first video playback the console output shows audio and video go out of sync by 3-4 seconds when the display output is set to 1080p60. If we set the display to 720p60 you still see the jitter (although reduced) however the video and audio is synced (during the first video playback where we normally has a sync issue) according to the console. We are using mplayer to play the video.

During the second playback of the same video (we just constantly loop the same video) the jitter is significantly less and the audio and video do not go out of sync according to the console output.

These results have been confirmed many times. 1st playback significant jitter and sync issue. 2nd playback reduced jitter but audio and video is synced.

So if it is the display output from the A20 why does it get better the 2nd time the video is played?

Also can the vsync be fixed?

Any information or help would be greatly appreciated as I have been working on this for months.

jemk commented 8 years ago

I'm sorry, I can't reproduce this, your video plays fine on my A20.

The difference between 1080p and 720p could mean the memory bandwidth isn't good enough, but that doesn't explain why it works better the second time. I hope you have checked that it isn't because of slow storage (sdcard/...) where the first time reading is slow and then the 2nd time it's read from cache.

What board are you using, does it have a 32bit memory bus or reduced 16bit? Second could really be too slow for 1080p60.

Fixing the vsync issue would require a lot of work with big changes on the legacy display driver, but I don't think its worth the effort, the difference should be barely visible.

navjotsingh07 commented 8 years ago

Hi @jemk

Thanks for the quick response. Which A20 board do you have? And what kernel version are you using - Debian Wheezy or Debian Jessie?? I would like to purchase to test as I have tested several boards including Olimex Lime, Banana Pi, etc. All display the issue.

My actual board is based on A20 Olimex Micro.

Also when you tested what size was the monitor you were displaying the video on? I use a 40" monitor using HDMI output on our board and if you use a 21" or smaller monitor it is more difficult to see the issue.

Please let me know as again I have been working forever on this issue. Thanks for your help MUCH appreciated!

Also I am posting my MEMINFO-STATIC to check the memory bus width:

dram_clk = 432 dram_type = 3 dram_rank_num = 1 dram_chip_density = 4096 dram_io_width = 16 dram_bus_width = 32 dram_cas = 9 dram_zq = 0x7f dram_odt_en = 0 dram_tpr0 = 0x42d899b7 dram_tpr1 = 0xa090 dram_tpr2 = 0x22a00 dram_tpr3 = 0x0 dram_emr1 = 0x4 dram_emr2 = 0x10 dram_emr3 = 0x0

navjotsingh07 commented 8 years ago

Hi @jemk

Thanks for your help. Which A20 board do you have? And what kernel version are you using - Debian Wheezy or Debian Jessie?? I would like to purchase to test as I have tested several boards including Olimex Lime, Banana Pi, etc. All display the issue.

My actual board is based on A20 Olimex Micro.

Also when you tested what size was the monitor you were displaying the video on? I use a 40" monitor using HDMI output on our board and if you use a 21" or smaller monitor it is more difficult to see the issue.

Please let me know as again I have been working forever on this issue. Thanks for your help MUCH appreciated!

jemk commented 8 years ago

I've tried it again with a Cubietruck on 25" 1080p60 monitor, I can't see any problem except very light jitter while the first panning, but the same happens when playing the video from a x86 PC. I'm using the latest linux-sunxi kernel with latest fbturbo. Your sync issues at first playback look a lot like slow storage.

navjotsingh07 commented 8 years ago

Hi @jemk

Thanks again. A couple of things. If I play the video on my x86 linux computer in VLC, I do not notice any jitter the video plays perfectly. But, If play it in the default Ubuntu video player I can see the issues.

Also If I play the video with other embedded computer HD boxes. Like WD Live or Brightsign HD 410, I do not see any issues. So that means, the video is able to play back properly. this has been proven on over 10 different players included the built in Samsung video playback on my 40" TV.

Which version of Cubietruck are you using? I would like to purchase to test. I have tried playing the video from SD card (default playback ). Also I have tried playing from USB key and from the NAND onboard. All give the same results with jitter.

Let me know where you think I should start looking? if you could provide any clue that would be helpful.

thanks Nav

jemk commented 8 years ago

I don't think changing the board again would change anything after you already tried different boards, its likely a software problem. Since I can't reproduce the issue (the slight jitter I see can't be fixed without a better display driver) you'll have to debug this yourself. A good start would be things like performance cpufreq governor, top, perf top, maybe adding timestamp prints in output and decode functions and so on. But I don't belive its a general issue, since nobody else complained about such symptoms yet, more likely a problem with your particular system configuration.