]> git.sesse.net Git - ffmpeg/blobdiff - libavformat/mmst.c
Merge remote-tracking branch 'qatar/master'
[ffmpeg] / libavformat / mmst.c
index e3af4bfbc6f7f5d3c053aef49628a539768c383b..a3db288b35932aa1f60e04bbcea87dd95b1887fc 100644 (file)
@@ -35,6 +35,7 @@
 #include "libavutil/intreadwrite.h"
 #include "libavcodec/bytestream.h"
 #include "network.h"
+#include "url.h"
 
 #define LOCAL_ADDRESS 0xc0a80081    // FIXME get and use correct local ip address.
 #define LOCAL_PORT    1037          // as above.
@@ -138,20 +139,20 @@ static int send_command_packet(MMSTContext *mmst)
     memset(mms->write_out_ptr, 0, exact_length - len);
 
     // write it out.
-    write_result= url_write(mms->mms_hd, mms->out_buffer, exact_length);
+    write_result= ffurl_write(mms->mms_hd, mms->out_buffer, exact_length);
     if(write_result != exact_length) {
         av_log(NULL, AV_LOG_ERROR,
                "Failed to write data of length %d: %d (%s)\n",
                exact_length, write_result,
                write_result < 0 ? strerror(write_result) :
                    "The server closed the connection");
-        return AVERROR_IO;
+        return AVERROR(EIO);
     }
 
     return 0;
 }
 
-static void mms_put_utf16(MMSContext *mms, uint8_t *src)
+static void mms_put_utf16(MMSContext *mms, const uint8_t *src)
 {
     AVIOContext bic;
     int size = mms->write_out_ptr - mms->out_buffer;
@@ -240,7 +241,7 @@ static MMSSCPacketType get_tcp_server_response(MMSTContext *mmst)
     MMSSCPacketType packet_type= -1;
     MMSContext *mms = &mmst->mms;
     for(;;) {
-        read_result = url_read_complete(mms->mms_hd, mms->in_buffer, 8);
+        read_result = ffurl_read_complete(mms->mms_hd, mms->in_buffer, 8);
         if (read_result != 8) {
             if(read_result < 0) {
                 av_log(NULL, AV_LOG_ERROR,
@@ -260,14 +261,14 @@ static MMSSCPacketType get_tcp_server_response(MMSTContext *mmst)
             int length_remaining, hr;
 
             mmst->incoming_flags= mms->in_buffer[3];
-            read_result= url_read_complete(mms->mms_hd, mms->in_buffer+8, 4);
+            read_result= ffurl_read_complete(mms->mms_hd, mms->in_buffer+8, 4);
             if(read_result != 4) {
                 av_log(NULL, AV_LOG_ERROR,
                        "Reading command packet length failed: %d (%s)\n",
                        read_result,
                        read_result < 0 ? strerror(read_result) :
                            "The server closed the connection");
-                return read_result < 0 ? read_result : AVERROR_IO;
+                return read_result < 0 ? read_result : AVERROR(EIO);
             }
 
             length_remaining= AV_RL32(mms->in_buffer+8) + 4;
@@ -280,7 +281,7 @@ static MMSSCPacketType get_tcp_server_response(MMSTContext *mmst)
                        length_remaining, sizeof(mms->in_buffer) - 12);
                 return AVERROR_INVALIDDATA;
             }
-            read_result = url_read_complete(mms->mms_hd, mms->in_buffer + 12,
+            read_result = ffurl_read_complete(mms->mms_hd, mms->in_buffer + 12,
                                             length_remaining) ;
             if (read_result != length_remaining) {
                 av_log(NULL, AV_LOG_ERROR,
@@ -288,13 +289,13 @@ static MMSSCPacketType get_tcp_server_response(MMSTContext *mmst)
                        length_remaining, read_result,
                        read_result < 0 ? strerror(read_result) :
                            "The server closed the connection");
-                return read_result < 0 ? read_result : AVERROR_IO;
+                return read_result < 0 ? read_result : AVERROR(EIO);
             }
             packet_type= AV_RL16(mms->in_buffer+36);
             if (read_result >= 44 && (hr = AV_RL32(mms->in_buffer + 40))) {
                 av_log(NULL, AV_LOG_ERROR,
                        "Server sent a message with packet type 0x%x and error status code 0x%08x\n", packet_type, hr);
-                return AVERROR_UNKNOWN;
+                return AVERROR(EINVAL);
             }
         } else {
             int length_remaining;
@@ -318,14 +319,14 @@ static MMSSCPacketType get_tcp_server_response(MMSTContext *mmst)
             }
             mms->remaining_in_len    = length_remaining;
             mms->read_in_ptr         = mms->in_buffer;
-            read_result= url_read_complete(mms->mms_hd, mms->in_buffer, length_remaining);
+            read_result= ffurl_read_complete(mms->mms_hd, mms->in_buffer, length_remaining);
             if(read_result != length_remaining) {
                 av_log(NULL, AV_LOG_ERROR,
                        "Failed to read packet data of size %d: %d (%s)\n",
                        length_remaining, read_result,
                        read_result < 0 ? strerror(read_result) :
                            "The server closed the connection");
-                return read_result < 0 ? read_result : AVERROR_IO;
+                return read_result < 0 ? read_result : AVERROR(EIO);
             }
 
             // if we successfully read everything.
@@ -463,7 +464,7 @@ static int mms_close(URLContext *h)
     MMSContext *mms   = &mmst->mms;
     if(mms->mms_hd) {
         send_close_packet(mmst);
-        url_close(mms->mms_hd);
+        ffurl_close(mms->mms_hd);
     }
 
     /* free all separately allocated pointers in mms */
@@ -522,7 +523,7 @@ static int mms_open(URLContext *h, const char *uri, int flags)
 
     // establish tcp connection.
     ff_url_join(tcpname, sizeof(tcpname), "tcp", NULL, mmst->host, port, NULL);
-    err = url_open(&mms->mms_hd, tcpname, URL_RDWR);
+    err = ffurl_open(&mms->mms_hd, tcpname, AVIO_FLAG_READ_WRITE);
     if (err)
         goto fail;
 
@@ -549,7 +550,7 @@ static int mms_open(URLContext *h, const char *uri, int flags)
     if((mmst->incoming_flags != 0X08) && (mmst->incoming_flags != 0X0C)) {
         av_log(NULL, AV_LOG_ERROR,
                "The server does not support MMST (try MMSH or RTSP)\n");
-        err = AVERROR_NOFMT;
+        err = AVERROR(EINVAL);
         goto fail;
     }
     err = ff_mms_asf_header_parser(mms);
@@ -603,7 +604,7 @@ static int mms_read(URLContext *h, uint8_t *buf, int size)
                     av_log(NULL, AV_LOG_ERROR,
                            "Incoming pktlen %d is larger than ASF pktsize %d\n",
                            mms->remaining_in_len, mms->asf_packet_len);
-                    result= AVERROR_IO;
+                    result= AVERROR(EIO);
                 } else {
                     // copy the data to the packet buffer.
                     result = ff_mms_read_data(mms, buf, size);
@@ -622,10 +623,8 @@ static int mms_read(URLContext *h, uint8_t *buf, int size)
 }
 
 URLProtocol ff_mmst_protocol = {
-    "mmst",
-    mms_open,
-    mms_read,
-    NULL, // write
-    NULL, // seek
-    mms_close,
+    .name      = "mmst",
+    .url_open  = mms_open,
+    .url_read  = mms_read,
+    .url_close = mms_close,
 };