fixed crash at mediaplayer closing, fixed tsmf event parameters-no video, fixed tsmf no audio.

This commit is contained in:
Maxim 2015-04-17 12:14:30 +03:00
parent 26c054d7a4
commit be7ff45a52

View File

@ -108,6 +108,8 @@ struct _TSMF_STREAM
HANDLE stopEvent;
HANDLE ready;
BOOL started;
wQueue *sample_list;
wQueue *sample_ack_list;
};
@ -675,6 +677,13 @@ static void tsmf_stream_start(TSMF_STREAM* stream)
if (!stream || !stream->presentation || !stream->decoder)
return;
if (!stream->started)
{
ResumeThread(stream->play_thread);
ResumeThread(stream->ack_thread);
stream->started = TRUE;
}
if (stream->decoder->Control)
{
stream->decoder->Control(stream->decoder, Control_Resume, NULL);
@ -690,6 +699,12 @@ static void tsmf_stream_stop(TSMF_STREAM* stream)
{
stream->decoder->Control(stream->decoder, Control_Stop, NULL);
}
if (stream->started)
{
//SetEvent(stream->stopEvent);
stream->started = FALSE;
}
}
static void tsmf_stream_pause(TSMF_STREAM* stream)
@ -977,8 +992,10 @@ TSMF_STREAM* tsmf_stream_new(TSMF_PRESENTATION* presentation, UINT32 stream_id)
stream->sample_list->object.fnObjectFree = tsmf_sample_free;
stream->sample_ack_list = Queue_New(TRUE, -1, -1);
stream->sample_ack_list->object.fnObjectFree = tsmf_sample_free;
stream->play_thread = CreateThread(NULL, 0, (LPTHREAD_START_ROUTINE) tsmf_stream_playback_func, stream, 0, NULL);
stream->ack_thread = CreateThread(NULL, 0, (LPTHREAD_START_ROUTINE)tsmf_stream_ack_func, stream, 0, NULL);
stream->started = FALSE;
stream->play_thread = CreateThread(NULL, 0, (LPTHREAD_START_ROUTINE) tsmf_stream_playback_func, stream, CREATE_SUSPENDED, NULL);
stream->ack_thread = CreateThread(NULL, 0, (LPTHREAD_START_ROUTINE)tsmf_stream_ack_func, stream, CREATE_SUSPENDED, NULL);
ArrayList_Add(presentation->stream_list, stream);