Bug 435660

Summary: Strange crashes when previewing .MOV files
Product: [Applications] digikam Reporter: Loic <loickerneth>
Component: Preview-VideoAssignee: Digikam Developers <digikam-bugs-null>
Status: RESOLVED FIXED    
Severity: crash CC: caulier.gilles, jose1711, loickerneth, metzpinguin
Priority: NOR    
Version: 7.5.0   
Target Milestone: ---   
Platform: Arch Linux   
OS: Linux   
Latest Commit: Version Fixed In: 8.3.0
Sentry Crash Report:
Attachments: crash console log
crash gdb log
gdb backtrace
New backtrace after patch
backtrace after MALLOC_CHECK_ 2
New backtrace after rebuild
test files

Description Loic 2021-04-12 14:36:15 UTC
SUMMARY
Digikam may crash when previewing .mov files

STEPS TO REPRODUCE

I installed a fresh digikam setup and imported one .jpg file and one .mov file.
They both are displayed as thumbs. I try then to preview them by first clicking one and the the other.

Scenario 1 : I open a new digikam instance. If I start with the .mov file, its is played OK, I can after that click on je .jpg file and it is displayed ok. If I then click again on the .mov file it is displayed OK, and so on.

Scenario 2 : I open a new digikam instance. If I click first on the .jpg file it is displayed OK but the, If I click on the .mov file, digikam displays it very shortly and then crashes.

This is 100% reproducible.

OBSERVED RESULT

In scenario 2, there is a crash.

EXPECTED RESULT

Correct display as in scenario 1.


SOFTWARE/OS VERSIONS
Windows: 
macOS: 
Linux/KDE Plasma: kernel 5.10.29-1-lts
(available in About System)
KDE Plasma Version: 5.21.4
KDE Frameworks Version: 5.81.0
Qt Version: 5.15.2

ADDITIONAL INFORMATION 

If launched in terminal, the scenario 2 displays the following :

malloc(): unaligned tcache chunk detected

I may provide more, but need instructions to send the meaningful data.

Many thanks for considering this bug report.
Comment 1 caulier.gilles 2021-04-12 14:50:22 UTC
Please run digiKam in debuger from a console, as explained here :

https://www.digikam.org/contribute/

...and capture the backtrace when it crash...

Gilles Caulier
Comment 2 Loic 2021-04-12 16:40:47 UTC
Created attachment 137534 [details]
crash console log

You will find attached a log of my "scenario 2" kind of crash.

In the meantime, I investigated a bit further and found that chasses only occur with vertical .mov files (e.g. taken by a smartphone in vertical orientation). Everything is OK with horizontal .mov files. 

I said "strange", didn't I ?

Thanks.
Comment 3 caulier.gilles 2021-04-12 17:13:14 UTC
The trace is just the console output of the program, not the debug trace generated by gdb. Look well in contribute page, in section "Dealing with Crashes in digiKam"

Gilles Caulier
Comment 4 Loic 2021-04-12 19:25:52 UTC
Created attachment 137543 [details]
crash gdb log

Sorry, I'm not very familiar with these procedures. I hope this is what you are looking for. If not, let me know...
Comment 5 Loic 2021-04-12 19:29:59 UTC
Created attachment 137544 [details]
gdb backtrace

I did not include this also...
Comment 6 caulier.gilles 2021-04-12 20:39:03 UTC
It crash in QtAV The Qt framework used to play video with ffmpeg codecs.

Which QtAv did you use exactly ? Go to Help/Component info for details.

Also please try to use the digiKam 7.2.0 AppImage Linux bundle that we provide in download area, instead to use the linux native package.

Gilles Caulier
Comment 7 Loic 2021-04-13 08:08:35 UTC
Here is the version dump :

digikam version 7.2.0
CPU cores: 2
Eigen: 3.3.9
Exiv2: 0.27.3
Exiv2 supports Base Media: Non
Exiv2 supports XMP metadata: Oui
HEIF encoding support: Oui
ImageMagick codecs: 7.0.11
KF5: 5.80.0
LensFun: 0.3.95-0
LibCImg: 130
LibJPEG: 80
LibJasper: 2.0.27
LibLCMS: 2120
LibLqr support: Oui
LibPGF: 7.19.03
LibPNG: 1.6.37
LibRaw: 0.21.0
LibTIFF: 4.2.0
Marble: 0.27.20
Parallelized demosaicing: Oui
Qt: 5.15.2
Qt WebEngine support: Oui
Rajce support: Oui
VKontakte support: Non
LibAVCodec: 58.91.100
LibAVFormat: 58.45.100
LibAVUtil: 56.51.100
LibGphoto2: 2.5.27
LibOpenCV: 4.5.2
LibQtAV: 1.13.0


I also tried this on a Debian testing setup. Same type of crash if you start preview with a vertical .mov file. But it is OK if you start with a horizontal one (you can preveiw vertical ones after without issues). There the version context is the following :

digikam version 7.1.0
CPU cores: 2
Eigen: 3.3.9
Exiv2: 0.27.3
Exiv2 supports XMP metadata: Oui
HEIF encoding support: Oui
ImageMagick codecs: 6.9.11
KF5: 5.77.0
LensFun: 0.3.2-0
LibCImg: 130
LibJPEG: 62
LibJasper support: Non
LibLCMS: 2090
LibLqr support: Oui
LibPGF: 7.19.03
LibPNG: 1.6.37
LibRaw: 0.20.0
LibTIFF: 4.2.0
Marble: 0.27.20
Parallelized demosaicing: Oui
Qt: 5.15.2
Qt WebEngine support: Oui
Rajce support: Oui
VKontakte support: Non
Gestion du lecteur de média: Oui
LibAVCodec: 58.91.100
LibAVFormat: 58.45.100
LibAVUtil: 56.51.100
LibGphoto2: 2.5.27
LibOpenCV: 4.5.1
LibQtAV: 1.13.0

Finally, as suggested, I also tried the Appimage bundle. It does not show this behavior. However, using this bundle does not allow integration in a plasma desktop environment,  in particular the use of plasma file-pickers (only uses the standard low-functionality QT ones). It does not tell what codecs is fmmpeg built with, ... IMHO it is more a workaround than a solution. But it is a workaround.

Many thanks for your work.
Comment 8 caulier.gilles 2021-04-13 08:16:09 UTC
The crash is not linked with the Plasma integration of the application.

If it do not crash with the AppImage bundle, it so far a native packaging problem with your Linux. Typically, a build settings for QtAV or fmmpeg. This last one in the most important as is provide the video codec. The Qt version is not very important here.

Of course the AppImage version has all dependencies required embeded in the bundle, this include the ffmpeg codecs (libav*). Going to the Help/Components info dialog will give the right version used by the AppImage bundle.

The File dialog is another story which is not relevant of the crash.

If the native version crash and not the AppImage well the differences is in the low level components used to play the video.

Gilles Caulier
Comment 9 Loic 2021-04-13 11:16:45 UTC
Thank you for your explanations, but I struggle to understand why all files play nicely with the QtQV standalone player and not when played by the QtAV framework through digikam. This seems to indicate QtAV framework and codecs are OK, but not the way digikam calls them, no ?
But you are right, this is most certainly a packaging issue somewhere and it is probably not worth keeping this bug report open here.
Regards,
Loïc
Comment 10 Maik Qualmann 2021-04-14 07:55:43 UTC
I find the backtrace strange, it almost seems as if it crashes when the time label is set. A test shows that with MOV files a position changed signal comes from QtAV much more often. Maybe we should limit it.

