/*
* GPAC - Multimedia Framework C SDK
*
* Authors: Jean Le Feuvre
* Copyright (c) Telecom ParisTech 2000-2012
* All rights reserved
*
* This file is part of GPAC / Media terminal sub-project
*
* GPAC is free software; you can redistribute it and/or modify
* it under the terms of the GNU Lesser General Public License as published by
* the Free Software Foundation; either version 2, or (at your option)
* any later version.
*
* GPAC is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public
* License along with this library; see the file COPYING. If not, write to
* the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA.
*
*/
#ifndef _INPUT_SENSOR_H_
#define _INPUT_SENSOR_H_
#include <gpac/internal/terminal_dev.h>
/*input sensor defs*/
#include <gpac/nodes_mpeg4.h>
#ifndef GPAC_DISABLE_VRML
enum
{
IS_KeySensor = 1,
IS_StringSensor,
IS_Mouse,
IS_HTKSensor,
};
#define GPAC_HTK_DEMO 0
typedef struct
{
/*parent scene*/
GF_Scene *scene;
/*list of attached nodes*/
GF_List *is_nodes;
/*stream ID*/
u16 ES_ID;
/*uncompressed data frame*/
GF_List *ddf;
GF_InputSensorDevice *io_dev;
u32 type;
/*string sensor sep char */
s16 termChar, delChar;
/*current typed text in UTF-8*/
unsigned short enteredText[5000];
u32 text_len;
Bool is_local;
#if GPAC_HTK_DEMO
GF_Thread *th;
Bool htk_running;
char szHTKPath[GF_MAX_PATH];
#endif
} ISPriv;
GF_BaseDecoder *gf_isdec_new(GF_ESD *esd, u32 PL);
void gf_isdec_del(GF_BaseDecoder *plug);
GF_Err gf_isdec_configure(GF_BaseDecoder *plug, GF_Scene *scene, Bool is_remote);
typedef struct
{
/*stream context*/
u16 ES_ID;
Bool registered;
GF_MediaObject *mo;
M_InputSensor *is;
} ISStack;
void InitInputSensor(GF_Scene *scene, GF_Node *node);
void InputSensorModified(GF_Node *n);
void InitKeySensor(GF_Scene *scene, GF_Node *node);
typedef struct
{
u16 enteredText[5000];
u32 text_len;
GF_Terminal *term;
} StringSensorStack;
void InitStringSensor(GF_Scene *scene, GF_Node *node);
#endif /*GPAC_DISABLE_VRML*/
#endif /*_INPUT_SENSOR_H_*/