Beispiel #1
0
int tsmf_ifman_on_end_of_stream(TSMF_IFMAN* ifman)
{
	UINT32 StreamId;
	TSMF_STREAM* stream;
	TSMF_PRESENTATION* presentation;

	presentation = tsmf_presentation_find_by_id(Stream_Pointer(ifman->input));
	Stream_Seek(ifman->input, 16);
	Stream_Read_UINT32(ifman->input, StreamId);

	if (presentation)
	{
		stream = tsmf_stream_find_by_id(presentation, StreamId);
		if (stream)
			tsmf_stream_end(stream);
	}
	DEBUG_DVC("StreamId %d", StreamId);

	Stream_EnsureRemainingCapacity(ifman->output, 16);
	Stream_Write_UINT32(ifman->output, CLIENT_EVENT_NOTIFICATION); /* FunctionId */
	Stream_Write_UINT32(ifman->output, StreamId); /* StreamId */
	Stream_Write_UINT32(ifman->output, TSMM_CLIENT_EVENT_ENDOFSTREAM); /* EventId */
	Stream_Write_UINT32(ifman->output, 0); /* cbData */
	ifman->output_interface_id = TSMF_INTERFACE_CLIENT_NOTIFICATIONS | STREAM_ID_PROXY;

	return 0;
}
Beispiel #2
0
/**
 * Function description
 *
 * @return 0 on success, otherwise a Win32 error code
 */
UINT tsmf_ifman_on_end_of_stream(TSMF_IFMAN* ifman)
{
	UINT32 StreamId;
	TSMF_STREAM* stream = NULL;
	TSMF_PRESENTATION* presentation;

	if (Stream_GetRemainingLength(ifman->input) < 20)
		return ERROR_INVALID_DATA;

	presentation = tsmf_presentation_find_by_id(Stream_Pointer(ifman->input));

	Stream_Seek(ifman->input, 16);
	Stream_Read_UINT32(ifman->input, StreamId);

	if (presentation)
	{
		stream = tsmf_stream_find_by_id(presentation, StreamId);

		if (stream)
                	tsmf_stream_end(stream, ifman->message_id, ifman->channel_callback);
	}

	DEBUG_TSMF("StreamId %d", StreamId);

	ifman->output_pending = TRUE;

	ifman->output_interface_id = TSMF_INTERFACE_CLIENT_NOTIFICATIONS | STREAM_ID_PROXY;
	return CHANNEL_RC_OK;
}
Beispiel #3
0
int
tsmf_ifman_on_end_of_stream(TSMF_IFMAN * ifman)
{
	TSMF_PRESENTATION * presentation;
	TSMF_STREAM * stream;
	uint32 StreamId;

	presentation = tsmf_presentation_find_by_id(ifman->input_buffer);
	StreamId = GET_UINT32(ifman->input_buffer, 16);
	stream = tsmf_stream_find_by_id(presentation, StreamId);
	tsmf_stream_end(stream);

	LLOGLN(0, ("tsmf_ifman_on_end_of_stream: StreamId %d", StreamId));

	ifman->output_buffer_size = 16;
	ifman->output_buffer = malloc(16);
	SET_UINT32(ifman->output_buffer, 0, CLIENT_EVENT_NOTIFICATION); /* FunctionId */
	SET_UINT32(ifman->output_buffer, 4, StreamId); /* StreamId */
	SET_UINT32(ifman->output_buffer, 8, TSMM_CLIENT_EVENT_ENDOFSTREAM); /* EventId */
	SET_UINT32(ifman->output_buffer, 12, 0); /* cbData */
	ifman->output_interface_id = TSMF_INTERFACE_CLIENT_NOTIFICATIONS | STREAM_ID_PROXY;

	return 0;
}