Maik
Comment 11 Maik Qualmann 2021-04-15 06:16:46 UTC
Git commit 958126660a7e61417efe42aeaa01c11134c69373 by Maik Qualmann.
Committed on 15/04/2021 at 06:16.
Pushed by mqualmann into branch 'master'.

try to fix crash in the media player

M  +15   -2    core/libs/video/player/mediaplayerview.cpp

https://invent.kde.org/graphics/digikam/commit/958126660a7e61417efe42aeaa01c11134c69373
Comment 12 Loic 2021-04-16 20:55:55 UTC
Created attachment 137661 [details]
New backtrace after patch

Thank you Maik. I built DigiKam with your patch and had a positive result in the fact that previewing "vertical files" in the first instance and then horizontal ones did not crash. 
However, previewing first a jpg and then a vertical file still makes DigiKam crash with the attached backtrace.

To be more synthetic : 
1. vertical .mov    and 2. horizontal .mov --> OK
1. vertical .mov    and 2. .jpeg --> OK
1. horizontal .mov  and 2. vertical .mov --> OK
1. vertical .mov    and 2. .jpeg --> OK
1. .jpeg            and 2. vertical .mov --> CRASH
1. .jpeg            and 2. horizontal .mov --> OK
Comment 13 Loic 2021-04-17 12:10:03 UTC
Created attachment 137668 [details]
backtrace after MALLOC_CHECK_ 2

Another observation : I started gdb and set the environment with "set environment MALLOC_CHECK_ 2".
This time if I preview a jpg file and then a vertical mov file? this one is read correctly until the end. If I then click another file to preview it, DigiKam crashes with the attached backtrace. (your previous patch being applied).
Hoping this might help. Many thanks.
Comment 14 Maik Qualmann 2021-04-17 22:13:16 UTC
Git commit a109a71df2ede48a5884b9e1f616fa0fad3847d3 by Maik Qualmann.
Committed on 17/04/2021 at 22:12.
Pushed by mqualmann into branch 'master'.

try without locale support

M  +8    -4    core/libs/video/player/mediaplayerview.cpp

https://invent.kde.org/graphics/digikam/commit/a109a71df2ede48a5884b9e1f616fa0fad3847d3
Comment 15 Loic 2021-04-18 09:31:46 UTC
Created attachment 137678 [details]
New backtrace after rebuild

I applied your new patch with no success in my crash scenario (i.e. preview a jpg file and then a vertical mov file).
I'm attaching the gdb log and backtrace. This time, I did not ctrl-c in gdb when DigiKam froze, just hit return. tell me if that is the correct thing to do...
Thanks for investigating.
Comment 16 Maik Qualmann 2021-04-18 17:20:08 UTC
For me the GDB backtraces are not plausible. Since it crashes deep in Qt too. I also cannot explain to myself why a JPG has to be displayed beforehand. At the moment I have no explanation for this. Possibly provide the corresponding MOV video, if not public, then to my private mail.

Maik
Comment 17 Maik Qualmann 2021-04-20 06:07:03 UTC
Thanks for the test files, but I cannot reproduce the crash. With openSUSE Tumbleweed, I'm practically on the same level as your component information. Which graphics card / driver are you using?

Maik
Comment 18 Loic 2021-04-20 14:48:35 UTC
For the record, my plasma/digikam setup runs on :
1/ a vmware virtual machine runnning on a MacOS host, which shows in Xorg.log as :
	 (II) Loading /usr/lib/xorg/modules/drivers/vmware_drv.so
	 (II) Loading /usr/lib/xorg/modules/drivers/modesetting_drv.so
	 (II) vmware: driver for VMware SVGA: vmware0405, vmware0710
	 (--) vmware(0): DRM driver version is 2.18.0
	 (II) vmware(0): [DRI2]   DRI driver: vmwgfx
2/ a quite old computer (which I can't access for the moment) :
  - nvidia graphic card 9650-GT
  - nvidia proprietary legacy driver 340-xx

Now, considering that (i) the crash I have is not reroducible by you on OpenSuse Tumbleweed and (ii) it is not reproducible with the appimage, there are very high chances that the issue is linked to particularities in my two setups. I will investigate on my side and try to run an OpenSuse Tumbleweed inside a virtual machine. I will report back, but I can't really do that for the moment.
Comment 19 Loic 2021-04-21 16:54:42 UTC
I was able to set up an opensuse tumbleweed VMware virtual machine. Now, despite having set up repos to install packman's versions of ffmpeg, I am facing an issue with QtAV player not playing .mov files (ffmpegthumbs also does not generate thumbs for .mov files in Dolphin). However, ffplay plays .mov files fine. Being unfamiliar with codec experiences in opensuse, I can't solve this.

So I'm unable to go further on checking if the crashes I reported are linked to the distribution (if I have no crash in my opensuse VM) or the particularities of running DigiKam into a virtual machine (if I have a crash in it).
Comment 20 Maik Qualmann 2021-04-21 17:01:16 UTC
Yes, you have to switch to Packman for the FFmpeg packages, the openSUSE packages are more or less dummies. However, Packman packages have been broken for 2 days after a major openSUSE update. This is rare, but Packman usually fixes it very quickly.

Maik
Comment 21 Loic 2021-04-22 13:44:06 UTC
I finally managed to get an up and running opensuse virtual machine. digikam also crahes in this setup.

So the logical conclusion is that the crash comes from a graphical "layer" failure of some kind. And I'm afraid we cannot say more, except that this bug report is most probably not a digikam bug and should then be closed.

Without your two patches, I experienced crashes on Debian when previewing first a .mov file, which is no longer the case, so I would say this is a good addition.

Many thanks for exploring this.
Comment 22 Loic 2021-05-04 19:00:09 UTC
I built digikam with media player support for fedora 34 and Kde Neon (both of them disable the functionality by default, or at least do not enable it correctly). I got the same crash for fedora but everything seems ok on Kde Neon, both on virtual machines.
The only real computer I have to test is quite old and unfortunately on it opensuse also crashes (Bothe with nouveau and Nvidia drivers).
So, in essence, these crashes depend on some distribution software components (works on appimage and KDE neon, but not other distributions on virtual machines) and hardware components too (works on opensuse on Maik's computer, but not on mine).
Comment 23 Loic 2021-05-13 14:15:12 UTC
I've done some further investigations on this issue and found what's going wrong. Basically, it comes down to the version of ffmpeg libraries used to run (not necessarily build) digikam, and among the various libraries, only libswscale raises an issue.

Practically, if I downgrade libswscale.so.5 to libswscale.so.5.5.100 and older (which is ffmpeg version 4.2.2 and older), I don't have any crash when running digikam. If I use libswscale.so.5.7.100 and newer (which is ffmpeg version 4.3.2 and newer), I can reproduce the crashes described in this bug report.

This is confirmed on both virtual machines, and and old pc with nouveau driver, whatever the distribution is. By the way, if I understand well, you are building the appimages on a mageia 7 setup, which is ffmpeg 4.1.x series, and therefore doesn't crash (It would be interesting to have one image built on mageia 8 and see what's happening).

I found that a workaround for me is then simply to install one libswscale.so.5.5.100 binary somewhere in my system, in parallel to the ordinary libswscale.so.xxx provided by the distribution, and run digikam with the LD_PRELOAD=/whateverpath/libswscale.so.5.5.100 /usr/bin/digikam command.

At this point, I cannot say what's wrong: a regression in libswscale or an inconsistency in the way it is called (presumabely in core/libs/threadimageio/video/videodecoder_p.h). I'm leaving that for you :).

Regards,
Loïc
Comment 24 Maik Qualmann 2021-05-13 14:48:55 UTC
I'm here on FFmpeg-4.4.4 and don't have this problem.
The files under "core/libs/threadimageio/video" have nothing to do with the video player. These belong to the video thumbnail creator. We use QtAV to play videos in the view.

