Giter Site home page Giter Site logo

ient / yuview Goto Github PK

View Code? Open in Web Editor NEW
1.7K 66.0 346.0 65.64 MB

The Free and Open Source Cross Platform YUV Viewer with an advanced analytics toolset

Home Page: http://ient.github.io/YUView

License: Other

QMake 0.21% NSIS 0.30% C++ 90.94% C 3.14% Python 0.87% HTML 4.54%
yuv video player analysis hevc h265 video-coding video-player yuv-player ffmpeg

yuview's People

Contributors

aachenmax avatar ao2 avatar bilelmoussaoui avatar christianfeldmann avatar fjaeger avatar for13to1 avatar grandemk avatar harharlinks avatar jensac avatar k-os avatar kghustad avatar kloppjp avatar kubao avatar mgundert avatar michalkielan avatar nisha12b avatar nolyn avatar ptrbrn avatar raduruse avatar steffenrwth avatar takehirokj avatar uartie avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

yuview's Issues

Problems with imageformat 438x246 4:2:0 8 bit planar

Hello,

i got problems with a specific image format 438x246 4:2:0 8 bit I do not know why especially this format, but as shown in capture1 its shifted every row. I opened the same file with an another yuv viewer and it works fine see capture2. In capture3 i tested another format 432x246 4:2:0 8 bit it works great.

capture1

capture1

capture2

capture2

capture3

capture3

New application icon

I would like to finish the new application icon soon. Could somebody provide statistics data for the sequence foreman?

Zoom Box for 10bit sequences not working properly

If you activate the Zoom Box after loading a 10bit sequence, pixel values are not displayed correctly. Reason probably has to do with wrong casting of byte arrays to unsigned char pointer. Should be unsigned short instead :) Same problem when Zoom Box is activated for a difference object.

Crash while viewing several statistics

When I open several statistics YUView crashes suddenly, when changing between the statistics. It occurs after a random time, not at the first change. I tried to trace it in Debugging mode, but couldn't find the location. I used these statistics:

/data/sauer/simulations/PIIdeas/DirectionalInpainting/UHasseltSoccer/FTBE20/WUHSwindowsize9_DirInpIgnoreFG_All_bdkw/Soccer_Arc_1920x1080_25_2V_baseCfg_2view+depth_allintra_FTBE20_QP30+39+30+39stats_2.csv
/data/sauer/simulations/PIIdeas/DirectionalInpainting/UHasseltSoccer/FTBE20/WUHSwindowsize9_DirInpIgnoreFG_All_bdkw/Soccer_Arc_1920x1080_25_2V_baseCfg_2view+depth_allintra_FTBE20_QP30+39+30+39stats_3.csv

the backtrace:

Thread 18 (Thread 0x7fff9bfff700 (LWP 25708)):
#0 0x00007ffff4b4a48d in poll () from /usr/lib/libc.so.6

No symbol table info available.
#1 0x00007ffff293a066 in ?? () from /usr/lib/libglib-2.0.so.0

No symbol table info available.
#2 0x00007ffff293a17c in g_main_context_iteration () from /usr/lib/libglib-2.0.so.0

No symbol table info available.
#3 0x00007fffb820b4bd in ?? () from /usr/lib/gio/modules/libdconfsettings.so

No symbol table info available.
#4 0x00007ffff2960345 in ?? () from /usr/lib/libglib-2.0.so.0

No symbol table info available.
#5 0x00007ffff58e1454 in start_thread () from /usr/lib/libpthread.so.0

No symbol table info available.
#6 0x00007ffff4b537df in clone () from /usr/lib/libc.so.6

No symbol table info available.

Thread 8 (Thread 0x7fffcec8e700 (LWP 25669)):
#0 0x00007ffff4b4a48d in poll () from /usr/lib/libc.so.6

No symbol table info available.
#1 0x00007ffff293a066 in ?? () from /usr/lib/libglib-2.0.so.0

No symbol table info available.
#2 0x00007ffff293a17c in g_main_context_iteration () from /usr/lib/libglib-2.0.so.0

No symbol table info available.
#3 0x00007ffff604659b in QEventDispatcherGlib::processEvents(QFlagsQEventLoop::ProcessEventsFlag) () from /usr/lib/libQt5Core.so.5

