格式化代码

rtmpsuck
Matthew 5 months ago
parent 12e8cb37e6
commit af57c97961

@ -20,7 +20,7 @@
* *
*/ */
/* This is a Proxy Server that displays the connection parameters from a /* This is a Proxy Server that displays the connection parameters from a
* client and then saves any data streamed to the client. * client and then saves any data streamed to the client.
*/ */
@ -115,8 +115,7 @@ static const AVal av_NetStream_Play_Stop = AVC("NetStream.Play.Stop");
static const char *cst[] = { "client", "server" }; static const char *cst[] = { "client", "server" };
// Returns 0 for OK/Failed/error, 1 for 'Stop or Complete' // Returns 0 for OK/Failed/error, 1 for 'Stop or Complete'
int int ServeInvoke(STREAMING_SERVER *server, int which, RTMPPacket *pack, const char *body)
ServeInvoke(STREAMING_SERVER *server, int which, RTMPPacket *pack, const char *body)
{ {
int ret = 0, nRes; int ret = 0, nRes;
int nBodySize = pack->m_nBodySize; int nBodySize = pack->m_nBodySize;
@ -151,7 +150,7 @@ ServeInvoke(STREAMING_SERVER *server, int which, RTMPPacket *pack, const char *b
int i; int i;
AMFProp_GetObject(AMF_GetProp(&obj, NULL, 2), &cobj); AMFProp_GetObject(AMF_GetProp(&obj, NULL, 2), &cobj);
RTMP_LogPrintf("Processing connect\n"); RTMP_LogPrintf("Processing connect\n");
for (i=0; i<cobj.o_num; i++) for (i = 0; i < cobj.o_num; i++)
{ {
pname = cobj.o_props[i].p_name; pname = cobj.o_props[i].p_name;
pval.av_val = NULL; pval.av_val = NULL;
@ -195,19 +194,19 @@ ServeInvoke(STREAMING_SERVER *server, int which, RTMPPacket *pack, const char *b
if (pval.av_val[4] == ':') if (pval.av_val[4] == ':')
{ {
server->rc.Link.protocol = RTMP_PROTOCOL_RTMP; server->rc.Link.protocol = RTMP_PROTOCOL_RTMP;
r1 = pval.av_val+7; r1 = pval.av_val + 7;
} }
else if ((pval.av_val[4] | 0x40) == 'e' && pval.av_val[5] == ':') else if ((pval.av_val[4] | 0x40) == 'e' && pval.av_val[5] == ':')
{ {
server->rc.Link.protocol = RTMP_PROTOCOL_RTMPE; server->rc.Link.protocol = RTMP_PROTOCOL_RTMPE;
r1 = pval.av_val+8; r1 = pval.av_val + 8;
} }
r2 = strchr(r1, '/'); r2 = strchr(r1, '/');
if (r2) if (r2)
len = r2 - r1; len = r2 - r1;
else else
len = pval.av_len - (r1 - pval.av_val); len = pval.av_len - (r1 - pval.av_val);
r2 = malloc(len+1); r2 = malloc(len + 1);
memcpy(r2, r1, len); memcpy(r2, r1, len);
r2[len] = '\0'; r2[len] = '\0';
server->rc.Link.hostname.av_val = r2; server->rc.Link.hostname.av_val = r2;
@ -285,7 +284,7 @@ ServeInvoke(STREAMING_SERVER *server, int which, RTMPPacket *pack, const char *b
goto out; goto out;
/* check for duplicates */ /* check for duplicates */
for (fl = server->f_head; fl; fl=fl->f_next) for (fl = server->f_head; fl; fl = fl->f_next)
{ {
if (AVMATCH(&av, &fl->f_path)) if (AVMATCH(&av, &fl->f_path))
count++; count++;
@ -305,7 +304,7 @@ ServeInvoke(STREAMING_SERVER *server, int which, RTMPPacket *pack, const char *b
} }
} }
/* strip leading slash components */ /* strip leading slash components */
for (p=av.av_val+av.av_len-1; p>=av.av_val; p--) for (p = av.av_val + av.av_len - 1; p >= av.av_val; p--)
if (*p == '/') if (*p == '/')
{ {
p++; p++;
@ -323,14 +322,14 @@ ServeInvoke(STREAMING_SERVER *server, int which, RTMPPacket *pack, const char *b
/* hope there aren't more than 255 dups */ /* hope there aren't more than 255 dups */
if (count) if (count)
flen += 2; flen += 2;
file = malloc(flen+1); file = malloc(flen + 1);
memcpy(file, av.av_val, av.av_len); memcpy(file, av.av_val, av.av_len);
if (count) if (count)
sprintf(file+av.av_len, "%02x", count); sprintf(file + av.av_len, "%02x", count);
else else
file[av.av_len] = '\0'; file[av.av_len] = '\0';
for (p=file; *p; p++) for (p = file; *p; p++)
if (*p == ':') if (*p == ':')
*p = '_'; *p = '_';
RTMP_LogPrintf("Playpath: %.*s\nSaving as: %s\n", RTMP_LogPrintf("Playpath: %.*s\nSaving as: %s\n",
@ -344,10 +343,10 @@ ServeInvoke(STREAMING_SERVER *server, int which, RTMPPacket *pack, const char *b
{ {
fwrite(flvHeader, 1, sizeof(flvHeader), out); fwrite(flvHeader, 1, sizeof(flvHeader), out);
av = server->rc.Link.playpath; av = server->rc.Link.playpath;
fl = malloc(sizeof(Flist)+av.av_len+1); fl = malloc(sizeof(Flist) + av.av_len + 1);
fl->f_file = out; fl->f_file = out;
fl->f_path.av_len = av.av_len; fl->f_path.av_len = av.av_len;
fl->f_path.av_val = (char *)(fl+1); fl->f_path.av_val = (char *)(fl + 1);
memcpy(fl->f_path.av_val, av.av_val, av.av_len); memcpy(fl->f_path.av_val, av.av_val, av.av_len);
fl->f_path.av_val[av.av_len] = '\0'; fl->f_path.av_val[av.av_len] = '\0';
fl->f_next = NULL; fl->f_next = NULL;
@ -386,7 +385,7 @@ ServeInvoke(STREAMING_SERVER *server, int which, RTMPPacket *pack, const char *b
else else
{ {
for (server->f_cur = server->f_head; server->f_cur && for (server->f_cur = server->f_head; server->f_cur &&
!server->f_cur->f_file; server->f_cur = server->f_cur->f_next) ; !server->f_cur->f_file; server->f_cur = server->f_cur->f_next);
} }
server->rc.m_bPlaying = TRUE; server->rc.m_bPlaying = TRUE;
} }
@ -412,8 +411,7 @@ out:
return ret; return ret;
} }
int int ServePacket(STREAMING_SERVER *server, int which, RTMPPacket *packet)
ServePacket(STREAMING_SERVER *server, int which, RTMPPacket *packet)
{ {
int ret = 0; int ret = 0;
@ -424,7 +422,7 @@ ServePacket(STREAMING_SERVER *server, int which, RTMPPacket *packet)
{ {
case RTMP_PACKET_TYPE_CHUNK_SIZE: case RTMP_PACKET_TYPE_CHUNK_SIZE:
// chunk size // chunk size
// HandleChangeChunkSize(r, packet); // HandleChangeChunkSize(r, packet);
break; break;
case RTMP_PACKET_TYPE_BYTES_READ_REPORT: case RTMP_PACKET_TYPE_BYTES_READ_REPORT:
@ -433,12 +431,12 @@ ServePacket(STREAMING_SERVER *server, int which, RTMPPacket *packet)
case RTMP_PACKET_TYPE_CONTROL: case RTMP_PACKET_TYPE_CONTROL:
// ctrl // ctrl
// HandleCtrl(r, packet); // HandleCtrl(r, packet);
break; break;
case RTMP_PACKET_TYPE_SERVER_BW: case RTMP_PACKET_TYPE_SERVER_BW:
// server bw // server bw
// HandleServerBW(r, packet); // HandleServerBW(r, packet);
break; break;
case RTMP_PACKET_TYPE_CLIENT_BW: case RTMP_PACKET_TYPE_CLIENT_BW:
@ -497,8 +495,7 @@ ServePacket(STREAMING_SERVER *server, int which, RTMPPacket *packet)
return ret; return ret;
} }
int int WriteStream(char **buf, // target pointer, maybe preallocated
WriteStream(char **buf, // target pointer, maybe preallocated
unsigned int *plen, // length of buffer if preallocated unsigned int *plen, // length of buffer if preallocated
uint32_t *nTimeStamp, uint32_t *nTimeStamp,
RTMPPacket *packet) RTMPPacket *packet)
@ -552,7 +549,7 @@ WriteStream(char **buf, // target pointer, maybe preallocated
{ {
/* The extra 4 is for the case of an FLV stream without a last /* The extra 4 is for the case of an FLV stream without a last
* prevTagSize (we need extra 4 bytes to append it). */ * prevTagSize (we need extra 4 bytes to append it). */
*buf = (char *) realloc(*buf, size + 4); *buf = (char *)realloc(*buf, size + 4);
if (*buf == 0) if (*buf == 0)
{ {
RTMP_Log(RTMP_LOGERROR, "Couldn't reallocate memory!"); RTMP_Log(RTMP_LOGERROR, "Couldn't reallocate memory!");
@ -560,7 +557,7 @@ WriteStream(char **buf, // target pointer, maybe preallocated
break; break;
} }
} }
char *ptr = *buf, *pend = ptr + size+4; char *ptr = *buf, *pend = ptr + size + 4;
/* audio (RTMP_PACKET_TYPE_AUDIO), video (RTMP_PACKET_TYPE_VIDEO) /* audio (RTMP_PACKET_TYPE_AUDIO), video (RTMP_PACKET_TYPE_VIDEO)
* or metadata (RTMP_PACKET_TYPE_INFO) packets: construct 11 byte * or metadata (RTMP_PACKET_TYPE_INFO) packets: construct 11 byte
@ -578,7 +575,7 @@ WriteStream(char **buf, // target pointer, maybe preallocated
*ptr++ = packet->m_packetType; *ptr++ = packet->m_packetType;
ptr = AMF_EncodeInt24(ptr, pend, nPacketLen); ptr = AMF_EncodeInt24(ptr, pend, nPacketLen);
ptr = AMF_EncodeInt24(ptr, pend, *nTimeStamp); ptr = AMF_EncodeInt24(ptr, pend, *nTimeStamp);
*ptr = (char) (((*nTimeStamp) & 0xFF000000) >> 24); *ptr = (char)(((*nTimeStamp) & 0xFF000000) >> 24);
ptr++; ptr++;
// stream id // stream id
@ -601,8 +598,8 @@ WriteStream(char **buf, // target pointer, maybe preallocated
#if 0 #if 0
/* set data type */ /* set data type */
*dataType |= (((*(packetBody+pos) == RTMP_PACKET_TYPE_AUDIO) << 2) * dataType |= (((*(packetBody + pos) == RTMP_PACKET_TYPE_AUDIO) << 2)
| (*(packetBody+pos) == RTMP_PACKET_TYPE_VIDEO)); | (*(packetBody + pos) == RTMP_PACKET_TYPE_VIDEO));
#endif #endif
if (pos + 11 + dataSize + 4 > nPacketLen) if (pos + 11 + dataSize + 4 > nPacketLen)
@ -631,7 +628,7 @@ WriteStream(char **buf, // target pointer, maybe preallocated
#ifdef _DEBUG #ifdef _DEBUG
RTMP_Log(RTMP_LOGDEBUG, RTMP_Log(RTMP_LOGDEBUG,
"FLV Packet: type %02X, dataSize: %lu, tagSize: %lu, timeStamp: %lu ms", "FLV Packet: type %02X, dataSize: %lu, tagSize: %lu, timeStamp: %lu ms",
(unsigned char) packetBody[pos], dataSize, prevTagSize, (unsigned char)packetBody[pos], dataSize, prevTagSize,
*nTimeStamp); *nTimeStamp);
#endif #endif
@ -669,8 +666,7 @@ WriteStream(char **buf, // target pointer, maybe preallocated
return ret; // no more media packets return ret; // no more media packets
} }
TFTYPE TFTYPE controlServerThread(void *unused)
controlServerThread(void *unused)
{ {
char ich; char ich;
while (1) while (1)
@ -828,19 +824,19 @@ TFTYPE doServe(void *arg) // server sock and state (our listening sock)
/* UpdateBufferMS */ /* UpdateBufferMS */
if (nType == 0x03) if (nType == 0x03)
{ {
char *ptr = ps.m_body+2; char *ptr = ps.m_body + 2;
int id; int id;
int len; int len;
id = AMF_DecodeInt32(ptr); id = AMF_DecodeInt32(ptr);
/* Assume the interesting media is on a non-zero stream */ /* Assume the interesting media is on a non-zero stream */
if (id) if (id)
{ {
len = AMF_DecodeInt32(ptr+4); len = AMF_DecodeInt32(ptr + 4);
#if 1 #if 1
/* request a big buffer */ /* request a big buffer */
if (len < BUFFERTIME) if (len < BUFFERTIME)
{ {
AMF_EncodeInt32(ptr+4, ptr+8, BUFFERTIME); AMF_EncodeInt32(ptr + 4, ptr + 8, BUFFERTIME);
} }
#endif #endif
RTMP_Log(RTMP_LOGDEBUG, "%s, client: BufferTime change in stream %d to %d", __FUNCTION__, RTMP_Log(RTMP_LOGDEBUG, "%s, client: BufferTime change in stream %d to %d", __FUNCTION__,
@ -970,8 +966,7 @@ quit:
TFRET(); TFRET();
} }
TFTYPE TFTYPE serverThread(void *arg)
serverThread(void *arg)
{ {
STREAMING_SERVER *server = arg; STREAMING_SERVER *server = arg;
server->state = STREAMING_ACCEPTING; server->state = STREAMING_ACCEPTING;
@ -1029,7 +1024,7 @@ startStreaming(const char *address, int port)
tmp = 1; tmp = 1;
setsockopt(sockfd, SOL_SOCKET, SO_REUSEADDR, setsockopt(sockfd, SOL_SOCKET, SO_REUSEADDR,
(char *) &tmp, sizeof(tmp) ); (char *)&tmp, sizeof(tmp));
addr.sin_family = AF_INET; addr.sin_family = AF_INET;
addr.sin_addr.s_addr = inet_addr(address); //htonl(INADDR_ANY); addr.sin_addr.s_addr = inet_addr(address); //htonl(INADDR_ANY);
@ -1050,7 +1045,7 @@ startStreaming(const char *address, int port)
return 0; return 0;
} }
server = (STREAMING_SERVER *) calloc(1, sizeof(STREAMING_SERVER)); server = (STREAMING_SERVER *)calloc(1, sizeof(STREAMING_SERVER));
server->sockfd = sockfd; server->sockfd = sockfd;
ThreadCreate(serverThread, server); ThreadCreate(serverThread, server);

Loading…
Cancel
Save