代码之家  ›  专栏  ›  技术社区  ›  faceclean

在Linux上,一个进程可以呈现另一个进程的GUI吗?

  •  5
  • faceclean  · 技术社区  · 16 年前

    A.解码器处理

    这样,我可以使用不同的编程语言,当问题发生时,更容易知道问题在哪里。

    问题是,处理A是否可以将解码后的图片直接渲染到B的表面上?我不想使用一些IPC来发送这些解码数据,因为这可能非常低效。

    3 回复  |  直到 11 年前
        1
  •  8
  •   gnud    16 年前

    你可以使用 XEmbed 规范,它允许您将一个X11窗口嵌入到另一个X11窗口中,并且它们可能来自不同的进程。这是其他媒体播放器前端通常做的事情。

    Qt 支持XEmbed。

        2
  •  4
  •   gby    16 年前

    IPC(尤其是Unix管道)比您想象的要高效得多,而且它可能是正确的使用机制。

    fd = shm_open("/my_shmem", O_RDWR| O_CREAT, S_IWUSR);
    if(fd == -1) abort(); 
    ftruncate(fd, SHMEM_SIZE); 
    p = mmap(NULL, SHMEM_SIZE, PROT_WRITE |  PROT_READ, MAP_SHARED, fd, 0); 
    if(p == MAP_FAILED) abort()
    

    现在,p具有两个(或更多)进程共享的共享内存段的地址。

    警告进程之间p(内存的虚拟地址)的数值可能不同,因此,如果您想在共享内存中放置一个链表,就必须使用偏移量。

    gby

        3
  •  1
  •   Thomas Padron-McCarthy    16 年前

    看看mplayer和smplayer是如何实现的。mplayer解码并显示视频,smplayer是(可选)GUI。