// except when it's not (e.g. it's the only difference between NTSC
// and PAL). Rather confusing. But we clear it here nevertheless, because
// usually it doesn't mean anything.
- uint16_t normalized_video_format = video_format & ~0xe808;
+ //
+ // 0x4 is a flag I've only seen from the D4. I don't know what it is.
+ uint16_t normalized_video_format = video_format & ~0xe80c;
constexpr VideoFormatEntry entries[] = {
+ { 0x01f1, 720, 480, 0, 40, 5, 60000, 1001, false }, // 480p59.94 (believed).
+ { 0x0131, 720, 576, 0, 44, 5, 50, 1, false }, // 576p50.
+ { 0x0011, 720, 576, 0, 44, 5, 50, 1, false }, // 576p50 (5:4).
{ 0x0143, 1280, 720, 0, 25, 5, 50, 1, false }, // 720p50.
{ 0x0103, 1280, 720, 0, 25, 5, 60, 1, false }, // 720p60.
+ { 0x0125, 1280, 720, 0, 25, 5, 60, 1, false }, // 720p60.
{ 0x0121, 1280, 720, 0, 25, 5, 60000, 1001, false }, // 720p59.94.
{ 0x01c3, 1920, 1080, 0, 0, 0, 30, 1, false }, // 1080p30.
- { 0x0003, 1920, 1080, 582, 20, 25, 30, 1, true }, // 1080i60.
+ { 0x0003, 1920, 1080, 583, 20, 25, 30, 1, true }, // 1080i60.
{ 0x01e1, 1920, 1080, 0, 0, 0, 30000, 1001, false }, // 1080p29.97.
- { 0x0021, 1920, 1080, 582, 20, 25, 30000, 1001, true }, // 1080i59.94.
+ { 0x0021, 1920, 1080, 583, 20, 25, 30000, 1001, true }, // 1080i59.94.
{ 0x0063, 1920, 1080, 0, 0, 0, 25, 1, false }, // 1080p25.
{ 0x0043, 1920, 1080, 0, 0, 0, 25, 1, true }, // 1080p50.
{ 0x008e, 1920, 1080, 0, 0, 0, 24, 1, false }, // 1080p24.
}
}
- printf("Unknown video format 0x%04x. Assuming 720p60.\n", video_format);
+ printf("Unknown video format 0x%04x (normalized 0x%04x). Assuming 720p60.\n", video_format, normalized_video_format);
*width = 1280;
*height = 720;
*frame_rate_nom = 60;