diff --git a/limelight-common/InputStream.c b/limelight-common/InputStream.c index 65fd3a3..1283e04 100644 --- a/limelight-common/InputStream.c +++ b/limelight-common/InputStream.c @@ -70,6 +70,7 @@ void destroyInputStream(void) { if (oaesContext != NULL) { oaes_free(oaesContext); + oaesContext = NULL; } entry = LbqDestroyLinkedBlockingQueue(&packetQueue); @@ -80,6 +81,8 @@ void destroyInputStream(void) { free(entry); entry = nextEntry; } + + initialized = 0; } static void inputSendThreadProc(void* context) { diff --git a/limelight-common/RtspConnection.c b/limelight-common/RtspConnection.c index 2227750..983c159 100644 --- a/limelight-common/RtspConnection.c +++ b/limelight-common/RtspConnection.c @@ -5,10 +5,10 @@ static SOCKET sock = INVALID_SOCKET; static IP_ADDRESS remoteAddr; -static int currentSeqNumber = 1; +static int currentSeqNumber; static char rtspTargetUrl[256]; static char sessionIdString[16]; -static int hasSessionId = 0; +static int hasSessionId; static char responseBuffer[RTSP_MAX_RESP_SIZE]; /* GFE 2.1.1 */ @@ -280,6 +280,8 @@ int performRtspHandshake(IP_ADDRESS addr, PSTREAM_CONFIGURATION streamConfigPtr) remoteAddr = addr; inaddr.S_un.S_addr = addr; sprintf(rtspTargetUrl, "rtsp://%s", inet_ntoa(inaddr)); + currentSeqNumber = 1; + hasSessionId = 0; { RTSP_MESSAGE response; diff --git a/limelight-common/VideoDepacketizer.c b/limelight-common/VideoDepacketizer.c index 7af9a8b..e4bac33 100644 --- a/limelight-common/VideoDepacketizer.c +++ b/limelight-common/VideoDepacketizer.c @@ -6,14 +6,14 @@ static PLENTRY nalChainHead; static int nalChainDataLength; -static int nextFrameNumber = 1; +static int nextFrameNumber; static int nextPacketNumber; -static int startFrameNumber = 1; +static int startFrameNumber; static int waitingForNextSuccessfulFrame; -static int waitingForIdrFrame = 1; +static int waitingForIdrFrame; static int gotNextFrameStart; -static int lastPacketInStream = 0; -static int decodingFrame = 0; +static int lastPacketInStream; +static int decodingFrame; static LINKED_BLOCKING_QUEUE decodeUnitQueue; static unsigned int nominalPacketDataLength; @@ -30,6 +30,15 @@ typedef struct _BUFFER_DESC { void initializeVideoDepacketizer(int pktSize) { LbqInitializeLinkedBlockingQueue(&decodeUnitQueue, 15); nominalPacketDataLength = pktSize - sizeof(NV_VIDEO_PACKET); + + nextFrameNumber = 1; + nextPacketNumber = 0; + startFrameNumber = 1; + waitingForNextSuccessfulFrame = 0; + waitingForIdrFrame = 1; + gotNextFrameStart = 0; + lastPacketInStream = 0; + decodingFrame = 0; } /* Free malloced memory in AvcFrameState*/