fix massive memory leak in UBFFmpegVideoEncoderWorker::writeLatest{Video/Audio}Frame()
resoulting from freeing av_frame without freeing its data.
fix#222
Caused problems e.g with podcast mode, where if the control and display
views were swapped in the preferences, the wrong screen would be recorded
when switching to desktop mode during recording of the podcast.
This happened even if only one screen was plugged in, so a black screen
was recorded in that case (at least on OS X 10.10)
- Linked necessary Windows SDK libraries
- Solved compilation errors upon including `wmsdk.h` or other Windows
SDK headers (`interface` keyword wasn't recognized)
The project didn't compile on Windows.. list of modifications:
- Added essential changes that hadn't been committed / pushed (Qt4->Qt5
changes; other misc. changes by Abdel)
- Temporarily disabled podcasts, as the modules don't compile with Qt5.2/
5.5
Currently, the application compiles on Windows, with MSVC2010 32-bit
The threading logic was changed somewhat. UBQuickTimeFile's run()
function no longer handles enqueuing the video/audio samples in a while
loop. Instead, it runs once, and uses Apple's Dispatch Queues to handle
enqueuing samples.
One dispatch queue was thus added for each input to the AssetWriter.
Each input is associated to one queue, and the requestMediaDataWhenReady
function insures that the inputs go and fetch any available samples when
they are able to write them.
As tested (for short podcasts, repeatedly), this solves all the problems
encountered earlier, such as the program hanging due to one input not
being ready, or corrupt files due (presumably) to missing samples.
Migrated all QuickTime-related code to modern AVFoundation / Core Video
/ Core Media equivalents.
Audio support was temporarily removed; to be re-established ASAP.
Beginnings of doxygen-style function documentation was added
Application compiles and runs, with some caveats. Full list of changes:
- minor changes related to Qt4->Qt5 API differences
- Replaced calls to Carbon framework by Cocoa
- Removed registering of AE event handler. Seems to be done
automatically in Qt5.
- temporarily removed Podcast functionality, pending (presumably)
complete re-write due to Quicktime being obsolete in newer OS X
versions.
- Created OBCocoa namespace, and associated files src/core/OBCocoa.h/.mm, to
handle OS X - specific system calls. Currently used only by
UBApplication, but can in the future provide a useful interface between
the cocoa framework and OB, to avoid having too much OSX-specific code
in various files