Beiträge von Vouk

    Wird im nächsten Release enthalten sein. Benötigt dann zusätzlich den angepassten Premiere Connector 1.7.0.

    Die Daten in rgb48le und bgra64le sind identisch. bgra64le hat nur eine andere Kanalsortierung und zusätzlich einen Alpha Kanal für Transparenz.

    Ich habe mal diverse Tests durchgeführt. Das sieht soweit ganz gut aus. Der Adobe 16 bit Modus enthält allerdings nur 15 bit Farbinformation und muss in FFmpeg kompatible 16 bit skaliert werden. (SIMD SSE2).

    8 Bit

    Encoding

    Code
    [09:56:46]   FFmpeg:     Stream #0:0
    [09:56:46]   FFmpeg: , 0, 1001/60000
    [09:56:46]   FFmpeg: : Video: ffv1, 1 reference frame, bgra(progressive), 3840x2160 (0x0) [SAR 1:1 DAR 16:9], 0/1, q=2-31, 200 kb/s
    [09:56:46]   FFmpeg: ,
    [09:56:46]   FFmpeg: 59.94 fps,
    [09:56:46]   FFmpeg: 59.94 tbn
    [09:56:46]   FFmpeg: 

    MediaInfo

    16 Bit

    Encoding

    Code
    [10:10:43]   FFmpeg:     Stream #0:0
    [10:10:43]   FFmpeg: , 0, 1001/60000
    [10:10:43]   FFmpeg: : Video: ffv1, 1 reference frame, rgba64le(progressive), 3840x2160 (0x0) [SAR 1:1 DAR 16:9], 0/1, q=2-31, 200 kb/s
    [10:10:43]   FFmpeg: ,
    [10:10:43]   FFmpeg: 59.94 fps,
    [10:10:43]   FFmpeg: 59.94 tbn

    MediaInfo

    Ein "copy" geht an der Stelle nicht. Premiere dekodiert jedes Frame und gibt den Framebuffer unkomprimiert an Plugins (=Voukoder) weiter. Voukoder muss das dann mit FFmpeg / libav abgleichen. In diesem Falle wäre es wohl:

    • PrPixelFormat_BGRA_4444_8u => bgra (Keine Konvertierung notwendig)
    • PrPixelFormat_BGRA_4444_16u => bgra64le (mal sehen ob FFV1 das akzeptiert)

    Ist ein bisschen Arbeit, sollte aber gehen.

    I enabled the timecode information in mov/mp4:

    Code
    Tagged date                              : UTC 2021-02-11 19:31:35
    TIM                                      : 00:00:41:50
    TSC                                      : 60000
    TSZ                                      : 1001

    ... and 00:00:41:50 is exactly the position where I rendered my short clip from the original footage from.

    Available in the next release.

    Okay, premiere now supports this formats:

    Code
    PrPixelFormat_RGB_444_12u_PQ_709	= MAKE_PIXEL_FORMAT_FOURCC('@', 'P', 'Q', '7'),	// 12 bit integer (in 16 bit words) per component RGB with PQ curve, Rec.709 primaries
    PrPixelFormat_RGB_444_12u_PQ_P3		= MAKE_PIXEL_FORMAT_FOURCC('@', 'P', 'Q', 'P'),	// 12 bit integer (in 16 bit words) per component RGB with PQ curve, P3 primaries
    PrPixelFormat_RGB_444_12u_PQ_2020	= MAKE_PIXEL_FORMAT_FOURCC('@', 'P', 'Q', '2'), // 12 bit integer (in 16 bit words) per component RGB with PQ curve, Rec.2020 primaries
    PrPixelFormat_RGB_444_10u_HLG		= MAKE_PIXEL_FORMAT_FOURCC('@', 'H', 'L', '1'), // 10 bit integer per component RGB with HLG curve, Rec.2020 primaries
    PrPixelFormat_RGB_444_12u_HLG		= MAKE_PIXEL_FORMAT_FOURCC('@', 'H', 'L', '2'), // 12 bit integer (in 16 bit words) per component RGB with HLG curve, Rec.2020 primaries

    I'm just wondering they're all RGB. When dealing with bt2020/HDR it's not YUV anymore?

    Due to increased spam and fake account creation activities your freshly registerd account might require a manual activation. If your account is accidently affected by this please contact me by email or twitter and I will activate your account asap.

    This bug has been there since the very beginning. It has basically to do with how values get parsed within FFmpeg, and how to get them in and out. In detail: It's the colon in this value that is also a key/value pair separatorin the whole options concatinated string.

    Looks easy to solve, but it's actually pretty nasty ...

    Edit: Same with "partitions" for the same reason

    Found a nice SSE2 only way on simply pushing AfterEffects 15 bit data to that 16 bit FFmpeg compatible format. So you'll get AfterEffects' full 15 bit "trillions" precision without any hacks.

    I'll think about float later.

    Regarding dithering: I'm using https://ffmpeg.org/ffmpeg-filters.html#format-1 to do the conversion. Unfortunately it is not documented if dithering is being used.

    Yes, I did this by doing the shuffle from argb64 to bgra64 with SSE2 first and then manually shifting one bit left while keeping the maximum at 65535 for each value. This works, but it's also very... "hacky" and slow.

    Maybe it would be easier to disable the Trillions of Colors and instead allow floating point? That would take care of the weirdness and heighten the precision too.

    Yes, thought about that too. That's the way I am doing it for premiere. But as FFmpeg doesn't accept float as input I'd have to convert float to uint16_t first, ... and another color conversion to the target format. Also slow and not really nice.