On 11/08/17 10:10, Alexander Bilyak wrote: > Intel QSV SDK provide screen capture plugin starting from API ver 1.17 > as runtime loadable plugin for QSV decoder. > > * add API version selection while initialization of QSV context > (default is still 1.1 for usual encoding/decoding) > --- > configure | 2 + > libavcodec/Makefile | 1 + > libavcodec/allcodecs.c | 1 + > libavcodec/qsv.c | 6 +- > libavcodec/qsv_internal.h | 2 +- > libavcodec/qsvdec.c | 12 ++- > libavcodec/qsvdec.h | 5 + > libavcodec/qsvdec_screen.c | 250 > +++++++++++++++++++++++++++++++++++++++++++++ > libavcodec/qsvenc.c | 3 +- > 9 files changed, 272 insertions(+), 10 deletions(-) > create mode 100644 libavcodec/qsvdec_screen.c
I'm not convinced that adding this as a hacked-up pseudo-decoder is really the best approach. It would, I think, be straightforward to put this in lavd completely standalone. The common code you are actually using there is: * Session initialisation - this should be trivial, since you have no device or external frames anyway. * The actual decode function - this contains a lot of additional trickiness (packets, asynchronicity, queueing) which you don't want. A simpler form which just fetches one frame would feel better. This should also be able to avoid the second copy to the output packet. Some other thoughts: * If this is only available in a higher API version then you will need a configure test for those headers. * Does this only support NV12 capture? In many cases RGB is more useful (or at least some YUV 4:4:4 which doesn't do nasty things to thin coloured lines). * Is having an externally-provided device (hw_device_ctx) ever useful? The lavd implementation doesn't have any way to pass a device in (since lavf can't). * Do you happen to know how it actually works? (Presumably it's reading surfaces used for scanout on the GPU side somehow; who does the copy and colour conversion?) Thanks, - Mark _______________________________________________ ffmpeg-devel mailing list ffmpeg-devel@ffmpeg.org http://ffmpeg.org/mailman/listinfo/ffmpeg-devel