Example #1
0
int player_socket_send(player_info_t *player, packet_t *packet) {
	if ( socket_send(player->socket, (char *)packet, sizeof(packet_t)) < 0 ) {
		player_close(player);
		return 1;
	}
	return 0;
}
Example #2
0
static void
player_av_finalize (GObject *object)
{
    PlayerAV *self = PLAYER_AV (object);

    player_close (PLAYER (self));

    G_OBJECT_CLASS (player_av_parent_class)->finalize (object);
}
Example #3
0
void CplayerDlg::OnDestroy()
{
    CDialog::OnDestroy();
    ReleaseDC(m_pDrawDC);

    // close player
    if (g_hplayer)
    {
        player_close(g_hplayer);
        g_hplayer = NULL;
    }
}
Example #4
0
void CplayerDlg::PlayerOpenFile(void)
{
    CFileDialog dlg(TRUE);
    TCHAR       path[MAX_PATH];
    char        str [MAX_PATH];

    // kill player progress timer
    KillTimer(TIMER_ID_PROGRESS);

    // stop player first
    if (g_hplayer)
    {
        player_close(g_hplayer);
        g_hplayer = NULL;
    }

    // open file dialog
    if (dlg.DoModal() == IDOK)
    {
        wcscpy_s(path, dlg.GetPathName());
        WideCharToMultiByte(CP_ACP, 0, path, -1, str, MAX_PATH, NULL, NULL);
    }
    else
    {
        OnOK();
        return;
    }

    // player open file
    g_hplayer = player_open(str, GetSafeHwnd());
    if (g_hplayer)
    {
        m_bPlayPause = FALSE;

        /*
        int speed = 150;
        player_setparam(g_hplayer, PARAM_PLAYER_SPEED, &speed);
        */

        // software volume scale -30dB to 12dB
        // range for volume is [-182, 73]
        // -255 - mute, +255 - max volume, 0 - 0dB
        int volume = -0;
        player_setparam(g_hplayer, PARAM_AUDIO_VOLUME, &volume);

        player_setrect(g_hplayer, 0, 0, 0, m_rtClient.right, m_rtClient.bottom - 2);
        player_setrect(g_hplayer, 1, 0, 0, m_rtClient.right, m_rtClient.bottom - 2);
        player_play(g_hplayer);
        SetTimer(TIMER_ID_PROGRESS, 100, NULL);
    }
}
Example #5
0
static int player_open(MSFilter *f, void *arg){
	PlayerData *d=(PlayerData*)f->data;
	int fd;
	const char *file=(const char*)arg;

	if (d->fd>=0){
		player_close(f,NULL);
	}
	if ((fd=open(file,O_RDONLY))==-1){
		ms_warning("Failed to open %s",file);
		return -1;
	}
	d->state=STOPPED;
	d->fd=fd;
	if (strstr(file,".wav")!=NULL) read_wav_header(d);
	ms_message("%s opened: rate=%i,channel=%i",file,d->rate,d->nchannels);
	return 0;
}
Example #6
0
static void __on_read(uv_stream_t *stream, ssize_t len, const uv_buf_t *buf)
{
	struct player *player = (struct player *)stream->data;
	struct packet *incoming_packet = (struct packet *)player->incoming_packet;

	if (len < 0) {
		player_close(player);
		return;
	}
	
	if (len == 0) {
		return;
	}
	
	if (incoming_packet->state == packet_state_read_data) {
		if (__handle_packet(player, incoming_packet) < 0) {
			_ERROR("%s: packet handler for type %d failed.\n", __FUNCTION__, incoming_packet->type);
		}
		
    	talloc_free(incoming_packet);
		player->incoming_packet = NULL;
	}
}
Example #7
0
static void player_uninit(MSFilter *f){
	PlayerData *d=(PlayerData*)f->data;
	if (d->fd>=0) player_close(f,NULL);
	ms_free(d);
}
Example #8
0
File: main.c Project: davel/lartem
int main(int argc, char *argv[])
{
	int k;
	struct coord c;
	unsigned int i;
	unsigned char turn_taken = 1, running = 0;

	seed_rng();

	display_init();

	if(player_init() == -1) return 0;

	level_init(&levels[0], 8);
	player_set_level(&levels[0]);

	while(1) {
		main_clear();
		player_see();
		player_status();

		turn_taken = 0;

		if(!running) k = display_getch();

		msg_clear();

		switch(k) {
		case '8':
		case '9':
		case '6':
		case '3':
		case '2':
		case '1':
		case '4':
		case '7':
		case KEY_UP:
		case KEY_DOWN:
		case KEY_LEFT:
		case KEY_RIGHT:
			c = key_to_direction(k);
			if(!player_move(c.x, c.y)) running = 0;
			turn_taken = 1;
			break;
		case 'c':
			c = key_to_direction(ask_key("In which direction?"));
			msg_clear();
			player_close(c.x, c.y);
			turn_taken = 1;
			break;
		case 'o':
			c = key_to_direction(ask_key("In which direction?"));
			msg_clear();
			player_open(c.x, c.y);
			turn_taken = 1;
			break;
		case 'k':
			c = key_to_direction(ask_key("In which direction?"));
			msg_clear();
			player_kick(c.x, c.y);
			turn_taken = 1;
			break;
		case 'g':
		case 'G':
			k = ask_key("In which direction?");
			c = key_to_direction(k);
			if((c.x || c.y) && player_move(c.x, c.y)) running = 1;
			turn_taken = 1;
			break;
		case ':':
			player_look();
			break;
		case ';':
			msg_printf("Pick an object...");
			c = player_select_square();
			msg_clear();
			player_remote_look(c.x, c.y);
			break;
		case '.':
			turn_taken = 1;
			break;
		}


		if(turn_taken) {
			if(player_poll()) running = 0;

			for(i = 0; i < levels[0].nmonst; i++)
				if(monster_poll(levels[0].monsters[i]))
					running = 0;
		}
	}

	return 0;
}
Example #9
0
/*
 * Class:     com_rockcarry_ffplayer_MediaPlayer
 * Method:    nativeClose
 * Signature: (J)V
 */
