[FFmpeg-soc] MXF muxer version 0.0.4
Baptiste Coudurier
baptiste.coudurier at smartjog.com
Tue Aug 26 21:08:36 CEST 2008
Hi Reimar,
Reimar Döffinger wrote:
> On Tue, Aug 26, 2008 at 09:59:12AM -0700, Baptiste Coudurier wrote:
>> zhentan feng wrote:
>>> [...]
>>>
>>> +
>>> + mxf_write_local_tag(pb, company_name_len, 0x3C01);
>>> + put_buffer(pb, "FFmpeg", company_name_len);
>> Sorry for noticing it so late, but this is wrong, all strings in MXF are
>> in UTF-16.
>
> Ok, so I finally decided to look at it myself (should have done it the
> first time - nobody else seems to have bothered to check it during the
> discussion).
> First, more precisely it is UTF-16BE.
> Secondly, there (expectedly) is no need to 0-terminate the strings, so
> strlen would have been better than sizeof (saving a few bytes).
> Not that I think UTF-16 is even remotely a good choice they made there,
> and then not even making it compatible to the only other big user of it
> (Windows, which uses UTF-16LE).
> I also have to ask: Are you sure all strings are UTF-16? The way they
> express themselves in section 3.3 of 377m is extremely unclear to me:
> "
> Strings Strings are created from individual characters defined either as ISO 7-bit characters (as
> used in SMPTE RP210) requiring 1 byte per character, or as Unicode UTF-16 characters
> requiring 2 bytes per character. In the case of UTF-16 characters expressing ISO 7-bit
> characters, an inspection of every byte will show each 2-byte pair as a null byte and a
> character byte. Byte order is specified as fixed big endian. The number of bytes allocated
> to this string is given by the KLV encoding. There is no requirement to terminate each
> string with a zero value. However, if the length of the String information is less than the
> space allocated, the string shall be terminated with a zero value
> "
>
> Which sounds as if they could be either - though the tables all seem to
> say UTF16...
>
Yes, this is ok I think, all string fields in 377M are specified as
UTF-16 String though, but other specs can choose ISO 7 bit, I don't know
any spec doing so however.
--
Baptiste COUDURIER GnuPG Key Id: 0x5C1ABAAA
Smartjog USA Inc. http://www.smartjog.com
Key fingerprint 8D77134D20CC9220201FC5DB0AC9325C5C1ABAAA
More information about the FFmpeg-soc
mailing list