[FFmpeg-devel] [PATCH v24 6/9] avformat/mov_muxer: Extended MOV muxer to handle EVC video content

James Almer jamrial at gmail.com
Wed Jun 14 04:00:03 EEST 2023


On 6/13/2023 9:23 PM, Michael Niedermayer wrote:
> On Mon, Jun 12, 2023 at 02:30:27PM +0200, Dawid Kozinski wrote:
>> - Changes in mov_write_video_tag function to handle EVC elementary stream
>> - Provided structure EVCDecoderConfigurationRecord that specifies the decoder configuration information for ISO/IEC 23094-1 video content
>>
>> Signed-off-by: Dawid Kozinski <d.kozinski at samsung.com>
>> ---
>>   libavformat/Makefile    |   2 +-
>>   libavformat/evc.c       | 422 ++++++++++++++++++++++++++++++++++++++++
>>   libavformat/evc.h       |  44 +++++
>>   libavformat/isom_tags.c |   2 +
>>   libavformat/movenc.c    |  33 ++++
>>   5 files changed, 502 insertions(+), 1 deletion(-)
>>   create mode 100644 libavformat/evc.c
>>   create mode 100644 libavformat/evc.h
>>
>> diff --git a/libavformat/Makefile b/libavformat/Makefile
>> index 6e4231fda2..d3503196e3 100644
>> --- a/libavformat/Makefile
>> +++ b/libavformat/Makefile
>> @@ -364,7 +364,7 @@ OBJS-$(CONFIG_MOV_DEMUXER)               += mov.o mov_chan.o mov_esds.o \
>>   OBJS-$(CONFIG_MOV_MUXER)                 += movenc.o av1.o avc.o hevc.o vpcc.o \
>>                                               movenchint.o mov_chan.o rtp.o \
>>                                               movenccenc.o movenc_ttml.o rawutils.o \
>> -                                            dovi_isom.o
>> +                                            dovi_isom.o evc.o
>>   OBJS-$(CONFIG_MP2_MUXER)                 += rawenc.o
>>   OBJS-$(CONFIG_MP3_DEMUXER)               += mp3dec.o replaygain.o
>>   OBJS-$(CONFIG_MP3_MUXER)                 += mp3enc.o rawenc.o id3v2enc.o
>> diff --git a/libavformat/evc.c b/libavformat/evc.c
>> new file mode 100644
>> index 0000000000..431cb107e3
>> --- /dev/null
>> +++ b/libavformat/evc.c
>> @@ -0,0 +1,422 @@
>> +/*
>> + * EVC helper functions for muxers
>> + * Copyright (c) 2022 Dawid Kozinski <d.kozinski at samsung.com>
>> + *
>> + * This file is part of FFmpeg.
>> + *
>> + * FFmpeg is free software; you can redistribute it and/or
>> + * modify it under the terms of the GNU Lesser General Public
>> + * License as published by the Free Software Foundation; either
>> + * version 2.1 of the License, or (at your option) any later version.
>> + *
>> + * FFmpeg is distributed in the hope that it will be useful,
>> + * but WITHOUT ANY WARRANTY; without even the implied warranty of
>> + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
>> + * Lesser General Public License for more details.
>> + *
>> + * You should have received a copy of the GNU Lesser General Public
>> + * License along with FFmpeg; if not, write to the Free Software
>> + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
>> + */
> 
> [...]
> 
>> +        nalu_type = ff_evc_get_nalu_type(data, bytes_to_read, pb);
> 
> functions shared between libavcodec and libavformat need an av*/avpriv* prefix
> otherwise linking will fail with shared libs as ff* isnt exported

It's small enough that it can go in the header instead. That way we save 
one unnecessary exported symbol. Same with ff_evc_read_nal_unit_length().


More information about the ffmpeg-devel mailing list