--- mintv/mintv.cpp 2003/03/01 15:23:26 1.3 +++ mintv/mintv.cpp 2003/03/21 14:59:19 1.6 @@ -22,6 +22,7 @@ #include #include #include +#include #include #include #include @@ -31,17 +32,17 @@ static bool ntsc = false; const int PAL_WIDTH = 384; const int PAL_HEIGHT = 288; -const int NTSC_WIDTH = 320; +const int NTSC_WIDTH = 360; const int NTSC_HEIGHT = 240; -static int grab_width, grab_height; +static int grab_width = -1, grab_height; static int image_width, image_height; static int win_width, win_height; -const int PAL_FPS = 50; -const int NTSC_FPS = 60; +const double PAL_FPS = 50.0; +const double NTSC_FPS = 59.94; -static int fps; +static double fps; static int brightness = 50, contrast = 50, color = 50; @@ -284,7 +285,7 @@ static Boolean work_proc(XtPointer clien now = GetTicks_usec(); uint64 elapsed = now - prev; - int64 delay = 1000000 / fps - (now - prev); + int64 delay = int64(1000000.0 / fps) - (now - prev); #if LOGGING fprintf(log, "elapsed %Ld usec, delay %Ld usec\n", elapsed, delay); #endif @@ -321,6 +322,7 @@ int main(int argc, char **argv) {"help", 0, 0, 'h'}, {"ntsc", 0, 0, 'n'}, {"port", 1, 0, 'p'}, + {"width", 1, 0, 'w'}, {NULL, 0, 0, 0} }; @@ -331,7 +333,7 @@ int main(int argc, char **argv) // Parse options for (;;) { int c; - if ((c = getopt_long(argc, argv, "hnp:", long_opts,NULL)) == -1) + if ((c = getopt_long(argc, argv, "hnp:w:", long_opts,NULL)) == -1) break; switch (c) { @@ -343,14 +345,18 @@ int main(int argc, char **argv) case 'p': port = atoi(optarg); break; + case 'w': + grab_width = atoi(optarg); + break; case 'h': default: fprintf(stderr, "50/60Hz video display application\n\n" "Options:\n" - " -h | --help this text\n" - " -n | --ntsc NTSC mode\n" - " -p | --port n Xv output port\n\n" + " -h | --help this text\n" + " -n | --ntsc NTSC mode\n" + " -p | --port n Xv output port\n" + " -w | --width n image width\n\n" "Keyboard commands:\n" " q quit\n" " 1/2 select channel\n" @@ -371,6 +377,7 @@ int main(int argc, char **argv) XtOverrideTranslations(app_shell, XtParseTranslationTable( "WM_PROTOCOLS: quit()\n" "q: quit()\n" + "Escape: quit()\n" "1: select_channel_1()\n" "2: select_channel_2()\n" "KP_7: inc_brightness()\n" @@ -431,11 +438,13 @@ port_found: // Set grab and window dimensions if (ntsc) { - grab_width = NTSC_WIDTH; + if (grab_width == -1) + grab_width = NTSC_WIDTH; grab_height = NTSC_HEIGHT; fps = NTSC_FPS; } else { - grab_width = PAL_WIDTH; + if (grab_width == -1) + grab_width = PAL_WIDTH; grab_height = PAL_HEIGHT; fps = PAL_FPS; } @@ -454,11 +463,14 @@ port_found: NULL ); XtRealizeWidget(app_shell); + Cursor null_cursor = XCreateFontCursor(dpy, XC_left_ptr); + XDefineCursor(dpy, XtWindow(app_shell), null_cursor); XtVaSetValues(app_shell, XtNtitle, "mintv", + XtNinput, True, NULL ); - XSetWMProtocols(XtDisplay(app_shell), XtWindow(app_shell), &wm, 1); + XSetWMProtocols(dpy, XtWindow(app_shell), &wm, 1); gc = XCreateGC(dpy, XtWindow(video), 0, NULL); // Set image format