On 07/09/16 09:23, Timo Rothenpieler wrote:
avctx->width << 1, avctx->height);
+ } else if (frame->format == AV_PIX_FMT_RGBA || frame->format ==
AV_PIX_FMT_RGB0) {
+ av_image_copy_plane(buf, lockBufferParams->pitch,
+ frame->data[0], frame->linesize[0],
+ avctx->width << 2, avctx->height);
+ } else if (frame->format == AV_PIX_FMT_BGRA || frame->format ==
AV_PIX_FMT_BGR0) {
+ av_image_copy_plane(buf, lockBufferParams->pitch,
+ frame->data[0], frame->linesize[0],
+ avctx->width << 2, avctx->height);
} else {
These are identical, so please put them into one if.
Also, why is the twist from AV_PIX_FMT_RGBA to NV_ENC_BUFFER_FORMAT_ABGR
necessary?
The nvenc header describes it as "8 bit Packed A8B8G8R8", so did they
mess it up?
It is necessary in order to make it work. The twist here is intentional as I
pointed out earlier. If you do it the other way around as described in the
documentation then you get false and missing colours.
I'd like to keep in the transparency channel unless you know there is an actual
problem with it. The encoder may not use it, but it is no reason not to pass it
on. Otherwise will RGBA/BGRA have to be converted into RGB0/BGR0 and you will
again get a performance penalty.
Sven
_______________________________________________
ffmpeg-devel mailing list
ffmpeg-devel@ffmpeg.org
http://ffmpeg.org/mailman/listinfo/ffmpeg-devel