[gimp-gap/gap-2-8] fixes for movpath and storyboard rendering, typos #730549



commit bd07870d2e1f90fb507f70557f9891c84f3173f3
Author: Wolfgang Hofer <wolfgangh svn gnome org>
Date:   Fri May 30 10:41:16 2014 +0200

    fixes for movpath and storyboard rendering, typos #730549

 ChangeLog                            |   50 ++++++++++++++++++++++++++++++++++
 gap/gap_accel_char.c                 |    4 +-
 gap/gap_accel_char.h                 |    4 +-
 gap/gap_accel_da.c                   |    2 +-
 gap/gap_apcl_lib.h                   |    2 +-
 gap/gap_audio_extract.c              |    2 +-
 gap/gap_audio_extract.h              |    2 +-
 gap/gap_audio_wav.c                  |    4 +-
 gap/gap_blend_fill_main.c            |    6 ++--
 gap/gap_colormask_dialog.c           |    2 +-
 gap/gap_detail_align_exec.c          |    8 +++---
 gap/gap_detail_tracking_exec.c       |    2 +-
 gap/gap_detail_tracking_exec.h       |    2 +-
 gap/gap_drawable_vref_parasite.c     |    2 +-
 gap/gap_fg_matting_dialog.c          |    2 +-
 gap/gap_lib.c                        |    6 ++--
 gap/gap_morph_tween_dialog.c         |    8 +++---
 gap/gap_mov_dialog.c                 |    8 ++++-
 gap/gap_mov_exec.c                   |    1 -
 gap/gap_navigator_dialog.c           |    2 +-
 gap/gap_onion_dialog.c               |    8 +++---
 gap/gap_player_dialog.c              |   29 +++++++++++++++++---
 gap/gap_range_ops.c                  |    4 +-
 gap/gap_split.c                      |    2 +-
 gap/gap_story_att_trans_dlg.c        |    4 +-
 gap/gap_story_dialog.c               |    8 +++---
 gap/gap_story_render_audio.c         |    4 +-
 gap/gap_story_render_processor.c     |   46 ++++++++++++++++++++++++++-----
 gap/gap_vex_dialog.c                 |    2 +-
 gap/gap_wr_opacity.c                 |    2 +-
 vid_enc_ffmpeg/gap_enc_ffmpeg_main.c |    2 +-
 31 files changed, 168 insertions(+), 62 deletions(-)
