comparison movenc.c @ 657:5b9575f5b6e8 libavformat

mov header field and compressor name patch by Roine Gustafsson <roine AT users DOT sourceforge DOT net>
author mmu_man
date Wed, 26 Jan 2005 09:31:49 +0000
parents 7d50b0a324ea
children 6d7c0e6d929e
comparison
equal deleted inserted replaced
656:0d700094e887 657:5b9575f5b6e8
449 }; 449 };
450 450
451 static int mov_write_video_tag(ByteIOContext *pb, MOVTrack* track) 451 static int mov_write_video_tag(ByteIOContext *pb, MOVTrack* track)
452 { 452 {
453 int pos = url_ftell(pb); 453 int pos = url_ftell(pb);
454 char compressor_name[32];
454 int tag; 455 int tag;
455 456
456 put_be32(pb, 0); /* size */ 457 put_be32(pb, 0); /* size */
457 458
458 tag = track->enc->codec_tag; 459 tag = track->enc->codec_tag;
465 466
466 put_be32(pb, 0); /* Reserved */ 467 put_be32(pb, 0); /* Reserved */
467 put_be16(pb, 0); /* Reserved */ 468 put_be16(pb, 0); /* Reserved */
468 put_be16(pb, 1); /* Data-reference index */ 469 put_be16(pb, 1); /* Data-reference index */
469 470
470 put_be32(pb, 0); /* Reserved (= 02000c) */ 471 put_be16(pb, 0); /* Codec stream version */
471 put_be32(pb, 0); /* Reserved ("SVis")*/ 472 put_be16(pb, 0); /* Codec stream revision (=0) */
472 put_be32(pb, 0); /* Reserved */ 473 put_tag(pb, "FFMP"); /* Vendor */
473 put_be32(pb, 0); /* Reserved (400)*/ 474 if(track->enc->codec_id == CODEC_ID_RAWVIDEO) {
475 put_be32(pb, 0); /* Temporal Quality */
476 put_be32(pb, 0x400); /* Spatial Quality = lossless*/
477 } else {
478 put_be32(pb, 0x200); /* Temporal Quality = normal */
479 put_be32(pb, 0x200); /* Spatial Quality = normal */
480 }
474 put_be16(pb, track->enc->width); /* Video width */ 481 put_be16(pb, track->enc->width); /* Video width */
475 put_be16(pb, track->enc->height); /* Video height */ 482 put_be16(pb, track->enc->height); /* Video height */
476 put_be32(pb, 0x00480000); /* Reserved */ 483 put_be32(pb, 0x00480000); /* Horizontal resolution 72dpi */
477 put_be32(pb, 0x00480000); /* Reserved */ 484 put_be32(pb, 0x00480000); /* Vertical resolution 72dpi */
478 put_be32(pb, 0); /* Data size (= 0) */ 485 put_be32(pb, 0); /* Data size (= 0) */
479 put_be16(pb, 1); /* Frame count (= 1) */ 486 put_be16(pb, 1); /* Frame count (= 1) */
480 487
481 put_be32(pb, 0); /* Reserved */ 488 memset(compressor_name,0,32);
482 put_be32(pb, 0); /* Reserved */ 489 if (track->enc->codec->name)
483 put_be32(pb, 0); /* Reserved */ 490 strncpy(compressor_name,track->enc->codec->name,31);
484 put_be32(pb, 0); /* Reserved */ 491 put_byte(pb, FFMAX(strlen(compressor_name),32) );
485 put_be32(pb, 0); /* Reserved */ 492 put_buffer(pb, compressor_name, 31);
486 put_be32(pb, 0); /* Reserved */
487 put_be32(pb, 0); /* Reserved */
488 put_be32(pb, 0); /* Reserved */
489 493
490 put_be16(pb, 0x18); /* Reserved */ 494 put_be16(pb, 0x18); /* Reserved */
491 put_be16(pb, 0xffff); /* Reserved */ 495 put_be16(pb, 0xffff); /* Reserved */
492 if(track->enc->codec_id == CODEC_ID_MPEG4) 496 if(track->enc->codec_id == CODEC_ID_MPEG4)
493 mov_write_esds_tag(pb, track); 497 mov_write_esds_tag(pb, track);