fifo.c

来自「自己移植的linux下的流媒体播放器原代码,支持mms协议,支持ftp和http」· C语言 代码 · 共 65 行

C
65
字号
#if 0// keyboard:static int keyb_fifo_put=-1;static int keyb_fifo_get=-1;static void set_nonblock_flag(int fd) {  int oldflags;  oldflags = fcntl(fd, F_GETFL, 0);  if (oldflags != -1) {    if (fcntl(keyb_fifo_put, F_SETFL, oldflags | O_NONBLOCK) != -1) {       return;    }  }  mp_msg(MSGT_INPUT,MSGL_ERR,"Cannot set nonblocking mode for fd %d!\n", fd);}static void make_pipe(int* pr,int* pw){  int temp[2];  if(pipe(temp)!=0) mp_msg(MSGT_FIXME, MSGL_FIXME, MSGTR_CannotMakePipe);  *pr=temp[0];  *pw=temp[1];  set_nonblock_flag(temp[1]);}void mplayer_put_key(int code){    if( write(keyb_fifo_put,&code,4) != 4 ){        mp_msg(MSGT_INPUT,MSGL_ERR,"*** key event dropped (FIFO is full) ***\n");    }}#elseint key_fifo_size = 10;static int *key_fifo_data = NULL;static int key_fifo_read=0;static int key_fifo_write=0;void mplayer_put_key(int code){//  printf("mplayer_put_key(%d)\n",code);  if (key_fifo_data == NULL)    key_fifo_data = malloc(key_fifo_size * sizeof(int));  if(((key_fifo_write+1)%key_fifo_size)==key_fifo_read) return; // FIFO FULL!!  key_fifo_data[key_fifo_write]=code;  key_fifo_write=(key_fifo_write+1)%key_fifo_size;}int mplayer_get_key(int fd){  int key;//  printf("mplayer_get_key(%d)\n",fd);  if (key_fifo_data == NULL)    return MP_INPUT_NOTHING;  if(key_fifo_write==key_fifo_read) return MP_INPUT_NOTHING;  key=key_fifo_data[key_fifo_read];  key_fifo_read=(key_fifo_read+1)%key_fifo_size;//  printf("mplayer_get_key => %d\n",key);  return key;}#endif

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?