]> git.sesse.net Git - bmusb/blobdiff - bmusb.cpp
Yet more 1080p mode corrections.
[bmusb] / bmusb.cpp
index 0c3fb551570188ba74e674d9e181f5ca3514b66b..3d090d746d44effbdf25fc2ee75f528f3c4e919f 100644 (file)
--- a/bmusb.cpp
+++ b/bmusb.cpp
@@ -112,6 +112,7 @@ bool decode_video_format(uint16_t video_format, VideoFormat *decoded_video_forma
                // It's a strange thing, but what can you do.
                decoded_video_format->width = 720;
                decoded_video_format->height = 525;
+               decoded_video_format->stride = 720 * 2;
                decoded_video_format->extra_lines_top = 0;
                decoded_video_format->extra_lines_bottom = 0;
                decoded_video_format->frame_rate_nom = 3013;
@@ -124,6 +125,7 @@ bool decode_video_format(uint16_t video_format, VideoFormat *decoded_video_forma
                        video_format);
                decoded_video_format->width = 0;
                decoded_video_format->height = 0;
+               decoded_video_format->stride = 0;
                decoded_video_format->extra_lines_top = 0;
                decoded_video_format->extra_lines_bottom = 0;
                decoded_video_format->frame_rate_nom = 60;
@@ -138,6 +140,7 @@ bool decode_video_format(uint16_t video_format, VideoFormat *decoded_video_forma
        if (video_format == 0xe901 || video_format == 0xe9c1 || video_format == 0xe801) {
                decoded_video_format->width = 720;
                decoded_video_format->height = 480;
+               decoded_video_format->stride = 720 * 2;
                decoded_video_format->extra_lines_top = 17;
                decoded_video_format->extra_lines_bottom = 28;
                decoded_video_format->frame_rate_nom = 30000;
@@ -151,6 +154,7 @@ bool decode_video_format(uint16_t video_format, VideoFormat *decoded_video_forma
        if (video_format == 0xe909 || video_format == 0xe9c9 || video_format == 0xe809 || video_format == 0xebe9 || video_format == 0xebe1) {
                decoded_video_format->width = 720;
                decoded_video_format->height = 576;
+               decoded_video_format->stride = 720 * 2;
                decoded_video_format->extra_lines_top = 22;
                decoded_video_format->extra_lines_bottom = 27;
                decoded_video_format->frame_rate_nom = 25;
@@ -175,19 +179,20 @@ bool decode_video_format(uint16_t video_format, VideoFormat *decoded_video_forma
                { 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, 20, 25,    30,    1, false },  // 1080p30.
+               { 0x01c3, 1920, 1080,   0, 41,  4,    30,    1, false },  // 1080p30.
                { 0x0003, 1920, 1080, 583, 20, 25,    30,    1,  true },  // 1080i60.
-               { 0x01e1, 1920, 1080,   0, 20, 25, 30000, 1001, false },  // 1080p29.97.
+               { 0x01e1, 1920, 1080,   0, 41,  4, 30000, 1001, false },  // 1080p29.97.
                { 0x0021, 1920, 1080, 583, 20, 25, 30000, 1001,  true },  // 1080i59.94.
-               { 0x0063, 1920, 1080,   0, 20, 25,    25,    1, false },  // 1080p25.
+               { 0x0063, 1920, 1080,   0, 41,  4,    25,    1, false },  // 1080p25.
                { 0x0043, 1920, 1080, 583, 20, 25,    25,    1,  true },  // 1080i50.
-               { 0x0083, 1920, 1080,   0, 20, 25,    24,    1, false },  // 1080p24.
-               { 0x00a1, 1920, 1080,   0, 20, 25, 24000, 1001, false },  // 1080p23.98.
+               { 0x0083, 1920, 1080,   0, 41,  4,    24,    1, false },  // 1080p24.
+               { 0x00a1, 1920, 1080,   0, 41,  4, 24000, 1001, false },  // 1080p23.98.
        };
        for (const VideoFormatEntry &entry : entries) {
                if (normalized_video_format == entry.normalized_video_format) {
                        decoded_video_format->width = entry.width;
                        decoded_video_format->height = entry.height;
+                       decoded_video_format->stride = entry.width * 2;
                        decoded_video_format->second_field_start = entry.second_field_start;
                        decoded_video_format->extra_lines_top = entry.extra_lines_top;
                        decoded_video_format->extra_lines_bottom = entry.extra_lines_bottom;
@@ -201,6 +206,7 @@ bool decode_video_format(uint16_t video_format, VideoFormat *decoded_video_forma
        printf("Unknown video format 0x%04x (normalized 0x%04x). Assuming 720p60.\n", video_format, normalized_video_format);
        decoded_video_format->width = 1280;
        decoded_video_format->height = 720;
+       decoded_video_format->stride = 1280 * 2;
        decoded_video_format->frame_rate_nom = 60;
        decoded_video_format->frame_rate_den = 1;
        return false;