Maik
Comment 25 Loic 2021-05-13 15:43:05 UTC
Created attachment 138393 [details]
test files

Thanks for following this issue. I don't know what to say more. You dont'have crashes, I do with the same opensuse setup.
I am attaching testifies for anybody to try and report. Launch digikam with those two files in the Images directory, click first on the picture.jpeg and then on the vertical.mov file. crash may happen immediately or near the end of video playback.
Maik, could you try once more ? Thanks.

Loïc
Comment 26 Loic 2021-05-17 15:14:39 UTC
I further digged into this issue and used your infrastructure into project/bundles/appimage to build an appimage with an updated version of ffmpeg. Currently the platform you use to build appimages (Mageia 7) ships a 4.1.x version of ffmpeg, while Mageia ships a 4.3.x version.
I backported and built the 4.3.x version into Mageia 7 and built an appimage using your scripts, changing nothing else than ffmpeg. I would gladly share this appimage with you and can send a temporary wetransfer link on your private mail.

Results are, as I anticipated, that there is no crash with the official-ffmpeg4.1 appimage, while the crahs described in this bug report can be observed with a custom-ffmpeg4.3 appimage. What is strange and interesting though is the following : crashes are observed when starting a new digikam-ffmpeg4.3 setup (i.e. erasing all .db files and digikamrc file before starting, with the two test files in the images directory and (double)clicking first on th jpeg, then on the vertical .mov). Now, if I start a new  digikam-ffmpeg4.1 setup, there is no crash, as I said, but if after that I start digikam-ffmpeg4.3 without erasing .db files and digikamrc, there is no crash either.

So, I have a question : is ffmpeg used in any form when building the databases (like size, orientation, etc) to set data which would then used by qtav for playback ? Is there a way I could access and analyse the database content differences in the two setups above ?
Comment 27 Maik Qualmann 2021-05-17 15:54:24 UTC
I'm on openSUSE Tumbleweed on FFmpeg-4.4.x and have no crashes. The FFmpeg packages are from Pakman extra repository, as the openSUSE packages are just "dummies".

Maik
Comment 28 Maik Qualmann 2021-05-17 15:57:46 UTC
FFmpeg is used as a metadata parser for video files, i.e. orientation, date, etc.

Maik
Comment 29 caulier.gilles 2021-05-17 17:06:58 UTC
Correction : we don't use Mageia7 to build AppImage, but Mageia6 to preserve binary compatibility with libc and older Linux distribution.

Mageia7 is used to build the cross compiled version for Windows.

Later 7.3.0, we plan to migrate to Mageia 7 for LTS Qt 5.15.2 and for the future Qt6 port (a student will work on it this summer), we will use Mageia 8. 

Best

Gilles Caulier
Comment 30 Loic 2021-05-17 18:27:16 UTC
@Maik : I am sending you a link to the Appimage created with FFMpeg 4.3.x

@Gilles, Sorry for my mistake, I was relying on what is written in the project/bundles/appimage/README file.
Comment 31 Maik Qualmann 2021-05-17 18:52:37 UTC
Hi Gilles,

can you test the files from comment 25 on your hardware using the method described there? I think you should be on FFmpeg-4.3.x already.

Maik
Comment 32 Loic 2021-05-18 08:34:15 UTC
Maik, Gilles,

Again, thank you for looking into this issue. I carried another series of tests yesterday and found that crashes only happen if you want to play the video file on the very first launch of digikam (i.e. when ther is no digikamrc file at start). On the contrary, if you start digikam, position it on the Image folder and exit, then relaunch and play the jpg and the vieo file, there is no crash. So it's not a question of database files, but rather digikamrc file.

Having said that, if I summarize, crashes happen :
 - on certain hardware only (thanks Maik for confirming it is OK on your platform);
 - on first run only ;
 - with ffmpeg >= 4.3.x only ;
 - with specific video and image files only.

I doubt this can affect a lot of users (I may be the only one in fact :) ) and it is perfectly ok to live with that, given that if you make sure you have launched digikam at least once, everything should be ok. So I would suggest closing that bug.

Loic
Comment 33 Maik Qualmann 2021-05-19 11:45:20 UTC
I'm linking bug 437328 because both users are using Arch Linux. Both bugs may be related.

Maik
Comment 34 Maik Qualmann 2021-05-20 15:44:29 UTC
*** Bug 437328 has been marked as a duplicate of this bug. ***
Comment 35 Maik Qualmann 2021-05-21 06:06:04 UTC
Git commit c9ebd4d03581137d77cc665e183088aff9f1b4ac by Maik Qualmann.
Committed on 21/05/2021 at 06:05.
Pushed by mqualmann into branch 'master'.

try to fix crash in the video slider context

M  +1    -1    core/libs/video/player/mediaplayerview.cpp
M  +1    -1    core/libs/video/player/slidevideo.cpp

https://invent.kde.org/graphics/digikam/commit/c9ebd4d03581137d77cc665e183088aff9f1b4ac
Comment 36 Jozef Říha 2021-05-21 12:11:02 UTC
The patched version crashes for me too. But BT looks slightly different (?):

Thread 75 "QtAV::VideoThre" received signal SIGABRT, Aborted.
[Switching to Thread 0x7ffeeaffd640 (LWP 113236)]
0x00007ffff4f57d22 in raise () from /usr/lib/libc.so.6
(gdb) bt
#0  0x00007ffff4f57d22 in raise () at /usr/lib/libc.so.6
#1  0x00007ffff4f41862 in abort () at /usr/lib/libc.so.6
#2  0x00007ffff4f99d28 in __libc_message () at /usr/lib/libc.so.6
#3  0x00007ffff4fa192a in  () at /usr/lib/libc.so.6
#4  0x00007ffff4fa2826 in unlink_chunk.constprop () at /usr/lib/libc.so.6
#5  0x00007ffff4fa29b0 in malloc_consolidate () at /usr/lib/libc.so.6
#6  0x00007ffff4fa488b in _int_malloc () at /usr/lib/libc.so.6
#7  0x00007ffff4fa64e1 in malloc () at /usr/lib/libc.so.6
#8  0x00007ffff59f9330 in QImageData::create(QSize const&, QImage::Format) () at /usr/lib/libQt5Gui.so.5
#9  0x00007ffff59f950d in QImage::QImage(QSize const&, QImage::Format) () at /usr/lib/libQt5Gui.so.5
#10 0x00007ffff59f9554 in QImage::QImage(int, int, QImage::Format) () at /usr/lib/libQt5Gui.so.5
#11 0x00007ffff59f9e37 in QImage::copy(QRect const&) const () at /usr/lib/libQt5Gui.so.5
#12 0x00007ffff59fa2a3 in QImage::detach() () at /usr/lib/libQt5Gui.so.5
#13 0x00007ffff59fc269 in QImage::reinterpretAsFormat(QImage::Format) () at /usr/lib/libQt5Gui.so.5
#14 0x00007ffff5a39292 in QRasterPlatformPixmap::createPixmapForImage(QImage, QFlags<Qt::ImageConversionFlag>) ()
    at /usr/lib/libQt5Gui.so.5
#15 0x00007ffff5a3940d in QRasterPlatformPixmap::fromImage(QImage const&, QFlags<Qt::ImageConversionFlag>) ()
    at /usr/lib/libQt5Gui.so.5
