https://wiki.preterhuman.net/index.php?title=Testij.c&feed=atom&action=history
Testij.c - Revision history
2024-03-29T09:25:35Z
Revision history for this page on the wiki
MediaWiki 1.35.0
https://wiki.preterhuman.net/index.php?title=Testij.c&diff=16865&oldid=prev
Netfreak: Created page with "<pre> /* testij.c - test device-independent input jacks for VL */ #include "ij.h" #include <stdio.h> #include <stdlib.h> #include <assert.h> #include <stdarg.h> /* Utili..."
2020-09-01T17:43:07Z
<p>Created page with "<pre> <span dir="auto"><span class="autocomment">testij.c - test device-independent input jacks for VL: </span> #include "ij.h" #include <stdio.h> #include <stdlib.h> #include <assert.h> #include <stdarg.h> /* Utili..."</span></p>
<p><b>New page</b></p><div><pre><br />
/*<br />
testij.c - test device-independent input jacks for VL<br />
*/<br />
<br />
#include "ij.h"<br />
<br />
#include <stdio.h><br />
#include <stdlib.h><br />
#include <assert.h><br />
#include <stdarg.h><br />
<br />
/* Utility Routines ---------------------------------------------------- */<br />
<br />
void vlerror_exit(char *format, ...)<br />
{<br />
va_list ap;<br />
<br />
va_start(ap, format);<br />
vfprintf( stderr, format, ap );<br />
va_end(ap);<br />
<br />
if (vlErrno != 0)<br />
fprintf( stderr, " (vlErrno=%s)", vlStrError(vlErrno) );<br />
<br />
fprintf( stderr, "\n" );<br />
exit(2);<br />
}<br />
<br />
/* main ------------------------------------------------------------- */<br />
<br />
int trypath2(VLServer svr, IJhandle h, int idx, <br />
int *ret_idx, int *ret_node_number,<br />
VLNode drain_node)<br />
{<br />
int node_number = ijGetNodeNumber(h, idx);<br />
VLDev device = ijGetVLDev(h);<br />
VLNode source_node = vlGetNode(svr, VL_SRC, VL_VIDEO, node_number);<br />
VLPath path = vlCreatePath(svr, device, source_node, drain_node);<br />
<br />
if (node_number < 0 || source_node < 0 || path < 0) <br />
return FALSE;<br />
<br />
if (vlSetupPaths(svr, (VLPathList)&path, 1, VL_SHARE, VL_SHARE) < 0)<br />
{ vlDestroyPath(svr, path); return FALSE; }<br />
<br />
if (ijConfigurePath(h, idx, <br />
source_node, drain_node, path, <br />
node_number, ret_idx))<br />
{ vlDestroyPath(svr, path); return FALSE; }<br />
<br />
if (ret_node_number) *ret_node_number = node_number;<br />
<br />
vlDestroyPath(svr, path);<br />
return TRUE;<br />
}<br />
<br />
int trypath(VLServer svr, IJhandle h, int idx, <br />
VLNode drain_node)<br />
{<br />
int ret_idx;<br />
int ret_node_number;<br />
<br />
if (!trypath2(svr, h, idx, &ret_idx, &ret_node_number, drain_node))<br />
{<br />
if (idx == VL_ANY)<br />
printf("XXX attempt to open default jack on device [%s] FAILED\n",<br />
ijGetDeviceName(h));<br />
else<br />
printf("XXX attempt to open jack %d on device [%s] FAILED\n",<br />
idx, ijGetDeviceName(h));<br />
return FALSE;<br />
}<br />
else<br />
{<br />
if (idx == VL_ANY)<br />
printf(" opening default jack ");<br />
else<br />
printf(" opening jack %d ", idx);<br />
printf(": idx=%d, node_number=%d\n",<br />
ret_idx, ret_node_number);<br />
return TRUE;<br />
}<br />
}<br />
<br />
void main(int argc, char **argv)<br />
{<br />
int dv, j;<br />
VLDevList devlist;<br />
IJhandle h;<br />
VLServer vlServer;<br />
VLNode drain_node;<br />
<br />
if (NULL == (vlServer=vlOpenVideo("")))<br />
vlerror_exit("error opening video");<br />
<br />
if (vlGetDeviceList(vlServer, &devlist) < 0)<br />
vlerror_exit("error getting device list");<br />
<br />
printf("\n=== Printing VL names of devices:\n");<br />
<br />
for (dv=0; dv < (int)devlist.numDevices; dv++)<br />
printf("the device with VLDev %d is called [%s]\n", <br />
devlist.devices[dv].dev,<br />
devlist.devices[dv].name);<br />
<br />
printf("\n=== Printing jacks for all devices:\n");<br />
<br />
{<br />
for (dv=0; dv < (int)devlist.numDevices; dv++)<br />
{<br />
VLDev dev = devlist.devices[dv].dev;<br />
<br />
printf("--- opening device with VLDev %d (%s)\n", dev, <br />
devlist.devices[dv].name);<br />
if ((drain_node = vlGetNode(vlServer, VL_DRN, VL_MEM, VL_ANY)) < 0)<br />
vlerror_exit("error getting memory drain node");<br />
if (NULL == (h = ijOpenHandle(vlServer, dev, drain_node)))<br />
vlerror_exit("error opening specific ij handle");<br />
printf("--- this device is really: [%s]\n", ijGetDeviceName(h));<br />
assert(ijGetVLDev(h) == dev);<br />
<br />
for(j=0; j < ijGetNumJacks(h); j++)<br />
{<br />
printf("ij jack number %d is [%s]\n", j, ijGetJackName(h, j));<br />
trypath(vlServer, h, j, drain_node);<br />
}<br />
<br />
printf("ij default jack is:\n");<br />
trypath(vlServer, h, VL_ANY, drain_node);<br />
<br />
ijCloseHandle(h);<br />
}<br />
}<br />
<br />
printf("\n=== Finding the default device:\n");<br />
<br />
/* print default device */<br />
{<br />
if ((drain_node = vlGetNode(vlServer, VL_DRN, VL_MEM, VL_ANY)) < 0)<br />
vlerror_exit("error getting memory drain node");<br />
if (NULL == (h = ijOpenHandle(vlServer, VL_ANY, drain_node)))<br />
vlerror_exit("error opening VL_ANY ij handle");<br />
<br />
printf("The default device is VLDev %d ", ijGetVLDev(h));<br />
for (dv=0; dv < (int)devlist.numDevices; dv++)<br />
if (devlist.devices[dv].dev == ijGetVLDev(h))<br />
{<br />
printf("(%s)\n", devlist.devices[dv].name);<br />
break;<br />
}<br />
assert(dv != (int)devlist.numDevices);<br />
<br />
ijCloseHandle(h);<br />
}<br />
<br />
vlCloseVideo(vlServer);<br />
}<br />
</pre><br />
<br />
[[Category:Source Code]]</div>
Netfreak