I'm using Python 3.7 and wxPython 4.0.6. I use the same code on both
MacOS and Windows.
tldr:
Can anyone confirm for me that wx.media.EVT_MEDIA_LOADED does not get
called on Windows?
Also, there are some instances where my EVT_TIMER events are not getting
fired. Do Timer events depend on idle time to fire?
Long version:
For the last 20 years, I've written and maintained a cross-platform
program that specializes in the academic analysis of the contents of
video and audio data. I have relied upon a 32-bit Python 2.7 wxPython
3.0.2.0 version of my software for the last several years, and am
finally taking the plunge to upgrade to Python 3.7 wxPython 4.0.6.
One feature of my software is that it supports multiple simultaneous
media files. I have historically relied on the EVT_MEDIA_LOADED event
to allow me to wait for large data files to load before working on tasks
relating to synchronizing the files into a visually unified data
stream. Sometimes files are very large, sometimes there are multiple
files, and sometimes files must be pulled off a network server, which
slows the load process down. EVT_MEDIA_LOADED has historically worked
very well for this.
At present, my EVT_MEDIA_LOADED handler never gets called on Windows
like it does on MacOS. Is that event handler broken on Windows in
wxPython 4.0.6?
I am also noticing that EVT_TIMER events don't seem to fire 100% of the
time. They work perfectly most of the time, but every once in a while,
they fail. My current hypothesis is that this happens primarily during
the loading of some media files sometimes. (The failure is sporadic,
inconsistent, and hard to reproduce across test runs. It only happens
with some files, only with video as opposed to audio, and only with
certain video formats, perhaps different formats on different OSes. It
also might be more likely the first time I load a file after I've taken
a break, when maybe the computer or network doesn't have the data
cached.) I think I've noticed that my wx.EVT_IDLE events are not firing
when the timers fail, but I'm still working to confirm that. EVT_IDLE
call frequency also varies a surprising amount based on media formats.
(I originally tried to use Timers to track media position, as was in
multiple sample programs I found. When that wasn't completely reliable,
I shifted to a wx.EVT_IDLE model. It's better, but still not perfect.)
So are Timers linked to idle time? Does this make any sense? Does
anyone have any alternate theories for me to look into?
Thanks in advance,
David
--
David K. Woods, Ph.D.
President, Researcher, and Lead Transana Developer
https://www.transana.com