No symbol table info available.
#4 0x00007ffff5ff00da in QEventLoop::exec(QFlagsQEventLoop::ProcessEventsFlag) () from /usr/lib/libQt5Core.so.5

No symbol table info available.
#5 0x00007ffff5e130f3 in QThread::exec() () from /usr/lib/libQt5Core.so.5

No symbol table info available.
#6 0x00007ffff5e17d78 in ?? () from /usr/lib/libQt5Core.so.5

No symbol table info available.
#7 0x00007ffff58e1454 in start_thread () from /usr/lib/libpthread.so.0

No symbol table info available.
#8 0x00007ffff4b537df in clone () from /usr/lib/libc.so.6

No symbol table info available.

Thread 6 (Thread 0x7fffdcc55700 (LWP 25660)):
#0 0x00007ffff4b4a48d in poll () from /usr/lib/libc.so.6

No symbol table info available.
#1 0x00007ffff293a066 in ?? () from /usr/lib/libglib-2.0.so.0

No symbol table info available.
#2 0x00007ffff293a17c in g_main_context_iteration () from /usr/lib/libglib-2.0.so.0

No symbol table info available.
#3 0x00007ffff604657f in QEventDispatcherGlib::processEvents(QFlagsQEventLoop::ProcessEventsFlag) () from /usr/lib/libQt5Core.so.5

No symbol table info available.
#4 0x00007ffff5ff00da in QEventLoop::exec(QFlagsQEventLoop::ProcessEventsFlag) () from /usr/lib/libQt5Core.so.5

No symbol table info available.
#5 0x00007ffff5e130f3 in QThread::exec() () from /usr/lib/libQt5Core.so.5

No symbol table info available.
#6 0x00007ffff5e17d78 in ?? () from /usr/lib/libQt5Core.so.5

No symbol table info available.
#7 0x00007ffff58e1454 in start_thread () from /usr/lib/libpthread.so.0

No symbol table info available.
#8 0x00007ffff4b537df in clone () from /usr/lib/libc.so.6

No symbol table info available.

Thread 5 (Thread 0x7fffde138700 (LWP 25658)):
#0 0x00007ffff4b4a48d in poll () from /usr/lib/libc.so.6

No symbol table info available.
#1 0x00007ffff293a066 in ?? () from /usr/lib/libglib-2.0.so.0

No symbol table info available.
#2 0x00007ffff293a17c in g_main_context_iteration () from /usr/lib/libglib-2.0.so.0

No symbol table info available.
#3 0x00007ffff604659b in QEventDispatcherGlib::processEvents(QFlagsQEventLoop::ProcessEventsFlag) () from /usr/lib/libQt5Core.so.5

No symbol table info available.
#4 0x00007ffff5ff00da in QEventLoop::exec(QFlagsQEventLoop::ProcessEventsFlag) () from /usr/lib/libQt5Core.so.5

No symbol table info available.
#5 0x00007ffff5e130f3 in QThread::exec() () from /usr/lib/libQt5Core.so.5

No symbol table info available.
#6 0x00007fffea7c4e75 in ?? () from /usr/lib/libQt5DBus.so.5

No symbol table info available.
#7 0x00007ffff5e17d78 in ?? () from /usr/lib/libQt5Core.so.5

No symbol table info available.
#8 0x00007ffff58e1454 in start_thread () from /usr/lib/libpthread.so.0

No symbol table info available.
#9 0x00007ffff4b537df in clone () from /usr/lib/libc.so.6

No symbol table info available.

Thread 4 (Thread 0x7fffdfbbf700 (LWP 25657)):
#0 0x00007ffff4b4a48d in poll () from /usr/lib/libc.so.6

No symbol table info available.
#1 0x00007ffff293a066 in ?? () from /usr/lib/libglib-2.0.so.0

No symbol table info available.
#2 0x00007ffff293a3f2 in g_main_loop_run () from /usr/lib/libglib-2.0.so.0

No symbol table info available.
#3 0x00007fffe28927c6 in ?? () from /usr/lib/libgio-2.0.so.0

No symbol table info available.
#4 0x00007ffff2960345 in ?? () from /usr/lib/libglib-2.0.so.0

No symbol table info available.
#5 0x00007ffff58e1454 in start_thread () from /usr/lib/libpthread.so.0

No symbol table info available.
#6 0x00007ffff4b537df in clone () from /usr/lib/libc.so.6

No symbol table info available.

