diff --git a/libavformat/mmst.c b/libavformat/mmst.c index 5d39c62306..cfd8919b34 100644 --- a/libavformat/mmst.c +++ b/libavformat/mmst.c @@ -146,7 +146,8 @@ static void insert_command_prefixes(MMSContext *mms, /** Send a prepared MMST command packet. */ static int send_command_packet(MMSContext *mms) { - int exact_length= mms->write_out_ptr - mms->out_buffer; + int len= mms->write_out_ptr - mms->out_buffer; + int exact_length = (len + 7) & ~7; int first_length= exact_length - 16; int len8= first_length/8; int write_result; @@ -155,6 +156,7 @@ static int send_command_packet(MMSContext *mms) AV_WL32(mms->out_buffer + 8, first_length); AV_WL32(mms->out_buffer + 16, len8); AV_WL32(mms->out_buffer + 32, len8-2); + memset(mms->write_out_ptr, 0, exact_length - len); // write it out. write_result= url_write(mms->mms_hd, mms->out_buffer, exact_length); @@ -491,9 +493,6 @@ static int send_stream_selection_request(MMSContext *mms) bytestream_put_le16(&mms->write_out_ptr, mms->streams[i].id); // stream id bytestream_put_le16(&mms->write_out_ptr, 0); // selection } - - bytestream_put_le16(&mms->write_out_ptr, 0); - return send_command_packet(mms); }