From bc7e5f5b6d908914c023bda51f840c3304c9c3cd Mon Sep 17 00:00:00 2001 From: "Steinar H. Gunderson" Date: Sun, 19 Feb 2017 23:04:39 +0100 Subject: [PATCH] Add a stride field to VideoFormat. --- bmusb.cpp | 6 ++++++ bmusb/bmusb.h | 1 + 2 files changed, 7 insertions(+) diff --git a/bmusb.cpp b/bmusb.cpp index 0c3fb55..4d52442 100644 --- 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; diff --git a/bmusb/bmusb.h b/bmusb/bmusb.h index b61b66f..ed106a6 100644 --- a/bmusb/bmusb.h +++ b/bmusb/bmusb.h @@ -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. -- 2.39.2