Mercurial > libavformat.hg
comparison asf-enc.c @ 1775:3562fd629c37 libavformat
fix broken memset(padding, 0) code
add a few asserts
author | michael |
---|---|
date | Fri, 09 Feb 2007 20:49:12 +0000 |
parents | 49b67c70e9c9 |
children | 4f4edbced58a |
comparison
equal
deleted
inserted
replaced
1774:814fbf5732eb | 1775:3562fd629c37 |
---|---|
535 int ppi_size, i; | 535 int ppi_size, i; |
536 int64_t start= url_ftell(pb); | 536 int64_t start= url_ftell(pb); |
537 | 537 |
538 int iLengthTypeFlags = ASF_PPI_LENGTH_TYPE_FLAGS; | 538 int iLengthTypeFlags = ASF_PPI_LENGTH_TYPE_FLAGS; |
539 | 539 |
540 padsize -= PACKET_HEADER_MIN_SIZE; | |
541 if(asf->multi_payloads_present) | |
542 padsize--; | |
543 assert(padsize>=0); | |
544 | |
540 put_byte(pb, ASF_PACKET_ERROR_CORRECTION_FLAGS); | 545 put_byte(pb, ASF_PACKET_ERROR_CORRECTION_FLAGS); |
541 for (i = 0; i < ASF_PACKET_ERROR_CORRECTION_DATA_SIZE; i++){ | 546 for (i = 0; i < ASF_PACKET_ERROR_CORRECTION_DATA_SIZE; i++){ |
542 put_byte(pb, 0x0); | 547 put_byte(pb, 0x0); |
543 } | 548 } |
544 | 549 |
585 asf->packet_timestamp_end - asf->packet_timestamp_start, | 590 asf->packet_timestamp_end - asf->packet_timestamp_start, |
586 asf->packet_nb_payloads, | 591 asf->packet_nb_payloads, |
587 asf->packet_size_left | 592 asf->packet_size_left |
588 ); | 593 ); |
589 | 594 |
590 packet_filled_size = PACKET_SIZE - packet_hdr_size - asf->packet_size_left; | 595 packet_filled_size = PACKET_SIZE - asf->packet_size_left; |
596 assert(packet_hdr_size <= asf->packet_size_left); | |
591 memset(asf->packet_buf + packet_filled_size, 0, asf->packet_size_left); | 597 memset(asf->packet_buf + packet_filled_size, 0, asf->packet_size_left); |
592 | 598 |
593 put_buffer(&s->pb, asf->packet_buf, asf->packet_size - packet_hdr_size); | 599 put_buffer(&s->pb, asf->packet_buf, asf->packet_size - packet_hdr_size); |
594 | 600 |
595 put_flush_packet(&s->pb); | 601 put_flush_packet(&s->pb); |
654 while (m_obj_offset < m_obj_size) { | 660 while (m_obj_offset < m_obj_size) { |
655 payload_len = m_obj_size - m_obj_offset; | 661 payload_len = m_obj_size - m_obj_offset; |
656 if (asf->packet_timestamp_start == -1) { | 662 if (asf->packet_timestamp_start == -1) { |
657 asf->multi_payloads_present = (payload_len < MULTI_PAYLOAD_CONSTANT); | 663 asf->multi_payloads_present = (payload_len < MULTI_PAYLOAD_CONSTANT); |
658 | 664 |
665 asf->packet_size_left = PACKET_SIZE; | |
659 if (asf->multi_payloads_present){ | 666 if (asf->multi_payloads_present){ |
660 asf->packet_size_left = PACKET_SIZE; //For debug | |
661 asf->packet_size_left = PACKET_SIZE - PACKET_HEADER_MIN_SIZE - 1; | |
662 frag_len1 = MULTI_PAYLOAD_CONSTANT - 1; | 667 frag_len1 = MULTI_PAYLOAD_CONSTANT - 1; |
663 } | 668 } |
664 else { | 669 else { |
665 asf->packet_size_left = PACKET_SIZE - PACKET_HEADER_MIN_SIZE; | |
666 frag_len1 = SINGLE_PAYLOAD_DATA_LENGTH; | 670 frag_len1 = SINGLE_PAYLOAD_DATA_LENGTH; |
667 } | 671 } |
668 asf->packet_timestamp_start = timestamp; | 672 asf->packet_timestamp_start = timestamp; |
669 } | 673 } |
670 else { | 674 else { |
671 // multi payloads | 675 // multi payloads |
672 frag_len1 = asf->packet_size_left - PAYLOAD_HEADER_SIZE_MULTIPLE_PAYLOADS; | 676 frag_len1 = asf->packet_size_left - PAYLOAD_HEADER_SIZE_MULTIPLE_PAYLOADS - PACKET_HEADER_MIN_SIZE - 1; |
673 | 677 |
674 asf->packet_timestamp_start = timestamp; | 678 asf->packet_timestamp_start = timestamp; |
675 } | 679 } |
676 if (frag_len1 > 0) { | 680 if (frag_len1 > 0) { |
677 if (payload_len > frag_len1) | 681 if (payload_len > frag_len1) |
695 m_obj_offset += payload_len; | 699 m_obj_offset += payload_len; |
696 buf += payload_len; | 700 buf += payload_len; |
697 | 701 |
698 if (!asf->multi_payloads_present) | 702 if (!asf->multi_payloads_present) |
699 flush_packet(s); | 703 flush_packet(s); |
700 else if (asf->packet_size_left <= (PAYLOAD_HEADER_SIZE_MULTIPLE_PAYLOADS + 1)) | 704 else if (asf->packet_size_left <= (PAYLOAD_HEADER_SIZE_MULTIPLE_PAYLOADS + PACKET_HEADER_MIN_SIZE + 1)) |
701 flush_packet(s); | 705 flush_packet(s); |
702 } | 706 } |
703 stream->seq++; | 707 stream->seq++; |
704 } | 708 } |
705 | 709 |