Thread 3 (Thread 0x7fffe03c0700 (LWP 25656)):
#0 0x00007ffff4b4a48d in poll () from /usr/lib/libc.so.6

No symbol table info available.
#1 0x00007ffff293a066 in ?? () from /usr/lib/libglib-2.0.so.0

No symbol table info available.
#2 0x00007ffff293a17c in g_main_context_iteration () from /usr/lib/libglib-2.0.so.0

No symbol table info available.
#3 0x00007ffff293a1c1 in ?? () from /usr/lib/libglib-2.0.so.0

No symbol table info available.
#4 0x00007ffff2960345 in ?? () from /usr/lib/libglib-2.0.so.0

No symbol table info available.
#5 0x00007ffff58e1454 in start_thread () from /usr/lib/libpthread.so.0

No symbol table info available.
#6 0x00007ffff4b537df in clone () from /usr/lib/libc.so.6

No symbol table info available.

Thread 2 (Thread 0x7fffea153700 (LWP 25648)):
#0 0x00007ffff4b4a48d in poll () from /usr/lib/libc.so.6

No symbol table info available.
#1 0x00007ffff0f0b8e0 in ?? () from /usr/lib/libxcb.so.1

No symbol table info available.
#2 0x00007ffff0f0d679 in xcb_wait_for_event () from /usr/lib/libxcb.so.1

No symbol table info available.
#3 0x00007fffec982469 in ?? () from /usr/lib/libQt5XcbQpa.so.5

No symbol table info available.
#4 0x00007ffff5e17d78 in ?? () from /usr/lib/libQt5Core.so.5

No symbol table info available.
#5 0x00007ffff58e1454 in start_thread () from /usr/lib/libpthread.so.0

No symbol table info available.
#6 0x00007ffff4b537df in clone () from /usr/lib/libc.so.6

No symbol table info available.

Thread 1 (Thread 0x7ffff7f56cc0 (LWP 25630)):
#0 0x00007fffeca0296a in QFontEngineFT::loadGlyphSet(QTransform const&) () from /usr/lib/libQt5XcbQpa.so.5

No symbol table info available.
#1 0x00007fffeca029e9 in QFontEngineFT::loadGlyphFor(unsigned int, QFixed, QFontEngine::GlyphFormat, QTransform const&, bool) () from /usr/lib/libQt5XcbQpa.so.5

No symbol table info available.
#2 0x00007fffeca041f5 in QFontEngineFT::lockedAlphaMapForGlyph(unsigned int, QFixed, QFontEngine::GlyphFormat, QTransform const&, QPoint*) () from /usr/lib/libQt5XcbQpa.so.5

No symbol table info available.
#3 0x00007ffff6f36d20 in QRasterPaintEngine::drawCachedGlyphs(int, unsigned int const_, QFixedPoint const_, QFontEngine*) () from /usr/lib/libQt5Gui.so.5

No symbol table info available.
#4 0x00007ffff6f3ada7 in QRasterPaintEngine::drawTextItem(QPointF const&, QTextItem const&) () from /usr/lib/libQt5Gui.so.5

No symbol table info available.
#5 0x00007ffff6f573c6 in ?? () from /usr/lib/libQt5Gui.so.5

No symbol table info available.
#6 0x00007ffff6dd647e in QTextLine::draw(QPainter_, QPointF const&, QTextLayout::FormatRange const_) const () from /usr/lib/libQt5Gui.so.5

No symbol table info available.
#7 0x00007ffff6dd727d in QTextLayout::draw(QPainter*, QPointF const&, QVectorQTextLayout::FormatRange const&, QRectF const&) const () from /usr/lib/libQt5Gui.so.5

No symbol table info available.
#8 0x00007ffff764b27b in QWidgetLineControl::draw(QPainter*, QPoint const&, QRect const&, int) () from /usr/lib/libQt5Widgets.so.5

No symbol table info available.
#9 0x00007ffff75ba748 in QLineEdit::paintEvent(QPaintEvent*) () from /usr/lib/libQt5Widgets.so.5

No symbol table info available.
#10 0x00007ffff74c3f18 in QWidget::event(QEvent*) () from /usr/lib/libQt5Widgets.so.5

No symbol table info available.
#11 0x00007ffff75bf399 in QLineEdit::event(QEvent*) () from /usr/lib/libQt5Widgets.so.5

