README.md 8.55 KB
Newer Older
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167
# AJA documentation

`AJA` is an IO plugin for Vahana VR. It allows Vahana VR to capture audio/video
input and stream audio/video output with the AJA Corvid capture cards.

The plugin has been developed and tested with the following models:
 * [AJA Corvid 88](https://www.aja.com/en/products/developer/corvid-88)


## Set-up
Drivers:



## Input configuration
The aja plugin can be used by Vahana VR through a .vah project file. Please see 
the `*.vah file format specification` for additional details.

Define an input for each input on the capture cards. The `reader_config` member specifies how to read
it.

### Example
  
    "inputs" : [
    {
      "width" : 1920,
      "height" : 1080,
      ...
      "reader_config" : {
        "type" : "aja",
        "name" : "01",
        "device": 0,
        "channel": 1,
        "fps" : 30,
        "pixel_format" : "UYVY",
        "audio" : true,
      }
      ...
    },
    {
      "width" : 1920,
      "height" : 1080,
      ...
      "reader_config" : {
        "type" : "aja",
        "name" : "02",
        "device": 0,
        "channel" 2,
        "fps" : 30,
        "pixel_format" : "UYVY",
        "audio" : false
      }
      ...
    }]
    
### Parameters
<table>
<tr><th>Member</th><th>Type</th><th>Value</th><th colspan="2"></th></tr>
<tr><td><strong>type</strong></td><td>string</td><td>aja</td><td colspan="2"><strong>Required</strong>. Defines an AJA input.</td></tr>
<tr><td><strong>name</strong></td><td>string</td><td>-</td><td colspan="2"><strong>Required</strong>. The AJA input entry name.</td></tr>
<br /> Note that these fields width the <code>width</code> and <code>height</code> fields must match exactly an existing display mode below.</td></tr>
<tr><td><strong> device</strong></td><td>int</td><td>-</td><td><strong>Required</strong>. The input card number (Starting from 0).</td></tr>
<tr><td><strong> channel</strong></td><td>int</td><td>-</td><td><strong>Required</strong>. The intpu channel for the selected card.</td></tr>
<tr><td><strong> fps</strong></td><td>double</td><td>-</td><td><strong>Required</strong>. The input framerate.</td></tr>
<tr><td> <strong>pixel_format</strong></td><td>string</td><td>-</td><td colspan="2"><strong>Required</strong>. The input pixel format. Supported values are <code>UYVY</code>, <code>YV12</code> and <code>BGRU</code>.</td></tr>
<tr><td><strong>audio</strong></td><td>bool</td><td>-</td><td colspan="2"><strong>Required</strong>. Does this reader capture audio.</td></tr>
</table>


## Output configuration
An example on how to use the device 1 in the channel 2 with audio enabled at 29.97 fps.

### Example
  
    "outputs" : [
    {
      "type" : "aja",
      "filename" : "12",
      "device" : 1,
      "channel" : 2,
      "fps" : 29.97,
      "pixel_format" : "UYVY",
      "audio": true
    }]
    
### Parameters
<table>
<tr><th>Member</th><th>Type</th><th>Value</th><th colspan="2"></th></tr>
<tr><td><strong>type</strong></td><td>string</td><td>aja</td><td colspan="2"><strong>Required</strong>. Defines an AJA output.</td></tr>
<tr><td><strong>filename</strong></td><td>string</td><td>-</td><td colspan="2"><strong>Required</strong>. AJA output identifier.</td></tr>
 <br /> Note that these fields must match exactly an existing display mode below. You also want larger or equals <code>width</code> and a <code>height</code> than the pano's ones.</td></tr>
 <tr><td><strong> device</strong></td><td>int</td><td>-</td><td><strong>Required</strong>. The output card number (Starting from 0).</td></tr>
<tr><td><strong> channel</strong></td><td>int</td><td>-</td><td><strong>Required</strong>. The output channel for the selected card.</td></tr>
<tr><td> <strong> fps</strong></td><td>double</td><td>-</td><td><strong>Required</strong>. The output framerate.</td></tr>
<tr><td> <strong> pixel_format</strong></td><td>string</td><td>-</td><td colspan="2"><strong>Required</strong>. The output pixel format. Supported values are <code>UYVY</code>, <code>YV12</code> and <code>BGRU</code>.</td></tr>
<tr><td> <strong> audio</strong></td><td>bool</td><td>-</td><td><strong>Required</strong>. The output audio is enabled or disabled.</td></tr>
<tr><td> <strong> offset_x</strong></td><td>bool</td><td>-</td><td><strong>Optional</strong>. The horizontal panorama offset within the display.</td></tr>
<tr><td> <strong> offset_y</strong></td><td>bool</td><td>-</td><td><strong>Optional</strong>. The vertical panorama offset within the display.</td></tr>
</table>


##Audio
We only support one audio mode for input and output: 
48000 Hz 8 channels and 32 bits

## AJA supported display modes
The available display modes depend on the AJA cards.
For Corvid 88 you can get more information at https://www.aja.com/en/products/developer/corvid-88#techspecs
<table>
<tr><th>Mode name</th><th>Height</th><th>Width</th><th>Mode</th><th>Framerate</th></tr>
<tr><td>SD</td><td>525</td><td></td><td>i</td><td>29.97</td></tr>
<tr><td>SD</td><td>625</td><td></td><td>i</td><td>25</td></tr>
<tr><td>HD</td><td>720</td><td></td><td>p</td><td>50</td></tr>
<tr><td>HD</td><td>720</td><td></td><td>p</td><td>59.94</td></tr>
<tr><td>HD</td><td>720</td><td></td><td>p</td><td>60</td></tr>
<tr><td>HD</td><td>1080</td><td></td><td>i</td><td>25</td></tr>
<tr><td>HD</td><td>1080</td><td></td><td>i</td><td>29.97</td></tr>
<tr><td>HD</td><td>1080</td><td></td><td>i</td><td>30</td></tr>
<tr><td>HD</td><td>1080</td><td></td><td>PsF</td><td>23.98</td></tr>
<tr><td>HD</td><td>1080</td><td></td><td>PsF</td><td>24</td></tr>
<tr><td>HD</td><td>1080</td><td></td><td>PsF</td><td>29.97</td></tr>
<tr><td>HD</td><td>1080</td><td></td><td>PsF</td><td>30</td></tr>
<tr><td>HD</td><td>1080</td><td></td><td>p</td><td>23.98</td></tr>
<tr><td>HD</td><td>1080</td><td></td><td>p</td><td>24</td></tr>
<tr><td>HD</td><td>1080</td><td></td><td>p</td><td>25</td></tr>
<tr><td>HD</td><td>1080</td><td></td><td>p</td><td>29.97</td></tr>
<tr><td>HD</td><td>1080</td><td></td><td>p</td><td>30</td></tr>
<tr><td>HD</td><td>1080</td><td></td><td>p</td><td>50A/B</td></tr>
<tr><td>HD</td><td>1080</td><td></td><td>p</td><td>59.94A/B</td></tr>
<tr><td>HD</td><td>1080</td><td></td><td>p</td><td>60A/B</td></tr>
<tr><td>2K</td><td>1080</td><td>2048</td><td>p</td><td>23.98</td></tr>
<tr><td>2K</td><td>1080</td><td>2048</td><td>p</td><td>24</td></tr>
<tr><td>2K</td><td>1080</td><td>2048</td><td>p</td><td>25</td></tr>
<tr><td>2K</td><td>1080</td><td>2048</td><td>p</td><td>29.97</td></tr>
<tr><td>2K</td><td>1080</td><td>2048</td><td>p</td><td>30</td></tr>
<tr><td>2K</td><td>1080</td><td>2048</td><td>p</td><td>48A/B</td></tr>
<tr><td>2K</td><td>1080</td><td>2048</td><td>p</td><td>50A/B</td></tr>
<tr><td>2K</td><td>1080</td><td>2048</td><td>p</td><td>59.94A/B</td></tr>
<tr><td>2K</td><td>1080</td><td>2048</td><td>p</td><td>60A/B</td></tr>
<tr><td>2K</td><td>1080</td><td>2048</td><td>PsF</td><td>23.98</td></tr>
<tr><td>2K</td><td>1080</td><td>2048</td><td>PsF</td><td>24</td></tr>
<tr><td>2K</td><td>1080</td><td>2048</td><td>PsF</td><td>25</td></tr>
<tr><td>2K</td><td>1080</td><td>2048</td><td>PsF</td><td>29.97</td></tr>
<tr><td>2K</td><td>1080</td><td>2048</td><td>PsF</td><td>30</td></tr>
<tr><td>2K</td><td>1080</td><td>2048</td><td>PsF</td><td>48A/B</td></tr>
<tr><td>2K</td><td>1080</td><td>2048</td><td>PsF</td><td>50A/B</td></tr>
<tr><td>2K</td><td>1080</td><td>2048</td><td>PsF</td><td>59.94A/B</td></tr>
<tr><td>2K</td><td>1080</td><td>2048</td><td>PsF</td><td>60A/B</td></tr>
<tr><td>4K</td><td>2160</td><td>3840</td><td>p</td><td>23.98</td></tr>
<tr><td>4K</td><td>2160</td><td>3840</td><td>p</td><td>24</td></tr>
<tr><td>4K</td><td>2160</td><td>3840</td><td>p</td><td>25</td></tr>
<tr><td>4K</td><td>2160</td><td>3840</td><td>p</td><td>29.97</td></tr>
<tr><td>4K</td><td>2160</td><td>3840</td><td>p</td><td>30</td></tr>
<tr><td>4K</td><td>2160</td><td>3840</td><td>p</td><td>48A/B</td></tr>
<tr><td>4K</td><td>2160</td><td>3840</td><td>p</td><td>50A/B</td></tr>
<tr><td>4K</td><td>2160</td><td>3840</td><td>p</td><td>59.94A/B</td></tr>
<tr><td>4K</td><td>2160</td><td>3840</td><td>p</td><td>60A/B</td></tr>
<tr><td>4K</td><td>2160</td><td>4096</td><td>p</td><td>23.98</td></tr>
<tr><td>4K</td><td>2160</td><td>4096</td><td>p</td><td>24</td></tr>
<tr><td>4K</td><td>2160</td><td>4096</td><td>p</td><td>25</td></tr>
<tr><td>4K</td><td>2160</td><td>4096</td><td>p</td><td>29.97</td></tr>
<tr><td>4K</td><td>2160</td><td>4096</td><td>p</td><td>30</td></tr>
<tr><td>4K</td><td>2160</td><td>4096</td><td>p</td><td>48A/B</td></tr>
<tr><td>4K</td><td>2160</td><td>4096</td><td>p</td><td>50A/B</td></tr>
<tr><td>4K</td><td>2160</td><td>4096</td><td>p</td><td>59.94A/B</td></tr>
<tr><td>4K</td><td>2160</td><td>4096</td><td>p</td><td>60A/B</td></tr>
</table>