From a0ada0748bcc6e477c01ed6c464bb391b3f47d08 Mon Sep 17 00:00:00 2001 From: mjbudd77 Date: Wed, 25 Aug 2021 22:27:09 -0400 Subject: [PATCH] Added debug print of main avi header. --- src/drivers/Qt/avi/gwavi.cpp | 117 ++++++++++++++++++++++++++++++++++- src/drivers/Qt/avi/gwavi.h | 3 +- 2 files changed, 117 insertions(+), 3 deletions(-) diff --git a/src/drivers/Qt/avi/gwavi.cpp b/src/drivers/Qt/avi/gwavi.cpp index ef133184..af61611d 100644 --- a/src/drivers/Qt/avi/gwavi.cpp +++ b/src/drivers/Qt/avi/gwavi.cpp @@ -758,7 +758,18 @@ int gwavi_t::readChunk(const char *id, int lvl) size = chunkSize; - if ( strcmp( id, "strh") == 0 ) + if ( strcmp( id, "avih") == 0 ) + { + ret = readAviHeader(); + + if ( ret < 0 ) + { + return -1; + } + size -= ret; + bytesRead += ret; + } + else if ( strcmp( id, "strh") == 0 ) { ret = readStreamHeader(); @@ -800,6 +811,110 @@ int gwavi_t::readChunk(const char *id, int lvl) return bytesRead+4; } +int gwavi_t::readAviHeader(void) +{ + gwavi_header_t hdr; + + printf("HDR Size: '%zi'\n", sizeof(hdr) ); + + if (read_uint(in, hdr.time_delay) == -1) + { + (void)fprintf(stderr, "readChunk: read_uint() failed\n"); + return -1; + } + + if (read_uint(in, hdr.data_rate) == -1) + { + (void)fprintf(stderr, "readChunk: read_uint() failed\n"); + return -1; + } + + if (read_uint(in, hdr.reserved) == -1) + { + (void)fprintf(stderr, "readChunk: read_uint() failed\n"); + return -1; + } + + if (read_uint(in, hdr.flags) == -1) + { + (void)fprintf(stderr, "readChunk: read_uint() failed\n"); + return -1; + } + + if (read_uint(in, hdr.number_of_frames) == -1) + { + (void)fprintf(stderr, "readChunk: read_uint() failed\n"); + return -1; + } + + if (read_uint(in, hdr.initial_frames) == -1) + { + (void)fprintf(stderr, "readChunk: read_uint() failed\n"); + return -1; + } + + if (read_uint(in, hdr.data_streams) == -1) + { + (void)fprintf(stderr, "readChunk: read_uint() failed\n"); + return -1; + } + + if (read_uint(in, hdr.buffer_size) == -1) + { + (void)fprintf(stderr, "readChunk: read_uint() failed\n"); + return -1; + } + + if (read_uint(in, hdr.width) == -1) + { + (void)fprintf(stderr, "readChunk: read_uint() failed\n"); + return -1; + } + + if (read_uint(in, hdr.height) == -1) + { + (void)fprintf(stderr, "readChunk: read_uint() failed\n"); + return -1; + } + + if (read_uint(in, hdr.time_scale) == -1) + { + (void)fprintf(stderr, "readChunk: read_uint() failed\n"); + return -1; + } + + if (read_uint(in, hdr.playback_data_rate) == -1) + { + (void)fprintf(stderr, "readChunk: read_uint() failed\n"); + return -1; + } + + if (read_uint(in, hdr.starting_time) == -1) + { + (void)fprintf(stderr, "readChunk: read_uint() failed\n"); + return -1; + } + + if (read_uint(in, hdr.data_length) == -1) + { + (void)fprintf(stderr, "readChunk: read_uint() failed\n"); + return -1; + } + + printf("dwMicroSecPerFrame : '%u'\n", hdr.time_delay ); + printf("dwMaxBytesPerSec : '%u'\n", hdr.data_rate ); + printf("dwPaddingGranularity : '%u'\n", hdr.reserved ); + printf("dwFlags : '%u'\n", hdr.flags ); + printf("dwTotalFrames : '%u'\n", hdr.number_of_frames ); + printf("dwInitialFrames : '%u'\n", hdr.initial_frames ); + printf("dwStreams : '%u'\n", hdr.data_streams ); + printf("dwSuggestedBufferSize : '%u'\n", hdr.buffer_size ); + printf("dwWidth : '%u'\n", hdr.width ); + printf("dwHeight : '%u'\n", hdr.height ); + + return sizeof(gwavi_header_t); +} + int gwavi_t::readStreamHeader(void) { gwavi_AVIStreamHeader hdr; diff --git a/src/drivers/Qt/avi/gwavi.h b/src/drivers/Qt/avi/gwavi.h index 0050cedf..63aaf559 100644 --- a/src/drivers/Qt/avi/gwavi.h +++ b/src/drivers/Qt/avi/gwavi.h @@ -41,8 +41,6 @@ /* structures */ struct gwavi_header_t { - char fcc[4]; - uint32_t cb; uint32_t time_delay; /* dwMicroSecPerFrame */ uint32_t data_rate; /* dwMaxBytesPerSec */ uint32_t reserved; @@ -210,6 +208,7 @@ class gwavi_t int read_chars_bin(FILE *in, char *s, int count); int readList(int lvl); int readChunk(const char *id, int lvl); + int readAviHeader(void); int readStreamHeader(void); };