Brug af struct i sendMessage

Tags:    .net

Hej

Er ret ny til C#, da jeg ønsker at prøve kræfter med det. Har igennem lang tid kodet c++ og har nu nogle vanskeligheder som jeg håber i kunne hjælpe mig med.

Jeg sidder og leger med noget webcam programmering i C# og mangler hjælp til hvordan jeg kan bruge en struct.
Følgende struct(i linket)
http://msdn.microsoft.com/en-us/library/ms707267(VS.85).aspx
Skal jeg have defineret så jeg kan bruge den i mit program, men hvordan gør man det i C#? og hvordan kan jeg sende den med i min sendMessage som jeg har defineret ud fra user32.dll på følgende måde:
Fold kodeboks ind/udKode 


Håber i kan hjælpe mig med en løsning eller lede mig i den rigtige retning.



3 svar postet i denne tråd vises herunder
1 indlæg har modtaget i alt 3 karma
Sorter efter stemmer Sorter efter dato
Det er ikke ligetil at bruge webcams, for at gøre det skal du kigge på sourceforge efter en fyr der har lavet en managed wrapper til det gamle directShow (DirectShow.NET) han har en masse eksempler med i hans download, der kan du sikkert se den struct du er efter. Hvis du når så langt som at få en fornuftig framerate (over 10) og kan konvertere det til en mpeg/stream så giv lige et praj... jeg sidder selv og tumler lidt med det



Nej det er også min erfaring at det ikke er let at lave programmer der benytter webcams. Jeg har tidligere lavet 3 forskellige programmer der benytter webcam, de var alle 3 lavet i java via JFM. Det er noget nemmere af arbejde med i java, men det er bare ikke altid det virker lige godt.

Jeg vil gerne prøve at lave det i c# nu, og har tidligere kigget på directshow i c++, det synes jeg ikke var til at lave, men skal da lige have kigget på det i c# for at se om det er nemmere. Jeg har også været inden på sourceforge og set hans wrapper i min søgning efter hjælp.

Indtil videre er det lykkedes mig at lave en applikation i c# der viser preview fra ens webcam, det er lavet ved hjælp af avicap.dll, for jeg så har hentet funktioner fra avicap.dll ind i mit program. Problemet kommer når jeg vil optage, så begynder previewet at "lagge" og det er fordi avicap som standart ikke tillader at ens egen applikation kan køre imens den optager. Derfor skal jeg have lavet den struct så jeg kan indstille nogle parameter, som gør at min egen applikation ikke fryser imens.

Filmen jeg gemmer er i formatet avi, hvis jeg få det til at virke skal jeg dog have kigget lidt på noget komprimerering af avi film, for en film jeg optager i mit program fylder ret meget.
Har lavet en test for jeg har optaget 10 sekunder, det fylder 68 mb, frameraten er 14 billeder / sekund. Den skal jeg også lege lidt med at få op. Det er i formatet 640 x 480 og med lyd, hvilket heller ikke er med til at gøre filen mindre. For at slå lyd fra skal jeg også bruge den tidligere omtalte struct.

Jeg vil kigge lidt videre på det i dag, jeg skal prøve at se om jeg kan få det til at virke, hvis du har nogen ideer til det med den struct høre jeg gerne. Ellers skal jeg nok sige til hvis jeg finder en løsninger, så andre kan få glæde af den.





En update

Efter endnu et par timers arbejde er det lykkedes mig at definere den struct som jeg havde problemer med at få defineret. Jeg er nu i stand til at optage film mens jeg har et preview og det virker. Dog lagger previewet lidt mens der optages, det er jeg igang med at kigge på nu.

Jeg er ved hjælp af den struct også i stand til at skifte frameraten, og har indtil videre optaget film med 20 FPS, jeg kan sikkert godt sætte den op, men inden jeg leger med det vil jeg gerne lave sådan filmen bliver komprimeret eller gemmes i et andet video format, da filmene somsagt fylder en del.

Jeg har endnu ikke besluttet mig for om filmene skal være i et andet format eller om jeg skal prøve at komprimere avi filerne. Tror jeg vil prøve mig lidt frem :)



t