static void nativeClose(JNIEnv *env, jobject obj, jlong hplayer)
{
    DO_USE_VAR(env);
    DO_USE_VAR(obj);
    player_close((void*)hplayer);
}
Example #10
0
static void player_process(MSFilter *f){
	PlayerData *d=(PlayerData*)f->data;
	int bytes =d->big_buffer * 2*(f->ticker->interval*d->rate*d->nchannels)/1000;;

	if (d->big_buffer>1)
	{
		/* when starting reading a file: prepare more data
		so that sound card buffer will never remain empty.
		*/
		d->stat++;
		if (d->stat>3)
		{
			if (d->stat%(d->big_buffer)!=0)
				return;
		}
	}

	if (d->state==STARTED){
		unsigned long err;
		mblk_t *om=allocb(bytes,0);
		if (d->pause_time>0){
			err=bytes;
			memset(om->b_wptr,0,bytes);
			d->pause_time-=f->ticker->interval;
		}else{
            BOOL res;
            err=0;
            res = ReadFile(d->fd, om->b_wptr, bytes, &err, NULL) ;            
		}
		if (err>=0){
			if (err==bytes){
				om->b_wptr+=err;
				ms_queue_put(f->outputs[0],om);
			}
			else if (err>0){
				BOOL res;

				om->b_wptr+=err;

				ms_filter_notify_no_arg(f,MS_FILE_PLAYER_EOF);
				SetFilePointer(d->fd, d->hsize, NULL, FILE_BEGIN);
        //read_wav_header(d);

				/* special value for playing file only once */
				if (d->loop_after==-2)
				{
					player_close(f,NULL);
					return;
				}

				if (d->loop_after>0)
				{
					d->stat=-1;
					d->pause_time=d->loop_after;
				}
				else
				{
					bytes=bytes-err;
					err=0;
					res = ReadFile(d->fd, om->b_wptr, bytes, &err, NULL);
					if (err>0){
						om->b_wptr+=err;
					}
				}

				ms_queue_put(f->outputs[0],om);
			}
			else if (err==0){
				BOOL res;
				ms_filter_notify_no_arg(f,MS_FILE_PLAYER_EOF);
				SetFilePointer(d->fd, d->hsize, NULL, FILE_BEGIN);

				if (d->loop_after==-2)
				{
					player_close(f,NULL);
					return;
				}

				if (d->loop_after>0)
				{
					d->stat=-1;
					d->pause_time=d->loop_after;
				}
				else
				{
					bytes=bytes-err;
					err=0;
					res = ReadFile(d->fd, om->b_wptr, bytes, &err, NULL);
					if (err>0){
						om->b_wptr+=err;
						ms_queue_put(f->outputs[0],om);
						return;
					}
				}
				freemsg(om);

			}else freemsg(om);
		}else{
#if !defined(_WIN32_WCE)
			ms_warning("Fail to read %i bytes: %s",bytes,strerror(errno));
#else
			ms_warning("Fail to read %i bytes: %i",bytes,WSAGetLastError());
#endif
		}
	}
}
Example #11
0
static void player_uninit(MSFilter *f){
	PlayerData *d=(PlayerData*)f->data;
	if (d->fd!=INVALID_HANDLE_VALUE) player_close(f,NULL);
	ms_free(d);
}
Example #12
0
extern int process_input(void *arg, const char *input, size_t length)
{
	player_t *p = (player_t *) arg;
	socket_t *s;
	unsigned char c;
	int size;

	assert(p);
	s = &p->socket;

	if(ioctl(s->fd, FIONREAD, &size) == -1 || size <= 0)
	{
		fprintf(stderr, "ioctl: %.100s (%i)\n", strerror(errno), errno);
		player_close(p);
		pthread_exit(NULL);
		return(-1);
	}

	for( ; size; size--)
	{
		if(socket_read(s->fd, &c, 1) <= 0)
		{
			player_close(p);
			pthread_exit(NULL);
			return(-1);
		}

		fprintf(stderr, "size = %i\n", size);

		switch(c)
		{
			case DO:
			case DONT:
			case WONT:
			case WILL:
			case SB:
			case SE:
				fprintf(stderr, "OTHER\n");
				break;

			case BREAK:
			case IP:
				player_close(p);
				pthread_exit(NULL);
				break;
			case IAC:
				fprintf(stderr, "IAC\n");
				if(socket_read(s->fd, &c, 1) <= 0)
				{
					player_close(p);
					pthread_exit(NULL);
					return(-1);
				}
				size--;
				fprintf(stderr, "IAC after\n");

				switch(c)
				{
					case AYT:
						socket_write(s, "[3w3]: yes\n");
						break;
					case IP:
						player_close(p);
						pthread_exit(NULL);
						break;
					case EC:
						if(p->ibuffer_ptr)
							p->ibuffer_ptr--;

						p->ibuffer[p->ibuffer_ptr] = '\0';
						socket_writef(s, "%c%c%c", (char) IAC, (char) DO, (char) EC);
						break;
					case EL:
						memset(p->ibuffer, '\0', sizeof(p->ibuffer));
						p->ibuffer_ptr = 0;
						break;
				}
				break;
			case '\n':
				if(!(p->flags & P_LAST_R))
					p->flags |= (P_READY|P_LAST_N);
				fprintf(stderr, "READY\n");
				break;
			case '\r':
				if(!(p->flags & P_LAST_N))
					p->flags |= (P_READY|P_LAST_R);
				fprintf(stderr, "READY\n");
				break;
			default:
				p->flags &= ~(P_LAST_N|P_LAST_R);

				if(c == 8 || c == 127)
				{
					if(p->ibuffer_ptr)
						p->ibuffer_ptr--;

					p->ibuffer[p->ibuffer_ptr] = '\0';
					socket_writef(s, "%c%c%c", (char) IAC, (char) DO, (char) EC);
				}

				if(c > 31 && c < 127)
				{
					if(p->ibuffer_ptr > sizeof(p->ibuffer) - 1)
					{
						socket_write(s, "[3w3]: input truncated.\n");
						memset(p->ibuffer, '\0', sizeof(p->ibuffer));
						p->ibuffer_ptr = 0;
					}
					else
					{
						p->ibuffer[p->ibuffer_ptr++] = c;
					}
				}
				break;
		}
	}

	return(0);
}