Mercurial > libavformat.hg
comparison mxfenc.c @ 3807:24113c3ebeaf libavformat
always write required version string local tag
author | bcoudurier |
---|---|
date | Sat, 30 Aug 2008 22:37:19 +0000 |
parents | fa043e93fc66 |
children | dd88c58a4432 |
comparison
equal
deleted
inserted
replaced
3806:fa043e93fc66 | 3807:24113c3ebeaf |
---|---|
336 } | 336 } |
337 | 337 |
338 static void mxf_write_identification(AVFormatContext *s) | 338 static void mxf_write_identification(AVFormatContext *s) |
339 { | 339 { |
340 ByteIOContext *pb = s->pb; | 340 ByteIOContext *pb = s->pb; |
341 const char *version; | |
341 int length, company_name_len, product_name_len, version_string_len; | 342 int length, company_name_len, product_name_len, version_string_len; |
342 | 343 |
343 mxf_write_metadata_key(pb, 0x013000); | 344 mxf_write_metadata_key(pb, 0x013000); |
344 PRINT_KEY(s, "identification key", pb->buf_ptr - 16); | 345 PRINT_KEY(s, "identification key", pb->buf_ptr - 16); |
345 company_name_len = strlen("FFmpeg") * 2; | 346 company_name_len = strlen("FFmpeg") * 2; |
346 product_name_len = strlen("OP1a Muxer") * 2; | 347 product_name_len = strlen("OP1a Muxer") * 2; |
347 | 348 |
348 length = 80 + company_name_len + product_name_len; | 349 length = 80 + company_name_len + product_name_len; |
349 if (!(s->streams[0]->codec->flags & CODEC_FLAG_BITEXACT)) { | 350 if (!(s->streams[0]->codec->flags & CODEC_FLAG_BITEXACT)) { |
350 version_string_len = strlen(LIBAVFORMAT_IDENT) * 2; | 351 version = LIBAVFORMAT_IDENT; |
351 length += 4 + version_string_len; | 352 } else { |
352 } | 353 version = "0.0.0"; |
354 } | |
355 length += 4 + strlen(version)*2; | |
353 klv_encode_ber_length(pb, length); | 356 klv_encode_ber_length(pb, length); |
354 | 357 |
355 // write uid | 358 // write uid |
356 mxf_write_local_tag(pb, 16, 0x3C0A); | 359 mxf_write_local_tag(pb, 16, 0x3C0A); |
357 mxf_write_uuid(pb, Identification, 0); | 360 mxf_write_uuid(pb, Identification, 0); |
360 mxf_write_local_tag(pb, 16, 0x3C09); | 363 mxf_write_local_tag(pb, 16, 0x3C09); |
361 mxf_write_uuid(pb, Identification, 1); | 364 mxf_write_uuid(pb, Identification, 1); |
362 | 365 |
363 mxf_write_local_tag_utf16(pb, 0x3C01, "FFmpeg"); // Company Name | 366 mxf_write_local_tag_utf16(pb, 0x3C01, "FFmpeg"); // Company Name |
364 mxf_write_local_tag_utf16(pb, 0x3C02, "OP1a Muxer"); // Product Name | 367 mxf_write_local_tag_utf16(pb, 0x3C02, "OP1a Muxer"); // Product Name |
365 if (!(s->streams[0]->codec->flags & CODEC_FLAG_BITEXACT)) | 368 mxf_write_local_tag_utf16(pb, 0x3C04, version); // Version String |
366 mxf_write_local_tag_utf16(pb, 0x3C04, LIBAVFORMAT_IDENT); // Version String | |
367 | 369 |
368 // write product uid | 370 // write product uid |
369 mxf_write_local_tag(pb, 16, 0x3C05); | 371 mxf_write_local_tag(pb, 16, 0x3C05); |
370 mxf_write_uuid(pb, Identification, 2); | 372 mxf_write_uuid(pb, Identification, 2); |
371 | 373 |