annotate stream/asf_mmst_streaming.c @ 30194:bd9db1814611

Implement sws_isSupportedInput() and sws_isSupportedOutput().
author stefano
date Thu, 07 Jan 2010 19:07:47 +0000
parents 79f3477b277e
children c6356454b724
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
19882
9ffae26c0add Restore original copyright notice as found in xine and xine-mms where this
diego
parents: 19335
diff changeset
1 /*
9ffae26c0add Restore original copyright notice as found in xine and xine-mms where this
diego
parents: 19335
diff changeset
2 * MMST implementation taken from the xine-mms plugin made by
9ffae26c0add Restore original copyright notice as found in xine and xine-mms where this
diego
parents: 19335
diff changeset
3 * Major MMS (http://geocities.com/majormms/).
9ffae26c0add Restore original copyright notice as found in xine and xine-mms where this
diego
parents: 19335
diff changeset
4 * Ported to MPlayer by Abhijeet Phatak <abhijeetphatak@yahoo.com>.
9ffae26c0add Restore original copyright notice as found in xine and xine-mms where this
diego
parents: 19335
diff changeset
5 *
9ffae26c0add Restore original copyright notice as found in xine and xine-mms where this
diego
parents: 19335
diff changeset
6 * Information about the MMS protocol can be found at http://get.to/sdp
9ffae26c0add Restore original copyright notice as found in xine and xine-mms where this
diego
parents: 19335
diff changeset
7 *
9ffae26c0add Restore original copyright notice as found in xine and xine-mms where this
diego
parents: 19335
diff changeset
8 * copyright (C) 2002 Abhijeet Phatak <abhijeetphatak@yahoo.com>
9ffae26c0add Restore original copyright notice as found in xine and xine-mms where this
diego
parents: 19335
diff changeset
9 * copyright (C) 2002 the xine project
9ffae26c0add Restore original copyright notice as found in xine and xine-mms where this
diego
parents: 19335
diff changeset
10 * copyright (C) 2000-2001 major mms
9ffae26c0add Restore original copyright notice as found in xine and xine-mms where this
diego
parents: 19335
diff changeset
11 *
9ffae26c0add Restore original copyright notice as found in xine and xine-mms where this
diego
parents: 19335
diff changeset
12 * This file is part of MPlayer.
9ffae26c0add Restore original copyright notice as found in xine and xine-mms where this
diego
parents: 19335
diff changeset
13 *
9ffae26c0add Restore original copyright notice as found in xine and xine-mms where this
diego
parents: 19335
diff changeset
14 * MPlayer is free software; you can redistribute it and/or modify
9ffae26c0add Restore original copyright notice as found in xine and xine-mms where this
diego
parents: 19335
diff changeset
15 * it under the terms of the GNU General Public License as published by
9ffae26c0add Restore original copyright notice as found in xine and xine-mms where this
diego
parents: 19335
diff changeset
16 * the Free Software Foundation; either version 2 of the License, or
9ffae26c0add Restore original copyright notice as found in xine and xine-mms where this
diego
parents: 19335
diff changeset
17 * (at your option) any later version.
9ffae26c0add Restore original copyright notice as found in xine and xine-mms where this
diego
parents: 19335
diff changeset
18 *
9ffae26c0add Restore original copyright notice as found in xine and xine-mms where this
diego
parents: 19335
diff changeset
19 * MPlayer is distributed in the hope that it will be useful,
9ffae26c0add Restore original copyright notice as found in xine and xine-mms where this
diego
parents: 19335
diff changeset
20 * but WITHOUT ANY WARRANTY; without even the implied warranty of
9ffae26c0add Restore original copyright notice as found in xine and xine-mms where this
diego
parents: 19335
diff changeset
21 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
9ffae26c0add Restore original copyright notice as found in xine and xine-mms where this
diego
parents: 19335
diff changeset
22 * GNU General Public License for more details.
9ffae26c0add Restore original copyright notice as found in xine and xine-mms where this
diego
parents: 19335
diff changeset
23 *
26737
a26e50cae389 Use standard license headers with standard formatting.
diego
parents: 22159
diff changeset
24 * You should have received a copy of the GNU General Public License along
a26e50cae389 Use standard license headers with standard formatting.
diego
parents: 22159
diff changeset
25 * with MPlayer; if not, write to the Free Software Foundation, Inc.,
a26e50cae389 Use standard license headers with standard formatting.
diego
parents: 22159
diff changeset
26 * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
19882
9ffae26c0add Restore original copyright notice as found in xine and xine-mms where this
diego
parents: 19335
diff changeset
27 */
6092
1529f01e8108 Added support for asf mmst protocol.
bertrand
parents:
diff changeset
28
1529f01e8108 Added support for asf mmst protocol.
bertrand
parents:
diff changeset
29
1529f01e8108 Added support for asf mmst protocol.
bertrand
parents:
diff changeset
30 #include <stdio.h>
1529f01e8108 Added support for asf mmst protocol.
bertrand
parents:
diff changeset
31 #include <stdlib.h>
1529f01e8108 Added support for asf mmst protocol.
bertrand
parents:
diff changeset
32 #include <string.h>
1529f01e8108 Added support for asf mmst protocol.
bertrand
parents:
diff changeset
33 #include <unistd.h>
1529f01e8108 Added support for asf mmst protocol.
bertrand
parents:
diff changeset
34 #include <errno.h>
7880
5bb4d8801a2c - fixed several 10l bugs
arpi
parents: 7472
diff changeset
35 #include <inttypes.h>
6092
1529f01e8108 Added support for asf mmst protocol.
bertrand
parents:
diff changeset
36
1529f01e8108 Added support for asf mmst protocol.
bertrand
parents:
diff changeset
37 #include "config.h"
1529f01e8108 Added support for asf mmst protocol.
bertrand
parents:
diff changeset
38
16882
dfbe8cd0e081 libmpdemux translatables to help_mp part 1 / mp_msg calls / try 2
reynaldo
parents: 16330
diff changeset
39 #include "mp_msg.h"
dfbe8cd0e081 libmpdemux translatables to help_mp part 1 / mp_msg calls / try 2
reynaldo
parents: 16330
diff changeset
40 #include "help_mp.h"
dfbe8cd0e081 libmpdemux translatables to help_mp part 1 / mp_msg calls / try 2
reynaldo
parents: 16330
diff changeset
41
28402
c884d17bd005 Convert HAVE_WINSOCK2_H into a 0/1 definition.
diego
parents: 27473
diff changeset
42 #if HAVE_WINSOCK2_H
27472
c0b233cd30ca Revert moving closesocket definition and network headers to network.h.
diego
parents: 27464
diff changeset
43 #include <winsock2.h>
c0b233cd30ca Revert moving closesocket definition and network headers to network.h.
diego
parents: 27464
diff changeset
44 #endif
c0b233cd30ca Revert moving closesocket definition and network headers to network.h.
diego
parents: 27464
diff changeset
45
27341
e7c989f7a7c9 Start unifying names of internal preprocessor directives.
diego
parents: 26756
diff changeset
46 #ifndef CONFIG_SETLOCALE
27393
4876c89bafdd Rename font-related preprocessor directives.
diego
parents: 27359
diff changeset
47 #undef CONFIG_ICONV
12675
7c5dee73a7dc disable iconv in case setlocale is disabled - compile fix
alex
parents: 12674
diff changeset
48 #endif
7c5dee73a7dc disable iconv in case setlocale is disabled - compile fix
alex
parents: 12674
diff changeset
49
27393
4876c89bafdd Rename font-related preprocessor directives.
diego
parents: 27359
diff changeset
50 #ifdef CONFIG_ICONV
12674
0392f36045f4 user nl_langinfo if langinfo support present for proper chinese support, feature requested by Shixin Zheng <shixinzheng@sjtu.edu.cn>
alex
parents: 12545
diff changeset
51 #include <iconv.h>
11350
007ec48cf146 Current mplayer (mine is mplayer-1.0-pre1cvs20031001) cannot play mms
attila
parents: 11226
diff changeset
52 #endif
007ec48cf146 Current mplayer (mine is mplayer-1.0-pre1cvs20031001) cannot play mms
attila
parents: 11226
diff changeset
53
6092
1529f01e8108 Added support for asf mmst protocol.
bertrand
parents:
diff changeset
54 #include "url.h"
19312
ab8d6b6deb63 proper inclusion of demuxer.h (including libmpdemux in Makefile only was to make previous split easier)
ben
parents: 19271
diff changeset
55 #include "libmpdemux/asf.h"
6092
1529f01e8108 Added support for asf mmst protocol.
bertrand
parents:
diff changeset
56
1529f01e8108 Added support for asf mmst protocol.
bertrand
parents:
diff changeset
57 #include "stream.h"
1529f01e8108 Added support for asf mmst protocol.
bertrand
parents:
diff changeset
58
1529f01e8108 Added support for asf mmst protocol.
bertrand
parents:
diff changeset
59 #include "network.h"
19335
2a9d669e5ff6 isolated tcp socket code from network.c to a dedicated file
ben
parents: 19312
diff changeset
60 #include "tcp.h"
6092
1529f01e8108 Added support for asf mmst protocol.
bertrand
parents:
diff changeset
61
22159
6d8f2be532d4 Quick hack mostly for documentation purposes to make -aid work with mms://
reimar
parents: 21536
diff changeset
62 extern int audio_id;
6d8f2be532d4 Quick hack mostly for documentation purposes to make -aid work with mms://
reimar
parents: 21536
diff changeset
63 extern int video_id;
6d8f2be532d4 Quick hack mostly for documentation purposes to make -aid work with mms://
reimar
parents: 21536
diff changeset
64
6092
1529f01e8108 Added support for asf mmst protocol.
bertrand
parents:
diff changeset
65 #define BUF_SIZE 102400
14163
dd835e8f3698 fix a problem pointed out by iDEFENSE and several similar ones.
reimar
parents: 13600
diff changeset
66 #define HDR_BUF_SIZE 8192
15181
ed74657f25b1 Use define instead of hardcodec value for max streams number
rtognimp
parents: 15173
diff changeset
67 #define MAX_STREAMS 20
6092
1529f01e8108 Added support for asf mmst protocol.
bertrand
parents:
diff changeset
68
29263
0f1b5b68af32 whitespace cosmetics: Remove all trailing whitespace.
diego
parents: 28402
diff changeset
69 typedef struct
6092
1529f01e8108 Added support for asf mmst protocol.
bertrand
parents:
diff changeset
70 {
1529f01e8108 Added support for asf mmst protocol.
bertrand
parents:
diff changeset
71 uint8_t buf[BUF_SIZE];
1529f01e8108 Added support for asf mmst protocol.
bertrand
parents:
diff changeset
72 int num_bytes;
1529f01e8108 Added support for asf mmst protocol.
bertrand
parents:
diff changeset
73
1529f01e8108 Added support for asf mmst protocol.
bertrand
parents:
diff changeset
74 } command_t;
1529f01e8108 Added support for asf mmst protocol.
bertrand
parents:
diff changeset
75
7880
5bb4d8801a2c - fixed several 10l bugs
arpi
parents: 7472
diff changeset
76 static int seq_num;
5bb4d8801a2c - fixed several 10l bugs
arpi
parents: 7472
diff changeset
77 static int num_stream_ids;
15181
ed74657f25b1 Use define instead of hardcodec value for max streams number
rtognimp
parents: 15173
diff changeset
78 static int stream_ids[MAX_STREAMS];
6092
1529f01e8108 Added support for asf mmst protocol.
bertrand
parents:
diff changeset
79
1529f01e8108 Added support for asf mmst protocol.
bertrand
parents:
diff changeset
80 static int get_data (int s, char *buf, size_t count);
1529f01e8108 Added support for asf mmst protocol.
bertrand
parents:
diff changeset
81
29263
0f1b5b68af32 whitespace cosmetics: Remove all trailing whitespace.
diego
parents: 28402
diff changeset
82 static void put_32 (command_t *cmd, uint32_t value)
6092
1529f01e8108 Added support for asf mmst protocol.
bertrand
parents:
diff changeset
83 {
1529f01e8108 Added support for asf mmst protocol.
bertrand
parents:
diff changeset
84 cmd->buf[cmd->num_bytes ] = value % 256;
1529f01e8108 Added support for asf mmst protocol.
bertrand
parents:
diff changeset
85 value = value >> 8;
1529f01e8108 Added support for asf mmst protocol.
bertrand
parents:
diff changeset
86 cmd->buf[cmd->num_bytes+1] = value % 256 ;
1529f01e8108 Added support for asf mmst protocol.
bertrand
parents:
diff changeset
87 value = value >> 8;
1529f01e8108 Added support for asf mmst protocol.
bertrand
parents:
diff changeset
88 cmd->buf[cmd->num_bytes+2] = value % 256 ;
1529f01e8108 Added support for asf mmst protocol.
bertrand
parents:
diff changeset
89 value = value >> 8;
1529f01e8108 Added support for asf mmst protocol.
bertrand
parents:
diff changeset
90 cmd->buf[cmd->num_bytes+3] = value % 256 ;
1529f01e8108 Added support for asf mmst protocol.
bertrand
parents:
diff changeset
91
1529f01e8108 Added support for asf mmst protocol.
bertrand
parents:
diff changeset
92 cmd->num_bytes += 4;
1529f01e8108 Added support for asf mmst protocol.
bertrand
parents:
diff changeset
93 }
1529f01e8108 Added support for asf mmst protocol.
bertrand
parents:
diff changeset
94
29263
0f1b5b68af32 whitespace cosmetics: Remove all trailing whitespace.
diego
parents: 28402
diff changeset
95 static uint32_t get_32 (unsigned char *cmd, int offset)
6092
1529f01e8108 Added support for asf mmst protocol.
bertrand
parents:
diff changeset
96 {
1529f01e8108 Added support for asf mmst protocol.
bertrand
parents:
diff changeset
97 uint32_t ret;
1529f01e8108 Added support for asf mmst protocol.
bertrand
parents:
diff changeset
98
1529f01e8108 Added support for asf mmst protocol.
bertrand
parents:
diff changeset
99 ret = cmd[offset] ;
1529f01e8108 Added support for asf mmst protocol.
bertrand
parents:
diff changeset
100 ret |= cmd[offset+1]<<8 ;
1529f01e8108 Added support for asf mmst protocol.
bertrand
parents:
diff changeset
101 ret |= cmd[offset+2]<<16 ;
1529f01e8108 Added support for asf mmst protocol.
bertrand
parents:
diff changeset
102 ret |= cmd[offset+3]<<24 ;
1529f01e8108 Added support for asf mmst protocol.
bertrand
parents:
diff changeset
103
1529f01e8108 Added support for asf mmst protocol.
bertrand
parents:
diff changeset
104 return ret;
1529f01e8108 Added support for asf mmst protocol.
bertrand
parents:
diff changeset
105 }
1529f01e8108 Added support for asf mmst protocol.
bertrand
parents:
diff changeset
106
29263
0f1b5b68af32 whitespace cosmetics: Remove all trailing whitespace.
diego
parents: 28402
diff changeset
107 static void send_command (int s, int command, uint32_t switches,
6092
1529f01e8108 Added support for asf mmst protocol.
bertrand
parents:
diff changeset
108 uint32_t extra, int length,
29263
0f1b5b68af32 whitespace cosmetics: Remove all trailing whitespace.
diego
parents: 28402
diff changeset
109 char *data)
6092
1529f01e8108 Added support for asf mmst protocol.
bertrand
parents:
diff changeset
110 {
1529f01e8108 Added support for asf mmst protocol.
bertrand
parents:
diff changeset
111 command_t cmd;
1529f01e8108 Added support for asf mmst protocol.
bertrand
parents:
diff changeset
112 int len8;
1529f01e8108 Added support for asf mmst protocol.
bertrand
parents:
diff changeset
113
11225
48bb1fd37d2a Fixing tons of 10ls. Patch by rgselk <rgselknospam@yahoo.com>
alex
parents: 10625
diff changeset
114 len8 = (length + 7) / 8;
6092
1529f01e8108 Added support for asf mmst protocol.
bertrand
parents:
diff changeset
115
1529f01e8108 Added support for asf mmst protocol.
bertrand
parents:
diff changeset
116 cmd.num_bytes = 0;
1529f01e8108 Added support for asf mmst protocol.
bertrand
parents:
diff changeset
117
1529f01e8108 Added support for asf mmst protocol.
bertrand
parents:
diff changeset
118 put_32 (&cmd, 0x00000001); /* start sequence */
1529f01e8108 Added support for asf mmst protocol.
bertrand
parents:
diff changeset
119 put_32 (&cmd, 0xB00BFACE); /* #-)) */
11225
48bb1fd37d2a Fixing tons of 10ls. Patch by rgselk <rgselknospam@yahoo.com>
alex
parents: 10625
diff changeset
120 put_32 (&cmd, len8*8 + 32);
6092
1529f01e8108 Added support for asf mmst protocol.
bertrand
parents:
diff changeset
121 put_32 (&cmd, 0x20534d4d); /* protocol type "MMS " */
1529f01e8108 Added support for asf mmst protocol.
bertrand
parents:
diff changeset
122 put_32 (&cmd, len8 + 4);
1529f01e8108 Added support for asf mmst protocol.
bertrand
parents:
diff changeset
123 put_32 (&cmd, seq_num);
1529f01e8108 Added support for asf mmst protocol.
bertrand
parents:
diff changeset
124 seq_num++;
1529f01e8108 Added support for asf mmst protocol.
bertrand
parents:
diff changeset
125 put_32 (&cmd, 0x0); /* unknown */
1529f01e8108 Added support for asf mmst protocol.
bertrand
parents:
diff changeset
126 put_32 (&cmd, 0x0);
1529f01e8108 Added support for asf mmst protocol.
bertrand
parents:
diff changeset
127 put_32 (&cmd, len8+2);
1529f01e8108 Added support for asf mmst protocol.
bertrand
parents:
diff changeset
128 put_32 (&cmd, 0x00030000 | command); /* dir | command */
1529f01e8108 Added support for asf mmst protocol.
bertrand
parents:
diff changeset
129 put_32 (&cmd, switches);
1529f01e8108 Added support for asf mmst protocol.
bertrand
parents:
diff changeset
130 put_32 (&cmd, extra);
1529f01e8108 Added support for asf mmst protocol.
bertrand
parents:
diff changeset
131
1529f01e8108 Added support for asf mmst protocol.
bertrand
parents:
diff changeset
132 memcpy (&cmd.buf[48], data, length);
11225
48bb1fd37d2a Fixing tons of 10ls. Patch by rgselk <rgselknospam@yahoo.com>
alex
parents: 10625
diff changeset
133 if (length & 7)
48bb1fd37d2a Fixing tons of 10ls. Patch by rgselk <rgselknospam@yahoo.com>
alex
parents: 10625
diff changeset
134 memset(&cmd.buf[48 + length], 0, 8 - (length & 7));
6092
1529f01e8108 Added support for asf mmst protocol.
bertrand
parents:
diff changeset
135
11225
48bb1fd37d2a Fixing tons of 10ls. Patch by rgselk <rgselknospam@yahoo.com>
alex
parents: 10625
diff changeset
136 if (send (s, cmd.buf, len8*8+48, 0) != (len8*8+48)) {
16882
dfbe8cd0e081 libmpdemux translatables to help_mp part 1 / mp_msg calls / try 2
reynaldo
parents: 16330
diff changeset
137 mp_msg(MSGT_NETWORK,MSGL_ERR,MSGTR_MPDEMUX_MMST_WriteError);
6092
1529f01e8108 Added support for asf mmst protocol.
bertrand
parents:
diff changeset
138 }
1529f01e8108 Added support for asf mmst protocol.
bertrand
parents:
diff changeset
139 }
1529f01e8108 Added support for asf mmst protocol.
bertrand
parents:
diff changeset
140
27393
4876c89bafdd Rename font-related preprocessor directives.
diego
parents: 27359
diff changeset
141 #ifdef CONFIG_ICONV
11350
007ec48cf146 Current mplayer (mine is mplayer-1.0-pre1cvs20031001) cannot play mms
attila
parents: 11226
diff changeset
142 static iconv_t url_conv;
11403
86ab7e0b2a65 fallback to non-iconv dummy utf16 conversion if iconv failed
alex
parents: 11402
diff changeset
143 #endif
11350
007ec48cf146 Current mplayer (mine is mplayer-1.0-pre1cvs20031001) cannot play mms
attila
parents: 11226
diff changeset
144
007ec48cf146 Current mplayer (mine is mplayer-1.0-pre1cvs20031001) cannot play mms
attila
parents: 11226
diff changeset
145 static void string_utf16(char *dest, char *src, int len) {
11403
86ab7e0b2a65 fallback to non-iconv dummy utf16 conversion if iconv failed
alex
parents: 11402
diff changeset
146 int i;
27393
4876c89bafdd Rename font-related preprocessor directives.
diego
parents: 27359
diff changeset
147 #ifdef CONFIG_ICONV
11350
007ec48cf146 Current mplayer (mine is mplayer-1.0-pre1cvs20031001) cannot play mms
attila
parents: 11226
diff changeset
148 size_t len1, len2;
007ec48cf146 Current mplayer (mine is mplayer-1.0-pre1cvs20031001) cannot play mms
attila
parents: 11226
diff changeset
149 char *ip, *op;
007ec48cf146 Current mplayer (mine is mplayer-1.0-pre1cvs20031001) cannot play mms
attila
parents: 11226
diff changeset
150
11412
ec3dac7d17a0 Warning fixes (approved by A'rpi).
rathann
parents: 11403
diff changeset
151 if (url_conv != (iconv_t)(-1))
11403
86ab7e0b2a65 fallback to non-iconv dummy utf16 conversion if iconv failed
alex
parents: 11402
diff changeset
152 {
11350
007ec48cf146 Current mplayer (mine is mplayer-1.0-pre1cvs20031001) cannot play mms
attila
parents: 11226
diff changeset
153 memset(dest, 0, 1000);
007ec48cf146 Current mplayer (mine is mplayer-1.0-pre1cvs20031001) cannot play mms
attila
parents: 11226
diff changeset
154 len1 = len; len2 = 1000;
007ec48cf146 Current mplayer (mine is mplayer-1.0-pre1cvs20031001) cannot play mms
attila
parents: 11226
diff changeset
155 ip = src; op = dest;
007ec48cf146 Current mplayer (mine is mplayer-1.0-pre1cvs20031001) cannot play mms
attila
parents: 11226
diff changeset
156
007ec48cf146 Current mplayer (mine is mplayer-1.0-pre1cvs20031001) cannot play mms
attila
parents: 11226
diff changeset
157 iconv(url_conv, &ip, &len1, &op, &len2);
11403
86ab7e0b2a65 fallback to non-iconv dummy utf16 conversion if iconv failed
alex
parents: 11402
diff changeset
158 }
86ab7e0b2a65 fallback to non-iconv dummy utf16 conversion if iconv failed
alex
parents: 11402
diff changeset
159 else
86ab7e0b2a65 fallback to non-iconv dummy utf16 conversion if iconv failed
alex
parents: 11402
diff changeset
160 {
86ab7e0b2a65 fallback to non-iconv dummy utf16 conversion if iconv failed
alex
parents: 11402
diff changeset
161 #endif
15150
38ec64821910 Make string_utf16 code behave almost the same with or without iconv
rtognimp
parents: 14542
diff changeset
162 if (len > 499) len = 499;
11403
86ab7e0b2a65 fallback to non-iconv dummy utf16 conversion if iconv failed
alex
parents: 11402
diff changeset
163 for (i=0; i<len; i++) {
86ab7e0b2a65 fallback to non-iconv dummy utf16 conversion if iconv failed
alex
parents: 11402
diff changeset
164 dest[i*2] = src[i];
86ab7e0b2a65 fallback to non-iconv dummy utf16 conversion if iconv failed
alex
parents: 11402
diff changeset
165 dest[i*2+1] = 0;
86ab7e0b2a65 fallback to non-iconv dummy utf16 conversion if iconv failed
alex
parents: 11402
diff changeset
166 }
86ab7e0b2a65 fallback to non-iconv dummy utf16 conversion if iconv failed
alex
parents: 11402
diff changeset
167 /* trailing zeroes */
86ab7e0b2a65 fallback to non-iconv dummy utf16 conversion if iconv failed
alex
parents: 11402
diff changeset
168 dest[i*2] = 0;
86ab7e0b2a65 fallback to non-iconv dummy utf16 conversion if iconv failed
alex
parents: 11402
diff changeset
169 dest[i*2+1] = 0;
27393
4876c89bafdd Rename font-related preprocessor directives.
diego
parents: 27359
diff changeset
170 #ifdef CONFIG_ICONV
11403
86ab7e0b2a65 fallback to non-iconv dummy utf16 conversion if iconv failed
alex
parents: 11402
diff changeset
171 }
86ab7e0b2a65 fallback to non-iconv dummy utf16 conversion if iconv failed
alex
parents: 11402
diff changeset
172 #endif
11350
007ec48cf146 Current mplayer (mine is mplayer-1.0-pre1cvs20031001) cannot play mms
attila
parents: 11226
diff changeset
173 }
007ec48cf146 Current mplayer (mine is mplayer-1.0-pre1cvs20031001) cannot play mms
attila
parents: 11226
diff changeset
174
29263
0f1b5b68af32 whitespace cosmetics: Remove all trailing whitespace.
diego
parents: 28402
diff changeset
175 static void get_answer (int s)
6092
1529f01e8108 Added support for asf mmst protocol.
bertrand
parents:
diff changeset
176 {
1529f01e8108 Added support for asf mmst protocol.
bertrand
parents:
diff changeset
177 char data[BUF_SIZE];
1529f01e8108 Added support for asf mmst protocol.
bertrand
parents:
diff changeset
178 int command = 0x1b;
1529f01e8108 Added support for asf mmst protocol.
bertrand
parents:
diff changeset
179
1529f01e8108 Added support for asf mmst protocol.
bertrand
parents:
diff changeset
180 while (command == 0x1b) {
1529f01e8108 Added support for asf mmst protocol.
bertrand
parents:
diff changeset
181 int len;
1529f01e8108 Added support for asf mmst protocol.
bertrand
parents:
diff changeset
182
10206
35e306346e59 Using recv/send instead read/write for proper MinGW support (it's a 4.2BSD standard). Patch by FloDt <flodt8@yahoo.de>
alex
parents: 10183
diff changeset
183 len = recv (s, data, BUF_SIZE, 0) ;
6092
1529f01e8108 Added support for asf mmst protocol.
bertrand
parents:
diff changeset
184 if (!len) {
16882
dfbe8cd0e081 libmpdemux translatables to help_mp part 1 / mp_msg calls / try 2
reynaldo
parents: 16330
diff changeset
185 mp_msg(MSGT_NETWORK,MSGL_ERR,MSGTR_MPDEMUX_MMST_EOFAlert);
6092
1529f01e8108 Added support for asf mmst protocol.
bertrand
parents:
diff changeset
186 return;
1529f01e8108 Added support for asf mmst protocol.
bertrand
parents:
diff changeset
187 }
1529f01e8108 Added support for asf mmst protocol.
bertrand
parents:
diff changeset
188
1529f01e8108 Added support for asf mmst protocol.
bertrand
parents:
diff changeset
189 command = get_32 (data, 36) & 0xFFFF;
1529f01e8108 Added support for asf mmst protocol.
bertrand
parents:
diff changeset
190
29263
0f1b5b68af32 whitespace cosmetics: Remove all trailing whitespace.
diego
parents: 28402
diff changeset
191 if (command == 0x1b)
6092
1529f01e8108 Added support for asf mmst protocol.
bertrand
parents:
diff changeset
192 send_command (s, 0x1b, 0, 0, 0, data);
1529f01e8108 Added support for asf mmst protocol.
bertrand
parents:
diff changeset
193 }
1529f01e8108 Added support for asf mmst protocol.
bertrand
parents:
diff changeset
194 }
1529f01e8108 Added support for asf mmst protocol.
bertrand
parents:
diff changeset
195
29263
0f1b5b68af32 whitespace cosmetics: Remove all trailing whitespace.
diego
parents: 28402
diff changeset
196 static int get_data (int s, char *buf, size_t count)
6092
1529f01e8108 Added support for asf mmst protocol.
bertrand
parents:
diff changeset
197 {
7953
60624e692b95 GCC warning fixes
bertrand
parents: 7880
diff changeset
198 ssize_t len;
60624e692b95 GCC warning fixes
bertrand
parents: 7880
diff changeset
199 size_t total = 0;
6092
1529f01e8108 Added support for asf mmst protocol.
bertrand
parents:
diff changeset
200
1529f01e8108 Added support for asf mmst protocol.
bertrand
parents:
diff changeset
201 while (total < count) {
1529f01e8108 Added support for asf mmst protocol.
bertrand
parents:
diff changeset
202
10206
35e306346e59 Using recv/send instead read/write for proper MinGW support (it's a 4.2BSD standard). Patch by FloDt <flodt8@yahoo.de>
alex
parents: 10183
diff changeset
203 len = recv (s, &buf[total], count-total, 0);
6092
1529f01e8108 Added support for asf mmst protocol.
bertrand
parents:
diff changeset
204
12545
868376f81c30 Fix hang on broken mmst streams
rtognimp
parents: 12121
diff changeset
205 if (len<=0) {
6092
1529f01e8108 Added support for asf mmst protocol.
bertrand
parents:
diff changeset
206 perror ("read error:");
1529f01e8108 Added support for asf mmst protocol.
bertrand
parents:
diff changeset
207 return 0;
1529f01e8108 Added support for asf mmst protocol.
bertrand
parents:
diff changeset
208 }
1529f01e8108 Added support for asf mmst protocol.
bertrand
parents:
diff changeset
209
1529f01e8108 Added support for asf mmst protocol.
bertrand
parents:
diff changeset
210 total += len;
1529f01e8108 Added support for asf mmst protocol.
bertrand
parents:
diff changeset
211
1529f01e8108 Added support for asf mmst protocol.
bertrand
parents:
diff changeset
212 if (len != 0) {
15626
941b1a71351f printf converted to mp_msg; made static many unnecessarily global symbols
nicodvb
parents: 15181
diff changeset
213 // mp_msg(MSGT_NETWORK,MSGL_INFO,"[%d/%d]", total, count);
6092
1529f01e8108 Added support for asf mmst protocol.
bertrand
parents:
diff changeset
214 fflush (stdout);
1529f01e8108 Added support for asf mmst protocol.
bertrand
parents:
diff changeset
215 }
1529f01e8108 Added support for asf mmst protocol.
bertrand
parents:
diff changeset
216
1529f01e8108 Added support for asf mmst protocol.
bertrand
parents:
diff changeset
217 }
1529f01e8108 Added support for asf mmst protocol.
bertrand
parents:
diff changeset
218
1529f01e8108 Added support for asf mmst protocol.
bertrand
parents:
diff changeset
219 return 1;
1529f01e8108 Added support for asf mmst protocol.
bertrand
parents:
diff changeset
220
1529f01e8108 Added support for asf mmst protocol.
bertrand
parents:
diff changeset
221 }
1529f01e8108 Added support for asf mmst protocol.
bertrand
parents:
diff changeset
222
29263
0f1b5b68af32 whitespace cosmetics: Remove all trailing whitespace.
diego
parents: 28402
diff changeset
223 static int get_header (int s, uint8_t *header, streaming_ctrl_t *streaming_ctrl)
6092
1529f01e8108 Added support for asf mmst protocol.
bertrand
parents:
diff changeset
224 {
1529f01e8108 Added support for asf mmst protocol.
bertrand
parents:
diff changeset
225 unsigned char pre_header[8];
7953
60624e692b95 GCC warning fixes
bertrand
parents: 7880
diff changeset
226 int header_len;
6092
1529f01e8108 Added support for asf mmst protocol.
bertrand
parents:
diff changeset
227
1529f01e8108 Added support for asf mmst protocol.
bertrand
parents:
diff changeset
228 header_len = 0;
1529f01e8108 Added support for asf mmst protocol.
bertrand
parents:
diff changeset
229
1529f01e8108 Added support for asf mmst protocol.
bertrand
parents:
diff changeset
230 while (1) {
1529f01e8108 Added support for asf mmst protocol.
bertrand
parents:
diff changeset
231 if (!get_data (s, pre_header, 8)) {
16882
dfbe8cd0e081 libmpdemux translatables to help_mp part 1 / mp_msg calls / try 2
reynaldo
parents: 16330
diff changeset
232 mp_msg(MSGT_NETWORK,MSGL_ERR,MSGTR_MPDEMUX_MMST_PreHeaderReadFailed);
6092
1529f01e8108 Added support for asf mmst protocol.
bertrand
parents:
diff changeset
233 return 0;
1529f01e8108 Added support for asf mmst protocol.
bertrand
parents:
diff changeset
234 }
1529f01e8108 Added support for asf mmst protocol.
bertrand
parents:
diff changeset
235 if (pre_header[4] == 0x02) {
29263
0f1b5b68af32 whitespace cosmetics: Remove all trailing whitespace.
diego
parents: 28402
diff changeset
236
6092
1529f01e8108 Added support for asf mmst protocol.
bertrand
parents:
diff changeset
237 int packet_len;
29263
0f1b5b68af32 whitespace cosmetics: Remove all trailing whitespace.
diego
parents: 28402
diff changeset
238
6092
1529f01e8108 Added support for asf mmst protocol.
bertrand
parents:
diff changeset
239 packet_len = (pre_header[7] << 8 | pre_header[6]) - 8;
1529f01e8108 Added support for asf mmst protocol.
bertrand
parents:
diff changeset
240
15626
941b1a71351f printf converted to mp_msg; made static many unnecessarily global symbols
nicodvb
parents: 15181
diff changeset
241 // mp_msg(MSGT_NETWORK,MSGL_INFO,"asf header packet detected, len=%d\n", packet_len);
6092
1529f01e8108 Added support for asf mmst protocol.
bertrand
parents:
diff changeset
242
14163
dd835e8f3698 fix a problem pointed out by iDEFENSE and several similar ones.
reimar
parents: 13600
diff changeset
243 if (packet_len < 0 || packet_len > HDR_BUF_SIZE - header_len) {
16882
dfbe8cd0e081 libmpdemux translatables to help_mp part 1 / mp_msg calls / try 2
reynaldo
parents: 16330
diff changeset
244 mp_msg(MSGT_NETWORK, MSGL_FATAL, MSGTR_MPDEMUX_MMST_InvalidHeaderSize);
14163
dd835e8f3698 fix a problem pointed out by iDEFENSE and several similar ones.
reimar
parents: 13600
diff changeset
245 return 0;
dd835e8f3698 fix a problem pointed out by iDEFENSE and several similar ones.
reimar
parents: 13600
diff changeset
246 }
dd835e8f3698 fix a problem pointed out by iDEFENSE and several similar ones.
reimar
parents: 13600
diff changeset
247
6092
1529f01e8108 Added support for asf mmst protocol.
bertrand
parents:
diff changeset
248 if (!get_data (s, &header[header_len], packet_len)) {
16882
dfbe8cd0e081 libmpdemux translatables to help_mp part 1 / mp_msg calls / try 2
reynaldo
parents: 16330
diff changeset
249 mp_msg(MSGT_NETWORK,MSGL_ERR,MSGTR_MPDEMUX_MMST_HeaderDataReadFailed);
6092
1529f01e8108 Added support for asf mmst protocol.
bertrand
parents:
diff changeset
250 return 0;
1529f01e8108 Added support for asf mmst protocol.
bertrand
parents:
diff changeset
251 }
1529f01e8108 Added support for asf mmst protocol.
bertrand
parents:
diff changeset
252
1529f01e8108 Added support for asf mmst protocol.
bertrand
parents:
diff changeset
253 header_len += packet_len;
1529f01e8108 Added support for asf mmst protocol.
bertrand
parents:
diff changeset
254
1529f01e8108 Added support for asf mmst protocol.
bertrand
parents:
diff changeset
255 if ( (header[header_len-1] == 1) && (header[header_len-2]==1)) {
29263
0f1b5b68af32 whitespace cosmetics: Remove all trailing whitespace.
diego
parents: 28402
diff changeset
256
6092
1529f01e8108 Added support for asf mmst protocol.
bertrand
parents:
diff changeset
257
1529f01e8108 Added support for asf mmst protocol.
bertrand
parents:
diff changeset
258 if( streaming_bufferize( streaming_ctrl, header, header_len )<0 ) {
1529f01e8108 Added support for asf mmst protocol.
bertrand
parents:
diff changeset
259 return -1;
1529f01e8108 Added support for asf mmst protocol.
bertrand
parents:
diff changeset
260 }
1529f01e8108 Added support for asf mmst protocol.
bertrand
parents:
diff changeset
261
15626
941b1a71351f printf converted to mp_msg; made static many unnecessarily global symbols
nicodvb
parents: 15181
diff changeset
262 // mp_msg(MSGT_NETWORK,MSGL_INFO,"get header packet finished\n");
6092
1529f01e8108 Added support for asf mmst protocol.
bertrand
parents:
diff changeset
263
26756
c43ce7268677 cosmetics: Remove useless parentheses from return statements.
diego
parents: 26737
diff changeset
264 return header_len;
6092
1529f01e8108 Added support for asf mmst protocol.
bertrand
parents:
diff changeset
265
29263
0f1b5b68af32 whitespace cosmetics: Remove all trailing whitespace.
diego
parents: 28402
diff changeset
266 }
6092
1529f01e8108 Added support for asf mmst protocol.
bertrand
parents:
diff changeset
267
1529f01e8108 Added support for asf mmst protocol.
bertrand
parents:
diff changeset
268 } else {
1529f01e8108 Added support for asf mmst protocol.
bertrand
parents:
diff changeset
269
7953
60624e692b95 GCC warning fixes
bertrand
parents: 7880
diff changeset
270 int32_t packet_len;
6092
1529f01e8108 Added support for asf mmst protocol.
bertrand
parents:
diff changeset
271 int command;
1529f01e8108 Added support for asf mmst protocol.
bertrand
parents:
diff changeset
272 char data[BUF_SIZE];
1529f01e8108 Added support for asf mmst protocol.
bertrand
parents:
diff changeset
273
7953
60624e692b95 GCC warning fixes
bertrand
parents: 7880
diff changeset
274 if (!get_data (s, (char*)&packet_len, 4)) {
16882
dfbe8cd0e081 libmpdemux translatables to help_mp part 1 / mp_msg calls / try 2
reynaldo
parents: 16330
diff changeset
275 mp_msg(MSGT_NETWORK,MSGL_ERR,MSGTR_MPDEMUX_MMST_packet_lenReadFailed);
6092
1529f01e8108 Added support for asf mmst protocol.
bertrand
parents:
diff changeset
276 return 0;
1529f01e8108 Added support for asf mmst protocol.
bertrand
parents:
diff changeset
277 }
29263
0f1b5b68af32 whitespace cosmetics: Remove all trailing whitespace.
diego
parents: 28402
diff changeset
278
7953
60624e692b95 GCC warning fixes
bertrand
parents: 7880
diff changeset
279 packet_len = get_32 ((unsigned char*)&packet_len, 0) + 4;
29263
0f1b5b68af32 whitespace cosmetics: Remove all trailing whitespace.
diego
parents: 28402
diff changeset
280
15626
941b1a71351f printf converted to mp_msg; made static many unnecessarily global symbols
nicodvb
parents: 15181
diff changeset
281 // mp_msg(MSGT_NETWORK,MSGL_INFO,"command packet detected, len=%d\n", packet_len);
14163
dd835e8f3698 fix a problem pointed out by iDEFENSE and several similar ones.
reimar
parents: 13600
diff changeset
282
dd835e8f3698 fix a problem pointed out by iDEFENSE and several similar ones.
reimar
parents: 13600
diff changeset
283 if (packet_len < 0 || packet_len > BUF_SIZE) {
dd835e8f3698 fix a problem pointed out by iDEFENSE and several similar ones.
reimar
parents: 13600
diff changeset
284 mp_msg(MSGT_NETWORK, MSGL_FATAL,
16882
dfbe8cd0e081 libmpdemux translatables to help_mp part 1 / mp_msg calls / try 2
reynaldo
parents: 16330
diff changeset
285 MSGTR_MPDEMUX_MMST_InvalidRTSPPacketSize);
14163
dd835e8f3698 fix a problem pointed out by iDEFENSE and several similar ones.
reimar
parents: 13600
diff changeset
286 return 0;
dd835e8f3698 fix a problem pointed out by iDEFENSE and several similar ones.
reimar
parents: 13600
diff changeset
287 }
29263
0f1b5b68af32 whitespace cosmetics: Remove all trailing whitespace.
diego
parents: 28402
diff changeset
288
6092
1529f01e8108 Added support for asf mmst protocol.
bertrand
parents:
diff changeset
289 if (!get_data (s, data, packet_len)) {
16882
dfbe8cd0e081 libmpdemux translatables to help_mp part 1 / mp_msg calls / try 2
reynaldo
parents: 16330
diff changeset
290 mp_msg(MSGT_NETWORK,MSGL_ERR,MSGTR_MPDEMUX_MMST_CmdDataReadFailed);
6092
1529f01e8108 Added support for asf mmst protocol.
bertrand
parents:
diff changeset
291 return 0;
1529f01e8108 Added support for asf mmst protocol.
bertrand
parents:
diff changeset
292 }
29263
0f1b5b68af32 whitespace cosmetics: Remove all trailing whitespace.
diego
parents: 28402
diff changeset
293
6092
1529f01e8108 Added support for asf mmst protocol.
bertrand
parents:
diff changeset
294 command = get_32 (data, 24) & 0xFFFF;
29263
0f1b5b68af32 whitespace cosmetics: Remove all trailing whitespace.
diego
parents: 28402
diff changeset
295
15626
941b1a71351f printf converted to mp_msg; made static many unnecessarily global symbols
nicodvb
parents: 15181
diff changeset
296 // mp_msg(MSGT_NETWORK,MSGL_INFO,"command: %02x\n", command);
29263
0f1b5b68af32 whitespace cosmetics: Remove all trailing whitespace.
diego
parents: 28402
diff changeset
297
0f1b5b68af32 whitespace cosmetics: Remove all trailing whitespace.
diego
parents: 28402
diff changeset
298 if (command == 0x1b)
6092
1529f01e8108 Added support for asf mmst protocol.
bertrand
parents:
diff changeset
299 send_command (s, 0x1b, 0, 0, 0, data);
29263
0f1b5b68af32 whitespace cosmetics: Remove all trailing whitespace.
diego
parents: 28402
diff changeset
300
6092
1529f01e8108 Added support for asf mmst protocol.
bertrand
parents:
diff changeset
301 }
1529f01e8108 Added support for asf mmst protocol.
bertrand
parents:
diff changeset
302
15626
941b1a71351f printf converted to mp_msg; made static many unnecessarily global symbols
nicodvb
parents: 15181
diff changeset
303 // mp_msg(MSGT_NETWORK,MSGL_INFO,"get header packet succ\n");
6092
1529f01e8108 Added support for asf mmst protocol.
bertrand
parents:
diff changeset
304 }
1529f01e8108 Added support for asf mmst protocol.
bertrand
parents:
diff changeset
305 }
1529f01e8108 Added support for asf mmst protocol.
bertrand
parents:
diff changeset
306
29263
0f1b5b68af32 whitespace cosmetics: Remove all trailing whitespace.
diego
parents: 28402
diff changeset
307 static int interp_header (uint8_t *header, int header_len)
6092
1529f01e8108 Added support for asf mmst protocol.
bertrand
parents:
diff changeset
308 {
1529f01e8108 Added support for asf mmst protocol.
bertrand
parents:
diff changeset
309 int i;
7472
c4434bdf6e51 tons of warning fixes, also some 10l bugfixes, including Dominik's PVA bug
arpi
parents: 7309
diff changeset
310 int packet_length=-1;
6092
1529f01e8108 Added support for asf mmst protocol.
bertrand
parents:
diff changeset
311
1529f01e8108 Added support for asf mmst protocol.
bertrand
parents:
diff changeset
312 /*
1529f01e8108 Added support for asf mmst protocol.
bertrand
parents:
diff changeset
313 * parse header
1529f01e8108 Added support for asf mmst protocol.
bertrand
parents:
diff changeset
314 */
1529f01e8108 Added support for asf mmst protocol.
bertrand
parents:
diff changeset
315
1529f01e8108 Added support for asf mmst protocol.
bertrand
parents:
diff changeset
316 i = 30;
1529f01e8108 Added support for asf mmst protocol.
bertrand
parents:
diff changeset
317 while (i<header_len) {
29263
0f1b5b68af32 whitespace cosmetics: Remove all trailing whitespace.
diego
parents: 28402
diff changeset
318
6092
1529f01e8108 Added support for asf mmst protocol.
bertrand
parents:
diff changeset
319 uint64_t guid_1, guid_2, length;
1529f01e8108 Added support for asf mmst protocol.
bertrand
parents:
diff changeset
320
29263
0f1b5b68af32 whitespace cosmetics: Remove all trailing whitespace.
diego
parents: 28402
diff changeset
321 guid_2 = (uint64_t)header[i] | ((uint64_t)header[i+1]<<8)
6092
1529f01e8108 Added support for asf mmst protocol.
bertrand
parents:
diff changeset
322 | ((uint64_t)header[i+2]<<16) | ((uint64_t)header[i+3]<<24)
1529f01e8108 Added support for asf mmst protocol.
bertrand
parents:
diff changeset
323 | ((uint64_t)header[i+4]<<32) | ((uint64_t)header[i+5]<<40)
1529f01e8108 Added support for asf mmst protocol.
bertrand
parents:
diff changeset
324 | ((uint64_t)header[i+6]<<48) | ((uint64_t)header[i+7]<<56);
1529f01e8108 Added support for asf mmst protocol.
bertrand
parents:
diff changeset
325 i += 8;
1529f01e8108 Added support for asf mmst protocol.
bertrand
parents:
diff changeset
326
29263
0f1b5b68af32 whitespace cosmetics: Remove all trailing whitespace.
diego
parents: 28402
diff changeset
327 guid_1 = (uint64_t)header[i] | ((uint64_t)header[i+1]<<8)
6092
1529f01e8108 Added support for asf mmst protocol.
bertrand
parents:
diff changeset
328 | ((uint64_t)header[i+2]<<16) | ((uint64_t)header[i+3]<<24)
1529f01e8108 Added support for asf mmst protocol.
bertrand
parents:
diff changeset
329 | ((uint64_t)header[i+4]<<32) | ((uint64_t)header[i+5]<<40)
1529f01e8108 Added support for asf mmst protocol.
bertrand
parents:
diff changeset
330 | ((uint64_t)header[i+6]<<48) | ((uint64_t)header[i+7]<<56);
1529f01e8108 Added support for asf mmst protocol.
bertrand
parents:
diff changeset
331 i += 8;
29263
0f1b5b68af32 whitespace cosmetics: Remove all trailing whitespace.
diego
parents: 28402
diff changeset
332
15626
941b1a71351f printf converted to mp_msg; made static many unnecessarily global symbols
nicodvb
parents: 15181
diff changeset
333 // mp_msg(MSGT_NETWORK,MSGL_INFO,"guid found: %016llx%016llx\n", guid_1, guid_2);
6092
1529f01e8108 Added support for asf mmst protocol.
bertrand
parents:
diff changeset
334
29263
0f1b5b68af32 whitespace cosmetics: Remove all trailing whitespace.
diego
parents: 28402
diff changeset
335 length = (uint64_t)header[i] | ((uint64_t)header[i+1]<<8)
6092
1529f01e8108 Added support for asf mmst protocol.
bertrand
parents:
diff changeset
336 | ((uint64_t)header[i+2]<<16) | ((uint64_t)header[i+3]<<24)
1529f01e8108 Added support for asf mmst protocol.
bertrand
parents:
diff changeset
337 | ((uint64_t)header[i+4]<<32) | ((uint64_t)header[i+5]<<40)
1529f01e8108 Added support for asf mmst protocol.
bertrand
parents:
diff changeset
338 | ((uint64_t)header[i+6]<<48) | ((uint64_t)header[i+7]<<56);
1529f01e8108 Added support for asf mmst protocol.
bertrand
parents:
diff changeset
339
1529f01e8108 Added support for asf mmst protocol.
bertrand
parents:
diff changeset
340 i += 8;
1529f01e8108 Added support for asf mmst protocol.
bertrand
parents:
diff changeset
341
12121
6d4212840048 make gcc eating this under hurd
alex
parents: 12077
diff changeset
342 if ( (guid_1 == 0x6cce6200aa00d9a6ULL) && (guid_2 == 0x11cf668e75b22630ULL) ) {
16882
dfbe8cd0e081 libmpdemux translatables to help_mp part 1 / mp_msg calls / try 2
reynaldo
parents: 16330
diff changeset
343 mp_msg(MSGT_NETWORK,MSGL_INFO,MSGTR_MPDEMUX_MMST_HeaderObject);
12121
6d4212840048 make gcc eating this under hurd
alex
parents: 12077
diff changeset
344 } else if ((guid_1 == 0x6cce6200aa00d9a6ULL) && (guid_2 == 0x11cf668e75b22636ULL)) {
16882
dfbe8cd0e081 libmpdemux translatables to help_mp part 1 / mp_msg calls / try 2
reynaldo
parents: 16330
diff changeset
345 mp_msg(MSGT_NETWORK,MSGL_INFO,MSGTR_MPDEMUX_MMST_DataObject);
12121
6d4212840048 make gcc eating this under hurd
alex
parents: 12077
diff changeset
346 } else if ((guid_1 == 0x6553200cc000e48eULL) && (guid_2 == 0x11cfa9478cabdca1ULL)) {
6092
1529f01e8108 Added support for asf mmst protocol.
bertrand
parents:
diff changeset
347
1529f01e8108 Added support for asf mmst protocol.
bertrand
parents:
diff changeset
348 packet_length = get_32(header, i+92-24);
1529f01e8108 Added support for asf mmst protocol.
bertrand
parents:
diff changeset
349
16882
dfbe8cd0e081 libmpdemux translatables to help_mp part 1 / mp_msg calls / try 2
reynaldo
parents: 16330
diff changeset
350 mp_msg(MSGT_NETWORK,MSGL_INFO,MSGTR_MPDEMUX_MMST_FileObjectPacketLen,
6092
1529f01e8108 Added support for asf mmst protocol.
bertrand
parents:
diff changeset
351 packet_length, get_32(header, i+96-24));
1529f01e8108 Added support for asf mmst protocol.
bertrand
parents:
diff changeset
352
1529f01e8108 Added support for asf mmst protocol.
bertrand
parents:
diff changeset
353
12121
6d4212840048 make gcc eating this under hurd
alex
parents: 12077
diff changeset
354 } else if ((guid_1 == 0x6553200cc000e68eULL) && (guid_2 == 0x11cfa9b7b7dc0791ULL)) {
6092
1529f01e8108 Added support for asf mmst protocol.
bertrand
parents:
diff changeset
355
1529f01e8108 Added support for asf mmst protocol.
bertrand
parents:
diff changeset
356 int stream_id = header[i+48] | header[i+49] << 8;
1529f01e8108 Added support for asf mmst protocol.
bertrand
parents:
diff changeset
357
16882
dfbe8cd0e081 libmpdemux translatables to help_mp part 1 / mp_msg calls / try 2
reynaldo
parents: 16330
diff changeset
358 mp_msg(MSGT_NETWORK,MSGL_INFO,MSGTR_MPDEMUX_MMST_StreamObjectStreamID, stream_id);
6092
1529f01e8108 Added support for asf mmst protocol.
bertrand
parents:
diff changeset
359
15181
ed74657f25b1 Use define instead of hardcodec value for max streams number
rtognimp
parents: 15173
diff changeset
360 if (num_stream_ids < MAX_STREAMS) {
6092
1529f01e8108 Added support for asf mmst protocol.
bertrand
parents:
diff changeset
361 stream_ids[num_stream_ids] = stream_id;
1529f01e8108 Added support for asf mmst protocol.
bertrand
parents:
diff changeset
362 num_stream_ids++;
15173
424386614ad5 Fix potential buffer overflow for urls with more than 20 streams
rtognimp
parents: 15150
diff changeset
363 } else {
16882
dfbe8cd0e081 libmpdemux translatables to help_mp part 1 / mp_msg calls / try 2
reynaldo
parents: 16330
diff changeset
364 mp_msg(MSGT_NETWORK,MSGL_ERR,MSGTR_MPDEMUX_MMST_2ManyStreamID);
15173
424386614ad5 Fix potential buffer overflow for urls with more than 20 streams
rtognimp
parents: 15150
diff changeset
365 }
29263
0f1b5b68af32 whitespace cosmetics: Remove all trailing whitespace.
diego
parents: 28402
diff changeset
366
6092
1529f01e8108 Added support for asf mmst protocol.
bertrand
parents:
diff changeset
367 } else {
15628
f0dc4a6c9063 some debugging code
alex
parents: 15626
diff changeset
368 #if 0
f0dc4a6c9063 some debugging code
alex
parents: 15626
diff changeset
369 int b = i;
f0dc4a6c9063 some debugging code
alex
parents: 15626
diff changeset
370 printf ("unknown object (guid: %016llx, %016llx, len: %lld)\n", guid_1, guid_2, length);
f0dc4a6c9063 some debugging code
alex
parents: 15626
diff changeset
371 for (; b < length; b++)
f0dc4a6c9063 some debugging code
alex
parents: 15626
diff changeset
372 {
f0dc4a6c9063 some debugging code
alex
parents: 15626
diff changeset
373 if (isascii(header[b]) || isalpha(header[b]))
f0dc4a6c9063 some debugging code
alex
parents: 15626
diff changeset
374 printf("%c ", header[b]);
f0dc4a6c9063 some debugging code
alex
parents: 15626
diff changeset
375 else
f0dc4a6c9063 some debugging code
alex
parents: 15626
diff changeset
376 printf("%x ", header[b]);
f0dc4a6c9063 some debugging code
alex
parents: 15626
diff changeset
377 }
f0dc4a6c9063 some debugging code
alex
parents: 15626
diff changeset
378 printf("\n");
f0dc4a6c9063 some debugging code
alex
parents: 15626
diff changeset
379 #else
16882
dfbe8cd0e081 libmpdemux translatables to help_mp part 1 / mp_msg calls / try 2
reynaldo
parents: 16330
diff changeset
380 mp_msg(MSGT_NETWORK,MSGL_WARN,MSGTR_MPDEMUX_MMST_UnknownObject);
15628
f0dc4a6c9063 some debugging code
alex
parents: 15626
diff changeset
381 #endif
6092
1529f01e8108 Added support for asf mmst protocol.
bertrand
parents:
diff changeset
382 }
1529f01e8108 Added support for asf mmst protocol.
bertrand
parents:
diff changeset
383
15626
941b1a71351f printf converted to mp_msg; made static many unnecessarily global symbols
nicodvb
parents: 15181
diff changeset
384 // mp_msg(MSGT_NETWORK,MSGL_INFO,"length : %lld\n", length);
6092
1529f01e8108 Added support for asf mmst protocol.
bertrand
parents:
diff changeset
385
1529f01e8108 Added support for asf mmst protocol.
bertrand
parents:
diff changeset
386 i += length-24;
1529f01e8108 Added support for asf mmst protocol.
bertrand
parents:
diff changeset
387
1529f01e8108 Added support for asf mmst protocol.
bertrand
parents:
diff changeset
388 }
1529f01e8108 Added support for asf mmst protocol.
bertrand
parents:
diff changeset
389
1529f01e8108 Added support for asf mmst protocol.
bertrand
parents:
diff changeset
390 return packet_length;
1529f01e8108 Added support for asf mmst protocol.
bertrand
parents:
diff changeset
391
1529f01e8108 Added support for asf mmst protocol.
bertrand
parents:
diff changeset
392 }
1529f01e8108 Added support for asf mmst protocol.
bertrand
parents:
diff changeset
393
1529f01e8108 Added support for asf mmst protocol.
bertrand
parents:
diff changeset
394
7880
5bb4d8801a2c - fixed several 10l bugs
arpi
parents: 7472
diff changeset
395 static int get_media_packet (int s, int padding, streaming_ctrl_t *stream_ctrl) {
6092
1529f01e8108 Added support for asf mmst protocol.
bertrand
parents:
diff changeset
396 unsigned char pre_header[8];
1529f01e8108 Added support for asf mmst protocol.
bertrand
parents:
diff changeset
397 char data[BUF_SIZE];
7880
5bb4d8801a2c - fixed several 10l bugs
arpi
parents: 7472
diff changeset
398
5bb4d8801a2c - fixed several 10l bugs
arpi
parents: 7472
diff changeset
399 if (!get_data (s, pre_header, 8)) {
16882
dfbe8cd0e081 libmpdemux translatables to help_mp part 1 / mp_msg calls / try 2
reynaldo
parents: 16330
diff changeset
400 mp_msg(MSGT_NETWORK,MSGL_ERR,MSGTR_MPDEMUX_MMST_PreHeaderReadFailed);
7880
5bb4d8801a2c - fixed several 10l bugs
arpi
parents: 7472
diff changeset
401 return 0;
5bb4d8801a2c - fixed several 10l bugs
arpi
parents: 7472
diff changeset
402 }
5bb4d8801a2c - fixed several 10l bugs
arpi
parents: 7472
diff changeset
403
5bb4d8801a2c - fixed several 10l bugs
arpi
parents: 7472
diff changeset
404 // for (i=0; i<8; i++)
15626
941b1a71351f printf converted to mp_msg; made static many unnecessarily global symbols
nicodvb
parents: 15181
diff changeset
405 // mp_msg(MSGT_NETWORK,MSGL_INFO,"pre_header[%d] = %02x (%d)\n",
7880
5bb4d8801a2c - fixed several 10l bugs
arpi
parents: 7472
diff changeset
406 // i, pre_header[i], pre_header[i]);
5bb4d8801a2c - fixed several 10l bugs
arpi
parents: 7472
diff changeset
407
5bb4d8801a2c - fixed several 10l bugs
arpi
parents: 7472
diff changeset
408 if (pre_header[4] == 0x04) {
5bb4d8801a2c - fixed several 10l bugs
arpi
parents: 7472
diff changeset
409
5bb4d8801a2c - fixed several 10l bugs
arpi
parents: 7472
diff changeset
410 int packet_len;
5bb4d8801a2c - fixed several 10l bugs
arpi
parents: 7472
diff changeset
411
5bb4d8801a2c - fixed several 10l bugs
arpi
parents: 7472
diff changeset
412 packet_len = (pre_header[7] << 8 | pre_header[6]) - 8;
5bb4d8801a2c - fixed several 10l bugs
arpi
parents: 7472
diff changeset
413
15626
941b1a71351f printf converted to mp_msg; made static many unnecessarily global symbols
nicodvb
parents: 15181
diff changeset
414 // mp_msg(MSGT_NETWORK,MSGL_INFO,"asf media packet detected, len=%d\n", packet_len);
7880
5bb4d8801a2c - fixed several 10l bugs
arpi
parents: 7472
diff changeset
415
14163
dd835e8f3698 fix a problem pointed out by iDEFENSE and several similar ones.
reimar
parents: 13600
diff changeset
416 if (packet_len < 0 || packet_len > BUF_SIZE) {
16882
dfbe8cd0e081 libmpdemux translatables to help_mp part 1 / mp_msg calls / try 2
reynaldo
parents: 16330
diff changeset
417 mp_msg(MSGT_NETWORK, MSGL_FATAL, MSGTR_MPDEMUX_MMST_InvalidRTSPPacketSize);
14163
dd835e8f3698 fix a problem pointed out by iDEFENSE and several similar ones.
reimar
parents: 13600
diff changeset
418 return 0;
dd835e8f3698 fix a problem pointed out by iDEFENSE and several similar ones.
reimar
parents: 13600
diff changeset
419 }
29263
0f1b5b68af32 whitespace cosmetics: Remove all trailing whitespace.
diego
parents: 28402
diff changeset
420
7880
5bb4d8801a2c - fixed several 10l bugs
arpi
parents: 7472
diff changeset
421 if (!get_data (s, data, packet_len)) {
16882
dfbe8cd0e081 libmpdemux translatables to help_mp part 1 / mp_msg calls / try 2
reynaldo
parents: 16330
diff changeset
422 mp_msg(MSGT_NETWORK,MSGL_ERR,MSGTR_MPDEMUX_MMST_MediaDataReadFailed);
7880
5bb4d8801a2c - fixed several 10l bugs
arpi
parents: 7472
diff changeset
423 return 0;
5bb4d8801a2c - fixed several 10l bugs
arpi
parents: 7472
diff changeset
424 }
5bb4d8801a2c - fixed several 10l bugs
arpi
parents: 7472
diff changeset
425
5bb4d8801a2c - fixed several 10l bugs
arpi
parents: 7472
diff changeset
426 streaming_bufferize(stream_ctrl, data, padding);
5bb4d8801a2c - fixed several 10l bugs
arpi
parents: 7472
diff changeset
427
5bb4d8801a2c - fixed several 10l bugs
arpi
parents: 7472
diff changeset
428 } else {
5bb4d8801a2c - fixed several 10l bugs
arpi
parents: 7472
diff changeset
429
7953
60624e692b95 GCC warning fixes
bertrand
parents: 7880
diff changeset
430 int32_t packet_len;
60624e692b95 GCC warning fixes
bertrand
parents: 7880
diff changeset
431 int command;
7880
5bb4d8801a2c - fixed several 10l bugs
arpi
parents: 7472
diff changeset
432
7953
60624e692b95 GCC warning fixes
bertrand
parents: 7880
diff changeset
433 if (!get_data (s, (char*)&packet_len, 4)) {
16882
dfbe8cd0e081 libmpdemux translatables to help_mp part 1 / mp_msg calls / try 2
reynaldo
parents: 16330
diff changeset
434 mp_msg(MSGT_NETWORK,MSGL_ERR,MSGTR_MPDEMUX_MMST_packet_lenReadFailed);
7880
5bb4d8801a2c - fixed several 10l bugs
arpi
parents: 7472
diff changeset
435 return 0;
5bb4d8801a2c - fixed several 10l bugs
arpi
parents: 7472
diff changeset
436 }
5bb4d8801a2c - fixed several 10l bugs
arpi
parents: 7472
diff changeset
437
7953
60624e692b95 GCC warning fixes
bertrand
parents: 7880
diff changeset
438 packet_len = get_32 ((unsigned char*)&packet_len, 0) + 4;
7880
5bb4d8801a2c - fixed several 10l bugs
arpi
parents: 7472
diff changeset
439
14163
dd835e8f3698 fix a problem pointed out by iDEFENSE and several similar ones.
reimar
parents: 13600
diff changeset
440 if (packet_len < 0 || packet_len > BUF_SIZE) {
16882
dfbe8cd0e081 libmpdemux translatables to help_mp part 1 / mp_msg calls / try 2
reynaldo
parents: 16330
diff changeset
441 mp_msg(MSGT_NETWORK,MSGL_FATAL,MSGTR_MPDEMUX_MMST_InvalidRTSPPacketSize);
14163
dd835e8f3698 fix a problem pointed out by iDEFENSE and several similar ones.
reimar
parents: 13600
diff changeset
442 return 0;
dd835e8f3698 fix a problem pointed out by iDEFENSE and several similar ones.
reimar
parents: 13600
diff changeset
443 }
dd835e8f3698 fix a problem pointed out by iDEFENSE and several similar ones.
reimar
parents: 13600
diff changeset
444
7880
5bb4d8801a2c - fixed several 10l bugs
arpi
parents: 7472
diff changeset
445 if (!get_data (s, data, packet_len)) {
16882
dfbe8cd0e081 libmpdemux translatables to help_mp part 1 / mp_msg calls / try 2
reynaldo
parents: 16330
diff changeset
446 mp_msg(MSGT_NETWORK,MSGL_ERR,MSGTR_MPDEMUX_MMST_CmdDataReadFailed);
7880
5bb4d8801a2c - fixed several 10l bugs
arpi
parents: 7472
diff changeset
447 return 0;
5bb4d8801a2c - fixed several 10l bugs
arpi
parents: 7472
diff changeset
448 }
5bb4d8801a2c - fixed several 10l bugs
arpi
parents: 7472
diff changeset
449
5bb4d8801a2c - fixed several 10l bugs
arpi
parents: 7472
diff changeset
450 if ( (pre_header[7] != 0xb0) || (pre_header[6] != 0x0b)
5bb4d8801a2c - fixed several 10l bugs
arpi
parents: 7472
diff changeset
451 || (pre_header[5] != 0xfa) || (pre_header[4] != 0xce) ) {
5bb4d8801a2c - fixed several 10l bugs
arpi
parents: 7472
diff changeset
452
16882
dfbe8cd0e081 libmpdemux translatables to help_mp part 1 / mp_msg calls / try 2
reynaldo
parents: 16330
diff changeset
453 mp_msg(MSGT_NETWORK,MSGL_ERR,MSGTR_MPDEMUX_MMST_MissingSignature);
7880
5bb4d8801a2c - fixed several 10l bugs
arpi
parents: 7472
diff changeset
454 return -1;
5bb4d8801a2c - fixed several 10l bugs
arpi
parents: 7472
diff changeset
455 }
5bb4d8801a2c - fixed several 10l bugs
arpi
parents: 7472
diff changeset
456
5bb4d8801a2c - fixed several 10l bugs
arpi
parents: 7472
diff changeset
457 command = get_32 (data, 24) & 0xFFFF;
5bb4d8801a2c - fixed several 10l bugs
arpi
parents: 7472
diff changeset
458
15626
941b1a71351f printf converted to mp_msg; made static many unnecessarily global symbols
nicodvb
parents: 15181
diff changeset
459 // mp_msg(MSGT_NETWORK,MSGL_INFO,"\ncommand packet detected, len=%d cmd=0x%X\n", packet_len, command);
7880
5bb4d8801a2c - fixed several 10l bugs
arpi
parents: 7472
diff changeset
460
29263
0f1b5b68af32 whitespace cosmetics: Remove all trailing whitespace.
diego
parents: 28402
diff changeset
461 if (command == 0x1b)
7880
5bb4d8801a2c - fixed several 10l bugs
arpi
parents: 7472
diff changeset
462 send_command (s, 0x1b, 0, 0, 0, data);
5bb4d8801a2c - fixed several 10l bugs
arpi
parents: 7472
diff changeset
463 else if (command == 0x1e) {
16882
dfbe8cd0e081 libmpdemux translatables to help_mp part 1 / mp_msg calls / try 2
reynaldo
parents: 16330
diff changeset
464 mp_msg(MSGT_NETWORK,MSGL_INFO,MSGTR_MPDEMUX_MMST_PatentedTechnologyJoke);
7880
5bb4d8801a2c - fixed several 10l bugs
arpi
parents: 7472
diff changeset
465 return 0;
5bb4d8801a2c - fixed several 10l bugs
arpi
parents: 7472
diff changeset
466 }
5bb4d8801a2c - fixed several 10l bugs
arpi
parents: 7472
diff changeset
467 else if (command == 0x21 ) {
5bb4d8801a2c - fixed several 10l bugs
arpi
parents: 7472
diff changeset
468 // Looks like it's new in WMS9
5bb4d8801a2c - fixed several 10l bugs
arpi
parents: 7472
diff changeset
469 // Unknown command, but ignoring it seems to work.
5bb4d8801a2c - fixed several 10l bugs
arpi
parents: 7472
diff changeset
470 return 0;
5bb4d8801a2c - fixed several 10l bugs
arpi
parents: 7472
diff changeset
471 }
5bb4d8801a2c - fixed several 10l bugs
arpi
parents: 7472
diff changeset
472 else if (command != 0x05) {
16882
dfbe8cd0e081 libmpdemux translatables to help_mp part 1 / mp_msg calls / try 2
reynaldo
parents: 16330
diff changeset
473 mp_msg(MSGT_NETWORK,MSGL_ERR,MSGTR_MPDEMUX_MMST_UnknownCmd,command);
7880
5bb4d8801a2c - fixed several 10l bugs
arpi
parents: 7472
diff changeset
474 return -1;
5bb4d8801a2c - fixed several 10l bugs
arpi
parents: 7472
diff changeset
475 }
5bb4d8801a2c - fixed several 10l bugs
arpi
parents: 7472
diff changeset
476 }
5bb4d8801a2c - fixed several 10l bugs
arpi
parents: 7472
diff changeset
477
15626
941b1a71351f printf converted to mp_msg; made static many unnecessarily global symbols
nicodvb
parents: 15181
diff changeset
478 // mp_msg(MSGT_NETWORK,MSGL_INFO,"get media packet succ\n");
7880
5bb4d8801a2c - fixed several 10l bugs
arpi
parents: 7472
diff changeset
479
5bb4d8801a2c - fixed several 10l bugs
arpi
parents: 7472
diff changeset
480 return 1;
5bb4d8801a2c - fixed several 10l bugs
arpi
parents: 7472
diff changeset
481 }
6092
1529f01e8108 Added support for asf mmst protocol.
bertrand
parents:
diff changeset
482
1529f01e8108 Added support for asf mmst protocol.
bertrand
parents:
diff changeset
483
7880
5bb4d8801a2c - fixed several 10l bugs
arpi
parents: 7472
diff changeset
484 static int packet_length1;
6092
1529f01e8108 Added support for asf mmst protocol.
bertrand
parents:
diff changeset
485
29263
0f1b5b68af32 whitespace cosmetics: Remove all trailing whitespace.
diego
parents: 28402
diff changeset
486 static int asf_mmst_streaming_read( int fd, char *buffer, int size, streaming_ctrl_t *stream_ctrl )
6092
1529f01e8108 Added support for asf mmst protocol.
bertrand
parents:
diff changeset
487 {
7880
5bb4d8801a2c - fixed several 10l bugs
arpi
parents: 7472
diff changeset
488 int len;
29263
0f1b5b68af32 whitespace cosmetics: Remove all trailing whitespace.
diego
parents: 28402
diff changeset
489
7880
5bb4d8801a2c - fixed several 10l bugs
arpi
parents: 7472
diff changeset
490 while( stream_ctrl->buffer_size==0 ) {
5bb4d8801a2c - fixed several 10l bugs
arpi
parents: 7472
diff changeset
491 // buffer is empty - fill it!
5bb4d8801a2c - fixed several 10l bugs
arpi
parents: 7472
diff changeset
492 int ret = get_media_packet( fd, packet_length1, stream_ctrl);
5bb4d8801a2c - fixed several 10l bugs
arpi
parents: 7472
diff changeset
493 if( ret<0 ) {
16882
dfbe8cd0e081 libmpdemux translatables to help_mp part 1 / mp_msg calls / try 2
reynaldo
parents: 16330
diff changeset
494 mp_msg(MSGT_NETWORK,MSGL_ERR,MSGTR_MPDEMUX_MMST_GetMediaPacketErr,strerror(errno));
7880
5bb4d8801a2c - fixed several 10l bugs
arpi
parents: 7472
diff changeset
495 return -1;
12077
e200b0e11e9c Fix hanging at end of mms:// streams.
rtognimp
parents: 11412
diff changeset
496 } else if (ret==0) //EOF?
e200b0e11e9c Fix hanging at end of mms:// streams.
rtognimp
parents: 11412
diff changeset
497 return ret;
7880
5bb4d8801a2c - fixed several 10l bugs
arpi
parents: 7472
diff changeset
498 }
29263
0f1b5b68af32 whitespace cosmetics: Remove all trailing whitespace.
diego
parents: 28402
diff changeset
499
7880
5bb4d8801a2c - fixed several 10l bugs
arpi
parents: 7472
diff changeset
500 len = stream_ctrl->buffer_size-stream_ctrl->buffer_pos;
5bb4d8801a2c - fixed several 10l bugs
arpi
parents: 7472
diff changeset
501 if(len>size) len=size;
6092
1529f01e8108 Added support for asf mmst protocol.
bertrand
parents:
diff changeset
502 memcpy( buffer, (stream_ctrl->buffer)+(stream_ctrl->buffer_pos), len );
1529f01e8108 Added support for asf mmst protocol.
bertrand
parents:
diff changeset
503 stream_ctrl->buffer_pos += len;
1529f01e8108 Added support for asf mmst protocol.
bertrand
parents:
diff changeset
504 if( stream_ctrl->buffer_pos>=stream_ctrl->buffer_size ) {
1529f01e8108 Added support for asf mmst protocol.
bertrand
parents:
diff changeset
505 free( stream_ctrl->buffer );
1529f01e8108 Added support for asf mmst protocol.
bertrand
parents:
diff changeset
506 stream_ctrl->buffer = NULL;
1529f01e8108 Added support for asf mmst protocol.
bertrand
parents:
diff changeset
507 stream_ctrl->buffer_size = 0;
1529f01e8108 Added support for asf mmst protocol.
bertrand
parents:
diff changeset
508 stream_ctrl->buffer_pos = 0;
1529f01e8108 Added support for asf mmst protocol.
bertrand
parents:
diff changeset
509 }
7880
5bb4d8801a2c - fixed several 10l bugs
arpi
parents: 7472
diff changeset
510 return len;
6092
1529f01e8108 Added support for asf mmst protocol.
bertrand
parents:
diff changeset
511
1529f01e8108 Added support for asf mmst protocol.
bertrand
parents:
diff changeset
512 }
1529f01e8108 Added support for asf mmst protocol.
bertrand
parents:
diff changeset
513
29263
0f1b5b68af32 whitespace cosmetics: Remove all trailing whitespace.
diego
parents: 28402
diff changeset
514 static int asf_mmst_streaming_seek( int fd, off_t pos, streaming_ctrl_t *streaming_ctrl )
6092
1529f01e8108 Added support for asf mmst protocol.
bertrand
parents:
diff changeset
515 {
1529f01e8108 Added support for asf mmst protocol.
bertrand
parents:
diff changeset
516 return -1;
7953
60624e692b95 GCC warning fixes
bertrand
parents: 7880
diff changeset
517 // Shut up gcc warning
60624e692b95 GCC warning fixes
bertrand
parents: 7880
diff changeset
518 fd++;
60624e692b95 GCC warning fixes
bertrand
parents: 7880
diff changeset
519 pos++;
60624e692b95 GCC warning fixes
bertrand
parents: 7880
diff changeset
520 streaming_ctrl=NULL;
6092
1529f01e8108 Added support for asf mmst protocol.
bertrand
parents:
diff changeset
521 }
1529f01e8108 Added support for asf mmst protocol.
bertrand
parents:
diff changeset
522
1529f01e8108 Added support for asf mmst protocol.
bertrand
parents:
diff changeset
523 int asf_mmst_streaming_start(stream_t *stream)
1529f01e8108 Added support for asf mmst protocol.
bertrand
parents:
diff changeset
524 {
1529f01e8108 Added support for asf mmst protocol.
bertrand
parents:
diff changeset
525 char str[1024];
10183
2ffb9a8b0428 10l found by yepyep
alex
parents: 7977
diff changeset
526 char data[BUF_SIZE];
14163
dd835e8f3698 fix a problem pointed out by iDEFENSE and several similar ones.
reimar
parents: 13600
diff changeset
527 uint8_t asf_header[HDR_BUF_SIZE];
6092
1529f01e8108 Added support for asf mmst protocol.
bertrand
parents:
diff changeset
528 int asf_header_len;
1529f01e8108 Added support for asf mmst protocol.
bertrand
parents:
diff changeset
529 int len, i, packet_length;
12751
cf145882979c WMP doesn't encode urls with mmst protocol
rtognimp
parents: 12675
diff changeset
530 char *path, *unescpath;
6092
1529f01e8108 Added support for asf mmst protocol.
bertrand
parents:
diff changeset
531 URL_t *url1 = stream->streaming_ctrl->url;
7953
60624e692b95 GCC warning fixes
bertrand
parents: 7880
diff changeset
532 int s = stream->fd;
6092
1529f01e8108 Added support for asf mmst protocol.
bertrand
parents:
diff changeset
533
7250
27a1315d6af4 Checked if the connection succeeded before writing in the socket.
bertrand
parents: 6092
diff changeset
534 if( s>0 ) {
10281
54bcbf28698a Networking support under MinGW.
diego
parents: 10206
diff changeset
535 closesocket( stream->fd );
7250
27a1315d6af4 Checked if the connection succeeded before writing in the socket.
bertrand
parents: 6092
diff changeset
536 stream->fd = -1;
27a1315d6af4 Checked if the connection succeeded before writing in the socket.
bertrand
parents: 6092
diff changeset
537 }
29263
0f1b5b68af32 whitespace cosmetics: Remove all trailing whitespace.
diego
parents: 28402
diff changeset
538
6092
1529f01e8108 Added support for asf mmst protocol.
bertrand
parents:
diff changeset
539 /* parse url */
1529f01e8108 Added support for asf mmst protocol.
bertrand
parents:
diff changeset
540 path = strchr(url1->file,'/') + 1;
1529f01e8108 Added support for asf mmst protocol.
bertrand
parents:
diff changeset
541
12751
cf145882979c WMP doesn't encode urls with mmst protocol
rtognimp
parents: 12675
diff changeset
542 /* mmst filename are not url_escaped by MS MediaPlayer and are expected as
cf145882979c WMP doesn't encode urls with mmst protocol
rtognimp
parents: 12675
diff changeset
543 * "plain text" by the server, so need to decode it here
cf145882979c WMP doesn't encode urls with mmst protocol
rtognimp
parents: 12675
diff changeset
544 */
cf145882979c WMP doesn't encode urls with mmst protocol
rtognimp
parents: 12675
diff changeset
545 unescpath=malloc(strlen(path)+1);
cf145882979c WMP doesn't encode urls with mmst protocol
rtognimp
parents: 12675
diff changeset
546 if (!unescpath) {
16906
75ccba4bd84b Changed MSGTR_MPDEMUX_MMST_MallocFailed to MSGTR_MemAllocFailed (msg defined two times inhelp_mp-en.h)
ptt
parents: 16882
diff changeset
547 mp_msg(MSGT_NETWORK,MSGL_FATAL,MSGTR_MemAllocFailed);
29263
0f1b5b68af32 whitespace cosmetics: Remove all trailing whitespace.
diego
parents: 28402
diff changeset
548 return -1;
12751
cf145882979c WMP doesn't encode urls with mmst protocol
rtognimp
parents: 12675
diff changeset
549 }
cf145882979c WMP doesn't encode urls with mmst protocol
rtognimp
parents: 12675
diff changeset
550 url_unescape_string(unescpath,path);
cf145882979c WMP doesn't encode urls with mmst protocol
rtognimp
parents: 12675
diff changeset
551 path=unescpath;
29263
0f1b5b68af32 whitespace cosmetics: Remove all trailing whitespace.
diego
parents: 28402
diff changeset
552
12751
cf145882979c WMP doesn't encode urls with mmst protocol
rtognimp
parents: 12675
diff changeset
553
12968
55e13005ac30 Use port number embedded in url for mms streams
rtognimp
parents: 12751
diff changeset
554 if( url1->port==0 ) {
55e13005ac30 Use port number embedded in url for mms streams
rtognimp
parents: 12751
diff changeset
555 url1->port=1755;
55e13005ac30 Use port number embedded in url for mms streams
rtognimp
parents: 12751
diff changeset
556 }
10625
620cc649f519 ftp support. The change on connect2Server is needed bcs we need 2
albeu
parents: 10281
diff changeset
557 s = connect2Server( url1->hostname, url1->port, 1);
7250
27a1315d6af4 Checked if the connection succeeded before writing in the socket.
bertrand
parents: 6092
diff changeset
558 if( s<0 ) {
12751
cf145882979c WMP doesn't encode urls with mmst protocol
rtognimp
parents: 12675
diff changeset
559 free(path);
7250
27a1315d6af4 Checked if the connection succeeded before writing in the socket.
bertrand
parents: 6092
diff changeset
560 return s;
27a1315d6af4 Checked if the connection succeeded before writing in the socket.
bertrand
parents: 6092
diff changeset
561 }
16882
dfbe8cd0e081 libmpdemux translatables to help_mp part 1 / mp_msg calls / try 2
reynaldo
parents: 16330
diff changeset
562 mp_msg(MSGT_NETWORK,MSGL_INFO,MSGTR_MPDEMUX_MMST_Connected);
29263
0f1b5b68af32 whitespace cosmetics: Remove all trailing whitespace.
diego
parents: 28402
diff changeset
563
7880
5bb4d8801a2c - fixed several 10l bugs
arpi
parents: 7472
diff changeset
564 seq_num=0;
6092
1529f01e8108 Added support for asf mmst protocol.
bertrand
parents:
diff changeset
565
1529f01e8108 Added support for asf mmst protocol.
bertrand
parents:
diff changeset
566 /*
29263
0f1b5b68af32 whitespace cosmetics: Remove all trailing whitespace.
diego
parents: 28402
diff changeset
567 * Send the initial connect info including player version no. Client GUID (random) and the host address being connected to.
0f1b5b68af32 whitespace cosmetics: Remove all trailing whitespace.
diego
parents: 28402
diff changeset
568 * This command is sent at the very start of protocol initiation. It sends local information to the serve
0f1b5b68af32 whitespace cosmetics: Remove all trailing whitespace.
diego
parents: 28402
diff changeset
569 * cmd 1 0x01
6092
1529f01e8108 Added support for asf mmst protocol.
bertrand
parents:
diff changeset
570 * */
1529f01e8108 Added support for asf mmst protocol.
bertrand
parents:
diff changeset
571
11350
007ec48cf146 Current mplayer (mine is mplayer-1.0-pre1cvs20031001) cannot play mms
attila
parents: 11226
diff changeset
572 /* prepare for the url encoding conversion */
27393
4876c89bafdd Rename font-related preprocessor directives.
diego
parents: 27359
diff changeset
573 #ifdef CONFIG_ICONV
29291
79f3477b277e Using nl_langinfo in the asf mmst implementation makes no sense since
reimar
parents: 29263
diff changeset
574 url_conv = iconv_open("UTF-16LE", "UTF-8");
12674
0392f36045f4 user nl_langinfo if langinfo support present for proper chinese support, feature requested by Shixin Zheng <shixinzheng@sjtu.edu.cn>
alex
parents: 12545
diff changeset
575 #endif
11350
007ec48cf146 Current mplayer (mine is mplayer-1.0-pre1cvs20031001) cannot play mms
attila
parents: 11226
diff changeset
576
10183
2ffb9a8b0428 10l found by yepyep
alex
parents: 7977
diff changeset
577 snprintf (str, 1023, "\034\003NSPlayer/7.0.0.1956; {33715801-BAB3-9D85-24E9-03B90328270A}; Host: %s", url1->hostname);
11225
48bb1fd37d2a Fixing tons of 10ls. Patch by rgselk <rgselknospam@yahoo.com>
alex
parents: 10625
diff changeset
578 string_utf16 (data, str, strlen(str));
6092
1529f01e8108 Added support for asf mmst protocol.
bertrand
parents:
diff changeset
579 // send_command(s, commandno ....)
11225
48bb1fd37d2a Fixing tons of 10ls. Patch by rgselk <rgselknospam@yahoo.com>
alex
parents: 10625
diff changeset
580 send_command (s, 1, 0, 0x0004000b, strlen(str)*2+2, data);
6092
1529f01e8108 Added support for asf mmst protocol.
bertrand
parents:
diff changeset
581
10206
35e306346e59 Using recv/send instead read/write for proper MinGW support (it's a 4.2BSD standard). Patch by FloDt <flodt8@yahoo.de>
alex
parents: 10183
diff changeset
582 len = recv (s, data, BUF_SIZE, 0) ;
6092
1529f01e8108 Added support for asf mmst protocol.
bertrand
parents:
diff changeset
583
29263
0f1b5b68af32 whitespace cosmetics: Remove all trailing whitespace.
diego
parents: 28402
diff changeset
584 /*This sends details of the local machine IP address to a Funnel system at the server.
6092
1529f01e8108 Added support for asf mmst protocol.
bertrand
parents:
diff changeset
585 * Also, the TCP or UDP transport selection is sent.
1529f01e8108 Added support for asf mmst protocol.
bertrand
parents:
diff changeset
586 *
11225
48bb1fd37d2a Fixing tons of 10ls. Patch by rgselk <rgselknospam@yahoo.com>
alex
parents: 10625
diff changeset
587 * here 192.168.0.1 is local ip address TCP/UDP states the tronsport we r using
6092
1529f01e8108 Added support for asf mmst protocol.
bertrand
parents:
diff changeset
588 * and 1037 is the local TCP or UDP socket number
1529f01e8108 Added support for asf mmst protocol.
bertrand
parents:
diff changeset
589 * cmd 2 0x02
1529f01e8108 Added support for asf mmst protocol.
bertrand
parents:
diff changeset
590 * */
1529f01e8108 Added support for asf mmst protocol.
bertrand
parents:
diff changeset
591
11225
48bb1fd37d2a Fixing tons of 10ls. Patch by rgselk <rgselknospam@yahoo.com>
alex
parents: 10625
diff changeset
592 string_utf16 (&data[8], "\002\000\\\\192.168.0.1\\TCP\\1037", 24);
6092
1529f01e8108 Added support for asf mmst protocol.
bertrand
parents:
diff changeset
593 memset (data, 0, 8);
11225
48bb1fd37d2a Fixing tons of 10ls. Patch by rgselk <rgselknospam@yahoo.com>
alex
parents: 10625
diff changeset
594 send_command (s, 2, 0, 0, 24*2+10, data);
6092
1529f01e8108 Added support for asf mmst protocol.
bertrand
parents:
diff changeset
595
10206
35e306346e59 Using recv/send instead read/write for proper MinGW support (it's a 4.2BSD standard). Patch by FloDt <flodt8@yahoo.de>
alex
parents: 10183
diff changeset
596 len = recv (s, data, BUF_SIZE, 0) ;
6092
1529f01e8108 Added support for asf mmst protocol.
bertrand
parents:
diff changeset
597
1529f01e8108 Added support for asf mmst protocol.
bertrand
parents:
diff changeset
598 /* This command sends file path (at server) and file name request to the server.
1529f01e8108 Added support for asf mmst protocol.
bertrand
parents:
diff changeset
599 * 0x5 */
1529f01e8108 Added support for asf mmst protocol.
bertrand
parents:
diff changeset
600
1529f01e8108 Added support for asf mmst protocol.
bertrand
parents:
diff changeset
601 string_utf16 (&data[8], path, strlen(path));
1529f01e8108 Added support for asf mmst protocol.
bertrand
parents:
diff changeset
602 memset (data, 0, 8);
11225
48bb1fd37d2a Fixing tons of 10ls. Patch by rgselk <rgselknospam@yahoo.com>
alex
parents: 10625
diff changeset
603 send_command (s, 5, 0, 0, strlen(path)*2+10, data);
12751
cf145882979c WMP doesn't encode urls with mmst protocol
rtognimp
parents: 12675
diff changeset
604 free(path);
6092
1529f01e8108 Added support for asf mmst protocol.
bertrand
parents:
diff changeset
605
1529f01e8108 Added support for asf mmst protocol.
bertrand
parents:
diff changeset
606 get_answer (s);
1529f01e8108 Added support for asf mmst protocol.
bertrand
parents:
diff changeset
607
29263
0f1b5b68af32 whitespace cosmetics: Remove all trailing whitespace.
diego
parents: 28402
diff changeset
608 /* The ASF header chunk request. Includes ?session' variable for pre header value.
0f1b5b68af32 whitespace cosmetics: Remove all trailing whitespace.
diego
parents: 28402
diff changeset
609 * After this command is sent,
6092
1529f01e8108 Added support for asf mmst protocol.
bertrand
parents:
diff changeset
610 * the server replies with 0x11 command and then the header chunk with header data follows.
1529f01e8108 Added support for asf mmst protocol.
bertrand
parents:
diff changeset
611 * 0x15 */
1529f01e8108 Added support for asf mmst protocol.
bertrand
parents:
diff changeset
612
1529f01e8108 Added support for asf mmst protocol.
bertrand
parents:
diff changeset
613 memset (data, 0, 40);
1529f01e8108 Added support for asf mmst protocol.
bertrand
parents:
diff changeset
614 data[32] = 2;
1529f01e8108 Added support for asf mmst protocol.
bertrand
parents:
diff changeset
615
1529f01e8108 Added support for asf mmst protocol.
bertrand
parents:
diff changeset
616 send_command (s, 0x15, 1, 0, 40, data);
1529f01e8108 Added support for asf mmst protocol.
bertrand
parents:
diff changeset
617
1529f01e8108 Added support for asf mmst protocol.
bertrand
parents:
diff changeset
618 num_stream_ids = 0;
1529f01e8108 Added support for asf mmst protocol.
bertrand
parents:
diff changeset
619 /* get_headers(s, asf_header); */
1529f01e8108 Added support for asf mmst protocol.
bertrand
parents:
diff changeset
620
1529f01e8108 Added support for asf mmst protocol.
bertrand
parents:
diff changeset
621 asf_header_len = get_header (s, asf_header, stream->streaming_ctrl);
15626
941b1a71351f printf converted to mp_msg; made static many unnecessarily global symbols
nicodvb
parents: 15181
diff changeset
622 // mp_msg(MSGT_NETWORK,MSGL_INFO,"---------------------------------- asf_header %d\n",asf_header);
21536
4d1ba1f391f3 Forgotten closesocket on error, patch by
reimar
parents: 19882
diff changeset
623 if (asf_header_len==0) { //error reading header
4d1ba1f391f3 Forgotten closesocket on error, patch by
reimar
parents: 19882
diff changeset
624 closesocket(s);
4d1ba1f391f3 Forgotten closesocket on error, patch by
reimar
parents: 19882
diff changeset
625 return -1;
4d1ba1f391f3 Forgotten closesocket on error, patch by
reimar
parents: 19882
diff changeset
626 }
6092
1529f01e8108 Added support for asf mmst protocol.
bertrand
parents:
diff changeset
627 packet_length = interp_header (asf_header, asf_header_len);
1529f01e8108 Added support for asf mmst protocol.
bertrand
parents:
diff changeset
628
1529f01e8108 Added support for asf mmst protocol.
bertrand
parents:
diff changeset
629
29263
0f1b5b68af32 whitespace cosmetics: Remove all trailing whitespace.
diego
parents: 28402
diff changeset
630 /*
0f1b5b68af32 whitespace cosmetics: Remove all trailing whitespace.
diego
parents: 28402
diff changeset
631 * This command is the media stream MBR selector. Switches are always 6 bytes in length.
0f1b5b68af32 whitespace cosmetics: Remove all trailing whitespace.
diego
parents: 28402
diff changeset
632 * After all switch elements, data ends with bytes [00 00] 00 20 ac 40 [02].
0f1b5b68af32 whitespace cosmetics: Remove all trailing whitespace.
diego
parents: 28402
diff changeset
633 * Where:
0f1b5b68af32 whitespace cosmetics: Remove all trailing whitespace.
diego
parents: 28402
diff changeset
634 * [00 00] shows 0x61 0x00 (on the first 33 sent) or 0xff 0xff for ASF files, and with no ending data for WMV files.
0f1b5b68af32 whitespace cosmetics: Remove all trailing whitespace.
diego
parents: 28402
diff changeset
635 * It is not yet understood what all this means.
0f1b5b68af32 whitespace cosmetics: Remove all trailing whitespace.
diego
parents: 28402
diff changeset
636 * And the last [02] byte is probably the header ?session' value.
0f1b5b68af32 whitespace cosmetics: Remove all trailing whitespace.
diego
parents: 28402
diff changeset
637 *
6092
1529f01e8108 Added support for asf mmst protocol.
bertrand
parents:
diff changeset
638 * 0x33 */
1529f01e8108 Added support for asf mmst protocol.
bertrand
parents:
diff changeset
639
1529f01e8108 Added support for asf mmst protocol.
bertrand
parents:
diff changeset
640 memset (data, 0, 40);
1529f01e8108 Added support for asf mmst protocol.
bertrand
parents:
diff changeset
641
22159
6d8f2be532d4 Quick hack mostly for documentation purposes to make -aid work with mms://
reimar
parents: 21536
diff changeset
642 if (audio_id > 0) {
6d8f2be532d4 Quick hack mostly for documentation purposes to make -aid work with mms://
reimar
parents: 21536
diff changeset
643 data[2] = 0xFF;
6d8f2be532d4 Quick hack mostly for documentation purposes to make -aid work with mms://
reimar
parents: 21536
diff changeset
644 data[3] = 0xFF;
6d8f2be532d4 Quick hack mostly for documentation purposes to make -aid work with mms://
reimar
parents: 21536
diff changeset
645 data[4] = audio_id;
6d8f2be532d4 Quick hack mostly for documentation purposes to make -aid work with mms://
reimar
parents: 21536
diff changeset
646 send_command(s, 0x33, num_stream_ids, 0xFFFF | audio_id << 16, 8, data);
6d8f2be532d4 Quick hack mostly for documentation purposes to make -aid work with mms://
reimar
parents: 21536
diff changeset
647 } else {
6092
1529f01e8108 Added support for asf mmst protocol.
bertrand
parents:
diff changeset
648 for (i=1; i<num_stream_ids; i++) {
1529f01e8108 Added support for asf mmst protocol.
bertrand
parents:
diff changeset
649 data [ (i-1) * 6 + 2 ] = 0xFF;
1529f01e8108 Added support for asf mmst protocol.
bertrand
parents:
diff changeset
650 data [ (i-1) * 6 + 3 ] = 0xFF;
1529f01e8108 Added support for asf mmst protocol.
bertrand
parents:
diff changeset
651 data [ (i-1) * 6 + 4 ] = stream_ids[i];
1529f01e8108 Added support for asf mmst protocol.
bertrand
parents:
diff changeset
652 data [ (i-1) * 6 + 5 ] = 0x00;
1529f01e8108 Added support for asf mmst protocol.
bertrand
parents:
diff changeset
653 }
1529f01e8108 Added support for asf mmst protocol.
bertrand
parents:
diff changeset
654
1529f01e8108 Added support for asf mmst protocol.
bertrand
parents:
diff changeset
655 send_command (s, 0x33, num_stream_ids, 0xFFFF | stream_ids[0] << 16, (num_stream_ids-1)*6+2 , data);
22159
6d8f2be532d4 Quick hack mostly for documentation purposes to make -aid work with mms://
reimar
parents: 21536
diff changeset
656 }
6092
1529f01e8108 Added support for asf mmst protocol.
bertrand
parents:
diff changeset
657
1529f01e8108 Added support for asf mmst protocol.
bertrand
parents:
diff changeset
658 get_answer (s);
1529f01e8108 Added support for asf mmst protocol.
bertrand
parents:
diff changeset
659
29263
0f1b5b68af32 whitespace cosmetics: Remove all trailing whitespace.
diego
parents: 28402
diff changeset
660 /* Start sending file from packet xx.
0f1b5b68af32 whitespace cosmetics: Remove all trailing whitespace.
diego
parents: 28402
diff changeset
661 * This command is also used for resume downloads or requesting a lost packet.
0f1b5b68af32 whitespace cosmetics: Remove all trailing whitespace.
diego
parents: 28402
diff changeset
662 * Also used for seeking by sending a play point value which seeks to the media time point.
0f1b5b68af32 whitespace cosmetics: Remove all trailing whitespace.
diego
parents: 28402
diff changeset
663 * Includes ?session' value in pre header and the maximum media stream time.
6092
1529f01e8108 Added support for asf mmst protocol.
bertrand
parents:
diff changeset
664 * 0x07 */
1529f01e8108 Added support for asf mmst protocol.
bertrand
parents:
diff changeset
665
1529f01e8108 Added support for asf mmst protocol.
bertrand
parents:
diff changeset
666 memset (data, 0, 40);
1529f01e8108 Added support for asf mmst protocol.
bertrand
parents:
diff changeset
667
1529f01e8108 Added support for asf mmst protocol.
bertrand
parents:
diff changeset
668 for (i=8; i<16; i++)
1529f01e8108 Added support for asf mmst protocol.
bertrand
parents:
diff changeset
669 data[i] = 0xFF;
1529f01e8108 Added support for asf mmst protocol.
bertrand
parents:
diff changeset
670
1529f01e8108 Added support for asf mmst protocol.
bertrand
parents:
diff changeset
671 data[20] = 0x04;
1529f01e8108 Added support for asf mmst protocol.
bertrand
parents:
diff changeset
672
1529f01e8108 Added support for asf mmst protocol.
bertrand
parents:
diff changeset
673 send_command (s, 0x07, 1, 0xFFFF | stream_ids[0] << 16, 24, data);
1529f01e8108 Added support for asf mmst protocol.
bertrand
parents:
diff changeset
674
7880
5bb4d8801a2c - fixed several 10l bugs
arpi
parents: 7472
diff changeset
675 stream->fd = s;
5bb4d8801a2c - fixed several 10l bugs
arpi
parents: 7472
diff changeset
676 stream->streaming_ctrl->streaming_read = asf_mmst_streaming_read;
5bb4d8801a2c - fixed several 10l bugs
arpi
parents: 7472
diff changeset
677 stream->streaming_ctrl->streaming_seek = asf_mmst_streaming_seek;
5bb4d8801a2c - fixed several 10l bugs
arpi
parents: 7472
diff changeset
678 stream->streaming_ctrl->buffering = 1;
5bb4d8801a2c - fixed several 10l bugs
arpi
parents: 7472
diff changeset
679 stream->streaming_ctrl->status = streaming_playing_e;
6092
1529f01e8108 Added support for asf mmst protocol.
bertrand
parents:
diff changeset
680
7880
5bb4d8801a2c - fixed several 10l bugs
arpi
parents: 7472
diff changeset
681 packet_length1 = packet_length;
16930
41aeb5e0cb4b Fix bugs/crash introduced by translation patch
reimar
parents: 16906
diff changeset
682 mp_msg(MSGT_NETWORK,MSGL_INFO,"mmst packet_length = %d\n", packet_length);
6092
1529f01e8108 Added support for asf mmst protocol.
bertrand
parents:
diff changeset
683
27393
4876c89bafdd Rename font-related preprocessor directives.
diego
parents: 27359
diff changeset
684 #ifdef CONFIG_ICONV
11412
ec3dac7d17a0 Warning fixes (approved by A'rpi).
rathann
parents: 11403
diff changeset
685 if (url_conv != (iconv_t)(-1))
11403
86ab7e0b2a65 fallback to non-iconv dummy utf16 conversion if iconv failed
alex
parents: 11402
diff changeset
686 iconv_close(url_conv);
86ab7e0b2a65 fallback to non-iconv dummy utf16 conversion if iconv failed
alex
parents: 11402
diff changeset
687 #endif
11350
007ec48cf146 Current mplayer (mine is mplayer-1.0-pre1cvs20031001) cannot play mms
attila
parents: 11226
diff changeset
688
6092
1529f01e8108 Added support for asf mmst protocol.
bertrand
parents:
diff changeset
689 return 0;
1529f01e8108 Added support for asf mmst protocol.
bertrand
parents:
diff changeset
690 }