summaryrefslogtreecommitdiff
path: root/TAO/orbsvcs/tests/AVStreams/mpeg/source/mpeg_client/para.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'TAO/orbsvcs/tests/AVStreams/mpeg/source/mpeg_client/para.cpp')
-rw-r--r--TAO/orbsvcs/tests/AVStreams/mpeg/source/mpeg_client/para.cpp380
1 files changed, 380 insertions, 0 deletions
diff --git a/TAO/orbsvcs/tests/AVStreams/mpeg/source/mpeg_client/para.cpp b/TAO/orbsvcs/tests/AVStreams/mpeg/source/mpeg_client/para.cpp
new file mode 100644
index 00000000000..bc5a9737f2a
--- /dev/null
+++ b/TAO/orbsvcs/tests/AVStreams/mpeg/source/mpeg_client/para.cpp
@@ -0,0 +1,380 @@
+/* $Id$ */
+
+/* Copyright (c) 1995 Oregon Graduate Institute of Science and Technology
+ * P.O.Box 91000-1000, Portland, OR 97291, USA;
+ *
+ * Permission to use, copy, modify, distribute, and sell this software and its
+ * documentation for any purpose is hereby granted without fee, provided that
+ * the above copyright notice appear in all copies and that both that
+ * copyright notice and this permission notice appear in supporting
+ * documentation, and that the name of O.G.I. not be used in advertising or
+ * publicity pertaining to distribution of the software without specific,
+ * written prior permission. O.G.I. makes no representations about the
+ * suitability of this software for any purpose. It is provided "as is"
+ * without express or implied warranty.
+ *
+ * O.G.I. DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING
+ * ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL
+ * O.G.I. BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY
+ * DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN
+ * AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
+ * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
+ *
+ * Author: Shanwei Cen
+ * Department of Computer Science and Engineering
+ * email: scen@cse.ogi.edu
+ */
+
+#include "ace/OS.h"
+#include <stdio.h>
+#include <errno.h>
+#include <stdlib.h>
+#include "video.h"
+#include <X11/Intrinsic.h>
+#include <Xm/DialogS.h>
+#include <Xm/List.h>
+#include <Xm/Frame.h>
+#include <Xm/PushB.h>
+#include <Xm/Form.h>
+#include <Xm/Text.h>
+#include <Xm/TextF.h>
+#include <Xm/Label.h>
+#include "include/common.h"
+#include "newproto.h"
+#include "global.h"
+
+ACE_RCSID(mpeg_client, para, "$Id$")
+
+#define NUM_LIST_ITEMS 25
+#define PARAMETER_FILE "~/.vcr/vcrParameters"
+#define BANNER "Virtual VCR Parameter File, version 2.0 ** Do not Edit **"
+#ifdef XmFONTLIST_DEFAULT_TAG
+#define XmStringTag XmFONTLIST_DEFAULT_TAG
+#else
+#define XmStringTag XmSTRING_DEFAULT_CHARSET
+#endif
+#define STRING_SIZE 64
+#define ITEMS sizeof(shared->config)/4
+
+static Widget parashell, wparalist, wparafield;
+
+static int * config;
+static float *fconfig;
+
+static struct
+{
+ char * title;
+ int float_tag; /* 0 - integer, 1 - floating point */
+}
+para[] =
+{
+ {"Real time (audio on)(tag)", 0},
+ {"Video max frames-per-second", 0},
+ {"Audio max sampels-per-second", 0},
+ {"FF frames-per-second", 0},
+ {"Rewind frames-per-second", 0},
+ {"Feedback delay (msec)", 0},
+ {"Audio output mask", 0},
+ {"Audio_para.encodeType", 0},
+ {"Audio_para.channels", 0},
+ {"Audio_para.samplesPerSecond", 0},
+ {"Audio_para.bytesPerSamples", 0},
+ {"Audio timer interval (millisec)", 0},
+ {"Audio buffered intervals", 0},
+ {"Frames per audio play", 0},
+ {"Audio forward (samples)", 0},
+ {"VS work-ahead (milliseconds)", 0},
+ {"frame rate limit (fps, float)", 1},
+ {"collect statistics(tag)", 0},
+ {"collect video structure info(tag)", 0},
+ {"Sync effective(tag)", 0},
+ {"QoS effective(tag)", 0},
+ {"Audio offset(samples)", 0},
+ {"Filter parameter(1/R or nsamples)", 0},
+ {"Max send pattern frames", 0},
+ {"Reliable byte-stream audio (tag)", 0},
+ {"Reliable byte-stream video (tag)", 0},
+ {"Verbose message(tag)", 0},
+ {"", 0} /* this empty string is needed for testing the size of para */
+};
+
+#define Fgets(s) {if (feof(fp) || fgets(s, STRING_SIZE, fp) == NULL) break; s[strlen(s)-1] = 0; }
+
+#define Fputs(s) {fputs(s, fp); fputc('\n', fp);}
+
+static void InitBuf(void)
+{
+ FILE * fp;
+ char buf[256];
+ unsigned int i;
+
+ config = (int *)&(shared->config);
+ fconfig = (float *)&(shared->config);
+
+ get_full_path(PARAMETER_FILE, buf, 256);
+ fp = fopen(buf, "r");
+ if (fp == NULL)
+ {
+ fprintf(stderr, "Warning: %s not found, use default parameter value\n",
+ PARAMETER_FILE);
+ InitBuf_exit1:
+ return;
+ }
+ if (fgets(buf, 100, fp) == NULL)
+ {
+ fclose(fp);
+ goto InitBuf_exit1;
+ }
+ buf[strlen(buf)-1] = 0;
+ if (ACE_OS::strcmp (buf, BANNER))
+ {
+ fprintf(stderr, "BANNER in %s not expected, use default parameter value\n",
+ PARAMETER_FILE);
+ fclose(fp);
+ goto InitBuf_exit1;
+ }
+ for(i = 0; i < ITEMS; i++)
+ {
+ Fgets(buf);
+ if (para[i].float_tag)
+ sscanf(buf, "%f", &fconfig[i]);
+ else
+ sscanf(buf, "%d", &config[i]);
+ }
+ fclose(fp);
+}
+
+static void SaveBuf(void)
+{
+ int i;
+ FILE * fp;
+ char buf[256];
+ get_full_path(PARAMETER_FILE, buf, 256);
+ fp = fopen(buf, "w");
+ if (fp == NULL)
+ {
+ fprintf(stderr, "Fail to open %s for saving para", buf);
+ ACE_OS::perror ("");
+ return;
+ }
+ Fputs(BANNER);
+ for (i = 0; i < (int)ITEMS; i++)
+ if (para[i].float_tag)
+ fprintf(fp, "%f\n", fconfig[i]);
+ else
+ fprintf(fp, "%d\n", config[i]);
+ fclose(fp);
+}
+
+
+static int curListPos(void)
+{
+ int * poses, count;
+
+ if (XmListGetSelectedPos(wparalist, &poses, &count))
+ {
+ count = poses[0];
+ XtFree((char*)poses);
+ /*
+ fprintf(stderr, "curListPos: current pos = %d\n", count);
+ */
+ return count - 1;
+ }
+ return -1;
+}
+
+static void modifyCB(Widget w, XtPointer closure, XtPointer call_data)
+{
+ int i;
+ ACE_UNUSED_ARG(w); ACE_UNUSED_ARG(closure); ACE_UNUSED_ARG(call_data);
+ XmString item;
+ char buf[100], * valptr;
+ i = curListPos();
+ if (i == -1) { beep(); return;}
+ valptr = XmTextGetString(wparafield);
+ if (para[i].float_tag)
+ sscanf(valptr, "%f", &fconfig[i]);
+ else
+ sscanf(valptr, "%d", &config[i]);
+ XtFree(valptr);
+ if (para[i].float_tag)
+ sprintf(buf, "%s: %f", para[i].title, fconfig[i]);
+ else
+ sprintf(buf, "%s: %d", para[i].title, config[i]);
+ item = (XmString)XmStringCreateLtoR(buf, XmStringTag);
+ XmListReplaceItemsPos(wparalist, &item, 1, i+1);
+ XmListSelectPos(wparalist, i+1, 0);
+ XmStringFree(item);
+ SaveBuf();
+ /*
+ XtManageChild(parashell);
+ */
+ return;
+}
+
+static void dismissCB(Widget W, XtPointer closure, XtPointer call_data)
+{
+
+ XtUnrealizeWidget(parashell);
+ ACE_UNUSED_ARG(W); ACE_UNUSED_ARG(closure); ACE_UNUSED_ARG(call_data);
+ /*
+ XtUnmanageChild(parashell);
+ */
+}
+
+Widget CreateParameterWindow(Widget parent)
+{
+ ACE_UNUSED_ARG(parent);
+ Arg args[20];
+ int n;
+ Widget wform, frame1, frame2,
+ wmodify, wdismiss;
+ XmFontList fontlist;
+ XFontStruct * font;
+ XmStringCharSet cset = XmSTRING_DEFAULT_CHARSET;
+
+ InitBuf();
+
+ n = 0;
+ XtSetArg(args[n], XmNtitle, "Virtual VCR Parameter List"); n++;
+ XtSetArg(args[n], XmNdeleteResponse, XmDO_NOTHING);n++;
+ XtSetArg(args[n], XmNkeyboardFocusPolicy, XmPOINTER); n++;
+ XtSetArg(args[n], XmNwidth, 350); n++;
+ XtSetArg(args[n], XmNheight, 400); n++;
+ XtSetArg(args[n], XmNminWidth, 250); n++;
+ XtSetArg(args[n], XmNminHeight, 150); n++;
+
+ parashell = XtAppCreateShell("Parameter List", "virtual_vcr",
+ topLevelShellWidgetClass, display, args, n);
+ /*
+ parashell = XmCreateDialogShell(parent, "virtual_vcr", args, n);
+ */
+
+ font = XLoadQueryFont (XtDisplay (parashell), "courB14");
+ fontlist = XmFontListCreate (font, cset);
+
+ n = 0;
+ XtSetArg(args[n], XmNtitle, "Virtual Parameter List"); n++;
+ wform = XmCreateForm(parashell, "Parameters", args, n);
+ XtManageChild(wform);
+ /*
+ parashell = wform = XmCreateForm(parashell, "Parameters", args, n);
+ */
+
+ n = 0;
+ wmodify = XmCreatePushButton (wform, "Update", args, n);
+ XtManageChild(wmodify);
+ XtAddCallback (wmodify, XmNactivateCallback, (XtCallbackProc)modifyCB, NULL);
+ wdismiss = XmCreatePushButton (wform, "Dismiss", args, n);
+ XtManageChild(wdismiss);
+ XtAddCallback (wdismiss, XmNactivateCallback, (XtCallbackProc)dismissCB, NULL);
+
+ n=0;
+ XtSetArg (args[n], XmNwidth, 60); n++;
+ XtSetArg (args[n], XmNheight, 28); n++;
+ XtSetArg (args[n], XmNleftOffset, 20); n++;
+ XtSetArg (args[n], XmNbottomOffset, 5); n++;
+ XtSetArg (args[n], XmNleftAttachment, XmATTACH_FORM); n++;
+ XtSetArg (args[n], XmNbottomAttachment, XmATTACH_FORM); n++;
+ XtSetValues (wmodify, args, n);
+
+ n = 0;
+ XtSetArg(args[n], XmNcolumns, 10); n++;
+ XtSetArg (args[n], XmNleftOffset, 90); n++;
+ XtSetArg (args[n], XmNbottomOffset, 5); n++;
+ XtSetArg (args[n], XmNleftAttachment, XmATTACH_FORM); n++;
+ XtSetArg (args[n], XmNbottomAttachment, XmATTACH_FORM); n++;
+ wparafield = XmCreateTextField(wform, "updata_text", args, n);
+ XtManageChild(wparafield);
+
+ n=0;
+ XtSetArg (args[n], XmNwidth, 60); n++;
+ XtSetArg (args[n], XmNheight, 28); n++;
+ XtSetArg (args[n], XmNrightOffset, 20); n++;
+ XtSetArg (args[n], XmNbottomOffset, 5); n++;
+ XtSetArg (args[n], XmNrightAttachment, XmATTACH_FORM); n++;
+ XtSetArg (args[n], XmNbottomAttachment, XmATTACH_FORM); n++;
+ XtSetValues (wdismiss, args, n);
+
+ n = 0;
+ XtSetArg (args[n], XmNtopOffset, 5); n++;
+ XtSetArg (args[n], XmNleftOffset, 5); n++;
+ XtSetArg (args[n], XmNbottomOffset, 45); n++;
+ XtSetArg (args[n], XmNrightOffset, 5); n++;
+ XtSetArg (args[n], XmNtopAttachment, XmATTACH_FORM); n++;
+ XtSetArg (args[n], XmNleftAttachment, XmATTACH_FORM); n++;
+ XtSetArg (args[n], XmNbottomAttachment, XmATTACH_FORM); n++;
+ XtSetArg (args[n], XmNrightAttachment, XmATTACH_FORM); n++;
+ XtSetArg(args[n], XmNfontList, fontlist); n++;
+ XtSetArg(args[n], XmNvisibleItemCount, NUM_LIST_ITEMS); n++;
+
+ {
+ int items;
+ XmString * item;
+ int i;
+ /*
+ fprintf(stderr, "Total parameter items: %d\n", items);
+ */
+ for (items = 0; para[items].title[0] != 0; items ++);
+ if (items > (int)ITEMS)
+ items = ITEMS;
+ else if (items < (int)ITEMS)
+ {
+ fprintf(stderr, "Error in para.c: fewer titles than parameters, %d out of %d.\n",
+ items, ITEMS);
+ ACE_OS::exit (1);
+ }
+ item = (XmString *)ACE_OS::malloc(sizeof(*item) * items);
+ if (item == NULL)
+ {
+ ACE_OS::perror ("UI allocate parameter list item(XmString)");
+ ACE_OS::exit (1);
+ }
+ for (i = 0; i < items; i ++)
+ {
+ char buf[100];
+ if (para[i].float_tag)
+ sprintf(buf, "%s: %f", para[i].title, fconfig[i]);
+ else{
+ sprintf(buf, "%s: %d", para[i].title, config[i]);
+ }
+ item[i] = (XmString)XmStringCreateLtoR(buf, XmStringTag);
+ }
+ XtSetArg(args[n], XmNitems, item); n++;
+ XtSetArg(args[n], XmNitemCount, items); n++;
+ XtSetArg(args[n], XmNselectedItems, item); n++;
+ XtSetArg(args[n], XmNselectedItemCount, 1); n++;
+ wparalist = XmCreateScrolledList(wform, "ParameterList", args, n);
+ XtManageChild(wparalist);
+ for (i = 0; i < items; i++)
+ XmStringFree(item[i]);
+ ACE_OS::free (item);
+ }
+// XmFontListFree(fontlist);
+
+ n=0;
+ XtSetArg (args[n], XmNtopOffset, 5); n++;
+ XtSetArg (args[n], XmNleftOffset, 5); n++;
+ XtSetArg (args[n], XmNbottomOffset, 45); n++;
+ XtSetArg (args[n], XmNrightOffset, 5); n++;
+ XtSetArg (args[n], XmNtopAttachment, XmATTACH_FORM); n++;
+ XtSetArg (args[n], XmNleftAttachment, XmATTACH_FORM); n++;
+ XtSetArg (args[n], XmNbottomAttachment, XmATTACH_FORM); n++;
+ XtSetArg (args[n], XmNrightAttachment, XmATTACH_FORM); n++;
+ frame2 = XmCreateFrame (wform, "frame", args, n);
+ XtManageChild(frame2);
+
+ n=0;
+ XtSetArg (args[n], XmNtopOffset, 0); n++;
+ XtSetArg (args[n], XmNleftOffset, 0); n++;
+ XtSetArg (args[n], XmNbottomOffset, 0); n++;
+ XtSetArg (args[n], XmNrightOffset, 0); n++;
+ XtSetArg (args[n], XmNtopAttachment, XmATTACH_FORM); n++;
+ XtSetArg (args[n], XmNleftAttachment, XmATTACH_FORM); n++;
+ XtSetArg (args[n], XmNbottomAttachment, XmATTACH_FORM); n++;
+ XtSetArg (args[n], XmNrightAttachment, XmATTACH_FORM); n++;
+ frame1 = XmCreateFrame (wform, "frame", args, n);
+ XtManageChild(frame1);
+
+ return parashell;
+}