#16 0x00007ffff5a30284 in QPixmap::fromImage(QImage const&, QFlags<Qt::ImageConversionFlag>) () at /usr/lib/libQt5Gui.so.5
#17 0x00007fffed170a9a in QtAV::QPainterRenderer::preparePixmap(QtAV::VideoFrame const&) () at /usr/lib/libQtAV.so.1
#18 0x00007fffecfff877 in QtAV::WidgetRenderer::receiveFrame(QtAV::VideoFrame const&) () at /usr/lib/libQtAVWidgets.so.1
#19 0x00007fffed16bf58 in QtAV::VideoRenderer::receive(QtAV::VideoFrame const&) () at /usr/lib/libQtAV.so.1
#20 0x00007fffed17207c in QtAV::OutputSet::sendVideoFrame(QtAV::VideoFrame const&) () at /usr/lib/libQtAV.so.1
#21 0x00007fffed17beb0 in QtAV::VideoThread::deliverVideoFrame(QtAV::VideoFrame&) () at /usr/lib/libQtAV.so.1
#22 0x00007fffed17db1a in QtAV::VideoThread::run() () at /usr/lib/libQtAV.so.1
#23 0x00007ffff53e7f7f in  () at /usr/lib/libQt5Core.so.5
#24 0x00007ffff11ef259 in start_thread () at /usr/lib/libpthread.so.0
#25 0x00007ffff50195e3 in clone () at /usr/lib/libc.so.6
Comment 37 Maik Qualmann 2021-09-11 13:35:46 UTC
Git commit 450d93baf8a059d9e4e0214539bf3810912e0a72 by Maik Qualmann.
Committed on 11/09/2021 at 13:33.
Pushed by mqualmann into branch 'master'.

Use QtAV video output to use hardware acceleration if supported
and use libAVFIlter to rotate the video
Related: bug 382582, bug 430873, bug 414572

M  +44   -44   core/libs/video/player/mediaplayerview.cpp

https://invent.kde.org/graphics/digikam/commit/450d93baf8a059d9e4e0214539bf3810912e0a72
Comment 38 Maik Qualmann 2021-09-11 14:49:24 UTC
Git commit 701855c5455c495bf68b61298344e80828404311 by Maik Qualmann.
Committed on 11/09/2021 at 14:48.
Pushed by mqualmann into branch 'master'.

Use QtAV video output also for the slideshow
Related: bug 382582, bug 430873, bug 414572

M  +42   -41   core/libs/video/player/slidevideo.cpp
M  +0    -1    core/libs/video/player/slidevideo.h

https://invent.kde.org/graphics/digikam/commit/701855c5455c495bf68b61298344e80828404311
Comment 39 caulier.gilles 2021-12-14 05:09:45 UTC
Loic,

Stable digiKam 7.4.0 is published. Please check if problem is reproducible.

Thanks in advance