---
diff --git a/ChangeLog b/ChangeLog
index 0d61a32..41e72dd 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,53 @@
+2014-05-30 Wolfgang Hofer <hof gimp org>
+
+- fixed typos (applied path by Anders Jonsson see #730549)
+
+- fixed endless loop in storyboard processor at attempt to read frames frome a video clip after EOF.
+
+- fixed crash after loading movepath settings from xml file.
+   (in case current point index is higher than number of available destination frames
+   the next refresh crashed on windows7 environment)
+
+- fixed movepath freeze caused by unbalanced mallog/free error
+  in gap_lib_dir_ainfo_duplicate (must duplicate all referenced strings of the ainfo structure)
+
+   * gap/gap_story_render_processor.c
+   * gap/gap_player_dialog.c
+   * gap/gap_mov_dialog.c
+   * gap/gap_mov_exec.c
+   * gap/gap_lib.c
+
+   typos:
+
+   * gap/gap_accel_char.c [.h]
+   * gap/gap_accel_da.c
+   * gap/gap_apcl_lib.h
+   * gap/gap_audio_extract.c [.h]
+   * gap/gap_audio_wav.c
+   * gap/gap_blend_fill_main.c
+   * gap/gap_colormask_dialog.c
+   * gap/gap_detail_align_exec.c
+   * gap/gap_detail_tracking_exec.c [.h]
+   * gap/gap_drawable_vref_parasite.c
+   * gap/gap_fg_matting_dialog.c
+   * gap/gap_morph_tween_dialog.c
+   * gap/gap_mov_dialog.c
+   * gap/gap_mov_exec.c
+   * gap/gap_navigator_dialog.c
+   * gap/gap_onion_dialog.c
+   * gap/gap_player_dialog.c
+   * gap/gap_range_ops.c
+   * gap/gap_split.c
+   * gap/gap_story_att_trans_dlg.c
+   * gap/gap_story_dialog.c
+   * gap/gap_story_render_audio.c
+   * gap/gap_story_render_processor.c
+   * gap/gap_vex_dialog.c
+   * gap/gap_wr_opacity.c
+   * vid_enc_ffmpeg/gap_enc_ffmpeg_main.c
+
+
+
 2014-05-21 Wolfgang Hofer <hof gimp org>
 
 - fixed bug at loading movepath settings from xml file
diff --git a/gap/gap_accel_char.c b/gap/gap_accel_char.c
index 46d00c4..bebc491 100644
--- a/gap/gap_accel_char.c
+++ b/gap/gap_accel_char.c
@@ -38,7 +38,7 @@
 /* ---------------------------------------
  * gap_accelMixFactor
  * ---------------------------------------
- * this proecdure implements hardcoded acceleration characteristics.
+ * this procedure implements hardcoded acceleration characteristics.
  *     
  * accelCharacteristic: 
  *  0 is used to turn off acceleration
@@ -85,7 +85,7 @@ gap_accelMixFactor(gdouble orig_factor, gint accelCharacteristic)
 /* ---------------------------------------
  * gap_accel_calculate_current_step
  * ---------------------------------------
- * calculate current step respecting the specified accelration characteristic
+ * calculate current step respecting the specified acceleration characteristic
  */
 gdouble
 gap_calculate_current_step_with_acceleration(gdouble current_step, gint32 total_steps, gint 
accelCharacteristic)
diff --git a/gap/gap_accel_char.h b/gap/gap_accel_char.h
index 5d438da..a81304b 100644
--- a/gap/gap_accel_char.h
+++ b/gap/gap_accel_char.h
@@ -40,7 +40,7 @@
 /* ---------------------------------------
  * gap_accelMixFactor
  * ---------------------------------------
- * this proecdure implements hardcoded acceleration characteristics.
+ * this procedure implements hardcoded acceleration characteristics.
  *
  * accelCharacteristic: 0 and 1 for linear, positive values for acceleration, negative values for 
deceleration
  *
@@ -52,7 +52,7 @@ gdouble   gap_accelMixFactor(gdouble orig_factor, gint accelCharacteristic);
 /* ---------------------------------------
  * gap_accel_calculate_current_step
  * ---------------------------------------
- * calculate current step respecting the specified accelration characteristic
+ * calculate current step respecting the specified acceleration characteristic
  */
 gdouble   gap_calculate_current_step_with_acceleration(gdouble current_step, gint32 total_steps, gint 
accelCharacteristic);
 
diff --git a/gap/gap_accel_da.c b/gap/gap_accel_da.c
index e1baa8d..f1fbd98 100644
--- a/gap/gap_accel_da.c
+++ b/gap/gap_accel_da.c
@@ -334,7 +334,7 @@ gap_accel_repaint(GtkWidget *wgt, GdkEvent *evt,
   }
 
  
-  /*  Draw the the acceleration curve according to accelerationCharacteristic
+  /*  Draw the acceleration curve according to accelerationCharacteristic
    *  when acceleration is active 
    */
   if(accelerationCharacteristic != 0)
diff --git a/gap/gap_apcl_lib.h b/gap/gap_apcl_lib.h
index 4bbdab3..0222d09 100644
--- a/gap/gap_apcl_lib.h
+++ b/gap/gap_apcl_lib.h
@@ -40,7 +40,7 @@
 /* ------- START SDL based stuff ----------------------------------------------------------- */
 
 /* use audio playback based on the SDL media library
- * (SDL works on multiple Operating systems including Linux and Windows and McOS)
+ * (SDL works on multiple Operating systems including Linux and Windows and MacOS)
  *
  * AudioPlayerCLient Wrapper Procedures
  * Implementation for SDL based audio player
diff --git a/gap/gap_audio_extract.c b/gap/gap_audio_extract.c
index 0496c57..338f963 100644
--- a/gap/gap_audio_extract.c
+++ b/gap/gap_audio_extract.c
@@ -146,7 +146,7 @@ p_audio_extract_rewrite_wav_header(FILE *fp_wav
  * position of the specified (already opened) videohandle.
  * and optional save extracted audiodata as RIFF WAVE file 
  * (set wav_save to FALSE to skip writing to wav file,
- *  this is typical used to perform dummy read for 
+ *  this is typically used to perform dummy read for 
  *  advancing current position in the videohandle)
  */
 void
diff --git a/gap/gap_audio_extract.h b/gap/gap_audio_extract.h
index a8fa319..82db0b8 100644
--- a/gap/gap_audio_extract.h
+++ b/gap/gap_audio_extract.h
@@ -40,7 +40,7 @@ typedef gpointer t_GVA_Handle;
  * position of the specified (already opened) videohandle.
  * and optional save extracted audiodata as RIFF WAVE file 
  * (set wav_save to FALSE to skip writing to wav file,
- *  this is typical used to perform dummy read for 
+ *  this is typically used to perform dummy read for 
  *  advancing current position in the videohandle)
  */
 void 
diff --git a/gap/gap_audio_wav.c b/gap/gap_audio_wav.c
index 9483de3..92b2f87 100644
--- a/gap/gap_audio_wav.c
+++ b/gap/gap_audio_wav.c
@@ -440,7 +440,7 @@ gap_audio_wav_16bit_save(const char *wavfile
     /* write the header */
     gap_audio_wav_write_header(fp
                             , (gint32)total_samples
-                            , channels                           /* cannels 1 or 2 */
+                            , channels                           /* channels 1 or 2 */
                             , samplerate
                             , l_bytes_per_sample
                             , 16                          /* 16 bit sample resolution */
@@ -612,7 +612,7 @@ p_check_for_valid_playlist(const char *audfile, long *sample_rate, long *channel
           if(ii > 0)
           {
             g_message(_("The file: %s\n"
-                    "has unexpect content that will be ignored.\n"
+                    "has unexpected content that will be ignored.\n"
                     "You should specify an audio file in RIFF WAVE fileformat,\n"
                     "or a textfile containing filenames of such audio files")
                    , audfile
diff --git a/gap/gap_blend_fill_main.c b/gap/gap_blend_fill_main.c
index 98e9af7..2ee0d58 100644
--- a/gap/gap_blend_fill_main.c
+++ b/gap/gap_blend_fill_main.c
@@ -1842,7 +1842,7 @@ gap_blend_fill_dialog (FilterVals *fiVals, gint32 drawable_id)
 
   /* horizontalBlendFlag checkbutton  */
   label = gtk_label_new (_("fills the selection by blending opposite border colors "
-                           "outside the selction to cover the selected area.\n"
+                           "outside the selection to cover the selected area.\n"
                            "Intended to fix small pixel errors"));
   gtk_widget_show (label);
   gtk_table_attach (GTK_TABLE (table), label, 0, 3, row, row+1,
@@ -1962,8 +1962,8 @@ gap_blend_fill_dialog (FilterVals *fiVals, gint32 drawable_id)
   gtk_table_attach (GTK_TABLE (table), button, 0, 1, row, row + 1,
                     GTK_FILL, GTK_FILL, 4, 0);
 
-  gimp_help_set_help_data (button, _("Save all pathes as svg vector file."
-                          "(use svg file when large or many pathes shall be used)"), NULL);
+  gimp_help_set_help_data (button, _("Save all paths as svg vector file."
+                          "(use svg file when large or many paths shall be used)"), NULL);
   g_signal_connect (G_OBJECT (button), "clicked",
                       G_CALLBACK (on_save_svg_clicked),
                       guiStuffPtr);
diff --git a/gap/gap_colormask_dialog.c b/gap/gap_colormask_dialog.c
index d933847..8a942d3 100644
--- a/gap/gap_colormask_dialog.c
+++ b/gap/gap_colormask_dialog.c
@@ -1820,7 +1820,7 @@ gap_colormask_dialog (GapColormaskValues *cmaskvals, GimpDrawable *layer_drawabl
   if (gimp_dialog_run (GIMP_DIALOG (dialog)) == GTK_RESPONSE_OK)
   {
     // TODO param file save shall be done in the procedure that
-    // creates the dialog as pop-up for Storybord clip properties.
+    // creates the dialog as pop-up for Storyboard clip properties.
     // for testpurpose saving is done here until the rest is implemented...
     gap_colormask_file_save (cmaskint.paramFilename, cmaskvals);
     run = TRUE;
diff --git a/gap/gap_detail_align_exec.c b/gap/gap_detail_align_exec.c
index 4958eb0..4cf6a8b 100644
--- a/gap/gap_detail_align_exec.c
+++ b/gap/gap_detail_align_exec.c
@@ -1278,10 +1278,10 @@ gap_detail_exact_align_via_4point_path(gint32 image_id, gint32 activeDrawableId
     {
       g_message(_("This filter requires a current path with 4 points,"
                 "where point 1 and 2 mark reference positions "
-                "and point 3 and 4 mark postions in the target layer."
+                "and point 3 and 4 mark positions in the target layer."
                 "It transforms the target layer in a way that "
                 "point3 is moved to point1 and point4 moves to point2."
-                "(this may include rotate an scale transformation).\n"
+                "(this may include rotate and scale transformation).\n"
                 "A path with 2 points can be used to move point2 to point1."
                 "(via simple move operation without rotate and scale)"));
     }
@@ -1289,10 +1289,10 @@ gap_detail_exact_align_via_4point_path(gint32 image_id, gint32 activeDrawableId
     {
       g_message(_("This filter requires a current path with 4 points,"
                 "where point 1 and 3 mark reference positions "
-                "and point 2 and 4 mark postions in the target layer."
+                "and point 2 and 4 mark positions in the target layer."
                 "It transforms the target layer in a way that "
                 "point2 is moved to point1 and point4 moves to point3."
-                "(this may include rotate an scale transformation).\n"
+                "(this may include rotate and scale transformation).\n"
                 "A path with 2 points can be used to move point2 to point1."
                 "(via simple move operation without rotate and scale)"));
     }
diff --git a/gap/gap_detail_tracking_exec.c b/gap/gap_detail_tracking_exec.c
index 6f7b34d..c44725b 100644
--- a/gap/gap_detail_tracking_exec.c
+++ b/gap/gap_detail_tracking_exec.c
@@ -1390,7 +1390,7 @@ gap_detail_tracking_dialog(FilterValues *fiVals)
   ii++; gap_arr_arg_init(&argv[ii], GAP_ARR_WGT_TOGGLE); ii_enableScaling = ii;
   argv[ii].label_txt = _("Log Scaling:");
   argv[ii].help_txt  = _("ON: Calculate scaling and rotation when 2 detail Coordinates are tracked.\n"
-                         "OFF: Calculate only rotation and keep orignal size.");
+                         "OFF: Calculate only rotation and keep original size.");
   argv[ii].int_ret   = fiVals->enableScaling;
   argv[ii].has_default = TRUE;
   argv[ii].int_default = DEFAULT_enableScaling;
diff --git a/gap/gap_detail_tracking_exec.h b/gap/gap_detail_tracking_exec.h
index 9d350d4..d4fc144 100644
--- a/gap/gap_detail_tracking_exec.h
+++ b/gap/gap_detail_tracking_exec.h
@@ -64,7 +64,7 @@ typedef struct FilterValues {
    gint32     offsX;               /* add this value when logging coords */
    gint32     offsY;
    gdouble    offsRotate;          /* additional rotation angle, to be added in all controlpoints */
-   gboolean   enableScaling;       /* on: use rotation and scaling  off: roate only  */
+   gboolean   enableScaling;       /* on: use rotation and scaling  off: rotate only  */
    gboolean   bgLayerIsReference;
    gboolean   removeMidlayers;     /* on: keep 2 top layers and Bg layer, remove other layers  off: keep all 
layers  */
    char       moveLogFile[1600];
diff --git a/gap/gap_drawable_vref_parasite.c b/gap/gap_drawable_vref_parasite.c
index 130ae93..1b83252 100644
--- a/gap/gap_drawable_vref_parasite.c
+++ b/gap/gap_drawable_vref_parasite.c
@@ -92,7 +92,7 @@ gap_dvref_free(GapDrawableVideoRef **dvref_ptr)
 /* ---------------------------------------------------
  * gap_dvref_get_drawable_video_reference_via_parasite
  * ---------------------------------------------------
- * return Gap drawable video reference parasite if such a parasite is atached to the specified drawable_id
+ * return Gap drawable video reference parasite if such a parasite is attached to the specified drawable_id
  *        oterwise return NULL;
  */
 GapDrawableVideoRef *
diff --git a/gap/gap_fg_matting_dialog.c b/gap/gap_fg_matting_dialog.c
index 3f5992b..4fb1723 100644
--- a/gap/gap_fg_matting_dialog.c
+++ b/gap/gap_fg_matting_dialog.c
@@ -445,7 +445,7 @@ do_dialog (FgExtractDialogGuiStuff *guiStuffPtr, GapFgExtractValues *cuvals)
                          " provides a rough user selection "
                          " where WHITE pixels in the tri map defines FOREGROUND (eg. opaque result) "
                          " BLACK pixels define BACKGROUND (eg. transparent result)"
-                         " GRAY pixels (value 1 upto 240) ar marked as Undefined "
+                         " GRAY pixels (value 1 upto 240) are marked as Undefined "
                          " (eg. opacity to be processed by this filter.) )")
                        , NULL);
 
diff --git a/gap/gap_lib.c b/gap/gap_lib.c
index cd375b7..be4ec3a 100644
--- a/gap/gap_lib.c
+++ b/gap/gap_lib.c
@@ -1652,15 +1652,15 @@ gap_lib_dir_ainfo_duplicate(GapAnimInfo *ainfo_ptr)
     }
     if(ainfo_ptr->extension != NULL)
     {
-      l_ainfo_ptr->extension = ainfo_ptr->extension;
+      l_ainfo_ptr->extension = g_strdup(ainfo_ptr->extension);
     }
     if(ainfo_ptr->new_filename != NULL)
     {
-      l_ainfo_ptr->new_filename = ainfo_ptr->new_filename;
+      l_ainfo_ptr->new_filename = g_strdup(ainfo_ptr->new_filename);
     }
     if(ainfo_ptr->old_filename != NULL)
     {
-      l_ainfo_ptr->old_filename = ainfo_ptr->old_filename;
+      l_ainfo_ptr->old_filename = g_strdup(ainfo_ptr->old_filename);
     }
 
     l_ainfo_ptr->frame_nr = ainfo_ptr->frame_nr;
diff --git a/gap/gap_morph_tween_dialog.c b/gap/gap_morph_tween_dialog.c
index 6cab1cc..4c8c8ba 100644
--- a/gap/gap_morph_tween_dialog.c
+++ b/gap/gap_morph_tween_dialog.c
@@ -837,7 +837,7 @@ gap_morph_generate_frame_tween_workpoints_dialog(GapAnimInfo *ainfo_ptr, GapMorp
                                 TRUE, 0, 0,
                                 _("Edge detection threshold. "
                                   "Workpoints are generated on detected edges. "
-                                  "Edges are detected on pixels where color or opacity differs significant "
+                                  "Edges are detected on pixels where color or opacity differs significantly 
"
                                   "from the neighbor pixel."
                                   "(i.e. more than the specified edge detection threshold)."),
                                 NULL);
@@ -1180,7 +1180,7 @@ gap_morph_frame_tweens_dialog(GapAnimInfo *ainfo_ptr, GapMorphGlobalParams *mgpp
     else
     {
       label = gtk_label_new (_("This operation creates copies of all frames in the specified range\n"
-                               "and the specifed number of tweens as additional tween frames\n"
+                               "and the specified number of tweens as additional tween frames\n"
                                "between all the processed frames in the specified subdirectory.\n"
                                "Provide workpointfiles (one per frame) for morphing based tween rendering\n"
                                "(this can be done with the Morph Workpoint Generator)"));
@@ -1258,7 +1258,7 @@ gap_morph_frame_tweens_dialog(GapAnimInfo *ainfo_ptr, GapMorphGlobalParams *mgpp
                                 mgpp->master_tween_steps, 0, 100, 1.0, 10.0, 0,
                                 TRUE, 0, 0,
                                 _("Number of tweens to be inserted between 2 frames. "
-                                  "Value 0 renderes missing frames (via morphing or fade) "
+                                  "Value 0 renders missing frames (via morphing or fade) "
                                   "but does not create tweens where the "
                                   "next frame number is equal to the current processed frame number +1"),
                                 NULL);
@@ -1303,7 +1303,7 @@ gap_morph_frame_tweens_dialog(GapAnimInfo *ainfo_ptr, GapMorphGlobalParams *mgpp
                                      "and generated tweens. "
                                      "Note that tweens are created via simple fade operations "
                                      "when no workpointfile for the processed frame is available. "
-                                     "(individual workpointfiles per frame are refered by extension 
.morphpoints)")
+                                     "(individual workpointfiles per frame are referred by extension 
.morphpoints)")
                            , NULL);
     gtk_widget_show(entry);
 
diff --git a/gap/gap_mov_dialog.c b/gap/gap_mov_dialog.c
old mode 100644
new mode 100755
index c8c38f0..2ceff94
--- a/gap/gap_mov_dialog.c
+++ b/gap/gap_mov_dialog.c
@@ -3638,6 +3638,10 @@ p_load_points(char *filename, t_mov_gui_stuff *mgp)
                                     , mgp->ainfo_ptr->last_frame_nr
                                     );
         }
+        if (pvals->point_idx > abs(mgp->ainfo_ptr->last_frame_nr - mgp->ainfo_ptr->first_frame_nr))
+        {
+          pvals->point_idx = 0;
+        }
       }
     }
     else
@@ -4412,7 +4416,7 @@ mov_edit_button_box_create (t_mov_gui_stuff *mgp)
   gimp_help_set_help_data(button,
                        _("Set rotation for all controlpoints "
                          "to follow the shape of the path. "
-                         "Hold down the shift key to use rotation of contolpoint 1 as offset.")
+                         "Hold down the shift key to use rotation of controlpoint 1 as offset.")
                        , NULL);
   gtk_widget_show (button);
   g_signal_connect (G_OBJECT (button), "button_press_event",
@@ -7003,7 +7007,7 @@ gap_mov_dlg_move_dialog_singleframe(GapMovSingleFrame *singleFramePtr)
   gap_arr_arg_init(&argv[l_ii], GAP_ARR_WGT_INT_PAIR);
   argv[l_ii].constraint = TRUE;
   argv[l_ii].label_txt = _("Current Frame:");
-  argv[l_ii].help_txt  = _("Curent Frame number (i.e. current phase) of Total number of frames");
+  argv[l_ii].help_txt  = _("Current Frame number (i.e. current phase) of total number of frames");
   argv[l_ii].int_min   = (gint)1;
   argv[l_ii].int_max   = (gint)MAX(10000, singleFramePtr->total_frames);
   argv[l_ii].int_ret   = (gint)CLAMP(singleFramePtr->frame_phase, 1, argv[l_ii].int_max);
diff --git a/gap/gap_mov_exec.c b/gap/gap_mov_exec.c
old mode 100644
new mode 100755
index e57e462..ca57e68
--- a/gap/gap_mov_exec.c
+++ b/gap/gap_mov_exec.c
@@ -1655,7 +1655,6 @@ p_get_gap_controlpoint_loglimit()
   {
     l_log_limit = atol(l_env);
   }
-
   return (l_log_limit);
 }
 
diff --git a/gap/gap_navigator_dialog.c b/gap/gap_navigator_dialog.c
index 70f3a40..8f3e3fd 100644
--- a/gap/gap_navigator_dialog.c
+++ b/gap/gap_navigator_dialog.c
@@ -823,7 +823,7 @@ p_edit_paste_call(gint32 paste_mode)
   }
   else
   {
-    gap_arr_msg_win(GIMP_RUN_INTERACTIVE, _("Video paste operaton failed"));
+    gap_arr_msg_win(GIMP_RUN_INTERACTIVE, _("Video paste operation failed"));
   }
 
   gimp_destroy_params(return_vals, nreturn_vals);
diff --git a/gap/gap_onion_dialog.c b/gap/gap_onion_dialog.c
index 0d1949a..a224886 100644
--- a/gap/gap_onion_dialog.c
+++ b/gap/gap_onion_dialog.c
@@ -996,8 +996,8 @@ create_oni__dialog (GapOnionMainGlobalParams *gpp)
   /* the ref_mode combo box */
   oni__combo_ref_mode
     = gimp_int_combo_box_new (_("Normal +1,+2,+3,+4,+5,+6"),                   0,
-                              _("Bidiriectional (single) +1,-2,+3,-4,+5,-6"),  1,
-                              _("Bidiriectional (double) +1,-1,+2,-2,+3,-3"),  2,
+                              _("Bidirectional (single) +1,-2,+3,-4,+5,-6"),  1,
+                              _("Bidirectional (double) +1,-1,+2,-2,+3,-3"),  2,
                               NULL);
   gimp_int_combo_box_connect (GIMP_INT_COMBO_BOX (oni__combo_ref_mode),
                                  0,  /* initial gint value */
@@ -1331,7 +1331,7 @@ create_oni__dialog (GapOnionMainGlobalParams *gpp)
      gimp_help_set_help_data(oni__checkbutton_auto_replace
                          , _("ON: Automatic creation/replacement of onionskin layer(s). "
                              "Works on frame changes via 'VCR Navigator' and go to operations "
-                             "in the video menu -- but not on explicite load from the file menu.")
+                             "in the video menu -- but not on explicit load from the file menu.")
                          , NULL);
      gtk_table_attach (GTK_TABLE (auto_table), oni__checkbutton_auto_replace,
                        0, 1, 0, 1,
@@ -1343,7 +1343,7 @@ create_oni__dialog (GapOnionMainGlobalParams *gpp)
      gimp_help_set_help_data(oni__checkbutton_auto_delete
                          , _("ON: Automatic delete of onionskin layer(s). "
                              "Works on framechanges via 'VCR Navigator' and go to operations "
-                             "in the video menu -- but not on explicite save from the file menu. "
+                             "in the video menu -- but not on explicit save from the file menu. "
                              "Use this option if you dont want onionskin layers to appear in thumbnail 
files.")
                          , NULL);
      gtk_table_attach (GTK_TABLE (auto_table), oni__checkbutton_auto_delete,
diff --git a/gap/gap_player_dialog.c b/gap/gap_player_dialog.c
index 30bf0aa..47fe157 100644
--- a/gap/gap_player_dialog.c
+++ b/gap/gap_player_dialog.c
@@ -583,7 +583,7 @@ p_audio_init(GapPlayerMainGlobalParams *gpp)
       {
          g_message(_("Failure to start the wavplay server is fatal.\n"
                 "Please check the executability of the 'wavplay' command.\n"
-                "If you have installed the wavplay executeable somewhere\n"
+                "If you have installed the wavplay executable somewhere\n"
                 "you can set the Environmentvariable WAVPLAYPATH before gimp startup\n"));
       }
       else
@@ -2496,7 +2496,7 @@ on_audio_otone_extract_button_clicked (GtkButton       *button,
   }
 
   p_reset_progress_bar_audio(gpp);
-  p_msg_progress_bar_audio(gpp, _("cheking audiotrack"));
+  p_msg_progress_bar_audio(gpp, _("checking audiotrack"));
 
   l_extract_audiotrack = CLAMP(GTK_ADJUSTMENT(gpp->audio_otone_atrack_spinbutton_adj)->value
                               , 1
@@ -3542,6 +3542,10 @@ p_fetch_composite_image(GapPlayerMainGlobalParams *gpp
   ||  (gpp->stb_parttype != gpp->stb_ptr->stb_parttype)
   ||  (gpp->stb_unique_id != gpp->stb_ptr->stb_unique_id))
   {
+    if(gap_debug)
+    {
+      printf("p_fetch_composite_image before (re)open composite video handle\n");
+    }
     p_open_composite_storyboard(gpp);
   }
 
@@ -3558,6 +3562,12 @@ p_fetch_composite_image(GapPlayerMainGlobalParams *gpp
        * therefore no changes to propagate to the players
        * pview widget
        */
+       if(gap_debug)
+       {
+         printf("p_fetch_composite_image: before call gap_story_render_fetch_composite_image 
comp_vidhand:%ld \n"
+             ,(long)gpp->stb_comp_vidhand
+             );
+       }
 
       composite_image_id = gap_story_render_fetch_composite_image(
                                gpp->stb_comp_vidhand
@@ -4041,7 +4051,8 @@ p_display_frame(GapPlayerMainGlobalParams *gpp, gint32 framenr)
 
   GAP_TIMM_GET_FUNCTION_ID(funcId, "playerDialog.p_display_frame");
 
-  /*if(gap_debug) printf("p_display_frame START: framenr:%d\n", (int)framenr);*/
+  /* if(gap_debug) printf("p_display_frame START: framenr:%d\n", (int)framenr); */
+  
   if(gpp->gva_lock)
   {
     /* do not attempt displaying frames while we are inside
@@ -4111,6 +4122,16 @@ p_display_frame(GapPlayerMainGlobalParams *gpp, gint32 framenr)
                 , &l_flip_request
                 , &l_flip_status
                 );
+                
+      if((l_th_data == NULL) && (l_composite_image_id < 0))
+      {
+        if(gap_debug)
+        {
+          printf("STOP playback on error after call to p_fetch_display_composite_image_from_storyboard\n");
+        }
+        p_stop_playback(gpp);
+      }
+             
     }
   }
   else
@@ -7017,7 +7038,7 @@ p_new_audioframe(GapPlayerMainGlobalParams *gpp)
   gpp->audio_otone_extract_button = button;
   gtk_widget_show (button);
   gimp_help_set_help_data(button, _("Extract Audio Track from videofile "
-                                    "for the current videofile and use it for origial audiotrack playback")
+                                    "for the current videofile and use it for original audiotrack playback")
                                     ,NULL);
   gtk_table_attach(GTK_TABLE(table1), button, 2, 3, row, row + 1,
                     (GtkAttachOptions) GTK_FILL,
diff --git a/gap/gap_range_ops.c b/gap/gap_range_ops.c
index 3c94a43..c724ffa 100644
--- a/gap/gap_range_ops.c
+++ b/gap/gap_range_ops.c
@@ -513,7 +513,7 @@ p_convert_dialog(GapAnimInfo *ainfo_ptr,
        "and need flattened frames (flattening does melt down all layers to one composite layer)."
        "Example: JPEG can not handle multiple layers and requires flattened frames."),
     N_("Merge resulting frame down to one layer. This keeps transparency information "
-       "Example: use this for PNG fileformat that can handle transpararency (alpha channel) "
+       "Example: use this for PNG fileformat that can handle transparency (alpha channel) "
        "but is limited to one layer)") 
   };
     
@@ -826,7 +826,7 @@ p_range_to_multilayer_dialog(GapAnimInfo *ainfo_ptr,
   if (gimp_image_base_type(ainfo_ptr->image_id) == GIMP_INDEXED)
   {
     gap_arr_arg_init(&argv[12], GAP_ARR_WGT_LABEL);
-    argv[12].label_txt = _("You are using INDEXED frames. please note that the result will be an RGB image");
+    argv[12].label_txt = _("You are using INDEXED frames. Please note that the result will be an RGB image");
     argc = 13;
   }
 
diff --git a/gap/gap_split.c b/gap/gap_split.c
index 9ac2170..dc443ba 100644
--- a/gap/gap_split.c
+++ b/gap/gap_split.c
@@ -363,7 +363,7 @@ p_split_image(GapAnimInfo *ainfo_ptr, split_vals_t *valPtr)
             if(l_rc < 0)
             {
               gap_arr_msg_win(ainfo_ptr->run_mode, _("Split Frames: Save operation failed.\n"
-                                               "desired save plugin can't handle type\n"
+                                               "Desired save plugin can't handle type\n"
                                                "or desired save plugin not available."));
             }
           }
diff --git a/gap/gap_story_att_trans_dlg.c b/gap/gap_story_att_trans_dlg.c
index 37567fa..d405810 100644
--- a/gap/gap_story_att_trans_dlg.c
+++ b/gap/gap_story_att_trans_dlg.c
@@ -3321,7 +3321,7 @@ p_create_and_attach_att_arr_widgets(const char *row_title
   attw->att_rows[att_type_idx].button_from = button;
   gtk_table_attach(GTK_TABLE (table), button, col, col+1, row, row + 1, GTK_FILL, GTK_FILL, 0, 0);
   gimp_help_set_help_data(button, _("Reset to: defaults, "
-                                    "use modifyer keys CTRL, ALT for alternative defaults. "
+                                    "use modifier keys CTRL, ALT for alternative defaults. "
                                     "SHIFT resets to initial value"), NULL);
   gtk_widget_show(button);
 
@@ -3364,7 +3364,7 @@ p_create_and_attach_att_arr_widgets(const char *row_title
   attw->att_rows[att_type_idx].button_to = button;
   gtk_table_attach(GTK_TABLE (table), button, col, col+1, row, row + 1, GTK_FILL, GTK_FILL, 0, 0);
   gimp_help_set_help_data(button, _("Reset to: defaults, "
-                                    "use modifyer keys CTRL, ALT for alternative defaults. "
+                                    "use modifier keys CTRL, ALT for alternative defaults. "
                                     "SHIFT resets to initial value"), NULL);
   gtk_widget_show(button);
 
diff --git a/gap/gap_story_dialog.c b/gap/gap_story_dialog.c
index 2c9520e..74c6c8f 100644
--- a/gap/gap_story_dialog.c
+++ b/gap/gap_story_dialog.c
@@ -5596,7 +5596,7 @@ p_menu_win_render_properties_cb (GtkWidget *widget, GapStbMainGlobalParams *sgpp
   argv[l_ii].constraint = TRUE;
   argv[l_ii].label_txt = _("Resource Loginterval:");
   argv[l_ii].help_txt  = _("Value 0 turns off resource logging to stdout. "
-                           "Value n logs current resource usage afte each n processed frames to stdout "
+                           "Value n logs current resource usage after each n processed frames to stdout "
                            "(this includes the list of cached images and opened videofiles)");
   argv[l_ii].int_min   = (gint)MIN_RESOURCE_LOG_INTERVAL;
   argv[l_ii].int_max   = (gint)MAX_RESOURCE_LOG_INTERVAL;
@@ -9430,7 +9430,7 @@ p_tabw_master_prop_dialog(GapStbTabWidgets *tabw, gboolean new_flag)
   gap_arr_arg_init(&argv[l_ii], GAP_ARR_WGT_TOGGLE);
   argv[l_ii].constraint = TRUE;
   argv[l_ii].label_txt = _("Track 1 on top:");
-  argv[l_ii].help_txt  = _("ON: video track1 is Foregrond (on top). "
+  argv[l_ii].help_txt  = _("ON: video track1 is Foreground (on top). "
                            "OFF: video track 1 is on Background.");
   argv[l_ii].int_ret   = (gint)stb_dst->master_vtrack1_is_toplayer;
   argv[l_ii].has_default = TRUE;
@@ -9574,7 +9574,7 @@ p_tabw_master_prop_dialog(GapStbTabWidgets *tabw, gboolean new_flag)
   argv[l_ii].label_txt = _("Ext. Transparency Format:");
   argv[l_ii].entry_width = 250;       /* pixel */
   argv[l_ii].help_txt  = _("Format string to provide external transparency in movie clips. "
-                           "(i.e. automatic alpha channel insertation via external frames)"
+                           "(i.e. automatic alpha channel insertion via external frames)"
                            "this string shall contain \%s as placeholder for the basename of a videoclip and 
"
                            "optional \%06d as placeholder for the framenumber.");
   argv[l_ii].text_buf_len = sizeof(l_master_insert_alpha_format);
@@ -9604,7 +9604,7 @@ p_tabw_master_prop_dialog(GapStbTabWidgets *tabw, gboolean new_flag)
   l_ii++;
   gap_arr_arg_init(&argv[l_ii], GAP_ARR_WGT_DEFAULT_BUTTON);
   argv[l_ii].label_txt =  _("Reset");                /* should use GIMP_STOCK_RESET if possible */
-  argv[l_ii].help_txt  = _("Reset parameters to inital values");
+  argv[l_ii].help_txt  = _("Reset parameters to initial values");
 
 
   l_ii++;
diff --git a/gap/gap_story_render_audio.c b/gap/gap_story_render_audio.c
index c3178c4..6883c8a 100644
--- a/gap/gap_story_render_audio.c
+++ b/gap/gap_story_render_audio.c
@@ -1304,7 +1304,7 @@ gap_story_render_audio_new_audiorange_element(GapStoryRenderAudioType  aud_type
                        if(vidhand->status_msg)
                        {
                          g_snprintf(vidhand->status_msg, vidhand->status_msg_len
-                                   , _("converting audio (via external programm)")
+                                   , _("converting audio (via external program)")
                                    );
                        }
                        /* fake some dummy progress */
@@ -1451,7 +1451,7 @@ gap_story_render_audio_new_audiorange_element(GapStoryRenderAudioType  aud_type
                   if(vidhand->status_msg)
                   {
                     g_snprintf(vidhand->status_msg, vidhand->status_msg_len
-                              , _("converting audio (via external programm)")
+                              , _("converting audio (via external program)")
                               );
                   }
                   /* fake some dummy progress */
diff --git a/gap/gap_story_render_processor.c b/gap/gap_story_render_processor.c
index 2b89299..820b173 100644
--- a/gap/gap_story_render_processor.c
+++ b/gap/gap_story_render_processor.c
@@ -486,7 +486,7 @@ static void    p_stb_render_movie_single_processor(GapStbFetchData *gfd
                       , gint32 master_frame_nr
                       , gint32  vid_width
                       , gint32  vid_height);
-static void    p_call_GVA_get_next_frame_andSendReadySignal(VideoPrefetchData *vpre, gint32 
targetFrameNumber);
+static gboolean p_call_GVA_get_next_frame_andSendReadySignal(VideoPrefetchData *vpre, gint32 
targetFrameNumber);
 static void    p_videoPrefetchWorkerThreadFunction (VideoPrefetchData *vpre);
 static gint32  p_getPredictedNextFramenr(gint32 targetFrameNr, GapStoryRenderFrameRangeElem *frn_elem);
 static void    p_stb_render_movie_multiprocessor(GapStbFetchData *gfd
@@ -7546,6 +7546,8 @@ p_stb_render_movie_single_processor(GapStbFetchData *gfd
   GAP_TIMM_GET_FUNCTION_ID(funcId, "p_stb_render_movie_single_processor");
   GAP_TIMM_START_FUNCTION(funcId);
 
+  /* if(gap_debug) { printf("p_stb_render_movie_single_processor START\n"); } */
+
   fcacheFetchResult.isRgb888Result = FALSE;  /* configure fcache for standard fetch as gimp layer */
   fcacheFetchResult.rgbBuffer.data = NULL;
 
@@ -7592,7 +7594,10 @@ p_stb_render_movie_single_processor(GapStbFetchData *gfd
             */
            while(gfd->frn_elem->gvahand->current_seek_nr < gfd->localframe_index)
            {
-             GVA_get_next_frame(gfd->frn_elem->gvahand);
+             if (GVA_get_next_frame(gfd->frn_elem->gvahand) != GVA_RET_OK)
+             {
+               break;
+             }
            }
          }
          else
@@ -7688,7 +7693,7 @@ p_stb_render_movie_single_processor(GapStbFetchData *gfd
  * was read (and is now available in the fcache)
  */
 #ifdef GAP_ENABLE_VIDEOAPI_SUPPORT
-static void
+static gboolean
 p_call_GVA_get_next_frame_andSendReadySignal(VideoPrefetchData *vpre, gint32 targetFrameNumber)
 {
   if(gap_debug)
@@ -7701,7 +7706,19 @@ p_call_GVA_get_next_frame_andSendReadySignal(VideoPrefetchData *vpre, gint32 tar
       );
   }
 
-  GVA_get_next_frame(vpre->gvahand);
+  if(GVA_get_next_frame(vpre->gvahand) != GVA_RET_OK)
+  {
+    if(gap_debug)
+    {
+      printf("p_call_GVA_get_next_frame FAILED on TID:%lld gvahand:%ld targetFrameNumber:%d seek_nr:%d\n"
+      , (long long int)gap_base_get_thread_id()
+      , (long)vpre->gvahand
+      , (int)targetFrameNumber
+      , (int)vpre->gvahand->current_seek_nr
+      );
+    }
+    return (FALSE);
+  }
   GVA_fcache_mutex_lock (vpre->gvahand);
   if (vpre->gvahand->current_frame_nr == targetFrameNumber)
   {
@@ -7717,6 +7734,8 @@ p_call_GVA_get_next_frame_andSendReadySignal(VideoPrefetchData *vpre, gint32 tar
   }
 
   GVA_fcache_mutex_unlock (vpre->gvahand);
+  
+  return (TRUE);
 
 }  /* end p_call_GVA_get_next_frame_andSendReadySignal */
 #endif
@@ -7790,7 +7809,10 @@ p_videoPrefetchWorkerThreadFunction (VideoPrefetchData *vpre)
        */
       while(vpre->gvahand->current_seek_nr <= prefetchFrameNumber)
       {
-        p_call_GVA_get_next_frame_andSendReadySignal(vpre, targetFrameNumber);
+        if (TRUE != p_call_GVA_get_next_frame_andSendReadySignal(vpre, targetFrameNumber))
+        {
+          break;  /* stop on errors or EOF */
+        }
       }
     }
     else
@@ -7829,7 +7851,10 @@ p_videoPrefetchWorkerThreadFunction (VideoPrefetchData *vpre)
                 ,(int)prefetchFrameNumber
                 );
             }
-            p_call_GVA_get_next_frame_andSendReadySignal(vpre, targetFrameNumber);
+            if (TRUE != p_call_GVA_get_next_frame_andSendReadySignal(vpre, targetFrameNumber))
+            {
+              break;  /* stop on errors or EOF */
+            }
         }
       }
       else
@@ -7845,7 +7870,12 @@ p_videoPrefetchWorkerThreadFunction (VideoPrefetchData *vpre)
         GVA_seek_frame(vpre->gvahand, (gdouble)targetFrameNumber, GVA_UPOS_FRAMES);
         while(vpre->gvahand->current_seek_nr <= prefetchFrameNumber)
         {
-          p_call_GVA_get_next_frame_andSendReadySignal(vpre, targetFrameNumber);
+          if (TRUE != p_call_GVA_get_next_frame_andSendReadySignal(vpre, targetFrameNumber))
+          {
+            break;  /* stop on errors or EOF */
+          }
+
+
         }
       }
     }
@@ -7984,6 +8014,8 @@ p_stb_render_movie_multiprocessor(GapStbFetchData *gfd
 
   GAP_TIMM_START_FUNCTION(funcId);
 
+  /* if(gap_debug) { printf("p_stb_render_movie_multiprocessor START\n"); } */
+
   error = NULL;
   targetFrameNumber = gfd->localframe_index; /* this framenumber is required now for processing */
   numProcessors = gap_base_get_numProcessors();
diff --git a/gap/gap_vex_dialog.c b/gap/gap_vex_dialog.c
index ef8cd2a..1cb7a85 100644
--- a/gap/gap_vex_dialog.c
+++ b/gap/gap_vex_dialog.c
@@ -2562,7 +2562,7 @@ gap_vex_dlg_create_mw__main_window (GapVexMainGlobalParams *gpp)
                     (GtkAttachOptions) (GTK_FILL),
                     (GtkAttachOptions) (0), 0, 0);
   gimp_help_set_help_data (checkbutton
-                          , _("On: add trasparency for extracted frames via blubox filter"
+                          , _("On: add transparency for extracted frames via bluebox filter"
                               " (using values of last run in this session)\n"
                               "Off: extract frames 1.1")
                           , NULL);
diff --git a/gap/gap_wr_opacity.c b/gap/gap_wr_opacity.c
index 09949b9..fb9dede 100644
--- a/gap/gap_wr_opacity.c
+++ b/gap/gap_wr_opacity.c
@@ -342,7 +342,7 @@ p_opa_dialog(void)
 
   ii++; gap_arr_arg_init(&argv[ii], GAP_ARR_WGT_OPTIONMENU); ii_mode = ii;
   argv[ii].label_txt = _("Mode:");
-  argv[ii].help_txt  = _("Modes set opacity or change the old opacity value by adding, subtracting or 
multiply by the supplied new value");
+  argv[ii].help_txt  = _("Modes set opacity or change the old opacity value by adding, subtracting or 
multiplying by the supplied new value");
   argv[ii].radio_argc  = VR_MODELIST_SIZE;
   argv[ii].radio_argv = radio_modes;
   argv[ii].radio_ret  = 0;
diff --git a/vid_enc_ffmpeg/gap_enc_ffmpeg_main.c b/vid_enc_ffmpeg/gap_enc_ffmpeg_main.c
index d88d51c..5553c41 100644
--- a/vid_enc_ffmpeg/gap_enc_ffmpeg_main.c
+++ b/vid_enc_ffmpeg/gap_enc_ffmpeg_main.c
@@ -1937,7 +1937,7 @@ p_open_audio_input_files(t_awk_array *awp, GapGveFFMpegGlobalParams *gpp)
           else
           {
             g_message(_("The file: %s\n"
-                      "has unexpect content that will be ignored.\n"
+                      "has unexpected content that will be ignored.\n"
                       "You should specify an audio file in RIFF WAVE fileformat,\n"
                       "or a textfile containing filenames of such audio files")
                      , gpp->val.audioname1



[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]