Changes
Summary
- crop_rec: 1040p48 appears to work after latest changes (1060p48 also works with some tweaking)
- Raw backend: attempt to handle raw_lv_request called outside LiveView (race condition?)
- mlv_lite: blacken H.264 frames not covered by RAW recording (poor man's sync between RAW and H.264 proxy - just trim the black frames from H.264)
- fps-engio: experimental support for bias frames (with zero exposure time)
- mlv_lite: H.264 proxy works again
- console: enable in LiveView alongside with ML overlays (experimental)
- exmem, gui-common: simplified UILock handling; debug info
- mlv_lite: keep memory allocated during standby (experiment) advantages: - recording starts right away, with minimal delay (allocating the entire RAM is slow - 1 or 2 seconds - now it's done in advance) - we always have temporary RAM for estimating compression ratio (estimating compression ratio in dummy mode - without actual output - was unreliable, giving corrupted frames) - possible to implement full-time pre-recording, without pressing REC twice (todo) problems: - possible thread safety issues (to be tested) - SRM use after free is disabled, needs more work - H.264 proxy also needs more work
- mlv_lite: renamed raw_preview_lock to settings_sem; more thread safety annotations
- lossless: backout d50e3ab (disable dummy operation - unreliable)
- cropmarks: minor boundary fix
- mlv_lite: fix audio meters with H.264 proxy (change required after 0475c45)
- mlv_lite: report all compression errors
- mlv_lite: silence thread safety warnings in measure_compression_ratio
- mlv_lite: cleaned up some raw_rec_task variables
- mlv_lite: ignore thread safety warnings for buffer_full (0 when recording starts; set to 1 from either LiveViewTask or compress_task; read from many places )
- mlv_lite: fix possible race condition (identified by thread safety analysis)
- mlv_lite: fix possible lockup (identified by thread safety analysis)
- mlv_lite: updated some thread safety annotations
- Merged thread-safety into crop_rec_4k
- Makefile: workaround for compiling backtrace.t (fixme: what's going on?)
- Makefile: fix dependency rules (regression) note: -Wp,-MP conflicts with backtrace rules from Makefile.src
- mlv_lite: forgot to call init_vsync_vars; ignore thread safety warning for this call
- mutex.h: macro to skip thread safety analysis on some particular function call
- mlv_lite: more thread safety annotations
- property.h: annotated PROP_HANDLER with thread role
- Merged lua_fix into thread-safety
- Merged lua_fix into crop_rec_4k
- Merged unified into lua_fix
- menu: do not discard customization data for menus that are not yet loaded (e.g. for modules/scripts and other dynamic menus)
- menu: do not overwrite existing customization data when reloading (only reload data for newly added menu entries)
- menu: fix usage counters for menu items with placeholders
- menu: allow simple submenus in Recent menu
- menu: allow Debug entries in Junkie mode
- Modules: make sure we can really use up to 64 of them (fix commit 8ad0912)
- file_man: show status in main menu, if busy
- file_man: disable powersaving during long copy/move operations
- file_man: unified FileCopy and FileMove tasks to avoid duplicate code; report all errors to console and show a simple progress indicator
- file_man: show timestamp for each file; align date/time column
- menu: fix Junkie short text overflowing in some cases
- menu: attempt to balance the automatic My Menu in Junkie mode (with many submenu entries used frequently, this menu could end up a lot more cluttered than regular menus)
- menu: fix submenu entries disappearing in Junkie menu (frequently used submenu items shouldn't be moved to My Menu; they should be just copied)
- menu: better duplicate menu warning; minor rename
- mlv_lite: pause LiveView while flushing the buffers at the end of recording; simple progress indicator http://www.magiclantern.fm/forum/index.php?topic=19300.msg185905#msg185905 note: undoing the Frozen LV hack is no longer needed, as pausing/resuming LiveView takes care of that
- crop_rec: reduced resolution from 1080p48 to 1020 to avoid corrupted frames (to get the old configuration, set Target YRES to 1080 and Delta HEAD3 to -20 in the crop_rec submenu)
- mlv_lite: annotate new functions, fix thread safety warnings
- lvinfo.c: updated with EXCLUDES(lvinfo_sem) (just for consistency)
- menu.c: updated to prevent taking menu_sem twice
- mutex-test: updated to prevent taking a semaphore twice
- menu.c: fix orphaned give_semaphore call
- Merged lua_fix into thread-safety
- Merged lua_fix into thread-safety
- selftest: compile-time option to test the behavior of DryOS tasks with identical priorities
- selftest: experimental thread safety tests (WIP)
- Merged task_name into thread-safety
- ml-cbr: fix warning
- lvinfo: annotated for thread safety analysis (all OK, just a false warning)
- Thread safety analysis: ignore read warnings for now
- mlv_lite: annotated some variables for thread safety analysis (experiment)
- mutex.h: some common thread roles
- Merged unified into thread-safety
- arm-mcr.h: annotated cli/sei for clang thread safety analysis
- Experiment: clang thread safety warnings during compilation Had to use gcc preprocessor (conflicts with clang includes?) make PREPRO=1
- Internal vsync functions are now private (not exposed to modules)
- dryos.h: annotated semaphores for clang thread safety analysis
- Makefile: always allow .i rules (they no longer conflict with .c dependency rules)
- lens.h: fix compiling with clang
- Minimal example of clang's thread safety analysis
- check-tasks.py: do not tag PROP_INTs
- check-tasks.py: show function name when it's not obvious from the context
- Removed some pycparser workarounds
- Integrated task annotations script in the build process, as suggested by g3gg0
- Makefile: experiment - save preprocessed C files during compilation (*.c -> *.i -> *.o) To enable, run "make PREPRO=y" or set PREPRO=y in Makefile.user
- Makefile: remove *.i and *.s on make clean
- Makefile: cleaned up file rules a bit
- Merged dynamic-my-menu into thread-safety
- Experiment: tag each ML function with the task(s) where it's called from (static analysis with pycparser)
- Some patches to allow parsing ML code with pycparser
- Updated some macros to allow pycparser compatibility