Gilles Caulier
Comment 40 Jozef Říha 2022-01-27 10:29:44 UTC
(In reply to caulier.gilles from comment #39)
> Loic,
> 
> Stable digiKam 7.4.0 is published. Please check if problem is reproducible.
> 
> Thanks in advance
> 
> Gilles Caulier

Testing with digikam 7.5.0 on Arch Linux. Test files from attachment, digikam does not crash but hangs indefinitely when previewing .mov file.
Comment 41 caulier.gilles 2022-01-27 10:50:42 UTC
Ok.

With your native digiKam package, which libraries version did you use, especially ffmpeg libav codecs ?

When you run digiKam from a console, reproduce the hang. What do you see as debug trace on the console ?
Note for this last point, you will need to turn a environment variable first :

https://www.digikam.org/contribute/

Best

Gilles Caulier
Comment 42 Jozef Říha 2022-01-27 11:49:57 UTC
(In reply to caulier.gilles from comment #41)
> Ok.
> 
> With your native digiKam package, which libraries version did you use,
> especially ffmpeg libav codecs ?

❯ ldd /usr/bin/digikam | grep -ie libav -e ffmpeg
	libavcodec.so.58 => /usr/lib/libavcodec.so.58 (0x00007f4a157c5000)
	libavfilter.so.7 => /usr/lib/libavfilter.so.7 (0x00007f4a15373000)
	libavformat.so.58 => /usr/lib/libavformat.so.58 (0x00007f4a150d7000)
	libavutil.so.56 => /usr/lib/libavutil.so.56 (0x00007f4a14e2c000)
	libavdevice.so.58 => /usr/lib/libavdevice.so.58 (0x00007f49fd19d000)
	libavc1394.so.0 => /usr/lib/libavc1394.so.0 (0x00007f49f7a02000)
❯ pacman -Qo /usr/lib/libavcodec.so.58
/usr/lib/libavcodec.so.58 is owned by ffmpeg 2:4.4.1-1
❯ ffmpeg   
ffmpeg version n4.4.1 Copyright (c) 2000-2021 the FFmpeg developers
  built with gcc 11.1.0 (GCC)
  configuration: --prefix=/usr --disable-debug --disable-static --disable-stripping --enable-amf --enable-avisynth --enable-cuda-llvm --enable-lto --enable-fontconfig --enable-gmp --enable-gnutls --enable-gpl --enable-ladspa --enable-libaom --enable-libass --enable-libbluray --enable-libdav1d --enable-libdrm --enable-libfreetype --enable-libfribidi --enable-libgsm --enable-libiec61883 --enable-libjack --enable-libmfx --enable-libmodplug --enable-libmp3lame --enable-libopencore_amrnb --enable-libopencore_amrwb --enable-libopenjpeg --enable-libopus --enable-libpulse --enable-librav1e --enable-librsvg --enable-libsoxr --enable-libspeex --enable-libsrt --enable-libssh --enable-libsvtav1 --enable-libtheora --enable-libv4l2 --enable-libvidstab --enable-libvmaf --enable-libvorbis --enable-libvpx --enable-libwebp --enable-libx264 --enable-libx265 --enable-libxcb --enable-libxml2 --enable-libxvid --enable-libzimg --enable-nvdec --enable-nvenc --enable-shared --enable-version3
  libavutil      56. 70.100 / 56. 70.100
  libavcodec     58.134.100 / 58.134.100
  libavformat    58. 76.100 / 58. 76.100
  libavdevice    58. 13.100 / 58. 13.100
  libavfilter     7.110.100 /  7.110.100
  libswscale      5.  9.100 /  5.  9.100
  libswresample   3.  9.100 /  3.  9.100
  libpostproc    55.  9.100 / 55.  9.100
Hyper fast Audio and Video encoder
usage: ffmpeg [options] [[infile options] -i infile]... {[outfile options] outfile}...



> 
> When you run digiKam from a console, reproduce the hang. What do you see as
> debug trace on the console ?
> Note for this last point, you will need to turn a environment variable first
> :
> 
> https://www.digikam.org/contribute/
> 
> Best
> 
> Gilles Caulier

These are the lines of log just before the hang:
digikam.general: Using  12  CPU core to run threads
digikam.general: Action Thread run  1  new jobs
digikam.general: Cancel Main Thread
digikam.general: One job is done
digikam.general: Cancel Main Thread
digikam.general: Stacked View Mode :  6
digikam.general: Database Info populated for QUrl("file:///path/to/vertical.mov")
[ALSOFT] (EE) Failed to set real-time priority for thread: Operation not permitted (1)
digikam.general: Found video orientation: 0
digikam.general: Stacked View Mode :  6
corrupted size vs. prev_size
Comment 43 caulier.gilles 2022-01-27 12:08:38 UTC
The problem come from the audio output in your system:

"[ALSOFT] (EE) Failed to set real-time priority for thread: Operation not permitted"

Try to search this line with google, you will found plenty of links.

Gilles Caulier
Comment 44 caulier.gilles 2022-01-27 12:12:27 UTC
Perhaps there is a solution around ulimit as explained here :

https://stackoverflow.com/questions/10704983/operation-not-permitted-while-setting-new-priority-for-thread

GilleS Caulier
Comment 45 caulier.gilles 2022-01-27 12:14:38 UTC
Interesting to read :

https://www.reddit.com/r/archlinux/comments/kfknqr/issue_with_arch_linux_and_using_audio_libs_in_c/

Gilles Caulier
Comment 46 Jozef Říha 2022-01-27 13:58:24 UTC
(In reply to caulier.gilles from comment #43)
> The problem come from the audio output in your system:
> 
> "[ALSOFT] (EE) Failed to set real-time priority for thread: Operation not
> permitted"
> 
> Try to search this line with google, you will found plenty of links.
> 
> Gilles Caulier

I got rid of that error (adding my user into realtime group and reboot) however the hang did not go away. This is the updated log:

digikam.general: Database Info populated for QUrl("file:///path/to/vertical.mov")
digikam.general: Found video orientation: 0
digikam.general: Stacked View Mode :  6
corrupted size vs. prev_size
Comment 47 caulier.gilles 2022-01-27 15:08:40 UTC
I can confirm the lag under digiKam 7.6.0 with MacOS. The video player try to load and play the MOV file, it take a while and finally after 10s digiKam continue to run. No crash.

The MOV file can be played under VLC, but not in Apple QuickTime (the official MacOS video player supporting well MOV, as it's a format from Apple).

So, something is wrong in this file, but what ?

Gilles
Comment 48 caulier.gilles 2022-01-27 15:11:42 UTC
Report from ffmpeg :

[gilles@localhost testfiles]$ ffmpeg -i vertical.mov 
ffmpeg version 4.3.3 Copyright (c) 2000-2021 the FFmpeg developers
  built with gcc 10 (Mageia 10.3.0-2.mga8)
  configuration: --prefix=/usr --enable-shared --enable-pic --libdir=/usr/lib64 --shlibdir=/usr/lib64 --incdir=/usr/include --disable-stripping --enable-postproc --enable-gpl --enable-pthreads --enable-libtheora --enable-libvorbis --disable-encoder=vorbis --enable-libvpx --enable-runtime-cpudetect --enable-libaom --enable-libdc1394 --enable-librtmp --enable-libspeex --enable-libfreetype --enable-libgsm --enable-libcelt --enable-libopus --disable-libopencv --enable-libopenjpeg --enable-libvidstab --enable-libtwolame --enable-libxavs --enable-frei0r --enable-libmodplug --enable-libass --enable-gnutls --enable-libcdio --enable-libmfx --enable-libpulse --enable-libv4l2 --enable-avresample --enable-opencl --enable-libmp3lame --enable-sndio --enable-libdav1d --enable-libopencore-amrnb --enable-libopencore-amrwb --enable-version3 --enable-libx264 --enable-libx265 --enable-libvo-amrwbenc --enable-libxvid
  libavutil      56. 51.100 / 56. 51.100
  libavcodec     58. 91.100 / 58. 91.100
  libavformat    58. 45.100 / 58. 45.100
  libavdevice    58. 10.100 / 58. 10.100
  libavfilter     7. 85.100 /  7. 85.100
  libavresample   4.  0.  0 /  4.  0.  0
  libswscale      5.  7.100 /  5.  7.100
  libswresample   3.  7.100 /  3.  7.100
  libpostproc    55.  7.100 / 55.  7.100
Input #0, mov,mp4,m4a,3gp,3g2,mj2, from 'vertical.mov':
  Metadata:
    major_brand     : qt  
    minor_version   : 0
    compatible_brands: qt  
    creation_time   : 2021-05-13T15:31:45.000000Z
    com.apple.quicktime.location.accuracy.horizontal: 12.001812
    com.apple.quicktime.make: Apple
    com.apple.quicktime.model: iPhone 8
    com.apple.quicktime.software: 14.4.2
    com.apple.quicktime.creationdate: 2021-04-19T12:13:41+0200
    com.apple.photos.originating.signature: AUJo9HcbRepHA3yCAn9nzoJQZLO4
  Duration: 00:00:03.30, start: 0.000000, bitrate: 2619 kb/s
    Stream #0:0(und): Audio: aac (LC) (mp4a / 0x6134706D), 44100 Hz, mono, fltp, 91 kb/s (default)
    Metadata:
      creation_time   : 2021-05-13T15:31:45.000000Z
      handler_name    : Core Media Audio
    Stream #0:1(und): Video: h264 (Main) (avc1 / 0x31637661), yuv420p(tv, smpte170m/smpte170m/bt709), 360x640 [SAR 1:1 DAR 9:16], 2512 kb/s, 30 fps, 30 tbr, 600 tbn, 1200 tbc (default)
    Metadata:
      creation_time   : 2021-05-13T15:31:45.000000Z
      handler_name    : Core Media Video
      encoder         : H.264
    Stream #0:2(und): Data: none (mebx / 0x7862656D), 0 kb/s (default)
    Metadata:
      creation_time   : 2021-05-13T15:31:45.000000Z
      handler_name    : Core Media Metadata
    Stream #0:3(und): Data: none (mebx / 0x7862656D), 0 kb/s (default)
    Metadata:
      creation_time   : 2021-05-13T15:31:45.000000Z
      handler_name    : Core Media Metadata
Comment 49 caulier.gilles 2022-01-27 15:14:50 UTC
ffmpeg can play the MOV file using ffplay from command line.
Comment 50 caulier.gilles 2022-01-27 15:17:03 UTC
Under Linux, with digiKam 7.6.0, i can preview the MOV file, but at end of preview, digiKam crash :

digikam.metaengine: ExifTool "Load Metadata" "-json -G:0:1:2:4:6 -l /home/gilles/Images/bug 435660/testfiles/vertical.mov"
digikam.metaengine: Parse metadada with FFMpeg: "/home/gilles/Images/bug 435660/testfiles/vertical.mov"
digikam.metaengine: -- FFMpeg audio stream metadata entries :
digikam.metaengine: QMap(("creation_time", "2021-05-13T15:31:45.000000Z")("handler_name", "Core Media Audio")("language", "und"))
digikam.metaengine: -----------------------------------------
digikam.metaengine: -- FFMpeg video stream metadata entries :
digikam.metaengine: QMap(("creation_time", "2021-05-13T15:31:45.000000Z")("encoder", "H.264")("handler_name", "Core Media Video")("language", "und"))
digikam.metaengine: -----------------------------------------
digikam.metaengine: -- FFMpeg root container metadata entries :
digikam.metaengine: QMap(("com.apple.photos.originating.signature", "AUJo9HcbRepHA3yCAn9nzoJQZLO4")("com.apple.quicktime.creationdate", "2021-04-19T12:13:41+0200")("com.apple.quicktime.location.accuracy.horizontal", "12.001812")("com.apple.quicktime.make", "Apple")("com.apple.quicktime.model", "iPhone 8")("com.apple.quicktime.software", "14.4.2")("compatible_brands", "qt  ")("creation_time", "2021-05-13T15:31:45.000000Z")("major_brand", "qt  ")("minor_version", "0"))
digikam.metaengine: ------------------------------------------
digikam.metaengine: Loading metadata with "FFMpeg" backend from "/home/gilles/Images/bug 435660/testfiles/vertical.mov"
digikam.general: Metadata loading with Exiv2 took 17 ms ( true )
digikam.general: "Standard Exif Tags" decoding took 0 ms ( false )
digikam.general: "MakerNote Exif Tags" decoding took 0 ms ( false )
digikam.general: "IPTC Records" decoding took 0 ms ( false )
digikam.general: "XMP Schema" decoding took 0 ms ( false )
digikam.metaengine: ExifToolProcess::readOutput(): ExifTool command completed
digikam.metaengine: ExifTool complete command for action "Load Metadata" with elasped time (ms): 228
digikam.metaengine: Json Array size: 1
digikam.metaengine: ExifTool Json map size: 165
digikam.metaengine: ExifTool parsed command for action "Load Metadata"
digikam.metaengine: 148 properties decoded
digikam.general: Stacked View Mode :  6
digikam.general: Database Info populated for QUrl("file:///home/gilles/Images/bug 435660/testfiles/vertical.mov")
[ALSOFT] (WW) Error generated on context 0x4f7abd0, code 0xa001, "Invalid source ID 1"
[ALSOFT] (WW) Error generated on context 0x4f7abd0, code 0xa001, "Invalid source ID 1"
[ALSOFT] (WW) Error generated on context 0x4f7abd0, code 0xa001, "Invalid source ID 1"
[ALSOFT] (WW) Error generated on context 0x4f7abd0, code 0xa001, "Invalid source ID 1"
[ALSOFT] (EE) Failed to set real-time priority for thread: Operation not permitted (1)
digikam.general: Found video orientation: 0
digikam.metaengine: ExifTool "Load Metadata" "-json -G:0:1:2:4:6 -l /home/gilles/Images/bug 435660/testfiles/vertical.mov"
digikam.metaengine: Parse metadada with FFMpeg: "/home/gilles/Images/bug 435660/testfiles/vertical.mov"
digikam.metaengine: -- FFMpeg audio stream metadata entries :
digikam.metaengine: QMap(("creation_time", "2021-05-13T15:31:45.000000Z")("handler_name", "Core Media Audio")("language", "und"))
digikam.metaengine: -----------------------------------------
digikam.metaengine: -- FFMpeg video stream metadata entries :
digikam.metaengine: QMap(("creation_time", "2021-05-13T15:31:45.000000Z")("encoder", "H.264")("handler_name", "Core Media Video")("language", "und"))
digikam.metaengine: -----------------------------------------
digikam.metaengine: -- FFMpeg root container metadata entries :
digikam.metaengine: QMap(("com.apple.photos.originating.signature", "AUJo9HcbRepHA3yCAn9nzoJQZLO4")("com.apple.quicktime.creationdate", "2021-04-19T12:13:41+0200")("com.apple.quicktime.location.accuracy.horizontal", "12.001812")("com.apple.quicktime.make", "Apple")("com.apple.quicktime.model", "iPhone 8")("com.apple.quicktime.software", "14.4.2")("compatible_brands", "qt  ")("creation_time", "2021-05-13T15:31:45.000000Z")("major_brand", "qt  ")("minor_version", "0"))
digikam.metaengine: ------------------------------------------
digikam.metaengine: Loading metadata with "FFMpeg" backend from "/home/gilles/Images/bug 435660/testfiles/vertical.mov"
digikam.general: Metadata loading with Exiv2 took 26 ms ( true )
digikam.general: "Standard Exif Tags" decoding took 0 ms ( false )
digikam.general: "MakerNote Exif Tags" decoding took 0 ms ( false )
digikam.general: "IPTC Records" decoding took 0 ms ( false )
digikam.general: "XMP Schema" decoding took 0 ms ( false )
digikam.general: Stacked View Mode :  6
digikam.metaengine: ExifToolProcess::readOutput(): ExifTool command completed
digikam.metaengine: ExifTool complete command for action "Load Metadata" with elasped time (ms): 100
digikam.metaengine: Json Array size: 1
digikam.metaengine: ExifTool Json map size: 165
digikam.metaengine: ExifTool parsed command for action "Load Metadata"
digikam.metaengine: 148 properties decoded
tcache_thread_shutdown(): unaligned tcache chunk detected
Aborted (core dumped)
[gilles@localhost testfiles]$
Comment 51 caulier.gilles 2022-01-27 15:21:50 UTC
The gdb backtrace of the crash :
digikam.metaengine: ExifToolProcess::readOutput(): ExifTool command completed
digikam.metaengine: ExifTool complete command for action "Load Metadata" with elasped time (ms): 155
digikam.metaengine: Json Array size: 1
digikam.metaengine: ExifTool Json map size: 165
digikam.metaengine: ExifTool parsed command for action "Load Metadata"
digikam.metaengine: 148 properties decoded
corrupted double-linked list
--Type <RET> for more, q to quit, c to continue without paging--

Thread 64 "QtAV::VideoThre" received signal SIGABRT, Aborted.
[Switching to Thread 0x7fff2cc3c640 (LWP 17022)]
0x00007ffff3ab5490 in raise () from /lib64/libc.so.6
(gdb) bt
#0  0x00007ffff3ab5490 in raise () at /lib64/libc.so.6
#1  0x00007ffff3aa0526 in abort () at /lib64/libc.so.6
#2  0x00007ffff3af47a8 in  () at /lib64/libc.so.6
#3  0x00007ffff3afc0fa in  () at /lib64/libc.so.6
#4  0x00007ffff3afd23c in unlink_chunk.constprop () at /lib64/libc.so.6
#5  0x00007ffff3afd399 in malloc_consolidate () at /lib64/libc.so.6
#6  0x00007ffff3afec17 in _int_malloc () at /lib64/libc.so.6
#7  0x00007ffff3b006a9 in malloc () at /lib64/libc.so.6
#8  0x00007ffff484f526 in QImageData::create(QSize const&, QImage::Format) () at /lib64/libQt5Gui.so.5
#9  0x00007ffff484f71b in QImage::QImage(QSize const&, QImage::Format) () at /lib64/libQt5Gui.so.5
#10 0x00007ffff484f756 in QImage::QImage(int, int, QImage::Format) () at /lib64/libQt5Gui.so.5
#11 0x00007ffff484ff53 in QImage::copy(QRect const&) const () at /lib64/libQt5Gui.so.5
#12 0x00007ffff4850458 in QImage::detach() () at /lib64/libQt5Gui.so.5
#13 0x00007ffff4852164 in QImage::reinterpretAsFormat(QImage::Format) () at /lib64/libQt5Gui.so.5
#14 0x00007ffff488c43e in QRasterPlatformPixmap::createPixmapForImage(QImage, QFlags<Qt::ImageConversionFlag>) ()
    at /lib64/libQt5Gui.so.5
#15 0x00007ffff488c59a in QRasterPlatformPixmap::fromImage(QImage const&, QFlags<Qt::ImageConversionFlag>) () at /lib64/libQt5Gui.so.5
#16 0x00007ffff48841d3 in QPixmap::fromImage(QImage const&, QFlags<Qt::ImageConversionFlag>) () at /lib64/libQt5Gui.so.5
#17 0x00007fffe686b490 in QtAV::QPainterRenderer::preparePixmap(QtAV::VideoFrame const&) () at /lib64/libQtAV.so.1
#18 0x00007fffe6728643 in non-virtual thunk to QtAV::WidgetRenderer::receiveFrame(QtAV::VideoFrame const&) ()
    at /lib64/libQtAVWidgets.so.1
#19 0x00007fffe6866c53 in QtAV::VideoRenderer::receive(QtAV::VideoFrame const&) () at /lib64/libQtAV.so.1
#20 0x00007fffe686cab6 in QtAV::OutputSet::sendVideoFrame(QtAV::VideoFrame const&) () at /lib64/libQtAV.so.1
#21 0x00007fffe687508f in QtAV::VideoThread::deliverVideoFrame(QtAV::VideoFrame&) () at /lib64/libQtAV.so.1
#22 0x00007fffe6876c74 in QtAV::VideoThread::run() () at /lib64/libQtAV.so.1
#23 0x00007ffff408e961 in QThreadPrivate::start(void*) () at /lib64/libQt5Core.so.5
#24 0x00007ffff3c3cdec in start_thread () at /lib64/libpthread.so.0
#25 0x00007ffff3b6ffbf in clone () at /lib64/libc.so.6
(gdb)
Comment 52 caulier.gilles 2022-01-27 15:28:36 UTC
Hum under Linux, the last backtrace appear with QtAV 1.12.

If i use digiKam 7.6.0 linux AppImage bundle including QtAv rolling release code (last one from git repository), video is played without crash.

So the bug exist in older QtAV version.

Loic, which QtAV do you use with digiKam. Look in Help/Components Info dialog for details.

Also, please try to run digiKam 7.6.0 pre-release AppImage bundle on your computer to see if crash disappear. File is here :

https://files.kde.org/digikam/

Gilles Caulier
Comment 53 caulier.gilles 2022-01-27 15:51:25 UTC
Oh, nice. Under MacOS, VLC is frozen after to play the MOV file. I must force to quit from task manager...
Comment 54 Maik Qualmann 2022-01-27 19:27:33 UTC
Here under openSUSE Tumbleweed still no problems with the MOV file. Neither GStreamer bases player nor VLC or digiKam.

Maik
Comment 55 Jozef Říha 2022-01-27 23:28:45 UTC
(In reply to caulier.gilles from comment #52)
> Hum under Linux, the last backtrace appear with QtAV 1.12.
> 
> If i use digiKam 7.6.0 linux AppImage bundle including QtAv rolling release
> code (last one from git repository), video is played without crash.
> 
> So the bug exist in older QtAV version.
> 
> Loic, which QtAV do you use with digiKam. Look in Help/Components Info
> dialog for details.

In Help/Components I can only get info about KDE Frameworks and Qt version, nothing about QtAv. Version of QtAv installed is 1.13.0.

I installed QtAv from git and reinstalled, the hang is still there. Haven't tried AppImage version but this won't actually solve the problem for me (want to use the package coming from repository).
Comment 56 caulier.gilles 2022-01-28 03:51:41 UTC
Components Information dialog with qtav + libav versions : 

https://i.imgur.com/ddzkUuF.png
Comment 57 Jozef Říha 2022-01-28 08:03:02 UTC
(In reply to caulier.gilles from comment #56)
> Components Information dialog with qtav + libav versions : 
> 
> https://i.imgur.com/ddzkUuF.png

Thank you, now I finally see it. It says LibQtAv 1.13.0 (with -git version having installed)
Comment 58 caulier.gilles 2022-01-28 09:08:39 UTC
QtAV 1.13 is older than 2 years...

https://github.com/wang-bin/QtAV/releases/tag/v1.13.0

and it have never been released officially. This is why a prefix -git is appended.

The code from current Linux AppImage bundle of digiKam 7.6.0 is compiled with last code from github.

Please, just to validate that it work for you, download the AppImage bundle, make it executable, and start it to look if problem remain on your computer. Here i cannot reproduce.

https://files.kde.org/digikam/

If it work for you, well your native package must be compiled with last QtAV code from github. It's a DOWNSTREAM bug to report to your Linux distro team.

Gilles Caulier
Comment 59 Jozef Říha 2022-01-28 09:55:29 UTC
(In reply to caulier.gilles from comment #58)
> If it work for you, well your native package must be compiled with last QtAV
> code from github. It's a DOWNSTREAM bug to report to your Linux distro team.
> 
> Gilles Caulier

As mentioned previously I did install Qt-Av from github and recompiled digikam to make sure it will use it.

❯ pacman -Q qtav-git 
qtav-git v1.13.0.r65.g3b937991-1

"3b937991" matches the latest commit on https://github.com/wang-bin/QtAV. Also /usr/bin/Player binary which came with the package shows the date and time of the compilation. Anyway when I try to open said file in the Player application I get the same behaviour as in digikam. @Loic could you perhaps try the same?

I could try to file a report at  https://github.com/wang-bin/QtAV/issues but seeing 500+ issues there I am a bit skeptical. Perhaps it's worth checking the patches Tumbleweed is applying and/or the version of ffmpeg it is linking with. Anyway this is not a digikam issue, really so perhaps we can close it.
Comment 60 Maik Qualmann 2022-01-28 12:54:33 UTC
I don't see any problems with the MOV file on Windows either. Just as a question in the room, could it also be that ffmpeg uses hardware acceleration on some computers and that's why there are problems?

ffmpeg -hide_banner -hwaccels

Maik
Comment 61 caulier.gilles 2022-01-28 17:00:29 UTC
To Jozef,

No it's not a digiKam issue. perhaps a QtAv or more probably a ffmpeg issue due to hardware acceleration.

Yes a report must be done to QtAV, with the sample mov and the QtAV player trace in GDB.

Gilles Caulier
Comment 62 caulier.gilles 2022-01-28 17:03:29 UTC
Jozef,

On QtAv, only 35 files still open as Bugs. The rest are wishes or enhancements.

GilleS Caulier
Comment 63 Jozef Říha 2022-01-30 21:42:51 UTC
Update:

Don't know what happened exactly but currently QtAv's Player plays the file without issues. Digikam sometimes shows a few frames of the video file, sometimes it is even play the full video but then it becomes unresponsive (when this happens I get the following text on the console: tcache_thread_shutdown(): unaligned tcache chunk detected). But most of the time it hangs right from the start.

I was able reproduce the same behaviour on my laptop (Elitebook 840 G1) with Intel GPU (driver used is i915)  which likely rules out a relationship to hardware acceleration (don't think the GPU uses any). Also once I also experienced a crash (not just hang).
Comment 64 caulier.gilles 2022-05-12 11:24:54 UTC
Git commit 5aae9b7c21ab662d63b49f165163984809c1d585 by Gilles Caulier.
Committed on 12/05/2022 at 11:10.
Pushed by cgilles into branch 'master'.

Move AVPlayer config widgets to core/QtAV to allow to re-use these settings view in a new Video section from digiKam Setup dialog.
the goal is to be able to configure the video decoder, the audio backend, and the video renderer with video preview framework,
to prevent dysfunctions while playing audio and video media if wrong decoder/backend/renderer is selected by default.

Currently none of these settings is possible in digiKam and playing video and audio always depends of default settings done in QtAV
framework which can be badly configured for the available hardwares and modules in client computer.

TODO: add the new video config pannel in digiKam Setup dialog to configure decoder/backend/renderer.
Related: bug 382582, bug 445422, bug 426951, bug 430873, bug 437328, bug 388475, bug 440668, bug 415778, bug 442802, bug 423580

M  +2    -14   core/avplayer/CMakeLists.txt
M  +3    -6    core/avplayer/main/MainWindow.cpp
M  +7    -7    core/avplayer/main/MainWindow.h
R  +2    -0    core/avplayer/utils/ConfigDialog.cpp [from: core/avplayer/config/ConfigDialog.cpp - 099% similarity]
R  +8    -5    core/avplayer/utils/ConfigDialog.h [from: core/avplayer/config/ConfigDialog.h - 090% similarity]
M  +2    -0    core/avplayer/utils/common.cpp
M  +12   -0    core/libs/video/qtav/CMakeLists.txt
R  +2    -2    core/libs/video/qtav/widgets/config/AVFilterConfigPage.cpp [from: core/avplayer/config/AVFilterConfigPage.cpp - 098% similarity]
R  +7    -6    core/libs/video/qtav/widgets/config/AVFilterConfigPage.h [from: core/avplayer/config/AVFilterConfigPage.h - 086% similarity]
R  +2    -2    core/libs/video/qtav/widgets/config/AVFormatConfigPage.cpp [from: core/avplayer/config/AVFormatConfigPage.cpp - 098% similarity]
R  +7    -6    core/libs/video/qtav/widgets/config/AVFormatConfigPage.h [from: core/avplayer/config/AVFormatConfigPage.h - 084% similarity]
R  +2    -2    core/libs/video/qtav/widgets/config/AVPlayerConfigMngr.cpp [from: core/avplayer/config/AVPlayerConfigMngr.cpp - 099% similarity]
R  +10   -6    core/libs/video/qtav/widgets/config/AVPlayerConfigMngr.h [from: core/avplayer/config/AVPlayerConfigMngr.h - 098% similarity]
R  +2    -2    core/libs/video/qtav/widgets/config/CaptureConfigPage.cpp [from: core/avplayer/config/CaptureConfigPage.cpp - 099% similarity]
R  +7    -6    core/libs/video/qtav/widgets/config/CaptureConfigPage.h [from: core/avplayer/config/CaptureConfigPage.h - 086% similarity]
R  +2    -2    core/libs/video/qtav/widgets/config/ClickableMenu.cpp [from: core/avplayer/utils/ClickableMenu.cpp - 097% similarity]
R  +10   -6    core/libs/video/qtav/widgets/config/ClickableMenu.h [from: core/avplayer/utils/ClickableMenu.h - 082% similarity]
R  +2    -2    core/libs/video/qtav/widgets/config/ConfigPageBase.cpp [from: core/avplayer/config/ConfigPageBase.cpp - 097% similarity]
R  +10   -6    core/libs/video/qtav/widgets/config/ConfigPageBase.h [from: core/avplayer/config/ConfigPageBase.h - 087% similarity]
R  +34   -37   core/libs/video/qtav/widgets/config/DecoderConfigPage.cpp [from: core/avplayer/config/DecoderConfigPage.cpp - 098% similarity]
R  +11   -6    core/libs/video/qtav/widgets/config/DecoderConfigPage.h [from: core/avplayer/config/DecoderConfigPage.h - 082% similarity]
R  +2    -2    core/libs/video/qtav/widgets/config/MiscPage.cpp [from: core/avplayer/config/MiscPage.cpp - 099% similarity]
R  +10   -6    core/libs/video/qtav/widgets/config/MiscPage.h [from: core/avplayer/config/MiscPage.h - 086% similarity]
R  +2    -2    core/libs/video/qtav/widgets/config/PropertyEditor.cpp [from: core/avplayer/config/PropertyEditor.cpp - 099% similarity]
R  +10   -6    core/libs/video/qtav/widgets/config/PropertyEditor.h [from: core/avplayer/config/PropertyEditor.h - 093% similarity]
R  +2    -2    core/libs/video/qtav/widgets/config/ShaderPage.cpp [from: core/avplayer/config/ShaderPage.cpp - 098% similarity]
R  +7    -6    core/libs/video/qtav/widgets/config/ShaderPage.h [from: core/avplayer/config/ShaderPage.h - 085% similarity]
R  +2    -2    core/libs/video/qtav/widgets/config/Slider.cpp [from: core/avplayer/utils/Slider.cpp - 099% similarity]
R  +10   -6    core/libs/video/qtav/widgets/config/Slider.h [from: core/avplayer/utils/Slider.h - 088% similarity]
R  +2    -2    core/libs/video/qtav/widgets/config/VideoEQConfigPage.cpp [from: core/avplayer/config/VideoEQConfigPage.cpp - 099% similarity]
R  +10   -6    core/libs/video/qtav/widgets/config/VideoEQConfigPage.h [from: core/avplayer/config/VideoEQConfigPage.h - 088% similarity]

https://invent.kde.org/graphics/digikam/commit/5aae9b7c21ab662d63b49f165163984809c1d585
Comment 65 caulier.gilles 2022-05-12 13:58:33 UTC
Git commit 505bc17cd39702e14446c15d79d44d14d80fe005 by Gilles Caulier.
Committed on 12/05/2022 at 13:56.
Pushed by cgilles into branch 'master'.

Add Setup Video page from digiKam configuration dialog.
This allow to setup few options for media player as the decoder priority to use.
Related: bug 382582, bug 445422, bug 426951, bug 430873, bug 437328, bug 388475, bug 440668, bug 415778, bug 442802, bug 423580

M  +24   -12   core/libs/video/player/mediaplayerview.cpp
M  +1    -0    core/libs/video/player/mediaplayerview.h
M  +22   -10   core/libs/video/player/slidevideo.cpp
M  +4    -0    core/libs/video/player/slidevideo.h
M  +2    -2    core/libs/video/qtav/widgets/config/AVPlayerConfigMngr.cpp
M  +1    -1    core/libs/video/qtav/widgets/config/DecoderConfigPage.cpp
M  +1    -0    core/utilities/setup/CMakeLists.txt
M  +29   -0    core/utilities/setup/setup.cpp
M  +2    -0    core/utilities/setup/setup.h
M  +1    -1    core/utilities/setup/setuptemplate.cpp
A  +69   -0    core/utilities/setup/setupvideo.h     [License: GPL (v2+)]

https://invent.kde.org/graphics/digikam/commit/505bc17cd39702e14446c15d79d44d14d80fe005
Comment 66 caulier.gilles 2022-05-12 15:26:51 UTC
Git commit 0e2bc2695efc7d6d0d2ec52731c3f69095554b7f by Gilles Caulier.
Committed on 12/05/2022 at 15:24.
Pushed by cgilles into branch 'master'.

Hide advanced settings for each decoder as nothing is saved and restored between the sessions. Only the list of decoder and the priority is saved
Related: bug 382582, bug 445422, bug 426951, bug 430873, bug 437328, bug 388475, bug 440668, bug 415778, bug 442802, bug 423580

M  +6    -4    core/libs/video/qtav/widgets/config/DecoderConfigPage.cpp
M  +1    -1    core/libs/video/qtav/widgets/config/DecoderConfigPage.h
M  +1    -1    core/utilities/setup/setupvideo.cpp

https://invent.kde.org/graphics/digikam/commit/0e2bc2695efc7d6d0d2ec52731c3f69095554b7f
Comment 67 caulier.gilles 2023-04-19 14:49:00 UTC
@Loic,

digiKam 8.0.0 is out. Problem still reproducible ?

Best regards
Gilles Caulier
Comment 68 caulier.gilles 2023-05-19 03:44:40 UTC
@Loic,

We needs a fresh feedback about this file.

Thanks in advance

Gilles Caulier
Comment 69 caulier.gilles 2023-10-11 14:38:26 UTC
@Loic,

What's about this file using current 8.2.0 AppImage Linux bundle ? It's
reproducible ?

https://files.kde.org/digikam/

Thanks in advance

Gilles Caulier
Comment 70 caulier.gilles 2024-01-26 12:47:55 UTC
Git commit 79ac8d6e9cb90c8d9b456405051ec0937f8485fe by Gilles Caulier.
Committed on 26/01/2024 at 13:44.
Pushed by cgilles into branch 'master'.

Preview and Slideshow of video is now rendered with Qt6::Multimedia and Qt5::QtAVPlayer.
Older and unmaintained QtAV framework code used in digiKam core is fully removed.
Both Qt6::Multimedia and Qt5::QtAVPlayer are based and compatible to FFMpeg API 5 and later.
Related: bug 468572, bug 382582, bug 471199, bug 478314, bug 445422, bug 448681, bug 477031, bug 478613
FIXED-IN: 8.3.0

M  +12   -9    NEWS

https://invent.kde.org/graphics/digikam/-/commit/79ac8d6e9cb90c8d9b456405051ec0937f8485fe