No symbol table info available.
#12 0x00007ffff747ce3c in QApplicationPrivate::notify_helper(QObject_, QEvent_) () from /usr/lib/libQt5Widgets.so.5

No symbol table info available.
#13 0x00007ffff74845b1 in QApplication::notify(QObject_, QEvent_) () from /usr/lib/libQt5Widgets.so.5

No symbol table info available.
#14 0x00007ffff5ff1c80 in QCoreApplication::notifyInternal2(QObject_, QEvent_) () from /usr/lib/libQt5Core.so.5

No symbol table info available.
#15 0x00007ffff74bccea in QWidgetPrivate::sendPaintEvent(QRegion const&) () from /usr/lib/libQt5Widgets.so.5

No symbol table info available.
#16 0x00007ffff74bd339 in QWidgetPrivate::drawWidget(QPaintDevice_, QRegion const&, QPoint const&, int, QPainter_, QWidgetBackingStore*) () from /usr/lib/libQt5Widgets.so.5

No symbol table info available.
#17 0x00007ffff74be02c in QWidgetPrivate::paintSiblingsRecursive(QPaintDevice_, QList<QObject_> const&, int, QRegion const&, QPoint const&, int, QPainter_, QWidgetBackingStore_) () from /usr/lib/libQt5Widgets.so.5

No symbol table info available.
#18 0x00007ffff74bcea4 in QWidgetPrivate::drawWidget(QPaintDevice_, QRegion const&, QPoint const&, int, QPainter_, QWidgetBackingStore*) () from /usr/lib/libQt5Widgets.so.5

No symbol table info available.
#19 0x00007ffff74be02c in QWidgetPrivate::paintSiblingsRecursive(QPaintDevice_, QList<QObject_> const&, int, QRegion const&, QPoint const&, int, QPainter_, QWidgetBackingStore_) () from /usr/lib/libQt5Widgets.so.5

No symbol table info available.
#20 0x00007ffff74bdf19 in QWidgetPrivate::paintSiblingsRecursive(QPaintDevice_, QList<QObject_> const&, int, QRegion const&, QPoint const&, int, QPainter_, QWidgetBackingStore_) () from /usr/lib/libQt5Widgets.so.5

No symbol table info available.
#21 0x00007ffff74bdf19 in QWidgetPrivate::paintSiblingsRecursive(QPaintDevice_, QList<QObject_> const&, int, QRegion const&, QPoint const&, int, QPainter_, QWidgetBackingStore_) () from /usr/lib/libQt5Widgets.so.5

No symbol table info available.
#22 0x00007ffff74bdf19 in QWidgetPrivate::paintSiblingsRecursive(QPaintDevice_, QList<QObject_> const&, int, QRegion const&, QPoint const&, int, QPainter_, QWidgetBackingStore_) () from /usr/lib/libQt5Widgets.so.5

No symbol table info available.
#23 0x00007ffff74bdf19 in QWidgetPrivate::paintSiblingsRecursive(QPaintDevice_, QList<QObject_> const&, int, QRegion const&, QPoint const&, int, QPainter_, QWidgetBackingStore_) () from /usr/lib/libQt5Widgets.so.5

No symbol table info available.
#24 0x00007ffff74bdf19 in QWidgetPrivate::paintSiblingsRecursive(QPaintDevice_, QList<QObject_> const&, int, QRegion const&, QPoint const&, int, QPainter_, QWidgetBackingStore_) () from /usr/lib/libQt5Widgets.so.5

No symbol table info available.
#25 0x00007ffff74bcea4 in QWidgetPrivate::drawWidget(QPaintDevice_, QRegion const&, QPoint const&, int, QPainter_, QWidgetBackingStore*) () from /usr/lib/libQt5Widgets.so.5

No symbol table info available.
#26 0x00007ffff74be02c in QWidgetPrivate::paintSiblingsRecursive(QPaintDevice_, QList<QObject_> const&, int, QRegion const&, QPoint const&, int, QPainter_, QWidgetBackingStore_) () from /usr/lib/libQt5Widgets.so.5

No symbol table info available.
#27 0x00007ffff74bcea4 in QWidgetPrivate::drawWidget(QPaintDevice_, QRegion const&, QPoint const&, int, QPainter_, QWidgetBackingStore*) () from /usr/lib/libQt5Widgets.so.5

