Finally fix the stupid bug causing callbacks to crash. We were directly using a pointer to stack that is invalid after initialization.

This commit is contained in:
Cameron Gutman 2014-02-02 04:56:18 -05:00
parent da9433fb0a
commit 31cd93b11b

View File

@ -5,8 +5,8 @@
#define FIRST_FRAME_MAX 1500 #define FIRST_FRAME_MAX 1500
PDECODER_RENDERER_CALLBACKS callbacks; DECODER_RENDERER_CALLBACKS callbacks;
PSTREAM_CONFIGURATION configuration; STREAM_CONFIGURATION configuration;
IP_ADDRESS remoteHost; IP_ADDRESS remoteHost;
SOCKET rtpSocket = INVALID_SOCKET; SOCKET rtpSocket = INVALID_SOCKET;
@ -20,8 +20,8 @@ PLT_THREAD depacketizerThread;
PLT_THREAD decoderThread; PLT_THREAD decoderThread;
void initializeVideoStream(IP_ADDRESS host, PSTREAM_CONFIGURATION streamConfig, PDECODER_RENDERER_CALLBACKS drCallbacks) { void initializeVideoStream(IP_ADDRESS host, PSTREAM_CONFIGURATION streamConfig, PDECODER_RENDERER_CALLBACKS drCallbacks) {
callbacks = drCallbacks; memcpy(&callbacks, drCallbacks, sizeof(callbacks));
configuration = streamConfig; memcpy(&configuration, streamConfig, sizeof(configuration));
remoteHost = host; remoteHost = host;
LbqInitializeLinkedBlockingQueue(&packetQueue, 30); LbqInitializeLinkedBlockingQueue(&packetQueue, 30);
@ -126,7 +126,7 @@ static void DecoderThreadProc(void* context) {
return; return;
} }
callbacks->submitDecodeUnit(du); callbacks.submitDecodeUnit(du);
freeDecodeUnit(du); freeDecodeUnit(du);
} }
@ -192,12 +192,9 @@ void stopVideoStream(void) {
int startVideoStream(void* rendererContext, int drFlags) { int startVideoStream(void* rendererContext, int drFlags) {
int err; int err;
if (callbacks != NULL) { callbacks.setup(configuration.width,
callbacks->setup(configuration->width, configuration.height, 60, rendererContext, drFlags);
configuration->height, 60, rendererContext, drFlags);
}
// FIXME: Set socket options here
rtpSocket = bindUdpSocket(47998); rtpSocket = bindUdpSocket(47998);
err = PltCreateThread(UdpPingThreadProc, NULL, &udpPingThread); err = PltCreateThread(UdpPingThreadProc, NULL, &udpPingThread);
@ -210,7 +207,6 @@ int startVideoStream(void* rendererContext, int drFlags) {
return err; return err;
} }
if (callbacks != NULL) {
err = PltCreateThread(ReceiveThreadProc, NULL, &receiveThread); err = PltCreateThread(ReceiveThreadProc, NULL, &receiveThread);
if (err != 0) { if (err != 0) {
return err; return err;
@ -226,8 +222,7 @@ int startVideoStream(void* rendererContext, int drFlags) {
return err; return err;
} }
callbacks->start(); callbacks.start();
}
return 0; return 0;
} }