[FFmpeg-devel] [PATCH] avformat/mov.c: Fix to allow custom udta tags through when export_all option specified.

Ken McGaugh ken at mcgaugh.co.uk
Sun Jun 29 00:42:27 EEST 2025


On Sun, 29 Jun 2025 at 08:33, Ken McGaugh <ken at mcgaugh.co.uk> wrote:

> On Sun, 29 Jun 2025 at 7:44 AM, Baptiste Coudurier <
> baptiste.coudurier-at-gmail.com at ffmpeg.org> wrote:
>
>> Hey Ken
>>
>> > On Jun 28, 2025, at 1:04 AM, Ken McGaugh <ken at mcgaugh.co.uk> wrote:
>> >
>> > On Sat, 28 Jun 2025 at 13:52, Baptiste Coudurier <
>> > baptiste.coudurier-at-gmail.com at ffmpeg.org <mailto:
>> baptiste.coudurier-at-gmail.com at ffmpeg.org>> wrote:
>> >
>> >> Hi
>> >>
>> >>> On Jun 27, 2025, at 5:46 PM, Ken McGaugh <ken at mcgaugh.co.uk> wrote:
>> >>>
>> >>> Hi, first time contributing to ffmpeg so I hope I got this right. We
>> use
>> >>> custom udta tags in our pipeline but they were not coming through
>> >>> correctly. Looks like they were incorrectly being routed through the
>> code
>> >>> path for "raw" data.
>> >>> ---
>> >>> libavformat/mov.c | 2 +-
>> >>> 1 file changed, 1 insertion(+), 1 deletion(-)
>> >>>
>> >>> diff --git a/libavformat/mov.c b/libavformat/mov.c
>> >>> index bd6b23466b..1b17f52a16 100644
>> >>> --- a/libavformat/mov.c
>> >>> +++ b/libavformat/mov.c
>> >>> @@ -484,7 +484,7 @@ retry:
>> >>>                return ret;
>> >>>            }
>> >>>        } else return 0;
>> >>> -    } else if (atom.size > 4 && key && !c->itunes_metadata && !raw) {
>> >>> +    } else if (atom.size > 4 && !c->itunes_metadata && !raw) {
>> >>>        str_size = avio_rb16(pb); // string length
>> >>>        if (str_size > atom.size) {
>> >>>            raw = 1;
>> >>> --
>> >>> 2.39.5 (Apple Git-154)
>> >>
>> >> Thanks!
>> >> Would it be possible for you to share a small sample?
>> >>
>> >>
>> > Certainly. Here is a sample .mov with a handful of custom udta atoms.
>> For
>> > example, the '[169]tco' one should have the value "FrameNumber", but
>> > without this patch it is exported as an empty string.
>> >
>> >
>> https://drive.google.com/file/d/1KJgRueP26cuo1os2OaNqBz2u8-aeUbBS/view?usp=sharing
>> >
>>
>> Thanks!
>> I feel we should do "if (atom.size > 4 && (key || c->export_all) &&
>> !c->itunes_metadata && !raw” to be safer.
>> What do you think ?
>
>
> That would definitely be safer. Thanks for catching that. Do you need me
> to submit an updated patch?
>

Here it is in case you need it from me. Thanks again for your prompt review.

 ---
 libavformat/mov.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/libavformat/mov.c b/libavformat/mov.c
index bd6b23466b..31ebcebca1 100644
--- a/libavformat/mov.c
+++ b/libavformat/mov.c
@@ -484,7 +484,7 @@ retry:
                 return ret;
             }
         } else return 0;
-    } else if (atom.size > 4 && key && !c->itunes_metadata && !raw) {
+    } else if (atom.size > 4 && (key || c->export_all) &&
!c->itunes_metadata && !raw) {
         str_size = avio_rb16(pb); // string length
         if (str_size > atom.size) {
             raw = 1;
-- 
2.39.5 (Apple Git-154)


More information about the ffmpeg-devel mailing list