Hi Julius, "Julius Schwartzenberg" <julius.schwartzenb...@gmail.com> wrote:
+#include "api_test.h"
If the definitions in api_test.h are used only in 1 source file there is no need to create an .h file at all, just place all the data in that source file.
+void init_test_struct(COMMON_AVI_HEADERS *cah)
This should be static, same as all other functions and data structures below.
+{ + MainAVIHeader *mah = malloc(sizeof(MainAVIHeader)); + AVIStreamHeader *ash0 = malloc(sizeof(AVIStreamHeader)); + AVIStreamHeader *ash1 = malloc(sizeof(AVIStreamHeader)); + PCMWAVEFORMAT *pcmwf = malloc(sizeof(PCMWAVEFORMAT)); + memcpy(mah, &defmah, sizeof(defmah)); + memcpy(ash0, &defash0, sizeof(defash0)); + memcpy(ash1, &defash1, sizeof(defash1)); + memcpy(pcmwf, &defpcmwf, sizeof(defpcmwf)); + cah->mah = mah; + cah->ash0 = ash0; + cah->ash1 = ash1; + cah->pcmwf = pcmwf; +}
malloc() should not be used in the Wine code. Also, since you allocate fixed buffer sizes it would be simpler to have structures not pointers to the structures inside main structure.
+void create_avi_file(COMMON_AVI_HEADERS *cah)
'cah' should be const.
+{ + FILE * pFile; + pFile = fopen("small.avi", "wb"); + + fwrite(file_header, 1, sizeof(file_header), pFile); /* de file wordt hier niet goed aangemaakt */ + fwrite(cah->mah, 1, sizeof(MainAVIHeader), pFile); + fwrite(streamlist, 1, sizeof(streamlist), pFile); + fwrite(cah->ash0, 1, 0x38, pFile); + fwrite(videostreamformat, 1, sizeof(videostreamformat), pFile); + fwrite(padding1, 1, sizeof(padding1), pFile); + fwrite(videopropheader, 1, sizeof(videopropheader), pFile); + fwrite(cah->ash1, 1, 0x38, pFile); + fwrite(audiostreamformat_pre, 1, sizeof(audiostreamformat_pre), pFile); + fwrite(cah->pcmwf, 1, sizeof(PCMWAVEFORMAT), pFile); + fwrite(data, 1, sizeof(data), pFile); + + fclose (pFile); +}
Please use CreateFile()/WriteFile()/etc. instead of fopen/fwrite/etc.
+void test_default_data()
Please don't omit 'void' in case of no parameters.
+{ + COMMON_AVI_HEADERS *cah; + PAVIFILE pFile; + int res; + LONG lSize; + WAVEFORMATEX wfx; + PAVISTREAM pStream; + + cah = calloc(sizeof(int),4);
Same comment as for malloc above. Also this can't work.
+ init_test_struct(cah); + create_avi_file(cah); + + res = AVIFileOpen(&pFile, "small.avi", OF_SHARE_DENY_WRITE, 0L); + ok(res == 0, "Unable to open file: error=%u\n", res); + + res = AVIFileGetStream(pFile, &pStream, 0, 1); + ok(res == 0, "Unable to open audio stream: error=%u\n", res); + + ok(AVIStreamReadFormat(pStream, AVIStreamStart(pStream), NULL, &lSize) == 0, "Unable to read format size\n"); + ok(AVIStreamReadFormat(pStream, AVIStreamStart(pStream), &wfx, &lSize) == 0, "Unable to read format\n");
Please use 'res' as an intermediate result storage as you do above.
+static const PCMWAVEFORMAT defpcmwf = +{ + { + 1, /* wFormatTag */ + 2, /* nChannels */ + 11025, /* nSamplesPerSec */ + 22050, /* nAvgBytesPerSec */ + 2, /* nBlockAlign */ + }, + 8, /* wBitsPerSample */ +};
Indentation of above structure and all others below this one look strange. 4 spaces would be quite enough. Do you really need all that separate structures? Wouldn't it be simpler to have a single buffer like in dlls/winmm/tests/mmio.c? -- Dmitry.