No symbol table info available.
#28 0x00007ffff74be02c in QWidgetPrivate::paintSiblingsRecursive(QPaintDevice_, QList<QObject_> const&, int, QRegion const&, QPoint const&, int, QPainter_, QWidgetBackingStore_) () from /usr/lib/libQt5Widgets.so.5

No symbol table info available.
#29 0x00007ffff74bcea4 in QWidgetPrivate::drawWidget(QPaintDevice_, QRegion const&, QPoint const&, int, QPainter_, QWidgetBackingStore*) () from /usr/lib/libQt5Widgets.so.5

No symbol table info available.
#30 0x00007ffff74be02c in QWidgetPrivate::paintSiblingsRecursive(QPaintDevice_, QList<QObject_> const&, int, QRegion const&, QPoint const&, int, QPainter_, QWidgetBackingStore_) () from /usr/lib/libQt5Widgets.so.5

No symbol table info available.
#31 0x00007ffff74bcea4 in QWidgetPrivate::drawWidget(QPaintDevice_, QRegion const&, QPoint const&, int, QPainter_, QWidgetBackingStore*) () from /usr/lib/libQt5Widgets.so.5

No symbol table info available.
#32 0x00007ffff74be02c in QWidgetPrivate::paintSiblingsRecursive(QPaintDevice_, QList<QObject_> const&, int, QRegion const&, QPoint const&, int, QPainter_, QWidgetBackingStore_) () from /usr/lib/libQt5Widgets.so.5

No symbol table info available.
#33 0x00007ffff74bdf19 in QWidgetPrivate::paintSiblingsRecursive(QPaintDevice_, QList<QObject_> const&, int, QRegion const&, QPoint const&, int, QPainter_, QWidgetBackingStore_) () from /usr/lib/libQt5Widgets.so.5

No symbol table info available.
#34 0x00007ffff74bdf19 in QWidgetPrivate::paintSiblingsRecursive(QPaintDevice_, QList<QObject_> const&, int, QRegion const&, QPoint const&, int, QPainter_, QWidgetBackingStore_) () from /usr/lib/libQt5Widgets.so.5

No symbol table info available.
#35 0x00007ffff74bdf19 in QWidgetPrivate::paintSiblingsRecursive(QPaintDevice_, QList<QObject_> const&, int, QRegion const&, QPoint const&, int, QPainter_, QWidgetBackingStore_) () from /usr/lib/libQt5Widgets.so.5

No symbol table info available.
#36 0x00007ffff74bcea4 in QWidgetPrivate::drawWidget(QPaintDevice_, QRegion const&, QPoint const&, int, QPainter_, QWidgetBackingStore*) () from /usr/lib/libQt5Widgets.so.5

No symbol table info available.
#37 0x00007ffff748d0fa in ?? () from /usr/lib/libQt5Widgets.so.5

No symbol table info available.
#38 0x00007ffff748d2b7 in ?? () from /usr/lib/libQt5Widgets.so.5

No symbol table info available.
#39 0x00007ffff74ac11f in QWidgetPrivate::syncBackingStore() () from /usr/lib/libQt5Widgets.so.5

No symbol table info available.
#40 0x00007ffff74c3fe8 in QWidget::event(QEvent*) () from /usr/lib/libQt5Widgets.so.5

No symbol table info available.
#41 0x00007ffff75c250b in QMainWindow::event(QEvent*) () from /usr/lib/libQt5Widgets.so.5

No symbol table info available.
#42 0x00007ffff747ce3c in QApplicationPrivate::notify_helper(QObject_, QEvent_) () from /usr/lib/libQt5Widgets.so.5

No symbol table info available.
#43 0x00007ffff74845b1 in QApplication::notify(QObject_, QEvent_) () from /usr/lib/libQt5Widgets.so.5

No symbol table info available.
#44 0x00007ffff5ff1c80 in QCoreApplication::notifyInternal2(QObject_, QEvent_) () from /usr/lib/libQt5Core.so.5

No symbol table info available.
#45 0x00007ffff5ff43fd in QCoreApplicationPrivate::sendPostedEvents(QObject_, int, QThreadData_) () from /usr/lib/libQt5Core.so.5

No symbol table info available.
#46 0x00007ffff6046173 in ?? () from /usr/lib/libQt5Core.so.5

