[FFmpeg-devel] [PATCH] avformat/matroskaenc: Don't write elements with their default value
Andreas Rheinhardt
andreas.rheinhardt at gmail.com
Sun Apr 19 11:20:13 EEST 2020
Steve Lhomme:
> LGTM.
>
> In general it would be nice if this was "automatic". In other words when writing any element the value is automatically checked against the default value. Maybe using a macro that would also check the default value like this
>
> PUT_EBML_VALUE(cp, EDITIONFLAGHIDDEN, value)
>
> doing :
> if (value != MATROSKA_DEFAULT_EDITIONFLAGHIDDEN)
> put_ebml_uint(cp, MATROSKA_ID_EDITIONFLAGHIDDEN, value)
>
> even better :
> #ifdef MATROSKA_DEFAULT_EDITIONFLAGHIDDEN
> if (value != MATROSKA_DEFAULT_EDITIONFLAGHIDDEN)
> #endif
> put_ebml_uint(cp, MATROSKA_ID_EDITIONFLAGHIDDEN, value)
>
> I could easily generate all the default values from the specs.
>
Yeah, yeah, I know. Our whole writing process is pretty archaic. With
this patch I removed all (except one: BlockAddID) elements where we only
write the default value; yet in other places where runtime checks were
needed they have not been added yet (think of the TrackLanguage).
- Andreas
>> On April 14, 2020 3:46 AM Andreas Rheinhardt <andreas.rheinhardt at gmail.com> wrote:
>>
>>
>> This has happened when writing chapters: Both editions as well as
>> chapters are by default not hidden and given that we don't support
>> writing hidden chapters at all, we don't need to write said elements at
>> all. The same goes for ChapterFlagEnabled.
>>
>> Signed-off-by: Andreas Rheinhardt <andreas.rheinhardt at gmail.com>
>> ---
>> This is supposed to get applied before the cosmetics patch.
>>
>> libavformat/matroskaenc.c | 5 -----
>> 1 file changed, 5 deletions(-)
>>
>> diff --git a/libavformat/matroskaenc.c b/libavformat/matroskaenc.c
>> index d0a02c0f5d..d3256d8f5d 100644
>> --- a/libavformat/matroskaenc.c
>> +++ b/libavformat/matroskaenc.c
>> @@ -1400,7 +1400,6 @@ static int mkv_write_chapters(AVFormatContext *s)
>> editionentry = start_ebml_master(dyn_cp, MATROSKA_ID_EDITIONENTRY, 0);
>> if (mkv->mode != MODE_WEBM) {
>> put_ebml_uint(dyn_cp, MATROSKA_ID_EDITIONFLAGDEFAULT, 1);
>> - put_ebml_uint(dyn_cp, MATROSKA_ID_EDITIONFLAGHIDDEN , 0);
>> }
>> for (i = 0; i < s->nb_chapters; i++) {
>> ebml_master chapteratom, chapterdisplay;
>> @@ -1420,10 +1419,6 @@ static int mkv_write_chapters(AVFormatContext *s)
>> (uint32_t)c->id + (uint64_t)mkv->chapter_id_offset);
>> put_ebml_uint(dyn_cp, MATROSKA_ID_CHAPTERTIMESTART, chapterstart);
>> put_ebml_uint(dyn_cp, MATROSKA_ID_CHAPTERTIMEEND, chapterend);
>> - if (mkv->mode != MODE_WEBM) {
>> - put_ebml_uint(dyn_cp, MATROSKA_ID_CHAPTERFLAGHIDDEN , 0);
>> - put_ebml_uint(dyn_cp, MATROSKA_ID_CHAPTERFLAGENABLED, 1);
>> - }
>> if ((t = av_dict_get(c->metadata, "title", NULL, 0))) {
>> chapterdisplay = start_ebml_master(dyn_cp, MATROSKA_ID_CHAPTERDISPLAY, 0);
>> put_ebml_string(dyn_cp, MATROSKA_ID_CHAPSTRING, t->value);
>> --
>> 2.20.1
>>
>> _______________________________________________
>> 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".
>
More information about the ffmpeg-devel
mailing list