[FFmpeg-devel] [BUG] Storage of 3gpp metadata in 3gp files
Baptiste Coudurier
baptiste.coudurier
Sun May 31 07:24:43 CEST 2009
Baptiste Coudurier wrote:
> Hi Larbi,
>
> On 5/29/2009 5:51 AM, Larbi Joubala wrote:
>> Aurelien Jacobs a ?crit :
>>> On Fri, May 29, 2009 at 11:21:57AM +0200, Larbi Joubala wrote:
>>>
>>>> Baptiste Coudurier a ?crit :
>>>>
>>>>> Hi,
>>>>>
>>>>> Larbi Joubala wrote:
>>>>>
>>>>>> Hi guys!
>>>>>>
>>>>>> I recently found that when I set metadata in 3gp files that the
>>>>>> metadata are not displayed by any players or tools. I tested with
>>>>>> QuickTime player and an other mp4/3gp/mov file analyzer
>>>>>> tool("scenescope"). Then, to see where the issue comes from, I
>>>>>> digged in
>>>>>> the source code in paricularly "movenc.c" and I found out that the
>>>>>> metadata are stored in UTF16 way but without the BOM(Byte Order
>>>>>> Marker)
>>>>>> to indicate the endianness. The 3gp standard say that the metadata
>>>>>> value
>>>>>> can be stored in UTF8 way or UTF16 way but for UTF16 the string value
>>>>>> shall start with the following BOM 0xFFFE for big-endian.
>>>>>>
>>>>>> Is this issue known and why don't store the metadata value with UTF8
>>>>>> encoding characters to avoid to add the BOM in the beginning of the
>>>>>> string?
>>>>>>
>>>>> UTF8 is prefered I think.
>>>>>
>>>>>
>>>> Ok, so here is a patch which allows MOV muxer to store 3gpp metadata
>>>> value in a UTF8 way.
>>>>
>>>> Index: movenc.c
>>>> ===================================================================
>>>> --- movenc.c (revision 18980)
>>>> +++ movenc.c (working copy)
>>>> @@ -1437,7 +1437,8 @@
>>>> put_be16(pb, atoi(t->value));
>>>> else {
>>>> put_be16(pb, language_code("eng")); /* language */
>>>> - ascii_to_wc(pb, t->value);
>>>> + put_buffer(pb, t->value, strlen(t->value)); /* string value */
>>>> + put_byte(pb, 0); /* string NULL-terminated */
>>>>
>>> Just use:
>>> put_buffer(pb, t->value, strlen(t->value)+1);
>>> so that you don't need to manually add the 0 byte at the end.
>>>
>>> Aurel
>>> _______________________________________________
>>> ffmpeg-devel mailing list
>>> ffmpeg-devel at mplayerhq.hu
>>> https://lists.mplayerhq.hu/mailman/listinfo/ffmpeg-devel
>>>
>>>
>> Ok, no problem.
>> I attached the updated patch.
>>
>>
>> ------------------------------------------------------------------------
>>
>> Index: movenc.c
>> ===================================================================
>> --- movenc.c (revision 18980)
>> +++ movenc.c (working copy)
>> @@ -1437,7 +1437,7 @@
>> put_be16(pb, atoi(t->value));
>> else {
>> put_be16(pb, language_code("eng")); /* language */
>> - ascii_to_wc(pb, t->value);
>> + put_buffer(pb, t->value, strlen(t->value)+1); /* string value */
>> if (!strcmp(tag, "albm") &&
>> (t = av_metadata_get(s->metadata, "year", NULL, 0)))
>> put_byte(pb, atoi(t->value));
>
> Patch ok.
>
Applied.
--
Baptiste COUDURIER GnuPG Key Id: 0x5C1ABAAA
Key fingerprint 8D77134D20CC9220201FC5DB0AC9325C5C1ABAAA
FFmpeg maintainer http://www.ffmpeg.org
More information about the ffmpeg-devel
mailing list