AMF0 parsing, chunk merging
This commit is contained in:
parent
6bff69af30
commit
d642d2f111
5 changed files with 238 additions and 16 deletions
78
Connector_RTMP/main.cpp
Normal file
78
Connector_RTMP/main.cpp
Normal file
|
@ -0,0 +1,78 @@
|
|||
#include <iostream>
|
||||
#include <cstdlib>
|
||||
#include <cstdio>
|
||||
#include <cmath>
|
||||
#include "handshake.cpp" //handshaking
|
||||
#include "chunkstream.cpp" //chunkstream decoding
|
||||
#include "amf.cpp" //simple AMF0 parsing
|
||||
|
||||
int main(){
|
||||
doHandshake();
|
||||
|
||||
chunkpack next;
|
||||
std::vector<AMFType> * amfdata = 0;
|
||||
while (!feof(stdin)){
|
||||
next = getWholeChunk();
|
||||
if (next.cs_id == 2 && next.msg_stream_id == 0){
|
||||
fprintf(stderr, "Received protocol message. (cs_id 2, stream id 0)\nContents:\n");
|
||||
fwrite(next.data, 1, next.real_len, stderr);
|
||||
fflush(stderr);
|
||||
}
|
||||
switch (next.msg_type_id){
|
||||
case 1:
|
||||
fprintf(stderr, "CTRL: Set chunk size\n");
|
||||
break;
|
||||
case 2:
|
||||
fprintf(stderr, "CTRL: Abort message\n");
|
||||
break;
|
||||
case 3:
|
||||
fprintf(stderr, "CTRL: Acknowledgement\n");
|
||||
break;
|
||||
case 4:
|
||||
fprintf(stderr, "CTRL: User control message\n");
|
||||
break;
|
||||
case 5:
|
||||
fprintf(stderr, "CTRL: Window size\n");
|
||||
break;
|
||||
case 6:
|
||||
fprintf(stderr, "CTRL: Set peer bandwidth\n");
|
||||
break;
|
||||
case 8:
|
||||
fprintf(stderr, "Received audio data\n");
|
||||
break;
|
||||
case 9:
|
||||
fprintf(stderr, "Received video data\n");
|
||||
break;
|
||||
case 15:
|
||||
fprintf(stderr, "Received AFM3 data message\n");
|
||||
break;
|
||||
case 16:
|
||||
fprintf(stderr, "Received AFM3 shared object\n");
|
||||
break;
|
||||
case 17:
|
||||
fprintf(stderr, "Received AFM3 command message\n");
|
||||
break;
|
||||
case 18:
|
||||
fprintf(stderr, "Received AFM0 data message\n");
|
||||
break;
|
||||
case 19:
|
||||
fprintf(stderr, "Received AFM0 shared object\n");
|
||||
break;
|
||||
case 20:
|
||||
fprintf(stderr, "Received AFM0 command message\n");
|
||||
if (amfdata != 0){delete amfdata;}
|
||||
amfdata = parseAMF(next.data, next.real_len);
|
||||
|
||||
break;
|
||||
case 22:
|
||||
fprintf(stderr, "Received aggregate message\n");
|
||||
break;
|
||||
default:
|
||||
fprintf(stderr, "Unknown chunk received!\n");
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
return 0;
|
||||
}//main
|
Loading…
Add table
Add a link
Reference in a new issue