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; }
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); }
void CplayerDlg::OnDestroy() { CDialog::OnDestroy(); ReleaseDC(m_pDrawDC); // close player if (g_hplayer) { player_close(g_hplayer); g_hplayer = NULL; } }
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); } }
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; }
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; } }
static void player_uninit(MSFilter *f){ PlayerData *d=(PlayerData*)f->data; if (d->fd>=0) player_close(f,NULL); ms_free(d); }
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; }
/* * 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); }
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 } } }
static void player_uninit(MSFilter *f){ PlayerData *d=(PlayerData*)f->data; if (d->fd!=INVALID_HANDLE_VALUE) player_close(f,NULL); ms_free(d); }
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); }