1
MediaInfo class
2
===============
3
4
It might be nice to have a class that gives information about MediaSource
5
objects without having to use MediaObject for it. Something like QFileInfo for
6
QFile. MediaObject could also return a list of MediaInfo objects for all the
7
MediaSource objects in the queue.
8
9
Rationale: The app then can get info about length and substreams so that it can
10
set up everything correctly for the next "file" in the queue.
11
12
13
- on hotplug of a USB audio/video device:
14
  1. If the device is plugged in for the first time
15
    Check whether the backend now provides new device selections. If yes, open
16
    up central config with the page that allows selection of the default
17
    devices. Tell the user what new options are available.
18
    Allow the user to set preference of devices: If device USB-Headset is
19
    available use that, else use builtin speakers.
20
21
 device info persistance
22
=========================
23
On device selections: should the user be presented with options that are
24
currently not available? It might actually be confusing to select a device that
25
is not usable at the moment.
26
27
Some situations:
28
(device A is always available)
29
- user plugs device B
30
- selects device B as default
31
next day: device B unplugged
32
- phonon falls back to device A as B is not available and shows a passive popup
33
  informing the user about the fallback
34
- user opens config dialog
35
- device B still shows up as default
36
- selects device A, closes dialog
37
- opens dialog again
38
- device B is gone...
39
- user plugs device B
40
- device B reappears
41
42
The Backend has to provide the information about devices. Those can map directly
43
to hardware or a soundserver or some other virtual device. The Backend has to
44
have some unique identifier. For example the ALSA devices could be identified
45
using the ALSA device names (either hw:0, hw:1 or aliases from asoundrc). OSS
46
devices could be identified using /dev/dsp, /dev/dsp1 and so on.
47
=> the backend internal uid is a string
48
In the Frontend all that is needed is a name and a description of the device
49
(both translated to the current locale) and a unique identifier to talk to the
50
backend. This identifier could be the same as used internally by the Backend,
51
but doesn't have to be.
52
53
 "lowlevel" audio I/O
54
======================
55
ByteStream is a buffered stream, and as therefore completely useless for cases
56
where an application wants to write audio data to the soundcard/-system with low
57
latency.
58
=> PcmInStream and PcmOutStream
59
60
61
============================================================================
62
= Ideas for "useless but nice" things (until somebody can convince me that =
63
= they're useful)                                                          =
64
============================================================================
65
66
 Video Output
67
==============
68
Add another VideoOutput that can be used directly with QGraphicsView by creating
69
a QGraphicsItem subclass.