Recording mode UI info reorder

Issue #2283 resolved
Licaon Kter
created an issue

While recording in the upper right side of the display the UI elements are fighting for visibility

See this: https://i.imgur.com/0FZJHES.jpg

While the red recording dot is almost always half cut, using any option in Movie Tweaks -> Time indicator will make a flickering value display there too.

In standby the top bar has:

  • sound bars
  • filename
  • framerate
  • free space on card

While recording:

  • sound bars
  • picture style gets inserted here and
  • filename is shifted to the right
  • framerate AND OVER IT whatever I choose in Time indicator will be shown flickering (the screenshot was lucky)
  • buffer indicator will be over histogram in all but 2 modes.

I've patched up src/bitrate.c to move things around, and they look ok on my M at least, see pics:

  • 3:2/4:3 top & bottom
  • 16:10 HDMI
  • 16:9 HDMI
  • bottom 3:2/4:3
  • bottom 16:9

Images: https://imgur.com/a/WoVDN

Patch:

--- bitrate.c   2015-04-14 02:55:02.000000000 +0300
+++ bitrate.c-new       2015-05-21 01:52:39.000000000 +0300
@@ -366,16 +366,17 @@
                     time_indicator == 2 ? time_cardfill :
                     time_indicator == 3 ? MIN(time_4gb, time_cardfill)
                     : 0;

-    int time_indic_x = os.x_max - 160;
-    int time_indic_y = get_ml_topbar_pos();
-    if (time_indic_y > BMP_H_PLUS - 30) time_indic_y = BMP_H_PLUS - 30;

+    int screen_layout_menu_index = *get_screen_layout_ptr();
+    int time_indic_x = os.x_max;
+    int time_indic_y = get_ml_topbar_pos() + 32;
+    if (screen_layout_menu_index > 2) time_indic_y = time_indic_y - 55; // bottom modes need shifting up

     if (time_indicator)
     {
         bmp_printf(
             time_4gb < time_indic_warning ? time_indic_font : FONT(FONT_MED, COLOR_WHITE, TOPBAR_BGCOLOR),
-            time_indic_x + 160 - 6 * font_med.width,
+            time_indic_x - 11 - 6 * font_med.width, // substracted 11 pixels to get it aligned with fps
             time_indic_y,
             "%3d:%02d",
             dispvalue / 60,
@@ -407,7 +408,7 @@
         );
 #endif
     }

     //~ if (flicker_being_killed()) // this also kills recording dot
     //~ {
         //~ maru(os.x_max - 28, os.y0 + 12, COLOR_RED);
@@ -453,10 +454,13 @@
 void show_mvr_buffer_status()
 {
     int fnt = warning ? FONT(FONT_SMALL, COLOR_WHITE, COLOR_RED) : FONT(FONT_SMALL, COLOR_WHITE, COLOR_GREEN2);
+    int buffer_indic_y = get_ml_topbar_pos() + 32;
+    if (buffer_indic_y > 400) buffer_indic_y = get_ml_topbar_pos() - 23; // bottom modes need shifting up
+
     if (warning) warning--;
     if (RECORDING_H264 && get_global_draw() && !gui_menu_shown())
     {
-        bmp_printf(fnt, 680, 55, " %3d%%", MVR_BUFFER_USAGE);
+        bmp_printf(fnt, os.x_max - 131, buffer_indic_y, "%3d%%", MVR_BUFFER_USAGE);
     }
 }

Some ideas and questions before trying out for a pull request:

  • Is this an M only issue? If not/yes, is this needed?

  • I've clean up this, it substracts 160 and then later adds up 160, why?

int time_indic_x = os.x_max - 160;
...
time_indic_x + 160 - 6 * font_med.width,
  • In void time_indicator_show() I can use:
int screen_layout_menu_index = *get_screen_layout_ptr();
...
if (screen_layout_menu_index > 2) time_indic_y = time_indic_y - 55;

to detect current mode where screen_layout_menu_index has a value of 0/1/2/3/4 ( for top&bottom3:2 / 16:10HDMI / 16:9HDMI / bottom3:2 / bottom16:9 ) and adjust vertical offset as needed, but if I try the same in void show_mvr_buffer_status() it always says 16:9HDMI ( screen_layout_menu_index value of 2 ), hence I used a different test to determine current mode. Any reason for this difference?

  • bottom 3:2 and bottom 16:9 modes are exactly the same, why?

Forum thread: http://www.magiclantern.fm/forum/index.php?topic=15210.msg148010#msg148010

Thanks

Comments (10)

  1. Alex

    The issue appears to be on most cameras (not M only).

    You can integrate the countdown in the top bar with a LVINFO item (see bitrate-5D3 for an example).

    The 16:9 screen layout is for some external monitors (it moves the top and bottom bars a bit closer to the center, so you can see them on those monitors). Last time I checked this was 2 or 3 years ago, so it might be broken.

    I'll be able to try it next week (or maybe earlier in QEMU).

  2. Daniel Fort

    I'd like to help out but I'm not a developer and have not been able to get around the current EOSM.202 build failing issue. Would it be possible to post your compiled file somewhere accessible for testers to check out?

  3. Daniel Fort

    Tried your build and it is much better. The red recording dot is still cut in half when recording starts but it is quickly replaced by the Movie Tweaks Time Indicator display. The fps display no longer fights with the Movie Tweaks display. Turning off Movie Tweaks will show the half red dot as before.

  4. Licaon Kter reporter

    I'll rather lose the dot altogether, there might be a way given the comments in code, and one can have STBY /REC info from the Tweaks to replace it.

  5. Log in to comment