[SCM] libav/experimental: 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.

siretart at users.alioth.debian.org siretart at users.alioth.debian.org
Sun Jun 30 17:11:55 UTC 2013


The following commit has been merged in the experimental branch:
commit cbbb10810c7a72fa7742c89459866aad942f7070
Author: Zhentan Feng <spyfeng at gmail.com>
Date:   Tue Jul 20 15:07:31 2010 +0000

    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

diff --git a/libavformat/mmst.c b/libavformat/mmst.c
index 5d39c62..cfd8919 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);
 }
 

-- 
Libav/FFmpeg packaging



More information about the pkg-multimedia-commits mailing list