comparison libmpdemux/network.c @ 12175:da8e39bfe121

nsv (Nullsoft streaming video) demuxer Patch by Reza Jelveh <reza (dot) jelveh (at) tu-harburg (dot) de>
author rtognimp
date Mon, 12 Apr 2004 14:19:12 +0000
parents 2c2fb4457982
children d572c605f665
comparison
equal deleted inserted replaced
12174:84a3e29c9ec5 12175:da8e39bfe121
90 { "audio/x-mpegurl", DEMUXER_TYPE_PLAYLIST }, 90 { "audio/x-mpegurl", DEMUXER_TYPE_PLAYLIST },
91 { "audio/x-pls", DEMUXER_TYPE_PLAYLIST }, 91 { "audio/x-pls", DEMUXER_TYPE_PLAYLIST },
92 // Real Media 92 // Real Media
93 { "audio/x-pn-realaudio", DEMUXER_TYPE_REAL }, 93 { "audio/x-pn-realaudio", DEMUXER_TYPE_REAL },
94 // OGG Streaming 94 // OGG Streaming
95 { "application/x-ogg", DEMUXER_TYPE_OGG } 95 { "application/x-ogg", DEMUXER_TYPE_OGG },
96 // NullSoft Streaming Video
97 { "video/nsv", DEMUXER_TYPE_NSV}
96 98
97 }; 99 };
98 100
99 /* 101 /*
100 * An autodetection based on the extension is not a good idea. 102 * An autodetection based on the extension is not a good idea.
776 // XXX: does this really mean public server? ::atmos 778 // XXX: does this really mean public server? ::atmos
777 if( (field_data = http_get_field(http_hdr, "icy-pub")) != NULL ) 779 if( (field_data = http_get_field(http_hdr, "icy-pub")) != NULL )
778 mp_msg(MSGT_NETWORK,MSGL_INFO,"Public : %s\n", atoi(field_data)?"yes":"no"); field_data = NULL; 780 mp_msg(MSGT_NETWORK,MSGL_INFO,"Public : %s\n", atoi(field_data)?"yes":"no"); field_data = NULL;
779 if( (field_data = http_get_field(http_hdr, "icy-br")) != NULL ) 781 if( (field_data = http_get_field(http_hdr, "icy-br")) != NULL )
780 mp_msg(MSGT_NETWORK,MSGL_INFO,"Bitrate: %skbit/s\n", field_data); field_data = NULL; 782 mp_msg(MSGT_NETWORK,MSGL_INFO,"Bitrate: %skbit/s\n", field_data); field_data = NULL;
781 // Ok, we have detected an mp3 stream 783
782 *file_format = DEMUXER_TYPE_AUDIO; 784 // If content-type == video/nsv we most likely have a winamp video stream
785 // otherwise it should be mp3. if there are more types consider adding mime type
786 // handling like later
787 if( !strcmp((field_data = http_get_field(http_hdr, "content-type")),"video/nsv"))
788 *file_format = DEMUXER_TYPE_NSV;
789 else
790 *file_format = DEMUXER_TYPE_AUDIO;
783 return 0; 791 return 0;
784 } 792 }
785 case 400: // Server Full 793 case 400: // Server Full
786 mp_msg(MSGT_NETWORK,MSGL_ERR,"Error: ICY-Server is full, skipping!\n"); 794 mp_msg(MSGT_NETWORK,MSGL_ERR,"Error: ICY-Server is full, skipping!\n");
787 return -1; 795 return -1;
1246 case DEMUXER_TYPE_ROQ: 1254 case DEMUXER_TYPE_ROQ:
1247 case DEMUXER_TYPE_AUDIO: 1255 case DEMUXER_TYPE_AUDIO:
1248 case DEMUXER_TYPE_OGG: 1256 case DEMUXER_TYPE_OGG:
1249 case DEMUXER_TYPE_PLAYLIST: 1257 case DEMUXER_TYPE_PLAYLIST:
1250 case DEMUXER_TYPE_UNKNOWN: 1258 case DEMUXER_TYPE_UNKNOWN:
1259 case DEMUXER_TYPE_NSV:
1251 // Generic start, doesn't need to filter 1260 // Generic start, doesn't need to filter
1252 // the network stream, it's a raw stream 1261 // the network stream, it's a raw stream
1253 ret = nop_streaming_start( stream ); 1262 ret = nop_streaming_start( stream );
1254 if( ret<0 ) { 1263 if( ret<0 ) {
1255 mp_msg(MSGT_NETWORK,MSGL_ERR,"nop_streaming_start failed\n"); 1264 mp_msg(MSGT_NETWORK,MSGL_ERR,"nop_streaming_start failed\n");