No symbol table info available.
#47 0x00007ffff2939e67 in g_main_context_dispatch () from /usr/lib/libglib-2.0.so.0

No symbol table info available.
#48 0x00007ffff293a0d0 in ?? () from /usr/lib/libglib-2.0.so.0

No symbol table info available.
#49 0x00007ffff293a17c in g_main_context_iteration () from /usr/lib/libglib-2.0.so.0

No symbol table info available.
#50 0x00007ffff604657f in QEventDispatcherGlib::processEvents(QFlagsQEventLoop::ProcessEventsFlag) () from /usr/lib/libQt5Core.so.5

No symbol table info available.
#51 0x00007ffff5ff00da in QEventLoop::exec(QFlagsQEventLoop::ProcessEventsFlag) () from /usr/lib/libQt5Core.so.5

No symbol table info available.
#52 0x00007ffff5ff85cc in QCoreApplication::exec() () from /usr/lib/libQt5Core.so.5

No symbol table info available.
#53 0x00000000004abda4 in main (argc=1, argv=0x7fffffffe408) at ../YUView_development/source/yuviewapp.cpp:84

    a = {<QApplication> = {<No data fields>}, static staticMetaObject = {d = {superdata = 0x7ffff7b531e0 <QApplication::staticMetaObject>, stringdata = 0x4f4ec0 <qt_meta_stringdata_YUViewApp>, data = 0x4f4f00 <qt_meta_data_YUViewApp>, static_metacall = 0x4b2b1c <YUViewApp::qt_static_metacall(QObject*, QMetaObject::Call, int, void**)>, relatedMetaObjects = 0x0, extradata = 0x0}}, w = 0x877a50}

basically the debugger shows the line return a.exec();
everything else is already inside the QT libraries

Two different window modes: Single Window and Multiple Windows

We should have two different window configurations:

  • Single window with decibel utility widgets and the playback widget in the middle
  • Multiple windows (one for the playlist/statistics, one for utility widgets and one for the playback related widgets)

Playlist import crash

  • Save overlay item in a playlist
  • Import the playlist
  • Select the overlay item --> crash

Coding style

Do we have a common Coding style (how many spaces/tabs where, how to blache curly brackets...)

Reading statistics does not work properly

Certain blocks are shown to contain no information at all even though this information is available in the file. Probably a problem with jumping to the wrong file position and omitting the relevant information.

Synchronous Playout for Side By Side View

When two videos are selected and played out in the side-by-side mode, they are not perfectly in sync. This is especially noticable at very low frame rates and when sequences are loaded into the cache for the first time.

Changing to synchronous playback might be hard to achieve since that requires more low level access to the rendering/drawing/updating queue. It might not even possible at all. A quick fix would be to add another "synchronous playback mode", where two frames are just combined into a single pixmap which is displayed in a single widget.

Difference not working properly

  • Difference is shown for the first frame only, no playout though.
  • YUView crashes when difference object gets deleted.
  • For 444 sequences, the per pixel difference shown when zooming seems to be displayed / casted to an unsigned value

Todo list before the development branch can be moved to the master branch

I thought we should move towards getting the development branch to a state that we can move it to the main branch. Here we can collect what is still to be done and when it is, what should be tested before moving the branch. I think this also means that for now we should not try to add more features. Please feel free to add to this list.

  • Clean up caching threads and how this is handeled
  • Implement a caching strategy for the playback case

When these things are done, perform thorough testing:

  • playback/seeking
  • loading of YUV/RGB sequences
  • containers: overlays/differences
  • playlists saving/loading
  • split view
  • statistics
  • HEVC streams
  • keyboad shortcuts

Development: Cache stops caching

  • Open one (or more) sequence(s), wait until all have completed caching
  • Open another sequence, the new sequence does not get cached anymore

Add FFmpeg support for MAC

Currently, FFmpeg only works on windows and linux. Basically we just need to know how to get dynamically linked libav[util/codec/format] and libswresample libraries as .dylib. Where would one get these for MAC and how are they named?

YUView cache: deleting frames

frames that have already been played out need to be deleted to free up the cache when repeat mode off or repeat mode all is selected

Licensing Issues

We are using programs (Qt and libde265) which are both under the LGPL. The Qt licencing FAQ states:

