ソースを参照

Pass the correct buffer size through the pipeline again

Martijn Braam 1 年間 前
コミット
78cccdd596
3 ファイル変更8 行追加3 行削除
  1. 2 2
      src/main.c
  2. 3 0
      src/main.h
  3. 3 1
      src/process_pipeline.c

+ 2 - 2
src/main.c

@@ -158,8 +158,8 @@ update_state(const struct mp_main_state *state)
                 has_auto_focus_start = state->has_auto_focus_start;
         }
 
-        preview_buffer_width = state->mode->width;
-        preview_buffer_height = state->mode->height;
+        preview_buffer_width = state->image_width;
+        preview_buffer_height = state->image_height;
 
         return false;
 }

+ 3 - 0
src/main.h

@@ -17,6 +17,9 @@ struct mp_main_state {
 
         bool has_auto_focus_continuous;
         bool has_auto_focus_start;
+
+        int image_width;
+        int image_height;
 };
 
 void mp_main_update_state(const struct mp_main_state *state);

+ 3 - 1
src/process_pipeline.c

@@ -978,7 +978,7 @@ on_output_changed(bool format_changed)
         output_buffer_width = mode->width / 2;
         output_buffer_height = mode->height / 2;
 
-        if (mode->rotation != 0 || mode->rotation != 180) {
+        if (mode->rotation != 0 && mode->rotation != 180) {
                 int tmp = output_buffer_width;
                 output_buffer_width = output_buffer_height;
                 output_buffer_height = tmp;
@@ -1082,6 +1082,8 @@ update_state(MPPipeline *pipeline, const struct mp_process_pipeline_state *state
                 .exposure = exposure,
                 .has_auto_focus_continuous = state->has_auto_focus_continuous,
                 .has_auto_focus_start = state->has_auto_focus_start,
+                .image_width = output_buffer_width,
+                .image_height = output_buffer_height,
         };
         mp_main_update_state(&main_state);
 }