]> git.sesse.net Git - bmusb/commitdiff
Add a stride field to VideoFormat.
authorSteinar H. Gunderson <sgunderson@bigfoot.com>
Sun, 19 Feb 2017 22:04:39 +0000 (23:04 +0100)
committerSteinar H. Gunderson <sgunderson@bigfoot.com>
Sun, 19 Feb 2017 22:04:39 +0000 (23:04 +0100)
bmusb.cpp
bmusb/bmusb.h

index 0c3fb551570188ba74e674d9e181f5ca3514b66b..4d524422f944d4a8957a1046e4489a997a571f46 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;
@@ -188,6 +192,7 @@ bool decode_video_format(uint16_t video_format, VideoFormat *decoded_video_forma
                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;
index b61b66f2e2e9e59b72b3ba42faddcbcb611cfbb8..ed106a688e842d99ac631c4539b676a3b19d27d5 100644 (file)
@@ -112,6 +112,7 @@ struct VideoFormat {
        unsigned width = 0, height = 0, second_field_start = 0;
        unsigned extra_lines_top = 0, extra_lines_bottom = 0;
        unsigned frame_rate_nom = 0, frame_rate_den = 0;
+       unsigned stride = 0;  // In bytes, assuming no interleaving.
        bool interlaced = false;
        bool has_signal = false;
        bool is_connected = true;  // If false, then has_signal makes no sense.