Alright, I may have been really stupid, for some reason I always passed "input_handle" to read and WaitForSingleObject instead of stdin, no clue what happened there in my head.
Turns out this actually works in my initial tests: https://github.com/Bigpet/FFmpeg/commit/93864dd0373bc6561be8e45f14f835453c74e832 2015-03-08 0:22 GMT+01:00 Peter <dravo...@googlemail.com>: >>It checks if there is data in the buffer. The point is to do a non-blocking >>read on stdin. > > I don't know how else to do that for stdin. Using WaitForSingleObject with > generic functions like read() from io.h or ReadFile doesn't work since > WaitForSingleObject will trigger on mouse and windows events, so calling those > functions can result in blocking (even if I wait for an actual keyboard > event). > > Or is that code specifically there to deal with everything that is not a > console and what I actually need to do there is somehow typecheck that > GetStdHandle did not return a console and only then call one of the generic > read functions? (and let the kbhit and getch that come afterwards handle the > console) > > 2015-03-07 23:38 GMT+01:00 Reimar Döffinger <reimar.doeffin...@gmx.de>: >> On 07.03.2015, at 16:51, Peter <dravo...@googlemail.com> wrote: >>> The issue is this patch >>> https://github.com/FFmpeg/FFmpeg/commit/ca4d71b149ebe32aeaf617ffccf362624b9aafb1 >>> which uses a member of the FILE struct which is not available in the >>> new C runtime (it's now just a struct with a void*). >>> >>> I do not quite know the semantics of the stdin->_cnt > 0 check. >> >> It checks if there is data in the buffer. The point is to do a non-blocking >> read on stdin. >> >>> So I tried a few approaches, like using the deprecated function that is >>> called >>> after the #ifdef block anyway: >>> https://github.com/Bigpet/FFmpeg/commit/b167e17e6f8839e1b4ce0edad2708ff4237e4aec >>> (I'm kind of worried about this since using "read(0, &ch, 1);" instead >>> of "getch" with that if >>> condition actually blocks in some cases, so it's not 100% equivalent) >>> >>> Or trying to understand what the non-deprecated Win32 API calls would look >>> like: >>> https://github.com/Bigpet/FFmpeg/commit/8d9cae13f389ab7dddc736ecac3feb01843ca094 >> >> I don't think that's generic enough, you can't know what kind of thing stdin >> is, so using any non-generic function on it might break things... >> _______________________________________________ >> ffmpeg-devel mailing list >> ffmpeg-devel@ffmpeg.org >> http://ffmpeg.org/mailman/listinfo/ffmpeg-devel _______________________________________________ ffmpeg-devel mailing list ffmpeg-devel@ffmpeg.org http://ffmpeg.org/mailman/listinfo/ffmpeg-devel