View Issue Details
ID | Project | Category | View Status | Date Submitted | Last Update |
---|---|---|---|---|---|
0000331 | Cinelerra-GG | [All Projects] Feature | public | 2019-10-25 15:42 | 2019-11-13 20:59 |
Reporter | Andrew-R | Assigned To | goodguy | ||
Priority | normal | Severity | minor | Reproducibility | always |
Status | assigned | Resolution | open | ||
Product Version | 2019-09 | ||||
Target Version | Fixed in Version | ||||
Summary | 0000331: Reverse playback (fast rewind backward) is slow even for I-only files like DV | ||||
Description | Try to load simple-to-decode MJPEG or DV (PAL/NTSC, not HD DV) into CinGG. Playing and fast playing forward works ok. Backward fast rewind uses surprisingly big amount of CPU. If I have 4x3.9Ghz it all smooth, but 4x1.4Ghz actually looses a lot of frames. Note: cache size in preferences left to its default - 16Mb. | ||||
Steps To Reproduce | See above | ||||
Additional Information | Not sure if this 'bug' can be fixed in current Cinelerra architecture ..... I looked at cache files, comment there says // CICache for quickly reading data that is hard to decompress yet used // over and over. https://git.cinelerra-gg.org/git/?p=goodguy/cinelerra.git;a=blob;f=cinelerra-5.1/cinelerra/cache.h;h=fde997a50289c41ee76f725681d6d2ad12eddc94;hb=HEAD But since those lines were written CinGG moved to ffmpeg as its main engine ...... | ||||
Tags | slowness | ||||
Found interesting email in old archives: https://lists.skolelinux.org/pipermail/cinelerra/2003-August/000409.html [CinCVS] trackcanvas speedup from Andraz Tori --quote-- The cache is only enabled for the track canvas, so the results are seen when video track has drawing enabled and you work on it left and right. Actually patch could be enabled everywhere in cinelerra (just change the initialisation of cache_enabled in file.C to 1). This way it can also speed up the rendering when you are working on some part of the video and you watch it again and again and again... This cache is really basic, it just uses a circular buffer. Also it takes quite some memory, so it is not recommended to use it on memory starving machines - or at least decrease the FRAMES_CACHE_SIZE number in file.h. It is important to know that full sized images are cached and not thumbnails... --- and next email from him again: https://lists.skolelinux.org/pipermail/cinelerra/2003-August/000411.html [CinCVS] cinelerra - speedup due to pixmap cache --- By default it is disabled for all resources except for resource pixmaps - which are also used in trackcanvas. I have written additional code in resourcepixmap.C in order to cache lower resolution and already converted RGB images instead of higher resolution ones (due to smaller memory consumption). This greatly improves user experience when working on smaller range of footage for longer time. Currently for trackcanvas, cache size is 100 pixmaps per video resource. At 80x64 this means cca. 2Mbytes of data per track. With this cache engine, also rendering can be much more responsive when working within the same time range for longer time. For a test ride: just change cache_enabled = 0 to 1 in line 26 of file.C. This patch is made against 1.1.6. For production use, graphical interface would be needed, so it would be possible to set trackcanvas and rendering pipeline cachesize parameters separately. Maybe cache size should also be set absolute (approximately in Kbytes) so it will be possible to control it more predictably on slow machines. --- I wonder if it is enabled in current CinGG or not .... May be separate on-disk cache can be used, like GIMP for example allows to create some app-specific swap file? |
|
Actually, codec_tag was for AVI only, now with more codecs and not only in avi container ... I still wonder what i broke :}
I-only_files_reverse_play_speedup.diff (1,122 bytes)
diff --git a/cinelerra-5.1/cinelerra/ffmpeg.C b/cinelerra-5.1/cinelerra/ffmpeg.C index 70098ca..32867de 100644 --- a/cinelerra-5.1/cinelerra/ffmpeg.C +++ b/cinelerra-5.1/cinelerra/ffmpeg.C @@ -1192,10 +1192,19 @@ int FFVideoStream::video_seek(int64_t pos) if( pos == curr_pos-1 && !seeked ) return 0; // if close enough, just read up to current int gop = avctx->gop_size; - if( gop < 4 ) gop = 4; + if( gop < 4 && gop != 0) gop = 4; if( gop > 64 ) gop = 64; + if( gop == 0 ) gop = 1; + //fprintf(stderr, "GOP: %i \n", gop); int read_limit = curr_pos + 3*gop; if( pos >= curr_pos && pos <= read_limit ) return 0; + // fixup for I-only codecs, not sure why it needed with ffmpeg 4.2 + if (st->codecpar->codec_id == AV_CODEC_ID_DVVIDEO || st->codecpar->codec_id == AV_CODEC_ID_MJPEG || + st->codecpar->codec_id == AV_CODEC_ID_FFVHUFF || st->codecpar->codec_id == AV_CODEC_ID_DNXHD || + st->codecpar->codec_id ==AV_CODEC_ID_HUFFYUV ) { + gop = 1; + if( seek(pos - 2*gop, frame_rate) < 0 ) return -1; + } // guarentee preload more than 2*gop frames if( seek(pos - 3*gop, frame_rate) < 0 ) return -1; return 1; |
|
Patch
dv_reverse_play_speedup.diff (848 bytes)
diff --git a/cinelerra-5.1/cinelerra/ffmpeg.C b/cinelerra-5.1/cinelerra/ffmpeg.C index 70098ca..36342e5 100644 --- a/cinelerra-5.1/cinelerra/ffmpeg.C +++ b/cinelerra-5.1/cinelerra/ffmpeg.C @@ -1192,10 +1192,16 @@ int FFVideoStream::video_seek(int64_t pos) if( pos == curr_pos-1 && !seeked ) return 0; // if close enough, just read up to current int gop = avctx->gop_size; - if( gop < 4 ) gop = 4; + if( gop < 4 && gop != 0) gop = 4; if( gop > 64 ) gop = 64; + if( gop == 0 ) gop = 1; + //fprintf(stderr, "GOP: %i \n", gop); int read_limit = curr_pos + 3*gop; if( pos >= curr_pos && pos <= read_limit ) return 0; + if (st->codecpar->codec_tag == 1685288548) { + gop = 1; + if( seek(pos - 2*gop, frame_rate) < 0 ) return -1; + } // guarentee preload more than 2*gop frames if( seek(pos - 3*gop, frame_rate) < 0 ) return -1; return 1; |
|
so, something like this improves DV _reverse_ playback (one track), without impacting forward x2 speed too much ... int FFVideoStream::video_seek(int64_t pos) { if( decode_activate() <= 0 ) return -1; if( !st->codecpar ) return -1; if( pos == curr_pos-1 && !seeked ) return 0; // if close enough, just read up to current int gop = avctx->gop_size; if( gop < 4 && gop != 0) gop = 4; if( gop > 64 ) gop = 64; if( gop == 0 ) gop = 1; //fprintf(stderr, "GOP: %i \n", gop); int read_limit = curr_pos + 3*gop; if( pos >= curr_pos && pos <= read_limit ) return 0; if (st->codecpar->codec_tag == 1685288548) { gop = 1; if( seek(pos - 2*gop, frame_rate) < 0 ) return -1; } // guarentee preload more than 2*gop frames if( seek(pos - 3*gop, frame_rate) < 0 ) return -1; return 1; } codec_tag == 1685288548 - DV. original file was making just 6-7 fps on reverse playback - this - up to 16. |
|
so, I modified function int FFVideoStream::video_seek(int64_t pos) { if( decode_activate() <= 0 ) return -1; if( !st->codecpar ) return -1; if( pos == curr_pos-1 && !seeked ) return 0; // if close enough, just read up to current int gop = avctx->gop_size; if( gop < 4 && gop != 0) gop = 4; if( gop > 64 ) gop = 64; if( gop == 0 ) gop = 1; fprintf(stderr, "GOP: %i \n", gop); int read_limit = curr_pos + 3*gop; if (gop == 1) read_limit = curr_pos + 1*gop; if( pos >= curr_pos && pos <= read_limit ) return 0; // guarentee preload more than 2*gop frames if (gop == 1) { if( seek(pos - 1*gop, frame_rate) < 0 ) return -1; } if( seek(pos - 3*gop, frame_rate) < 0 ) return -1; return 1; } and it printed: root@slax:/dev/shm/tmp/cinelerra-goodguy-20191025/cinelerra-5.1/bin# ./cin Cinelerra Infinity - built: Oct 25 2019 10:52:55 git://git.cinelerra-gg.org/goodguy/cinelerra.git (c) 2006-2019 Heroine Virtual Ltd. by Adam Williams (c) 2007-2019 cin5 derivative by W.P. Morrow aka goodguy Cinelerra is free software, covered by the GNU General Public License, and you are welcome to change it and/or distribute copies of it under certain conditions. There is absolutely no warranty for Cinelerra. FFMPEG::open_decoder: some stream times estimated: /dev/shm/dv.avi FFMPEG::open_decoder: some stream times estimated: /dev/shm/dv.avi FFMPEG::open_decoder: some stream times estimated: /dev/shm/dv.avi FFMPEG::open_decoder: some stream times estimated: /dev/shm/dv.avi GOP: 12 FFMPEG::open_decoder: some stream times estimated: /dev/shm/dv.avi GOP: 12 GOP: 12 seeked pos = 304, 0 FFMPEG::open_decoder: some stream times estimated: /dev/shm/dv.avi GOP: 12 GOP: 12 seeked pos = 645, 0 GOP: 12 seeked pos = 987, 0 GOP: 12 seeked pos = 1328, 0 GOP: 12 seeked pos = 0, 0 FFMPEG::open_decoder: some stream times estimated: /dev/shm/dv.avi ALSA lib confmisc.c:1281:(snd_func_refer) Unable to find definition 'defaults.pcm.dmix.channels' ALSA lib conf.c:4568:(_snd_config_evaluate) function snd_func_refer returned error: Нет такого файла или каталога ALSA lib conf.c:5036:(snd_config_expand) Args evaluate error: Нет такого файла или каталога ALSA lib pcm.c:2564:(snd_pcm_open_noupdate) Unknown PCM dmix:SB AudioALSA::open_output default: Нет такого файла или каталога GOP: 12 seeked pos = 1633, 0 GOP: 12 seeked pos = 1630, 0 GOP: 12 seeked pos = 1625, 0 GOP: 12 seeked pos = 1621, 0 GOP: 12 seeked pos = 1616, 0 GOP: 12 seeked pos = 1612, 0 GOP: 12 seeked pos = 1607, 0 GOP: 12 seeked pos = 1603, 0 GOP: 12 seeked pos = 1598, 0 GOP: 12 seeked pos = 1595, 0 GOP: 12 seeked pos = 1590, 0 GOP: 12 seeked pos = 1586, 0 GOP: 12 seeked pos = 1581, 0 GOP: 12 seeked pos = 1577, 0 GOP: 12 seeked pos = 1572, 0 GOP: 12 seeked pos = 1567, 0 GOP: 12 seeked pos = 1563, 0 GOP: 12 seeked pos = 1559, 0 GOP: 12 seeked pos = 1555, 0 GOP: 12 seeked pos = 1550, 0 GOP: 12 seeked pos = 1545, 0 GOP: 12 seeked pos = 1541, 0 GOP: 12 seeked pos = 1537, 0 GOP: 12 seeked pos = 1532, 0 GOP: 12 seeked pos = 1528, 0 Session time: 0:00:27 Cpu time: user: 0:00:15.236 sys: 0:00:01.376 GOP = 12 for DV?!!! Ok, I'll try to special-case it for specific codec ..... |
|
Hm .... ./cin Cinelerra Infinity - built: Oct 25 2019 10:52:55 git://git.cinelerra-gg.org/goodguy/cinelerra.git (c) 2006-2019 Heroine Virtual Ltd. by Adam Williams (c) 2007-2019 cin5 derivative by W.P. Morrow aka goodguy Cinelerra is free software, covered by the GNU General Public License, and you are welcome to change it and/or distribute copies of it under certain conditions. There is absolutely no warranty for Cinelerra. FFMPEG::open_decoder: some stream times estimated: /dev/shm/dv.avi FFMPEG::open_decoder: some stream times estimated: /dev/shm/dv.avi FFMPEG::open_decoder: some stream times estimated: /dev/shm/dv.avi FFMPEG::open_decoder: some stream times estimated: /dev/shm/dv.avi FFMPEG::open_decoder: some stream times estimated: /dev/shm/dv.avi seeked pos = 0, 0 seeked pos = 328, 0 seeked pos = 669, 0 FFMPEG::open_decoder: some stream times estimated: /dev/shm/dv.avi seeked pos = 1011, 0 seeked pos = 1352, 0 seeked pos = 0, 0 FFMPEG::open_decoder: some stream times estimated: /dev/shm/dv.avi ALSA lib confmisc.c:1281:(snd_func_refer) Unable to find definition 'defaults.pcm.dmix.channels' ALSA lib conf.c:4568:(_snd_config_evaluate) function snd_func_refer returned error: Нет такого файла или каталога ALSA lib conf.c:5036:(snd_config_expand) Args evaluate error: Нет такого файла или каталога ALSA lib pcm.c:2564:(snd_pcm_open_noupdate) Unknown PCM dmix:SB AudioALSA::open_output default: Нет такого файла или каталога seeked pos = 1657, 0 seeked pos = 1655, 0 seeked pos = 1651, 0 seeked pos = 1647, 0 seeked pos = 1642, 0 seeked pos = 1638, 0 seeked pos = 1634, 0 seeked pos = 1629, 0 seeked pos = 1625, 0 seeked pos = 1621, 0 seeked pos = 1616, 0 seeked pos = 1611, 0 seeked pos = 1606, 0 seeked pos = 1602, 0 seeked pos = 1599, 0 seeked pos = 1595, 0 seeked pos = 1590, 0 seeked pos = 1586, 0 seeked pos = 1581, 0 seeked pos = 1576, 0 seeked pos = 1572, 0 seeked pos = 1567, 0 seeked pos = 1563, 0 seeked pos = 1557, 0 seeked pos = 1554, 0 seeked pos = 1550, 0 seeked pos = 1546, 0 and this after i set // guarentee preload more than 2*gop frames if( seek(pos - 1*gop, frame_rate) < 0 ) return -1; (it was 3*gop). Now, backward playback is faster (up to 14 fps) but i wonder what I broke :} |
|
So, I uncommented seek_position printf, and got this (for normal and reverse playback): ./cin Cinelerra Infinity - built: Oct 25 2019 10:52:55 git://git.cinelerra-gg.org/goodguy/cinelerra.git (c) 2006-2019 Heroine Virtual Ltd. by Adam Williams (c) 2007-2019 cin5 derivative by W.P. Morrow aka goodguy Cinelerra is free software, covered by the GNU General Public License, and you are welcome to change it and/or distribute copies of it under certain conditions. There is absolutely no warranty for Cinelerra. FFMPEG::open_decoder: some stream times estimated: /dev/shm/dv.avi FFMPEG::open_decoder: some stream times estimated: /dev/shm/dv.avi FFMPEG::open_decoder: some stream times estimated: /dev/shm/dv.avi FFMPEG::open_decoder: some stream times estimated: /dev/shm/dv.avi FFMPEG::open_decoder: some stream times estimated: /dev/shm/dv.avi seeked pos = 1442, 0 seeked pos = 0, 0 seeked pos = 304, 0 FFMPEG::open_decoder: some stream times estimated: /dev/shm/dv.avi seeked pos = 645, 0 seeked pos = 987, 0 seeked pos = 1328, 0 seeked pos = 0, 0 FFMPEG::open_decoder: some stream times estimated: /dev/shm/dv.avi ALSA lib confmisc.c:1281:(snd_func_refer) Unable to find definition 'defaults.pcm.dmix.channels' ALSA lib conf.c:4568:(_snd_config_evaluate) function snd_func_refer returned error: Нет такого файла или каталога ALSA lib conf.c:5036:(snd_config_expand) Args evaluate error: Нет такого файла или каталога ALSA lib pcm.c:2564:(snd_pcm_open_noupdate) Unknown PCM dmix:SB AudioALSA::open_output default: Нет такого файла или каталога ALSA lib confmisc.c:1281:(snd_func_refer) Unable to find definition 'defaults.pcm.dmix.channels' ALSA lib conf.c:4568:(_snd_config_evaluate) function snd_func_refer returned error: Нет такого файла или каталога ALSA lib conf.c:5036:(snd_config_expand) Args evaluate error: Нет такого файла или каталога ALSA lib pcm.c:2564:(snd_pcm_open_noupdate) Unknown PCM dmix:SB AudioALSA::open_output default: Нет такого файла или каталога seeked pos = 1632, 0 seeked pos = 1631, 0 seeked pos = 1627, 0 seeked pos = 1623, 0 seeked pos = 1619, 0 seeked pos = 1615, 0 seeked pos = 1611, 0 seeked pos = 1607, 0 seeked pos = 1602, 0 seeked pos = 1598, 0 seeked pos = 1595, 0 seeked pos = 1590, 0 seeked pos = 1586, 0 seeked pos = 1583, 0 seeked pos = 1579, 0 seeked pos = 1575, 0 seeked pos = 1571, 0 seeked pos = 1568, 0 seeked pos = 1564, 0 seeked pos = 1560, 0 seeked pos = 1556, 0 seeked pos = 1552, 0 seeked pos = 1548, 0 seeked pos = 1544, 0 seeked pos = 1540, 0 seeked pos = 1534, 0 seeked pos = 1531, 0 seeked pos = 1527, 0 seeked pos = 1523, 0 seeked pos = 1517, 0 seeked pos = 1513, 0 seeked pos = 1509, 0 seeked pos = 1505, 0 [a lot more of this until file ends] so, CinGG seeks few frames backward (4-6) and then decode them all, and then display? But where is cache then? |
|
no, modifying FileFFMPEG::get_memory_usage() to return something (like width * height * bytes per pixel * num_cpu) not improved reverse playback/fast reverse playback..... | |
Hm ... looking at https://git.cinelerra-gg.org/git/?p=goodguy/cinelerra.git;a=blob;f=cinelerra-5.1/cinelerra/fileffmpeg.C;h=bfd7ed69b839a38568918c41c7852d65c607a171;hb=HEAD int64_t FileFFMPEG::get_memory_usage() { return 0; } ==== Also, i tried to set gop_size to 1 in case it was 0 (in ffmpeg.C), but this resulted in no change, as far as fast reverse playback is concerned .... int FFVideoStream::video_seek(int64_t pos) { if( decode_activate() <= 0 ) return -1; if( !st->codecpar ) return -1; if( pos == curr_pos-1 && !seeked ) return 0; // if close enough, just read up to current int gop = avctx->gop_size; if( gop < 4 && gop != 0) gop = 4; if( gop > 64 ) gop = 64; if( gop == 0 ) gop = 1; int read_limit = curr_pos + 3*gop; if( pos >= curr_pos && pos <= read_limit ) return 0; // guarentee preload more than 2*gop frames if( seek(pos - 3*gop, frame_rate) < 0 ) return -1; return 1; } because I was thinking gop_size will be 0 for intra-only formats: https://www.ffmpeg.org/doxygen/4.0/structAVCodecContext.html#a9b6b3f1fcbdcc2ad9f4dbb4370496e38 int AVCodecContext::gop_size the number of pictures in a group of pictures, or 0 for intra_only encoding: Set by user. decoding: unused |
|
I tried to run prof2, it failed for me not finding symbol 'main', I tried oprofile, it sorta worked but without symbol names, so I looked up Internet and found this: https://sourceforge.net/p/oprofile/mailman/message/24400007/ For a binary 'foo' that initially contains debug info . . . $ objcopy --only-keep-debug foo foo.debuginfo $ objcopy --strip-debug foo $ objcopy --add-gnu-debuglink=foo.debuginfo foo Note "objcopy --add-gnu-debuglink=" step! I think CinGG's makefile not uses this ..... Anyway, after manually performing this step .... CPU: AMD64 family15h, speed 3800 MHz (estimated) Counted CPU_CLK_UNHALTED events (CPU Clocks not Halted) with a unit mask of 0x00 (No unit mask) count 100000 Samples on CPU 0 Samples on CPU 1 Samples on CPU 2 Samples on CPU 3 samples % samples % samples % samples % image name app name symbol name 124008 46.5391 129245 48.6868 132005 48.3202 121272 43.9199 cin cin dv_decode_video_segment 70917 26.6145 75109 28.2937 75469 27.6253 69599 25.2060 cin cin ff_simple_idct_put_sse2 26211 9.8367 26709 10.0613 28037 10.2629 27192 9.8479 cin cin dv_decode_ac 2930 1.0996 2459 0.9263 2691 0.9850 1966 0.7120 kallsyms cin copy_user_generic_string 2850 1.0696 19 0.0072 12 0.0044 22 0.0080 kallsyms cin ioread32 1666 0.6252 1207 0.4547 893 0.3269 3391 1.2281 libz.so.1.2.11 cin /lib/libz.so.1.2.11 1634 0.6132 3229 1.2164 2271 0.8313 117 0.0424 libfontconfig.so.1.12.0 cin /usr/lib/libfontconfig.so.1.12.0 1532 0.5749 1478 0.5568 1321 0.4835 1471 0.5327 libc-2.23.so cin memcpy 1469 0.5513 91 0.0343 82 0.0300 135 0.0489 nouveau cin /nouveau 1158 0.4346 852 0.3209 1174 0.4297 906 0.3281 cin cin yuv420_bgr32_mmx 896 0.3363 469 0.1767 483 0.1768 443 0.1604 kallsyms cin atomic_try_cmpxchg 874 0.3280 839 0.3161 545 0.1995 610 0.2209 libGL.so.1.2.0 cin /usr/X11R7/lib/libGL.so.1.2.0 865 0.3246 641 0.2415 714 0.2614 589 0.2133 kallsyms cin read_hpet 833 0.3126 0 0 0 0 0 0 cin cin YUV::init(double, double, int) 714 0.2680 795 0.2995 627 0.2295 635 0.2300 nouveau_dri.so cin /usr/X11R7/lib/dri/nouveau_dri.so 709 0.2661 628 0.2366 689 0.2522 553 0.2003 kallsyms cin entry_INT80_compat 655 0.2458 671 0.2528 643 0.2354 436 0.1579 libX11.so.6.3.0 cin /usr/X11R7/lib/libX11.so.6.3.0 653 0.2451 955 0.3598 828 0.3031 422 0.1528 cin cin BC_Xfer::xfer_rgba8888_to_bgr8888(unsigned int, unsigned int) 504 0.1891 230 0.0866 210 0.0769 183 0.0663 kallsyms cin __x86_indirect_thunk_rax 495 0.1858 448 0.1688 449 0.1644 351 0.1271 libpthread-2.23.so cin pthread_mutex_lock 459 0.1723 378 0.1424 434 0.1589 477 0.1728 libc-2.23.so cin _int_malloc 436 0.1636 394 0.1484 499 0.1827 394 0.1427 libc-2.23.so cin _int_free 435 0.1633 266 0.1002 223 0.0816 987 0.3575 libpng16.so.16.35.0 cin /usr/lib/libpng16.so.16.35.0 429 0.1610 371 0.1398 399 0.1461 258 0.0934 libpthread-2.23.so cin pthread_mutex_unlock 400 0.1501 251 0.0946 314 0.1149 232 0.0840 kallsyms cin wrmsrl 393 0.1475 463 0.1744 268 0.0981 375 0.1358 libexpat.so.1.6.4 cin /usr/lib/libexpat.so.1.6.4 390 0.1464 476 0.1793 316 0.1157 499 0.1807 kallsyms cin find_next_iomem_res 366 0.1374 206 0.0776 231 0.0846 218 0.0790 kallsyms cin check_preemption_disabled 364 0.1366 0 0 14 0.0051 0 0 kallsyms cin irq_entries_start 351 0.1317 415 0.1563 288 0.1054 496 0.1796 kallsyms cin dma_direct_alloc_pages 344 0.1291 0 0 0 0 0 0 kallsyms cin pci_conf1_write 332 0.1246 271 0.1021 1390 0.5088 473 0.1713 libc-2.23.so cin strcmp 257 0.0964 309 0.1164 321 0.1175 201 0.0728 libxcb.so.1.1.0 cin /usr/X11R7/lib/libxcb.so.1.1.0 249 0.0934 105 0.0396 114 0.0417 102 0.0369 kallsyms cin _raw_spin_unlock_irqrestore 244 0.0916 209 0.0787 243 0.0889 219 0.0793 libc-2.23.so cin malloc_consolidate 230 0.0863 69 0.0260 56 0.0205 66 0.0239 kallsyms cin _raw_spin_lock_irqsave 205 0.0769 213 0.0802 163 0.0597 332 0.1202 kallsyms cin page_fault 202 0.0758 136 0.0512 146 0.0534 114 0.0413 kallsyms cin native_read_msr 195 0.0732 125 0.0471 148 0.0542 124 0.0449 kallsyms cin swapgs_restore_regs_and_return_to_usermode 192 0.0721 182 0.0686 181 0.0663 163 0.0590 cin cin avcodec_default_execute 179 0.0672 117 0.0441 164 0.0600 101 0.0366 cin cin av_opt_find2.constprop.13 178 0.0668 194 0.0731 130 0.0476 207 0.0750 ttm cin /ttm 176 0.0661 93 0.0350 88 0.0322 95 0.0344 kallsyms cin preempt_count_sub 175 0.0657 93 0.0350 120 0.0439 82 0.0297 kallsyms cin select_task_rq_fair 164 0.0615 110 0.0414 142 0.0520 109 0.0395 kallsyms cin compound_head 164 0.0615 110 0.0414 133 0.0487 110 0.0398 kallsyms cin sched_clock 159 0.0597 48 0.0181 18 0.0066 21 0.0076 cin cin BC_Xfer::xfer_rgb888_to_bgr8888(unsigned int, unsigned int) 157 0.0589 222 0.0836 158 0.0578 1035 0.3748 kallsyms cin clear_page_rep this is output of opreport -p /dev/shm/tmp/cinelerra-goodguy-20191025/cinelerra-5.1/cinelerra/i686/ -l | less after operf -c /dev/shm/tmp/cinelerra-goodguy-20191025/cinelerra-5.1/bin/cin operf: Profiler started Cinelerra Infinity - built: Oct 25 2019 10:52:55 git://git.cinelerra-gg.org/goodguy/cinelerra.git (c) 2006-2019 Heroine Virtual Ltd. by Adam Williams (c) 2007-2019 cin5 derivative by W.P. Morrow aka goodguy Cinelerra is free software, covered by the GNU General Public License, and you are welcome to change it and/or distribute copies of it under certain conditions. There is absolutely no warranty for Cinelerra. FFMPEG::open_decoder: some stream times estimated: /dev/shm/dv.avi FFMPEG::open_decoder: some stream times estimated: /dev/shm/dv.avi FFMPEG::open_decoder: some stream times estimated: /dev/shm/dv.avi FFMPEG::open_decoder: some stream times estimated: /dev/shm/dv.avi FFMPEG::open_decoder: some stream times estimated: /dev/shm/dv.avi FFMPEG::open_decoder: some stream times estimated: /dev/shm/dv.avi FFMPEG::open_decoder: some stream times estimated: /dev/shm/dv.avi ALSA lib confmisc.c:1281:(snd_func_refer) Unable to find definition 'defaults.pcm.dmix.channels' ALSA lib conf.c:4568:(_snd_config_evaluate) function snd_func_refer returned error: Нет такого файла или каталога ALSA lib conf.c:5036:(snd_config_expand) Args evaluate error: Нет такого файла или каталога ALSA lib pcm.c:2564:(snd_pcm_open_noupdate) Unknown PCM dmix:SB AudioALSA::open_output default: Нет такого файла или каталога Session time: 0:00:57 Cpu time: user: 0:01:13.637 sys: 0:00:04.523 Profiling done. ------------ Session was simply by loading dv file and reverse 2x playing it after setting cursor to very end (1min). So, it seems a lot of time spend in decoding DV - may be because CinGG tries to decode from "cur_pos - 20" all frames up to "cur_pos - 1" ? This makes sense for highly-compressed files with I/P/B type of frames, but for I-only tracks it can be simplified, I think? |
|
Here, I have no difficulty in making your sequences play backwards, at all the different speeds offered by CinGG or ShuttlePROv2. However, rapid reversing requires much more CPU work (80%) than the power used for the same normal direction travel (max 35%). The ram memory does not indicate any increase in usage. |
|
Date Modified | Username | Field | Change |
---|---|---|---|
2019-10-25 15:42 | Andrew-R | New Issue | |
2019-10-25 15:42 | Andrew-R | Tag Attached: slowness | |
2019-10-25 16:23 | Pierre | Note Added: 0002325 | |
2019-10-26 04:16 | Andrew-R | Note Added: 0002332 | |
2019-10-26 11:22 | Andrew-R | Note Added: 0002333 | |
2019-10-26 11:43 | Andrew-R | Note Added: 0002334 | |
2019-10-26 12:02 | Andrew-R | Note Added: 0002335 | |
2019-10-26 12:20 | Andrew-R | Note Added: 0002336 | |
2019-10-26 12:38 | Andrew-R | Note Added: 0002337 | |
2019-10-26 13:22 | Andrew-R | Note Added: 0002338 | |
2019-10-26 13:30 | Andrew-R | File Added: dv_reverse_play_speedup.diff | |
2019-10-26 13:30 | Andrew-R | Note Added: 0002339 | |
2019-10-26 14:01 | Andrew-R | File Added: I-only_files_reverse_play_speedup.diff | |
2019-10-26 14:01 | Andrew-R | Note Added: 0002340 | |
2019-10-31 02:10 | PhyllisSmith | Assigned To | => goodguy |
2019-10-31 02:10 | PhyllisSmith | Status | new => assigned |
2019-11-13 20:59 | Andrew-R | Note Added: 0002458 |