-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathREADME
179 lines (144 loc) · 7.01 KB
/
README
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
168
169
170
171
172
173
174
175
176
177
178
179
Videoplayer is a program designed to allow the real time playback of raw,
header-less YUV files that are encountered in video processing and broadcast
applications.
The source data should be a single file of concatenated video frames.
Aims and Features
=================
* Play video locked exactly to the display device refresh rate (VSYNC)
* Play back uncompressed video in real time
* Offload chrominance upconversion and colour matrixing to the GPU
to permit high performance playback.
* Play multiple video files concurrently, with synchronized presentation.
Source Formats
==============
Videoplayer provides compatibility with a wide range of YUV formats:
FourCC code Description
----------- -----------
I420 8 bit planar, 4:2:0 chroma
YV12 8 bit planar, 4:2:0 chroma
420p 8 bit planar, 4:2:0 chroma
422p 8 bit planar, 4:2:2 chroma
444p 8 bit planar, 4:4:4 chroma
UYVY UYVY multiplexed 8 bit data
V210 UYVY multiplexed 10 bit data, 3 components packed into 32 bits
V216 UYVY multiplexed 8-16 bit data, little-endian, msb aligned
16P0 16 bit, big-endian, 16 bit planar data, 4:2:0 chroma
16P2 16 bit, big-endian, 16 bit planar data, 4:2:2 chroma
16P4 16 bit, big-endian, 16 bit planar data, 4:4:4 chroma
plst Playlist file
Operating System Compatibility
==============================
Videoplayer has been developed using the Qt cross platform toolkit.
The software has been tested on:
- Linux/X11 (with nVidia and Intel graphics drivers)
- OSX 10.5 (with nVidia and ATI graphics drivers)
- WindowsXP (with nVidia and Intel graphics drivers)
Primary development occurs on a Linux/X11 platform.
There is a known issue with playback on Windows systems with Intel graphics
drivers. On these systems the WGL SwapBuffers call does not block, which is
required for moderating the playback speed.
Hardware Requirements
=====================
Playing uncompressed video sources requires significant read bandwidth from
a storage device:
|| FourCC
Standard || I420 | UYVY | V210 | V216
----------++----------+----------+----------+----------
576i25 || 15 MB/s | 20 MB/s | 27 MB/s | 41 MB/s
1080p25 || 77 MB/s | 103 MB/s | 138 MB/s | 207 MB/s
1080p50 || 155 MB/s | 207 MB/s | 276 MB/s | 414 MB/s
3260p60 || 746 MB/s | 995 MB/s | 1.3 GB/s | 1.6 GB/s
The videoplayer will attempt to use a read ahead buffer to aid guaranteeing
average throughput. The size of the buffer is customizable. It should be
noted that the continuous read rate of an HDD varies between the inside and
outside platter edges. Performance can be significantly lower near the end of
the disk.
Videoplayer uses OpenGL to accelerate playback. Development has been done with
NVidia QuadroFX3450, 6600GT, 8600GT and 8800GT cards. Recent PCIe graphics cards
are recommended, but no testing of other models has been done.
Usage
=====
The videoplayer is principally designed as a command-line program. There is
a rudimentary file chooser if the player is started without any arguments,
but this does not expose most of the program features.
Full help text can be displayed using the --help option.
Input files
-----------
Input files may be either raw YUV files, or playlists.
It is recommended to use the fourcc as the file extension, allowing the player
to automatically detect the format. If a different file extension is used,
eg ".yuv", then the fourcc must be specified using the -t option.
Display Rate
------------
The videoplayer is designed to present video at the frame rate of the VDU.
To enable correct playback of a source file at a different frame rate, specify
the following command-line options: --vdu-fps=N --fps=M, where N is the
frame-rate of the display device and N is the frame-rate of the video.
If the storage back-end cannot provide data in time for real-time display,
the player waits for the frame to become available. No frame skipping occurs.
Similarly, any delays are not taken into account when performing frame duplication
for frame-rate interpolation.
Pixel mapping
-------------
By default, the video is rendered with a 1:1 pixel-mapping. If the window size
is smaller than the source video, the video is cropped, preserving the lower-left
corner. To disable the pixel-mapping, the option --pixelmapped=0 privides a
low-quality interpolator
Multiple files
--------------
If multiple files are specified on the command-line, they are played
synchronously and displayed in a Nx1 grid. To use a different grid layout,
the option --gl.grid=NxM permits an arbitrary grid.
The displayed frames are advanced in lock-step and only when the storage back-ends
are able to provide a frame for each input file. Ie, one video will not end up
a frame ahead/behind of another.
OSD
---
A rudimentary on-screen display is provided. Pressing the 'O' key during
playback will cycle through the OSD modes. The order is:
"nothing" -> "frame number" -> "caption"
A caption may be specified on the command line as --caption=foobar
The OSD by default uses a 72pt font. This may be overridden with --osdptsize=N
Playlists
---------
A playlist file (with file extension/fourcc "plst") can be used to specify a
sequence of video files to read. The plain text file should contain a single
entry per line. Lines beginning with '#' are ignored. Records should
be in the format:
<name> <type> <width> <height> <fps> <start> <end> [osd caption]
Where, <name> is the filename -- nb, must not have spaces
<type> is the fourcc code for the file
<width> picture width
<height> picture height
<fps> video frame rate
<start> first frame to display (0 = first)
<end> last frame to display
[caption] optional string containing caption text for the OSD
Diagnostics
-----------
Some diagnostics are rendered by pressing the '?' key.
Key bindings
------------
Key Action
--- ------
o Toggle OSD state
? Toggle display of statistics on/off
f Toggle full screen mode
m Switch to output levels from user flags out-range and out-black
n Switch to video output levels, out-range=220 out-black=16
b Switch to computer output levels, out-range=256, out-black=0
Esc Return from full screen mode to windowed
a Toggle aspect ratio lock
i Toggle deinterlacing of an interlaced source
Space Play/Pause
s Stop
1-7 Play forward at 1,2,5,10,20,50,100x rate
CTRL+1-7 Play backward at 1,2,5,10,20,50,100x rate
> Jog one frame forward when paused
< Jog one frame backward when paused
y Toggle display of luma on/off
c Toggle display of chroma on/off
h Switch to HDTV colour matrix kr=0.2126 kg=0.7152 kb=0.0722
j Switch to SDTV colour matrix kr=0.2990 kg=0.5870 kb=0.1140
k Switch to colour matrix kr, kg, kb from user flags
q Quit