What are my obligations when using Qt under the LGPL?
If you are using Qt under the LGPL, there are a couple of obligations you will need to fulfill:

  1. You will need to deliver the complete source code of Qt (including all modifications you did or applied) to your users/customers. Alternatively you need to provide a written offer with instructions on how to get the source code. Please also note that this has to be under your control, so a link to the source code provided by the Qt Project or Qt Company is not sufficient.
  2. The LGPL allows you to keep the source code of your application private as long as it is “work that uses” the library. Dynamic linking is usually recommended here.
  3. The user of your application has to be able to re-link your application against a different or modified version of the Qt library. With LGPLv3 it is also explicitly stated that the user needs to be able to run the re-linked binary on it’s intended target device. It is your obligation to provide the user with all necessary tools to enable this process. For embedded devices, this includes making the full toolchain used to compile the library available to users. For parts licensed under LGPLv3 you are obliged to provide full instructions on how to install the modified library on the target device (this is not clearly stated with LGPLv2.1, although running the application against the modified version of the library clearly is the stated intention of the license).
  4. The user of an application or device using LGPL licensed software has to be notified of their rights by providing a copy of the LGPL license to the end user and displaying a prominent notice about your usage of LGPL licensed software.

(1) is definitely missing. (2) is no concern to us. (3) is also fulfilled since all our code is public and the user can just replace the dynamically linked libraries. (4) is also missing.

For all the other DLLs which are in the installer we will also have to find out the licence and if we are allowed to ship them in an installer. If they are from other LGPL projects also for these we will have to fulfill the above points 1-4.

development branch: Performance analysis

I dit a test with the conversion performance. On my maschine, the following times were measured:
Resolution 1920x1080 YUV 420
Loading: 1ms
420->444: 1 ms
YUVMath: 2 ms (if activated)
444->RGB: 4 ms
conversion to pixmap: 4ms
drawing the pixmap: 1-4 ms

Copy playlist item

Would be nice if it would be possible to just copy playlist items. So far if I need anything double, for example to overlay different statistics over the same video I have to open it twice.

Zooming, panning etc. for secondary display widget

There are some cases in zooming and panning, which are currently not handled correctly. Especially the behavior when the action is performed in the secondary display widget.
Probably the cleanest approach to compute the corresponding action w.r.t. the primary widget and succeed as if the action was performed there...

Fullscreen to secondary display

There should be a second fullscreen mode, which sends the playback widget to the secondary or alternate display. This would be interesting for presentations including a presenter monitor. Shortcut would be something like Ctrl+Alt+F :-)

Class member variable prefixes have a place.

Currently, we don't want to use class member prefixes for variables. It is suggested that "modern IDEs" remove the need for that.

Yet the reason for them usually isn't to do with IDEs. The major and primary reason is that it makes certain method names impossible to use:

private:
  int foo;
public:
  int foo() const; // won't compile
  int getFoo() const; // will compile, but forces a `get` prefix on a public API

When using the get prefix on getters, we're making the prefix a part of the API, yet the only need for the prefix is an implementation detail. In Qt, as in the standard library, getters have no prefix. We say pixmap.size() or vector.size(), not pixmap.getSize().

It's better to have e.g. a private 'm_' member prefix to allow sane member names than to force convoluted public names in the API or member names to avoid clashes. Thus, I suggest we should perhaps prefer this:

private:
  int m_foo; // private m_prefix
public:
  int foo() const { return m_foo; }

This issue is a call for discussion only.

object files still consuming storage

I observed that there are still coming some quite large object files with cloning.
Packaging for Launchpad will be difficult with those object files, as the whole .git-dir needs to be included in the package for right versioning.

YUView statistics: information missing

  • Load large statistic file
  • Select some statistic item that appreas in poc > 0, e.g. motion vector
  • Skip some frames ahead while file is still parsing
    --> Nothing will be shown for the selected item

Difference Item

  • crash for YUV 420 10bit LE
  • not working properly for YUV 422 8bit

Add Playlist support for Difference Objects

Right now Difference Objects are not exported into Playlists.
Note that also the existence of StatisticsObjects needs to be checked:
A full tree (worst case) would look like that
-DifferenceObject
--|--StatsObject1
--|--FrameObject1
----|--StatsObject2
--|--FrameObject2
----|--StatsObject3

Buggy splitter behavior once again

When viewing videos in side-by-side mode, toggling between full- / normal-screen and moving the splitter around, the right video jumps around.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.