the new extractor is not as good as the taglib built one but depend only
on QtMultimedia
the quality of the extraction depends on the platform specific support
built into QtMultimedia
dfaure |
Frameworks |
the new extractor is not as good as the taglib built one but depend only
on QtMultimedia
the quality of the extraction depends on the platform specific support
built into QtMultimedia
automatic test passes even if much fewer values are extracted
No Linters Available |
No Unit Test Coverage |
Could somebody review this as that would allow simpler build from source than building taglib and its dependencies and allow simpler deployment on Windows and Android ?
Thanks in advance
If this extractor is worse than the taglib one, shouldn't the cmake run issue a warning about that? Or does it already do so because "taglib not found"?
autotests/qtmultimediaextractortest.cpp | ||
---|---|---|
2 | you probably don't want to commit a merge conflict... | |
8 | + your own copyright? | |
39 | What if the path contains non-latin characters? | |
src/extractors/qtmultimediaextractor.cpp | ||
2 | todo | |
78 | The mutex needs to be locked for all these writes. | |
210 | If setMediaSource calls wakeAll before this thread gets here, we will wait forever (QWaitCondition = if you're not sleeping, you miss the wakeup call). Use a QSemaphore instead of a QWaitCondition to fix this problem. | |
213 | Use QMutexLocker instead of manual lock/unlock, to make sure no unlock is forgotten. | |
src/extractors/qtmultimediaextractor.h | ||
2 | todo ;) |
Thanks for the review.
The idea of this extractor is to have an extractor not needing taglib (ease of build, build on platforms other than linux distributions).
QtMultimedia is not extracting a lot of metadata on linux+gstreamer but other platforms have better support.
autotests/qtmultimediaextractortest.cpp | ||
---|---|---|
8 | I copy/pasted it from the test of taglib and did nothing original. This the reason to keep original copyright. |
This test seems to fail depending on how QtMultimedia was built. See failure from the flaska CI, below. Can something be done to detect this?
2017-12-01 19:31:03,939 [output] ********* Start testing of QtMultimediaExtractorTest ********* 2017-12-01 19:31:03,939 [output] Config: Using QtTest library 5.7.1, Qt 5.7.1 (x86_64-little_endian-lp64 shared (dynamic) debug build; by Clang 3.8.0 (tags/RELEASE_380/final)) 2017-12-01 19:31:03,939 [output] PASS : QtMultimediaExtractorTest::initTestCase() 2017-12-01 19:31:03,939 [output] QWARN : QtMultimediaExtractorTest::test() Warning: "No decoder available for type 'audio/x-opus'." 2017-12-01 19:31:03,939 [output] FAIL! : QtMultimediaExtractorTest::test() Compared values are not the same 2017-12-01 19:31:03,940 [output] Actual (resultOpus.types().size()): 0 2017-12-01 19:31:03,940 [output] Expected (1) : 1 2017-12-01 19:31:03,940 [output] Loc: [/home/turbo-hipster/git/d4acdd80bf40/kfilemetadata/autotests/qtmultimediaextractortest.cpp(46)] 2017-12-01 19:31:03,940 [output] QWARN : QtMultimediaExtractorTest::test() Error: "Your GStreamer installation is missing a plug-in." 2017-12-01 19:31:03,940 [output] QFATAL : QtMultimediaExtractorTest::test() ASSERT failure in QCoreApplication::sendEvent: "Cannot send events to objects owned by a different thread. Current thread 23cc340. Receiver '' (of type 'QGstreamerPlayerSession') was created in thread 2406498", file kernel/qcoreapplication.cpp, line 541 2017-12-01 19:31:03,940 [output] FAIL! : QtMultimediaExtractorTest::test() Received a fatal error. 2017-12-01 19:31:03,940 [output] Loc: [Unknown file(0)] 2017-12-01 19:31:03,940 [output] Totals: 1 passed, 2 failed, 0 skipped, 0 blacklisted, 20713ms 2017-12-01 19:31:03,941 [output] ********* Finished testing of QtMultimediaExtractorTest *********
The extractor is not working well. On Windows, it appears as a reader in the volume applet. I am missing time to fix all its problems. This is why I did D8886 .
2017-12-01 19:31:03,939 [output] ********* Start testing of QtMultimediaExtractorTest ********* 2017-12-01 19:31:03,939 [output] Config: Using QtTest library 5.7.1, Qt 5.7.1 (x86_64-little_endian-lp64 shared (dynamic) debug build; by Clang 3.8.0 (tags/RELEASE_380/final)) 2017-12-01 19:31:03,939 [output] PASS : QtMultimediaExtractorTest::initTestCase() 2017-12-01 19:31:03,939 [output] QWARN : QtMultimediaExtractorTest::test() Warning: "No decoder available for type 'audio/x-opus'." 2017-12-01 19:31:03,939 [output] FAIL! : QtMultimediaExtractorTest::test() Compared values are not the same 2017-12-01 19:31:03,940 [output] Actual (resultOpus.types().size()): 0 2017-12-01 19:31:03,940 [output] Expected (1) : 1 2017-12-01 19:31:03,940 [output] Loc: [/home/turbo-hipster/git/d4acdd80bf40/kfilemetadata/autotests/qtmultimediaextractortest.cpp(46)] 2017-12-01 19:31:03,940 [output] QWARN : QtMultimediaExtractorTest::test() Error: "Your GStreamer installation is missing a plug-in." 2017-12-01 19:31:03,940 [output] QFATAL : QtMultimediaExtractorTest::test() ASSERT failure in QCoreApplication::sendEvent: "Cannot send events to objects owned by a different thread. Current thread 23cc340. Receiver '' (of type 'QGstreamerPlayerSession') was created in thread 2406498", file kernel/qcoreapplication.cpp, line 541 2017-12-01 19:31:03,940 [output] FAIL! : QtMultimediaExtractorTest::test() Received a fatal error. 2017-12-01 19:31:03,940 [output] Loc: [Unknown file(0)] 2017-12-01 19:31:03,940 [output] Totals: 1 passed, 2 failed, 0 skipped, 0 blacklisted, 20713ms 2017-12-01 19:31:03,941 [output] ********* Finished testing of QtMultimediaExtractorTest *********