mpv/asf_streaming.c

55 lines
1.6 KiB
C
Raw Normal View History

#include "asf.h"
#include <string.h>
static ASF_StreamType_e stream_type;
void asf_streaming(char *data, int length) {
ASF_stream_chunck_t *stream_chunck=(ASF_stream_chunck_t*)data;
printf("ASF stream chunck size=%d\n", stream_chunck->length);
switch(stream_chunck->type) {
case 0x4324: // Clear ASF configuration
printf(" --> Clearing ASF stream configuration!\n");
break;
case 0x4424: // Data follows
printf(" --> Data follows\n");
break;
case 0x4524: // Transfer complete
printf(" --> Transfer complete\n");
break;
case 0x4824: // ASF header chunk follows
printf(" --> ASF header chunk follows\n");
break;
default:
printf("======> Unknown stream type %d\n", stream_chunck->type );
}
}
void asf_steam_type(char *content_type, char *features) {
stream_type = ASF_Unknown_e;
if( !strcasecmp(content_type, "application/octet-stream") ) {
if( strstr(features, "broadcast")) {
printf("-----> Live stream <-------\n");
stream_type = ASF_Live_e;
} else {
printf("-----> Prerecorded <-------\n");
stream_type = ASF_Prerecorded_e;
}
} else {
if( (!strcasecmp(content_type, "audio/x-ms-wax")) ||
(!strcasecmp(content_type, "audio/x-ms-wma")) ||
(!strcasecmp(content_type, "video/x-ms-asf")) ||
(!strcasecmp(content_type, "video/x-ms-afs")) ||
(!strcasecmp(content_type, "video/x-ms-wvx")) ||
(!strcasecmp(content_type, "video/x-ms-wmv")) ||
(!strcasecmp(content_type, "video/x-ms-wma")) ) {
printf("-----> Redirector <-------\n");
stream_type = ASF_Redirector_e;
} else {
printf("-----> unknown content-type: %s\n", content_type );
stream_type = ASF_Unknown_e;
}
}
}