summaryrefslogtreecommitdiff
path: root/libavformat/mmst.c
diff options
context:
space:
mode:
authorZhentan Feng <spyfeng@gmail.com>2010-07-20 15:07:31 +0000
committerRonald S. Bultje <rsbultje@gmail.com>2010-07-20 15:07:31 +0000
commitcbbb10810c7a72fa7742c89459866aad942f7070 (patch)
tree12fd09c28c42820518c4bae87de5047a67621594 /libavformat/mmst.c
parent0c717a30e0975cb26578c04385915bdddedecdd6 (diff)
Align outgoing messages to 8 bytes, this is required to interact with
most servers. Also remove a case where we manually aligned to 8 bytes, since this is now no longer needed. Patch by Zhentan Feng <spyfeng gmail com>. Originally committed as revision 24360 to svn://svn.ffmpeg.org/ffmpeg/trunk
Diffstat (limited to 'libavformat/mmst.c')
-rw-r--r--libavformat/mmst.c7
1 files changed, 3 insertions, 4 deletions
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);
}