Een goedesmiddags,
Ik heb SDL gekoppeld aan de FFMPEG libs en nu probeer ik de videoframes te updaten in een andere thread, zodat deze op hun eigen snelheid geupdate kunnen worden, volledig onafhankelijk van de main thread.
De thread wordt gewoon uitgevoerd, cout's enzo komen gewoon door, de adressen van de functies ed. zijn hetzelfde als wanneer ik getNextFrame gewoon vanuit main aanroep. Aangezien getNextFrame alleen maar naar private members schrijft zie ik niet hoe hij de data ergens anders heen zou kunnen sturen.
voor de duidelijkheid, de frames die getNextFrame zou moeten wegschrijven zijn helemaal leeg, terwijl ze gewoon gevuld worden als ik de functie aanroep vanuit de main.
alvast heel erg bedankt, want ik kom er niet uit
Ik heb SDL gekoppeld aan de FFMPEG libs en nu probeer ik de videoframes te updaten in een andere thread, zodat deze op hun eigen snelheid geupdate kunnen worden, volledig onafhankelijk van de main thread.
C++:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
| int videoThread(void *in); struct video { void getNextFrame(); void start() { SDL_CreateThread(videoThread, this); } }; int videoThread(void *in) { video* vid = (video*)in; while(ik_vind_dat_je_door_moet_gaan) vid->getNextFrame(); return 0; } int main() { video* vid = new video(); vid->start(); // op dit punt moet de data wat door getNextFrame wordt geleverd te lezen zijn return 0; } |
De thread wordt gewoon uitgevoerd, cout's enzo komen gewoon door, de adressen van de functies ed. zijn hetzelfde als wanneer ik getNextFrame gewoon vanuit main aanroep. Aangezien getNextFrame alleen maar naar private members schrijft zie ik niet hoe hij de data ergens anders heen zou kunnen sturen.
voor de duidelijkheid, de frames die getNextFrame zou moeten wegschrijven zijn helemaal leeg, terwijl ze gewoon gevuld worden als ik de functie aanroep vanuit de main.
alvast heel erg bedankt, want ik kom er niet uit
[ Voor 26% gewijzigd door Arjan op 28-09-2006 13:51 ]
oprecht vertrouwen wordt nooit geschaad