Windows管道STDIN和STDOUT父子proc通信IPC FFMPEG

时间:2018-10-15 06:54:52

标签: c windows ffmpeg pipe encode

我正在编写一个简单的WINDOWS应用程序,演示管道,

我将字节大小的数据向下传递给子proc,递增该值并将char大小的数据发送回父级并循环,直到达到MAX_CHAR IPC几乎演示了“ i ++”。

父母程序

while(i<256){
    bSuccess = WriteFile(g_hChildStd_IN_Wr, chBuf, sizeof(char), &dwWritten, NULL);
    bSuccess = ReadFile(g_hChildStd_OUT_Rd, chBuf, sizeof(char), &dwRead, NULL); // IF THERE IS NO FFLUSH IT BLOCKS
}

在儿童中

while (i<256){
        byte data=0;
        fread(&data, sizeof(char), 1, stdout);
        data++;
        fwrite(&data, sizeof(char), 1, stdout);
        //fflush(stdout); IF I DO NOT HAVE THIS  PARENT BLOCKS ON READ
}

首先,如果我不FFLUSH child proc stdout,则父级会阻止读取child的stdout。

一个人如何可以运行此代码而不必使孩子的标准输出变得模糊。

在孩子的第一次写操作后关闭管道是不可行的,因为它处于循环中,需要执行256次。

更一般地说,我希望孩子将N个字节写给父对象,父母读取N个字节做某事,然后再将另一个N字节写回孩子,而孩子用该N个字节做某事并写入父N个字节。这发生了M次。

事情是我不能使用fflush,因为我的最终目标是使用一个不是由我实现的子进程。

我的最终目标是将数据通过管道传输到FFMPEG编码的数据并从标准输入中读取,并一遍又一遍地执行此操作,而不必为每个图像帧分派新的FFMPEG处理,而是分叉FFMPEG和管道的一个实例数据输入和从中读取数据。而且由于我没有实现ffmpeg,所以无法更改源代码。

谢谢

谢谢

0 个答案:

没有答案
相关问题