[FFmpeg-devel] [PATCH 12/12] lavf/framecrcenc: do not hash side data
James Almer
jamrial at gmail.com
Fri May 14 15:42:10 EEST 2021
On 5/14/2021 5:01 AM, Anton Khirnov wrote:
> Quoting Michael Niedermayer (2021-05-10 16:06:01)
>> On Sun, Apr 25, 2021 at 09:03:20AM +0200, Anton Khirnov wrote:
>>> There are no guarantees that all side data types have the same
>>> representation on all platforms.
>>
>>> @@ -65,63 +51,6 @@ static int framecrc_write_packet(struct AVFormatContext *s, AVPacket *pkt)
>>> pkt->stream_index, pkt->dts, pkt->pts, pkt->duration, pkt->size, crc);
>>> if (pkt->flags != AV_PKT_FLAG_KEY)
>>> av_strlcatf(buf, sizeof(buf), ", F=0x%0X", pkt->flags);
>>> - if (pkt->side_data_elems) {
>>> - int i;
>>> - av_strlcatf(buf, sizeof(buf), ", S=%d", pkt->side_data_elems);
>>
>> The number and type of the side data elements should not be affected
>> by the problem described.
>> Maybe we could leave that. Bugs could manifest as the absence or addition
>> of side data, seeing that in framecrc_write_packet() output may be usefull
>
> No strong opinion here - patches welcome I guess.
I can do it, but it will be a "breaking" change, assuming there are
parsers that read the output of this muxer.
Right now you removed all the trailing properties, which while also
breaking, a sane parser made for the old output can simply assume that
the line was truncated. But if we re-add the side data amount and sizes
for each of them without the hashes, things can get parsed the wrong way.
Namely, it used to be:
> 0, 0, 0, 16, 57008, 0x43416399, S=2, 8, 0x08e5014f, 88, 0xd65a04db
And now it will be something like:
> 0, 0, 0, 16, 57008, 0x43416399, S=2, 8, 88
So the question is, do we care about this? The framehash/framemd5 muxer
prints a version number, which lets us make breaking additions parsers
can then properly handle. Should we then just consider that parsing
framecrc output is not a supported scenario?
More information about the ffmpeg-devel
mailing list