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