[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