Hi, zhentan feng wrote: > Hi > > 2008/8/27 Baptiste Coudurier <[EMAIL PROTECTED]> > >> Hi, >> >> zhentan feng wrote: >>> [...] >>> >>> + >>> + if (!(s->streams[0]->codec->flags & CODEC_FLAG_BITEXACT)) { >>> + mxf_write_local_tag(pb, version_string_len, 0x3C04); >>> + put_buffer(pb, LIBAVFORMAT_IDENT, version_string_len); >>> + } >> According to 377M, Version String is "req", so you have to put something >> here when bitexact is enabled. IMHO "0.0.0" should be fine. >> > > here is the new patch version 0.0.9. > 1) fix this bug > 2) write company name, product name, version string as utf 16 > 3) modify version string and track number uls. > > please review. > thanks > > > ------------------------------------------------------------------------ > > Index: libavformat/mxfenc.c > =================================================================== > --- libavformat/mxfenc.c (revision 15018) > +++ libavformat/mxfenc.c (working copy) > @@ -32,7 +32,10 @@ > //#define DEBUG > > #include "mxf.h" > +#include <wchar.h> > > +typedef wchar_t MXFUTF16String; > +
You don't need that, you need to transform char * to utf-16. > typedef struct { > int local_tag; > UID uid; > @@ -96,7 +99,7 @@ > { 0x3C09, > {0x06,0x0E,0x2B,0x34,0x01,0x01,0x01,0x02,0x05,0x20,0x07,0x01,0x01,0x00,0x00,0x00}}, > /* This Generation UID */ > { 0x3C01, > {0x06,0x0E,0x2B,0x34,0x01,0x01,0x01,0x02,0x05,0x20,0x07,0x01,0x02,0x01,0x00,0x00}}, > /* Company Name */ > { 0x3C02, > {0x06,0x0E,0x2B,0x34,0x01,0x01,0x01,0x02,0x05,0x20,0x07,0x01,0x03,0x01,0x00,0x00}}, > /* Product Name */ > - { 0x3C04, > {0x06,0x0E,0x2B,0x34,0x01,0x01,0x01,0x02,0x05,0x20,0x07,0x01,0x04,0x00,0x00,0x00}}, > /* Version String */ > + { 0x3C04, > {0x06,0x0E,0x2B,0x34,0x01,0x01,0x01,0x02,0x05,0x20,0x07,0x01,0x05,0x01,0x00,0x00}}, > /* Version String */ > { 0x3C05, > {0x06,0x0E,0x2B,0x34,0x01,0x01,0x01,0x02,0x05,0x20,0x07,0x01,0x07,0x00,0x00,0x00}}, > /* Product ID */ > { 0x3C06, > {0x06,0x0E,0x2B,0x34,0x01,0x01,0x01,0x02,0x07,0x02,0x01,0x10,0x02,0x03,0x00,0x00}}, > /* Modification Date */ > // Content Storage ok. > @@ -112,7 +115,7 @@ > { 0x4701, > {0x06,0x0E,0x2B,0x34,0x01,0x01,0x01,0x02,0x06,0x01,0x01,0x04,0x02,0x03,0x00,0x00}}, > /* Descriptor */ > // Track > { 0x4801, > {0x06,0x0E,0x2B,0x34,0x01,0x01,0x01,0x02,0x01,0x07,0x01,0x01,0x00,0x00,0x00,0x00}}, > /* Track ID */ > - { 0x4804, > {0x06,0x0E,0x2B,0x34,0x01,0x01,0x01,0x02,0x06,0x01,0x01,0x04,0x01,0x03,0x00,0x00}}, > /* Track Numberr */ > + { 0x4804, > {0x06,0x0E,0x2B,0x34,0x01,0x01,0x01,0x02,0x01,0x04,0x01,0x03,0x00,0x00,0x00,0x00}}, > /* Track Numberr */ One 'r' too much. > [...] > > @@ -331,14 +344,16 @@ > > mxf_write_metadata_key(pb, 0x013000); > PRINT_KEY(s, "identification key", pb->buf_ptr - 16); > - company_name_len = sizeof("FFmpeg"); > - product_name_len = sizeof("OP1a Muxer"); > + company_name_len = (wcslen(L"FFmpeg") + 1) * 2; > + product_name_len = (wcslen(L"OP1a Muxer") + 1) * 2; > > length = 80 + company_name_len + product_name_len; > - if (!(s->streams[0]->codec->flags & CODEC_FLAG_BITEXACT)) { > - version_string_len = sizeof(LIBAVFORMAT_IDENT); > - length += 4 + version_string_len; > - } > + if (!(s->streams[0]->codec->flags & CODEC_FLAG_BITEXACT)) > + version_string_len = (wcslen(WCS_LIBAVFORMAT_IDENT) + 1) * 2; > + else > + version_string_len = (wcslen(L"0.0.0") + 1) * 2; > + > + length += 4 + version_string_len; > klv_encode_ber_length(pb, length); Something like: If (bitexact) version_string = LIBAVFORMAT_VERSION else version_string = "0.0.0" This is version btw, not ident. [...] -- Baptiste COUDURIER GnuPG Key Id: 0x5C1ABAAA Smartjog USA Inc. http://www.smartjog.com Key fingerprint 8D77134D20CC9220201FC5DB0AC9325C5C1ABAAA _______________________________________________ FFmpeg-soc mailing list FFmpeg-soc@mplayerhq.hu https://lists.mplayerhq.hu/mailman/listinfo/ffmpeg-soc