# HG changeset patch # User michael # Date 1075640806 0 # Node ID f4f573c7dc565280da0b31260c200efb040f533f # Parent 72c7cf2f3a7aeee280547c7ae52cb90645b171bc Patch for MPEG-2 VOB headers by (Jimmy Blair ) diff -r 72c7cf2f3a7a -r f4f573c7dc56 mpeg.c --- a/mpeg.c Sat Jan 17 22:02:07 2004 +0000 +++ b/mpeg.c Sun Feb 01 13:06:46 2004 +0000 @@ -104,12 +104,12 @@ if (s->is_mpeg2) { /* clock extension */ put_bits(&pb, 9, 0); - put_bits(&pb, 1, 1); } put_bits(&pb, 1, 1); put_bits(&pb, 22, s->mux_rate); put_bits(&pb, 1, 1); if (s->is_mpeg2) { + put_bits(&pb, 1, 1); put_bits(&pb, 5, 0x1f); /* reserved */ put_bits(&pb, 3, 0); /* stuffing length */ } @@ -439,9 +439,10 @@ put_be32(&ctx->pb, startcode); put_be16(&ctx->pb, packet_size); - /* stuffing */ - for(i=0;ipb, 0xff); + + if (!s->is_mpeg2) + for(i=0;ipb, 0xff); if (s->is_mpeg2) { put_byte(&ctx->pb, 0x80); /* mpeg2 id */ @@ -449,17 +450,17 @@ if (pts != AV_NOPTS_VALUE) { if (dts != pts) { put_byte(&ctx->pb, 0xc0); /* flags */ - put_byte(&ctx->pb, header_len - 3); + put_byte(&ctx->pb, header_len - 3 + stuffing_size); put_timestamp(&ctx->pb, 0x03, pts); put_timestamp(&ctx->pb, 0x01, dts); } else { put_byte(&ctx->pb, 0x80); /* flags */ - put_byte(&ctx->pb, header_len - 3); + put_byte(&ctx->pb, header_len - 3 + stuffing_size); put_timestamp(&ctx->pb, 0x02, pts); } } else { put_byte(&ctx->pb, 0x00); /* flags */ - put_byte(&ctx->pb, header_len - 3); + put_byte(&ctx->pb, header_len - 3 + stuffing_size); } } else { if (pts != AV_NOPTS_VALUE) { @@ -490,6 +491,10 @@ } } + if (s->is_mpeg2) + for(i=0;ipb, 0xff); + /* output data */ put_buffer(&ctx->pb, stream->buffer, payload_size - stuffing_size); put_flush_packet(&ctx->pb);