[FFmpeg-devel] [PATCH v12 5/9] libavcodec/dnxucdec: DNxUncompressed decoder
James Almer
jamrial at gmail.com
Tue Oct 22 02:51:28 EEST 2024
On 10/21/2024 10:02 PM, martin schitter wrote:
> On 22.10.24 00:31, James Almer wrote:
>> On 10/21/2024 8:40 PM, martin schitter wrote:
>>> On 21.10.24 22:44, James Almer wrote:
>>>>
>>>> That's not good...
>>>>
>>>> [...]
>>>
>>> Whenever and however I change it, there will allways be somebody who
>>> doesn't like it. !:(
>>
>> My point is, it's not a good idea to commit code that's not tested.
>> Assuming that's what you meant.
>
> Yes -- I also don't like to publish untested code.
>
> Unfortunately I do not have access to any software, which could produce
> the needed samples. But I was looking at least for very similar code
> structures -- e.g. RGB / YUV 4:4:4 similarities.
>
> But I definitely will not work on more complex feature suport (like the
> combined components etc.) without real world samples.
>
> All the possible output variants of DaVinci resolve are tested and work!
>
> There still some unpleasant color deviations noticeable in some cases,
> but that's mainly caused elsewhere.
>
>>> I personally still think it would wise to support just a minimal but
>>> carefully and systematically chosen set of internal pixel formats for
>>> lossless and efficient processing and avoid all other very similar
>>> combinatorial possibilities, but those other reviewer strictly denied
>>> this view.
>>
>> Yes, i agree. But what gets committed should be know to work.
>
> I hope, that's the case!
>
>
>>>>> + break;
>>>>> + case MKTAG('y','2','1','6'):
>>>>> + ret = fmt_frame(avctx, frame, avpkt,
>>>>> AV_PIX_FMT_UYVY422_16LE, 32, pass_through);
>>>>
>>>> The order of y216 appears to be YUYV, not UYVY. https://
>>>> learn.microsoft.com/en-us/windows/win32/medfound/10-bit-and-16-bit-
>>>> yuv- video-formats
>>>
>>> Please also read the SMPTE RDD 50 specification as well!
>>> (https://pub.smpte.org/doc/rdd50/20190730-pub/rdd50-2019.pdf)
>>>
>>> But in fact I would even more suggest looking at the well structured
>>> system of vulkan pixel formats!
>>>
>>> I simply had to implement all this additional pixel formats, because
>>> the byte order of already defined varaints were indeed different. And
>>> you can't simply ignore this fact, if you want to handle the raw data
>>> stream without any other kind of local modification.
>>
>> Ok, looks like that spec defined some crazy packing and reused
>> existing naming schemes. Great.
>
> Yes -- this super dense bit packing looks really crazy in case of an
> otherwise extremely bloated "uncompressed" and not just "lossless"
> format. But it's still more are less the only option to export all these
> different pixel formats (especially the more advanced floating point
> ones) together with additional audio, TC etc. out of popular closed
> source solutions until now.
>
> and btw.: FOURCC is naturally case-sensitive ;)
>
>> If you're going to unpack these MSB and LSB blocks so the output may
>> be something that can be used by an AVPixFmtDescriptor, then might as
>> well not add so many new pixel formats that will see no other use and
>> instead rely on existing, widely supported ones. As in:
>>
>>> + case MKTAG('y','2','1','6'):
>>> + ret = fmt_frame(avctx, frame, avpkt,
>>> AV_PIX_FMT_UYVY422_16LE, 32, pass_through);
>>> + break;
>>
>> You could unpack this into AV_PIX_FMT_YUV422P16LE.
>
> This was exactly my suggestion in the version v10 of these patch series,
> but others didn't like it.
>
>>> + case MKTAG('y','4','0','8'):
>>> + ret = fmt_frame(avctx, frame, avpkt, AV_PIX_FMT_YUV444,
>>> 24, pass_through);
>>> + break;
>>
>> You could rearrange this into AV_PIX_FMT_VYU444, or unpack into
>> AV_PIX_FMT_YUV444P.
>
> I know -- it's trivial to choose this way, but there has to be some
> common agreement or docu, how it should be done, otherwise we run circles.
I didn't participate in earlier rounds, but at least my opinion is that
we shouldn't add new pixel formats if they are only used for a single
codec and have no RIFF or ISOBMFF mapping.
fwiw, YUV444 is fine as a name if we end up adding it, but i dislike
UYVY422_16 and YUV444_16.
Unfortunately we can't use Y216 (Would need to match existing Y210 and
Y212, which are ordered YUYV), or Y416 (ISOBMFF mapped it to AYUV64).
>
>> You could unpack this into AV_PIX_FMT_YUV444P16LE, or rearrange it
>> into AV_PIX_FMT_AYUV64 (setting the alpha channel to opaque).
>
> detto
>
>> The float ones are ok since we have no YUV float formats. But in any
>> case, I'd like to hear what others think.
>
> I'm also interested, how others think about this topic.
>
> In case of the Float variants I'm not really happy about this actual
> implementation, because the imported data gets modified in a lossy
> manner by the 16bit integer conversion in this case. This doesn't make
> any visible difference in practice, but it simply shouldn't happen
> nowadays high-end workflows.
>
> I really hope to work around this issue by an additional vulkan
> implementation in the long run.
>
>> Thanks for your work.
>>
>>
>> _______________________________________________
>> ffmpeg-devel mailing list
>> ffmpeg-devel at ffmpeg.org
>> https://ffmpeg.org/mailman/listinfo/ffmpeg-devel
>>
>> To unsubscribe, visit link above, or email
>> ffmpeg-devel-request at ffmpeg.org with subject "unsubscribe".
>
> _______________________________________________
> ffmpeg-devel mailing list
> ffmpeg-devel at ffmpeg.org
> https://ffmpeg.org/mailman/listinfo/ffmpeg-devel
>
> To unsubscribe, visit link above, or email
> ffmpeg-devel-request at ffmpeg.org with subject "unsubscribe".
-------------- next part --------------
A non-text attachment was scrubbed...
Name: OpenPGP_signature.asc
Type: application/pgp-signature
Size: 495 bytes
Desc: OpenPGP digital signature
URL: <https://ffmpeg.org/pipermail/ffmpeg-devel/attachments/20241021/61562abf/attachment.sig>
More information about the ffmpeg-devel
mailing list