summaryrefslogtreecommitdiff
path: root/notes.md
blob: f146ed462c25836ba161234620c608ac033e07ef (plain)
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

Which file to include:

> The <stdint.h> header is a subset of the <inttypes.h> header

|----------------------------------------|-----------------------------------|--------------------------------|
| C INTS                                 |                                   |                                |
| `{CHAR,SHRT,INT,LONG,LLONG}_{MIN,MAX}` | `<limits.h>`                      |                                |
| `U{CHAR,SHRT,INT,LONG,LLONG}_MAX`      | `<limits.h>`                      |                                |
|----------------------------------------|-----------------------------------|--------------------------------|
| C SIZED INTS                           |                                   |                                |
| `(C u)int{n}_t` (and `_{MIN,MAX}`)     | `<stdint.h>`                      | exact                          |
| `(u)int_least{n}_t` (and `_{MIN,MAX}`) | `<stdint.h>`                      | type may be more than `n` bits |
| `(u)int_fast{n}_t` (and `_{MIN,MAX}`)  | `<stdint.h>`                      | type may be more than `n` bits |
| `(u)intptr_t` (and `_{MIN,MAX}`)       | `<stdint.h>`                      |                                |
| `(u)intmax_t` (and `_{MIN,MAX}`)       | `<stdint.h>`                      |                                |
| `PRI*`                                 | `<inttypes.h>`                    |                                |
| `SCN*`                                 | `<inttypes.h>`                    |                                |
|----------------------------------------|-----------------------------------|--------------------------------|
| C ADDRESS INTS                         |                                   |                                |
| `ptrdiff_t`                            | `<stddef.h>`                      |                                |
| `PTRDIFF_{MIN,MAX}`                    | `<stdint.h>`                      |                                |
| `size_t`                               | `<stddef.h>` (or `<sys/types.h>`) |                                |
| `SIZE_MAX`                             | `<stdint.h>`                      |                                |
|----------------------------------------|-----------------------------------|--------------------------------|
| C WCHAR INTS                           |                                   |                                |
| `wchar_t`                              | `<stddef.h>`                      |                                |
| `WCHAR_{MIN,MAX}`                      | `<stdint.h>`                      |                                |
| `wint_t`                               | `<wchar.h>`                       |                                |
| `WINT_{MIN,MAX}`                       | `<stdint.h>`                      |                                |
|----------------------------------------|-----------------------------------|--------------------------------|
| POSIX INTS                             |                                   |                                |
| `sig_atomic_t`                         | `<signal.h>`                      |                                |
| `SIG_ATOMIC_{MIN,MAX}`                 | `<stdint.h>`                      |                                |
| `mode_t`                               | `<sys/types.h>`                   | unsigned                       |
| `dev_t`                                | `<sys/types.h>`                   | unsigned                       |
| `nlink_t`                              | `<sys/types.h>`                   | unsigned                       |
| `{u,g,}id_t`                           | `<sys/types.h>`                   | unsigned                       |
| `blkcnt_t`                             | `<sys/types.h>`                   | signed                         |
| `off_t`                                | `<sys/types.h>`                   | signed                         |
| `fsblkcnt_t`                           | `<sys/types.h>`                   | unsigned                       |
| `fsfilecnt_t`                          | `<sys/types.h>`                   | unsigned                       |
| `ino_t`                                | `<sys/types.h>`                   | unsigned                       |
| `blksize_t`                            | `<sys/types.h>`                   | signed                         |
| `pid_t`                                | `<sys/types.h>`                   | signed                         |
| `ssize_t`                              | `<sys/types.h>`                   | signed                         |
| `SSIZE_MAX`                            | `<limits.h>`                      |                                |
| `suseconds_t`                          | `<sys/types.h>`                   | signed                         |
| `clock_t`                              | `<sys/types.h>`                   | could be float                 |
| `time_t`                               | `<sys/types.h>`                   | signed                         |


Here's my reading of the lowest-bitrate possible for our HDMI sink:

HDMI v1.4 (2009/06/05) § 6.2.1 "Format Support Requirements"

>  - An HDMI Source shall support at least one of the following video
>    format timings:
>     + 640x480p @ 59.94/60Hz
>     + 720x480p @ 59.94/60Hz
>     + 720x576p @ 50Hz
> …
>
> - An HDMI Sink that accepts 60Hz video formats shall support the
>   640x480p @ 59.94/60Hz and 720x480p @ 59.94/60Hz video format
>   timings
>
> - An HDMI Sink that accepts 50Hz video formats shall support the
>   640x480p @ 59.94/60Hz and 720x576p @ 50Hz video format timings.

These latter 2 requirements match what is in CEI-861-D §3.1 "General
Video Format requirements" Table 1.

I'm a little confused about the 50Hz systems requirement; if it
needs to support 640x480@60Hz, does that mean that it's *also* a 60Hz
system and must therefore also support 720x480@60Hz?

Anyway, I need to support at least 640x480p@60Hz and 720x480@60Hz, and
it would be nice to support 720x576p@50Hz.  Note that PicoDVI supports
these first two, but not the @50Hz one.

| format        | bitrate               |
|---------------|-----------------------|
| 640x480p@60Hz | 18,432,000 pixels/sec |
| 720x480p@60Hz | 20,736,000 pixels/sec |
| 720x576p@50Hz | 20,736,000 pixels/sec |

https://forums.parallax.com/discussion/download/128730/Hdmi-1.4-1000008562-6364143185282736974850538.pdf
https://ia803002.us.archive.org/1/items/CEA-861-D/CEA-861-D.pdf