00001 #include "vidfpl_menus.h"
00002
00003 #include <vcl_cstdlib.h>
00004 #include <vgui/vgui.h>
00005 #include <vgui/vgui_dialog.h>
00006 #include <vgui/vgui_key.h>
00007 #include <vgui/vgui_menu.h>
00008 #include <vvid/vvid_file_manager.h>
00009
00010 #ifdef HAS_MPEG2
00011 # include <vidl_vil1/vidl_vil1_mpegcodec.h>
00012 # include <vidl_vil1/vidl_vil1_io.h>
00013
00014
00015
00016
00017
00018
00019 static void
00020 vidfpl_load_mpegcodec_callback(vidl_vil1_codec * vc)
00021 {
00022 vgui_dialog dialog( "MPEG player setup");
00023
00024 bool grey_scale = false;
00025 bool demux_video = true;
00026 vcl_string pid = "0x00";
00027 int numframes = -1;
00028
00029 dialog.checkbox("gray scale",grey_scale);
00030 dialog.checkbox("demux",demux_video);
00031 dialog.field("pid",pid);
00032 dialog.field("total frames. if not known, leave it.",numframes);
00033
00034 if ( !dialog.ask())
00035 {
00036 vcl_cout << "vidfpl_load_mpegcodec_callback. did not initialize codec.\n";
00037 }
00038
00039 vidl_vil1_mpegcodec * mpegcodec = vc->castto_vidl_vil1_mpegcodec();
00040 if (!mpegcodec) return;
00041
00042 mpegcodec->set_grey_scale(grey_scale);
00043 if (demux_video) mpegcodec->set_demux_video();
00044 mpegcodec->set_pid(pid.c_str());
00045 mpegcodec->set_number_frames(numframes);
00046 mpegcodec->init();
00047 }
00048
00049 #endif // HAS_MPEG2
00050
00051
00052 void vidfpl_menus::load_video_callback()
00053 {
00054 #ifdef HAS_MPEG2
00055
00056 vidl_vil1_io::load_mpegcodec_callback = &vidfpl_load_mpegcodec_callback;
00057 #endif
00058 vvid_file_manager::instance()->load_video_file();
00059 }
00060
00061 void vidfpl_menus::pause_video_callback()
00062 {
00063 vvid_file_manager::instance()->pause_video();
00064 }
00065
00066 void vidfpl_menus::next_frame_callback()
00067 {
00068 vvid_file_manager::instance()->next_frame();
00069 }
00070
00071 void vidfpl_menus::prev_frame_callback()
00072 {
00073 vvid_file_manager::instance()->prev_frame();
00074 }
00075
00076
00077 void vidfpl_menus::start_frame_callback()
00078 {
00079 vvid_file_manager::instance()->start_frame();
00080 }
00081
00082 void vidfpl_menus::end_frame_callback()
00083 {
00084 vvid_file_manager::instance()->end_frame();
00085 }
00086
00087 void vidfpl_menus::play_video_callback()
00088 {
00089 vvid_file_manager::instance()->play_video();
00090 }
00091
00092 void vidfpl_menus::stop_video_callback()
00093 {
00094 vvid_file_manager::instance()->stop_video();
00095 }
00096
00097 void vidfpl_menus::easy2D_tableau_demo_callback()
00098 {
00099 vvid_file_manager::instance()->easy2D_tableau_demo();
00100 }
00101
00102 void vidfpl_menus::no_op_callback()
00103 {
00104 vvid_file_manager::instance()->no_op();
00105 }
00106
00107 void vidfpl_menus::difference_frames_callback()
00108 {
00109 vvid_file_manager::instance()->difference_frames();
00110 }
00111
00112 void vidfpl_menus::compute_motion_callback()
00113 {
00114 vvid_file_manager::instance()->compute_motion();
00115 }
00116
00117 void vidfpl_menus::compute_lucas_kanade_callback()
00118 {
00119 vvid_file_manager::instance()->compute_lucas_kanade();
00120 }
00121
00122 void vidfpl_menus::compute_harris_corners_callback()
00123 {
00124 vvid_file_manager::instance()->compute_harris_corners();
00125 }
00126
00127 void vidfpl_menus::compute_vd_edges_callback()
00128 {
00129 vvid_file_manager::instance()->compute_vd_edges();
00130 }
00131
00132 void vidfpl_menus::compute_line_fit_callback()
00133 {
00134 vvid_file_manager::instance()->compute_line_fit();
00135 }
00136
00137 void vidfpl_menus::compute_grid_match_callback()
00138 {
00139 vvid_file_manager::instance()->compute_grid_match();
00140 }
00141
00142 void vidfpl_menus::compute_corr_tracking_callback()
00143 {
00144 vvid_file_manager::instance()->compute_corr_tracking();
00145 }
00146
00147 void vidfpl_menus::compute_info_tracking_callback()
00148 {
00149 vvid_file_manager::instance()->compute_info_tracking();
00150 }
00151
00152 void vidfpl_menus::display_poly_track_callback()
00153 {
00154 vvid_file_manager::instance()->display_poly_track();
00155 }
00156
00157 void vidfpl_menus::display_art_model_track_callback()
00158 {
00159 vvid_file_manager::instance()->display_art_model_track();
00160 }
00161
00162 void vidfpl_menus::start_save_display_callback()
00163 {
00164 vvid_file_manager::instance()->start_save_display();
00165 }
00166
00167 void vidfpl_menus::end_save_display_callback()
00168 {
00169 vvid_file_manager::instance()->end_save_display();
00170 }
00171
00172 void vidfpl_menus::generate_basis_sequence_callback()
00173 {
00174 vvid_file_manager::instance()->generate_basis_sequence();
00175 }
00176
00177 void vidfpl_menus::compute_fourier_transform_callback()
00178 {
00179 vvid_file_manager::instance()->compute_fourier_transform();
00180 }
00181
00182 void vidfpl_menus::spatial_filter_callback()
00183 {
00184 vvid_file_manager::instance()->spatial_filter();
00185 }
00186
00187 void vidfpl_menus::create_box_callback()
00188 {
00189 vvid_file_manager::instance()->create_box();
00190 }
00191
00192 void vidfpl_menus::create_polygon_callback()
00193 {
00194 vvid_file_manager::instance()->create_polygon();
00195 }
00196
00197 void vidfpl_menus::create_stem_callback()
00198 {
00199 vvid_file_manager::instance()->create_stem();
00200 }
00201
00202 void vidfpl_menus::create_long_arm_tip_callback()
00203 {
00204 vvid_file_manager::instance()->create_long_arm_tip();
00205 }
00206
00207 void vidfpl_menus::create_short_arm_tip_callback()
00208 {
00209 vvid_file_manager::instance()->create_short_arm_tip();
00210 }
00211
00212 void vidfpl_menus::create_background_model_callback()
00213 {
00214 vvid_file_manager::instance()->create_background_model();
00215 }
00216
00217
00218 void vidfpl_menus::exercise_art_model_callback()
00219 {
00220 vvid_file_manager::instance()->exercise_art_model();
00221 }
00222
00223 void vidfpl_menus::track_art_model_callback()
00224 {
00225 vvid_file_manager::instance()->track_art_model();
00226 }
00227
00228 void vidfpl_menus::display_ihs_callback()
00229 {
00230 vvid_file_manager::instance()->display_ihs();
00231 }
00232
00233 void vidfpl_menus::save_frame_callback()
00234 {
00235 vvid_file_manager::instance()->save_frame();
00236 }
00237
00238 void vidfpl_menus::save_half_res_callback()
00239 {
00240 vvid_file_manager::instance()->save_half_res();
00241 }
00242
00243
00244 void vidfpl_menus::display_tracked_hist_data_callback()
00245 {
00246 vvid_file_manager::instance()->display_tracked_hist_data();
00247 }
00248
00249 void vidfpl_menus::capture_feature_data_callback()
00250 {
00251 vvid_file_manager::instance()->capture_feature_data();
00252 }
00253
00254 void vidfpl_menus::capture_snippets_callback()
00255 {
00256 vvid_file_manager::instance()->capture_snippets();
00257 }
00258
00259 void vidfpl_menus::quit_callback()
00260 {
00261 vcl_exit(1);
00262 }
00263
00264
00265
00266 vgui_menu vidfpl_menus::get_menu()
00267 {
00268 vgui_menu menubar;
00269 vgui_menu menufile;
00270 vgui_menu menuview;
00271 vgui_menu menuedit;
00272 vgui_menu menutrack;
00273 vgui_menu menuprocess;
00274 vgui_menu menudebug;
00275
00276
00277 menufile.add( "Load", load_video_callback);
00278 menufile.add( "Quit", quit_callback,(vgui_key)'q', vgui_CTRL);
00279 menufile.add( "Start Save Display", start_save_display_callback);
00280 menufile.add( "End Save Display", end_save_display_callback,
00281 (vgui_key)'e', vgui_CTRL);
00282 menufile.add( "Save Current Frame", save_frame_callback);
00283 menufile.add( "Save Half Resolution Video", save_half_res_callback);
00284 menufile.add( "Capture Snippets from Track", capture_snippets_callback);
00285
00286
00287
00288 menuview.add( "Start Frame", start_frame_callback);
00289 menuview.add( "End Frame", end_frame_callback);
00290 menuview.add( "Play", play_video_callback);
00291 menuview.add( "Pause", pause_video_callback,(vgui_key)'p', vgui_CTRL);
00292 menuview.add( "Next", next_frame_callback,(vgui_key)'f', vgui_CTRL);
00293 menuview.add( "Prev", prev_frame_callback,(vgui_key)'b', vgui_CTRL);
00294 menuview.add( "Stop", stop_video_callback,(vgui_key)'s', vgui_CTRL);
00295 menuview.add( "Display Track", display_poly_track_callback);
00296 menuview.add( "Display Histogram Track Image",
00297 display_tracked_hist_data_callback);
00298
00299 menuview.add( "Display Art Model Track", display_art_model_track_callback);
00300
00301
00302 menuedit.add( "Create Box", create_box_callback);
00303 menuedit.add( "Create Polygon", create_polygon_callback,(vgui_key)'a', vgui_CTRL);
00304
00305 menuedit.add( "Create Background Model", create_background_model_callback,
00306 (vgui_key)'4', vgui_CTRL);
00307
00308 menuedit.add( "Create Stem", create_stem_callback,
00309 (vgui_key)'1', vgui_CTRL);
00310 menuedit.add( "Create Long Arm Tip", create_long_arm_tip_callback,
00311 (vgui_key)'2', vgui_CTRL);
00312 menuedit.add( "Create Short Arm Tip", create_short_arm_tip_callback,
00313 (vgui_key)'3', vgui_CTRL);
00314
00315
00316 menuprocess.add( "No Op", no_op_callback);
00317 menuprocess.add( "Frame Difference", difference_frames_callback);
00318 menuprocess.add( "Compute Motion", compute_motion_callback);
00319 menuprocess.add( "Compute Lucas-Kanade Flow", compute_lucas_kanade_callback);
00320 menuprocess.add( "Compute Harris Corners", compute_harris_corners_callback);
00321 menuprocess.add( "Compute VD Edges", compute_vd_edges_callback);
00322 menuprocess.add( "Compute Line Fit", compute_line_fit_callback);
00323 menuprocess.add( "Compute Grid Match", compute_grid_match_callback);
00324 menuprocess.add( "Generate Basis ", generate_basis_sequence_callback);
00325 menuprocess.add( "Compute Fourier Transform ",
00326 compute_fourier_transform_callback);
00327 menuprocess.add( "Spatial Filter ", spatial_filter_callback);
00328 menuprocess.add( "Capture Feature Data ", capture_feature_data_callback);
00329
00330
00331 menutrack.add( "Compute Corr Tracking", compute_corr_tracking_callback);
00332 menutrack.add( "Compute Info Tracking", compute_info_tracking_callback);
00333 menutrack.add( "Exercise Art Model", exercise_art_model_callback);
00334 menutrack.add( "Track Art Model", track_art_model_callback);
00335
00336
00337 menudebug.add( "Display IHS", display_ihs_callback);
00338 menudebug.add( "easy2D Demo", easy2D_tableau_demo_callback);
00339
00340
00341 menubar.add( "File", menufile);
00342 menubar.add( "View", menuview);
00343 menubar.add( "Edit", menuedit);
00344 menubar.add( "Track", menutrack);
00345 menubar.add( "Process", menuprocess);
00346 menubar.add( "Debug", menudebug);
00347 return menubar;
00348 }