Mercurial > libavformat.hg
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); |