[Mplayerxp-cvslog] SF.net SVN: mplayerxp:[529] mplayerxp
Brought to you by:
olov
From: <nic...@us...> - 2012-12-10 11:24:42
|
Revision: 529 http://mplayerxp.svn.sourceforge.net/mplayerxp/?rev=529&view=rev Author: nickols_k Date: 2012-12-10 11:24:29 +0000 (Mon, 10 Dec 2012) Log Message: ----------- cleanups: remove avi_ni and avi_nini demuxers. New: added support for mime_type Modified Paths: -------------- mplayerxp/libmpdemux/demux_avi.cpp mplayerxp/libmpdemux/demux_mp3.cpp mplayerxp/libmpdemux/demux_mpxp64.cpp mplayerxp/libmpdemux/demux_real.cpp mplayerxp/libmpdemux/demuxer.cpp mplayerxp/libmpdemux/demuxer_info.cpp mplayerxp/libmpdemux/demuxer_info.h mplayerxp/libmpdemux/mux_mpxp64.cpp mplayerxp/libmpstream/network.cpp mplayerxp/libmpstream/network.h mplayerxp/libmpstream/s_cdd.cpp mplayerxp/libmpstream/s_dvdnav.cpp mplayerxp/libmpstream/s_dvdread.cpp mplayerxp/libmpstream/s_file.cpp mplayerxp/libmpstream/s_ftp.cpp mplayerxp/libmpstream/s_lavc.cpp mplayerxp/libmpstream/s_network.cpp mplayerxp/libmpstream/s_null.cpp mplayerxp/libmpstream/s_oss.cpp mplayerxp/libmpstream/s_rtsp.cpp mplayerxp/libmpstream/s_tv.cpp mplayerxp/libmpstream/s_udp.cpp mplayerxp/libmpstream/s_vcdnav.cpp mplayerxp/libmpstream/stream.cpp mplayerxp/libmpstream/stream.h mplayerxp/libmpstream/stream_internal.h Modified: mplayerxp/libmpdemux/demux_avi.cpp =================================================================== --- mplayerxp/libmpdemux/demux_avi.cpp 2012-12-10 09:05:01 UTC (rev 528) +++ mplayerxp/libmpdemux/demux_avi.cpp 2012-12-10 11:24:29 UTC (rev 529) @@ -23,7 +23,6 @@ #include "aviprint.h" #include "demux_msg.h" -typedef int (*alt_demuxer_t)(Demuxer *demux,Demuxer_Stream *__ds); struct avi_priv_t : public Opaque { public: avi_priv_t() {} @@ -54,7 +53,6 @@ unsigned int suidx_size; int nini; int is_odml; - alt_demuxer_t alt_demuxer; }; avi_priv_t::~avi_priv_t() { @@ -908,7 +906,6 @@ static int avi_demux(Demuxer *demux,Demuxer_Stream *__ds){ avi_priv_t *priv=static_cast<avi_priv_t*>(demux->priv); - if(priv->alt_demuxer) return priv->alt_demuxer(demux,__ds); unsigned int id=0; unsigned int len; int ret=0; @@ -986,12 +983,10 @@ MSG_WARN("\nBadly interleaved .AVI detected - switching to -ni mode...\n"); if(priv->idx_size>0){ // has index - priv->alt_demuxer = avi_read_ni; priv->nini=1; --priv->idx_pos; // hack } else { // no index - priv->alt_demuxer = avi_read_nini; priv->nini=1; priv->idx_pos=demux->filepos; // hack } @@ -1004,130 +999,6 @@ return 1; } - -// return value: -// 0 = EOF or no stream found -// 1 = successfully read a packet -static int avi_read_ni(Demuxer *demux,Demuxer_Stream* ds){ -avi_priv_t *priv=static_cast<avi_priv_t*>(demux->priv); -unsigned int id=0; -unsigned int len; -int ret=0; - -do{ - dp_flags_e flags=DP_KEYFRAME; - AVIINDEXENTRY *idx=NULL; - int idx_pos=0; - demux->filepos=demux->stream->tell(); - - if(ds==demux->video) idx_pos=priv->idx_pos_v++; else - if(ds==demux->audio) idx_pos=priv->idx_pos_a++; else - idx_pos=priv->idx_pos++; - - if(priv->idx_size>0 && idx_pos<priv->idx_size){ - off_t pos; - idx=&((AVIINDEXENTRY *)priv->idx)[idx_pos]; -// idx=&priv->idx[idx_pos]; - - if(idx->dwFlags&AVIIF_LIST){ - // LIST - continue; - } - if(ds && demux_avi_select_stream(demux,idx->ckid)!=ds){ - MSG_DBG3("Skip chunk %.4s (0x%X) \n",(char *)&idx->ckid,(unsigned int)idx->ckid); - continue; // skip this chunk - } - - pos = priv->idx_offset+(unsigned long)idx->dwChunkOffset; - if((pos<demux->movi_start || pos>=demux->movi_end) && (demux->movi_end>demux->movi_start)){ - MSG_V("ChunkOffset out of range! current=0x%X idx=0x%X \n",demux->filepos,pos); - continue; - } -#if 0 - if(pos!=demux->filepos){ - MSG_V("Warning! pos=0x%X idx.pos=0x%X diff=%d \n",demux->filepos,pos,pos-demux->filepos); - } -#endif - demux->stream->seek(pos); - - id=demux->stream->read_dword_le(); - - if(demux->stream->eof()) return 0; - - if(id!=idx->ckid){ - MSG_V("ChunkID mismatch! raw=%.4s idx=%.4s \n",(char *)&id,(char *)&idx->ckid); - if(valid_fourcc(idx->ckid)) - id=idx->ckid; // use index if valid - else - if(!valid_fourcc(id)) continue; // drop chunk if both id and idx bad - } - len=demux->stream->read_dword_le(); - if((len!=idx->dwChunkLength)&&((len+1)!=idx->dwChunkLength)){ - MSG_V("ChunkSize mismatch! raw=%d idx=%ld \n",len,idx->dwChunkLength); - if(len>0x200000 && idx->dwChunkLength>0x200000) continue; // both values bad :( - len=choose_chunk_len(idx->dwChunkLength,len); - } - if(!(idx->dwFlags&AVIIF_KEYFRAME)) flags=DP_NONKEYFRAME; - } else return 0; - ret=demux_avi_read_packet(demux,demux_avi_select_stream(demux,id),id,len,idx_pos,flags); -} while(ret!=1); - return 1; -} - - -// return value: -// 0 = EOF or no stream found -// 1 = successfully read a packet -static int avi_read_nini(Demuxer *demux,Demuxer_Stream* ds){ -avi_priv_t *priv=static_cast<avi_priv_t*>(demux->priv); -unsigned int id=0; -unsigned int len; -int ret=0; -off_t *fpos=NULL; - - if(ds==demux->video) fpos=&priv->idx_pos_v; else - if(ds==demux->audio) fpos=&priv->idx_pos_a; else - return 0; - - demux->stream->seek(fpos[0]); - -do{ - - demux->filepos=demux->stream->tell(); - if(demux->filepos>=demux->movi_end && (demux->movi_end>demux->movi_start)){ - ds->eof=1; - return 0; - } - if(demux->stream->eof()) return 0; - - id=demux->stream->read_dword_le(); - len=demux->stream->read_dword_le(); - - if(id==mmioFOURCC('L','I','S','T')){ - id=demux->stream->read_dword_le(); // list type - continue; - } - - if(id==mmioFOURCC('R','I','F','F')){ - MSG_V("additional RIFF header...\n"); - id=demux->stream->read_dword_le(); // "AVIX" - continue; - } - - if(ds==demux_avi_select_stream(demux,id)){ - // read it! - ret=demux_avi_read_packet(demux,ds,id,len,priv->idx_pos-1,DP_NONKEYFRAME); - } else { - // skip it! - int skip=(len+1)&(~1); // total bytes in this chunk - demux->stream->skip(skip); - } - -} while(ret!=1); - fpos[0]=demux->stream->tell(); - return 1; -} - int index_mode=-1; // -1=untouched 0=don't use index 1=use (geneate) index extern demuxer_driver_t demux_ogg; static Opaque* avi_open(Demuxer* demuxer){ Modified: mplayerxp/libmpdemux/demux_mp3.cpp =================================================================== --- mplayerxp/libmpdemux/demux_mp3.cpp 2012-12-10 09:05:01 UTC (rev 528) +++ mplayerxp/libmpdemux/demux_mp3.cpp 2012-12-10 11:24:29 UTC (rev 529) @@ -170,7 +170,7 @@ case mmioFOURCC(0,'T','Y','E'): if(len>1) demuxer->info().add(INFOT_DATE,data+1); break; case mmioFOURCC(0,'T','E','N'): if(len>1) demuxer->info().add(INFOT_ENCODER,data+1); break; case mmioFOURCC(0,'T','M','T'): if(len>1) demuxer->info().add(INFOT_SOURCE_MEDIA,data+1); break; - case mmioFOURCC(0,'T','F','T'): if(len>1) demuxer->info().add(INFOT_MIME,data+1); break; +// case mmioFOURCC(0,'T','F','T'): if(len>1) demuxer->info().add(INFOT_MIME,data+1); break; case mmioFOURCC(0,'P','O','P'): if(len>1) demuxer->info().add(INFOT_RATING,data+1); break; case mmioFOURCC(0,'W','X','X'): if(len>1) demuxer->info().add(INFOT_WWW,data+1); break; case 0: goto end; @@ -243,7 +243,7 @@ case mmioFOURCC('T','E','N','C'): if(len>1) demuxer->info().add(INFOT_ENCODER,data+1); break; case mmioFOURCC('T','C','O','P'): if(len>1) demuxer->info().add(INFOT_COPYRIGHT,data+1); break; case mmioFOURCC('T','M','E','D'): if(len>1) demuxer->info().add(INFOT_SOURCE_MEDIA,data+1); break; - case mmioFOURCC('T','F','L','T'): if(len>1) demuxer->info().add(INFOT_MIME,data+1); break; +// case mmioFOURCC('T','F','L','T'): if(len>1) demuxer->info().add(INFOT_MIME,data+1); break; case mmioFOURCC('P','O','P','M'): if(len>1) demuxer->info().add(INFOT_RATING,data+1); break; case mmioFOURCC('W','X','X','X'): if(len>1) demuxer->info().add(INFOT_WWW,data+1); break; case 0: goto end; @@ -320,7 +320,7 @@ case mmioFOURCC('T','E','N','C'): if(len>1) demuxer->info().add(INFOT_ENCODER,data+1); break; case mmioFOURCC('T','C','O','P'): if(len>1) demuxer->info().add(INFOT_COPYRIGHT,data+1); break; case mmioFOURCC('T','M','E','D'): if(len>1) demuxer->info().add(INFOT_SOURCE_MEDIA,data+1); break; - case mmioFOURCC('T','F','L','T'): if(len>1) demuxer->info().add(INFOT_MIME,data+1); break; +// case mmioFOURCC('T','F','L','T'): if(len>1) demuxer->info().add(INFOT_MIME,data+1); break; case mmioFOURCC('P','O','P','M'): if(len>1) demuxer->info().add(INFOT_RATING,data+1); break; case mmioFOURCC('W','X','X','X'): if(len>1) demuxer->info().add(INFOT_WWW,data+1); break; case 0: goto end; @@ -511,7 +511,7 @@ sh_audio->i_bps=mp3_brate; sh_audio->rate=mp3_samplerate; sh_audio->nch=mp3_channels; - demuxer->movi_start-=4; + demuxer->movi_start-=HDR_SIZE; if(!read_mp3v1_tags(demuxer,hdr,pos)) return 0; /* id3v1 may coexist with id3v2 */ break; case RAW_MP3: @@ -519,7 +519,7 @@ sh_audio->i_bps=mp3_brate; sh_audio->rate=mp3_samplerate; sh_audio->nch=mp3_channels; - demuxer->movi_start-=4; + demuxer->movi_start-=HDR_SIZE; if(!read_mp3v1_tags(demuxer,hdr,pos)) return 0; /* id3v1 may coexist with id3v2 */ break; } Modified: mplayerxp/libmpdemux/demux_mpxp64.cpp =================================================================== --- mplayerxp/libmpdemux/demux_mpxp64.cpp 2012-12-10 09:05:01 UTC (rev 528) +++ mplayerxp/libmpdemux/demux_mpxp64.cpp 2012-12-10 11:24:29 UTC (rev 529) @@ -399,7 +399,7 @@ case mmioFOURCC('M','A','I','L'): infot=INFOT_MAIL; break; case mmioFOURCC('R','A','T','E'): infot=INFOT_RATING; break; case mmioFOURCC('C','M','T','S'): infot=INFOT_COMMENTS; break; - case mmioFOURCC('M','I','M','E'): infot=INFOT_MIME; break; +// case mmioFOURCC('M','I','M','E'): infot=INFOT_MIME; break; default: MSG_V("Unhandled contents descriptor %c%c%c%c %u bytes found\n", ((char *)&fourcc)[0],((char *)&fourcc)[1], ((char *)&fourcc)[2],((char *)&fourcc)[3], Modified: mplayerxp/libmpdemux/demux_real.cpp =================================================================== --- mplayerxp/libmpdemux/demux_real.cpp 2012-12-10 09:05:01 UTC (rev 528) +++ mplayerxp/libmpdemux/demux_real.cpp 2012-12-10 11:24:29 UTC (rev 529) @@ -946,12 +946,13 @@ tmps[tmp]=0; if(!demuxer->info().get(INFOT_DESCRIPTION)) demuxer->info().add( INFOT_DESCRIPTION, tmps); +#if 0 tmp=demuxer->stream->read_char(); demuxer->stream->read(tmps,tmp); tmps[tmp]=0; if(!demuxer->info().get(INFOT_MIME)) demuxer->info().add( INFOT_MIME, tmps); - +#endif /* Type specific header */ codec_data_size = demuxer->stream->read_dword(); codec_pos = demuxer->stream->tell(); Modified: mplayerxp/libmpdemux/demuxer.cpp =================================================================== --- mplayerxp/libmpdemux/demuxer.cpp 2012-12-10 09:05:01 UTC (rev 528) +++ mplayerxp/libmpdemux/demuxer.cpp 2012-12-10 11:24:29 UTC (rev 529) @@ -307,7 +307,6 @@ { INFOT_SOURCE_MEDIA,SCTRL_TXT_GET_STREAM_SOURCE_MEDIA }, { INFOT_RATING, SCTRL_TXT_GET_STREAM_RATING }, { INFOT_COMMENTS, SCTRL_TXT_GET_STREAM_COMMENT }, - { INFOT_MIME, SCTRL_TXT_GET_STREAM_MIME } }; static const demuxer_driver_t* demux_find_driver(const char *name) { @@ -317,6 +316,58 @@ return NULL; } +static const struct mime_type_table_t { + const char *mime_type; + const demuxer_driver_t* driver; +} mime_type_table[] = { + // MP3 streaming, some MP3 streaming server answer with audio/mpeg + { "audio/mpeg", &demux_mp3 }, + // MPEG streaming + { "video/mpeg", &demux_mpgps }, + { "video/x-mpeg", &demux_mpgps }, + { "video/x-mpeg2", &demux_mpgps }, + // AVI ??? => video/x-msvideo + { "video/x-msvideo", &demux_avi }, + // MOV => video/quicktime + { "video/quicktime", &demux_mov }, + // ASF + { "audio/x-ms-wax", &demux_asf }, + { "audio/x-ms-wma", &demux_asf }, + { "video/x-ms-asf", &demux_asf }, + { "video/x-ms-afs", &demux_asf }, + { "video/x-ms-wvx", &demux_asf }, + { "video/x-ms-wmv", &demux_asf }, + { "video/x-ms-wma", &demux_asf }, + { "application/x-mms-framed", &demux_asf }, + { "application/vnd.ms.wms-hdr.asfv1", &demux_asf }, +#if 0 + // Playlists + { "video/x-ms-wmx", Demuxer::Type_PLAYLIST }, + { "video/x-ms-wvx", Demuxer::Type_PLAYLIST }, + { "audio/x-scpls", Demuxer::Type_PLAYLIST }, + { "audio/x-mpegurl", Demuxer::Type_PLAYLIST }, + { "audio/x-pls", Demuxer::Type_PLAYLIST }, +#endif + // Real Media + { "audio/x-pn-realaudio", &demux_realaud }, + // OGG Streaming + { "application/ogg", &demux_ogg }, + { "application/x-ogg", &demux_ogg }, + // NullSoft Streaming Video + { "video/nsv", &demux_nsv}, + { "misc/ultravox", &demux_nsv}, + { NULL, &demux_null } +}; + +static const demuxer_driver_t* demuxer_driver_by_name(const std::string& name) +{ + unsigned i=0; + while(mime_type_table[i].driver!=&demux_null) { + if(name==mime_type_table[i].mime_type) return mime_type_table[i].driver; + } + return &demux_null; +} + MPXP_Rc Demuxer::open() { demuxer_priv_t& dpriv = static_cast<demuxer_priv_t&>(*demuxer_priv); @@ -355,6 +406,9 @@ MSG_V("False\n"); } if(!dpriv.driver) { + dpriv.driver=demuxer_driver_by_name(stream->mime_type()); + if(dpriv.driver!=&demux_null) goto force_driver; + dpriv.driver=NULL; err_exit: MSG_ERR(MSGTR_FormatNotRecognized); return MPXP_False; Modified: mplayerxp/libmpdemux/demuxer_info.cpp =================================================================== --- mplayerxp/libmpdemux/demuxer_info.cpp 2012-12-10 09:05:01 UTC (rev 528) +++ mplayerxp/libmpdemux/demuxer_info.cpp 2012-12-10 11:24:29 UTC (rev 529) @@ -22,8 +22,7 @@ "WWW", "Mail", "Rating", - "Comments", - "Mime" + "Comments" }; Demuxer_Info::Demuxer_Info() {} Modified: mplayerxp/libmpdemux/demuxer_info.h =================================================================== --- mplayerxp/libmpdemux/demuxer_info.h 2012-12-10 09:05:01 UTC (rev 528) +++ mplayerxp/libmpdemux/demuxer_info.h 2012-12-10 11:24:29 UTC (rev 529) @@ -23,8 +23,7 @@ INFOT_MAIL =13, INFOT_RATING =14, INFOT_COMMENTS =15, - INFOT_MIME =16, - INFOT_MAX =16 + INFOT_MAX =15 }; struct Demuxer_Info : public Opaque { Modified: mplayerxp/libmpdemux/mux_mpxp64.cpp =================================================================== --- mplayerxp/libmpdemux/mux_mpxp64.cpp 2012-12-10 09:05:01 UTC (rev 528) +++ mplayerxp/libmpdemux/mux_mpxp64.cpp 2012-12-10 11:24:29 UTC (rev 529) @@ -240,8 +240,8 @@ if(sname[0]) mpxpav64_put_frcc_unicode(f,"RATE",sname); if((sname=dinfo->info().get(INFOT_COMMENTS))!=NULL) if(sname[0]) mpxpav64_put_frcc_unicode(f,"CMTS",sname); - if((sname=dinfo->info().get(INFOT_MIME))!=NULL) - if(sname[0]) mpxpav64_put_frcc_unicode(f,"MIME",sname); +// if((sname=dinfo->info().get(INFOT_MIME))!=NULL) +// if(sname[0]) mpxpav64_put_frcc_unicode(f,"MIME",sname); #endif mpxpav64_close_header32(f,fpos); } Modified: mplayerxp/libmpstream/network.cpp =================================================================== --- mplayerxp/libmpstream/network.cpp 2012-12-10 09:05:01 UTC (rev 528) +++ mplayerxp/libmpstream/network.cpp 2012-12-10 11:24:29 UTC (rev 529) @@ -105,6 +105,7 @@ MSG_FATAL(MSGTR_OutOfMemory); return NULL; } + networking->mime="application/octet-stream"; return networking; } @@ -430,6 +431,8 @@ MSG_INFO("Public : %s\n", atoi(field_data)?"yes":"no"); field_data = NULL; if( (field_data = http_get_field(http_hdr, "icy-br")) != NULL ) MSG_INFO("Bitrate: %skbit/s\n", field_data); field_data = NULL; + if ( (field_data = http_get_field(http_hdr, "content-type")) != NULL ) + networking->mime = field_data; return MPXP_Ok; } case 400: // Server Full Modified: mplayerxp/libmpstream/network.h =================================================================== --- mplayerxp/libmpstream/network.h 2012-12-10 09:05:01 UTC (rev 528) +++ mplayerxp/libmpstream/network.h 2012-12-10 11:24:29 UTC (rev 529) @@ -7,6 +7,8 @@ #ifndef __NETWORK_H #define __NETWORK_H +#include <string> + #include <fcntl.h> #include <sys/time.h> #include <sys/types.h> @@ -55,6 +57,7 @@ struct networking_t { URL_t *url; + std::string mime; networking_status status; int buffering; // boolean unsigned int prebuffer_size; Modified: mplayerxp/libmpstream/s_cdd.cpp =================================================================== --- mplayerxp/libmpstream/s_cdd.cpp 2012-12-10 09:05:01 UTC (rev 528) +++ mplayerxp/libmpstream/s_cdd.cpp 2012-12-10 11:24:29 UTC (rev 529) @@ -33,6 +33,7 @@ virtual off_t start_pos() const; virtual off_t size() const; virtual off_t sector_size() const; + virtual std::string mime_type() const; protected: cdda_priv* priv; private: @@ -63,6 +64,7 @@ off_t Cdda_Stream_Interface::start_pos() const { return cdda_start(priv); } off_t Cdda_Stream_Interface::size() const { return cdda_size(priv); } off_t Cdda_Stream_Interface::sector_size() const { return CD_FRAMESIZE_RAW; } +std::string Cdda_Stream_Interface::mime_type() const { return "audio/PCMA"; } int Cdda_Stream_Interface::read(stream_packet_t*sp) { Modified: mplayerxp/libmpstream/s_dvdnav.cpp =================================================================== --- mplayerxp/libmpstream/s_dvdnav.cpp 2012-12-10 09:05:01 UTC (rev 528) +++ mplayerxp/libmpstream/s_dvdnav.cpp 2012-12-10 11:24:29 UTC (rev 529) @@ -64,6 +64,7 @@ virtual off_t size() const; virtual off_t sector_size() const; virtual float stream_pts() const; + virtual std::string mime_type() const; private: MPXP_Rc new_stream(const char * filename); void stream_ignore_timers(int ignore); @@ -238,6 +239,7 @@ off_t DvdNav_Stream_Interface::size() const { return -1; } off_t DvdNav_Stream_Interface::sector_size() const { return tevent?DVD_BLOCK_SIZE*10:DVD_BLOCK_SIZE; } float DvdNav_Stream_Interface::stream_pts() const { return _stream_pts; } +std::string DvdNav_Stream_Interface::mime_type() const { return "application/octet-stream"; } void DvdNav_Stream_Interface::stream_read(dvdnav_event_t*de) { int event = DVDNAV_NOP; Modified: mplayerxp/libmpstream/s_dvdread.cpp =================================================================== --- mplayerxp/libmpstream/s_dvdread.cpp 2012-12-10 09:05:01 UTC (rev 528) +++ mplayerxp/libmpstream/s_dvdread.cpp 2012-12-10 11:24:29 UTC (rev 529) @@ -65,6 +65,7 @@ virtual off_t size() const; virtual off_t sector_size() const; virtual float stream_pts() const; + virtual std::string mime_type() const; private: int chapter_from_cell(int title,int cell); int number_of_subs() const; @@ -715,6 +716,7 @@ off_t DvdRead_Stream_Interface::size() const { return _end_pos; } off_t DvdRead_Stream_Interface::sector_size() const { return 2048; } float DvdRead_Stream_Interface::stream_pts() const { return _stream_pts; } +std::string DvdRead_Stream_Interface::mime_type() const { return "application/octet-stream"; } int DvdRead_Stream_Interface::read(stream_packet_t *sp) { Modified: mplayerxp/libmpstream/s_file.cpp =================================================================== --- mplayerxp/libmpstream/s_file.cpp 2012-12-10 09:05:01 UTC (rev 528) +++ mplayerxp/libmpstream/s_file.cpp 2012-12-10 11:24:29 UTC (rev 529) @@ -34,6 +34,7 @@ virtual Stream::type_e type() const; virtual off_t size() const; virtual off_t sector_size() const; + virtual std::string mime_type() const; private: int fd; int was_open; @@ -67,6 +68,7 @@ Stream::type_e File_Stream_Interface::type() const { return (end_pos==-1)?Stream::Type_Stream:Stream::Type_Seekable; } off_t File_Stream_Interface::size() const { return end_pos; } off_t File_Stream_Interface::sector_size() const { return STREAM_BUFFER_SIZE; } +std::string File_Stream_Interface::mime_type() const { return "application/octet-stream"; } int File_Stream_Interface::read(stream_packet_t*sp) { Modified: mplayerxp/libmpstream/s_ftp.cpp =================================================================== --- mplayerxp/libmpstream/s_ftp.cpp 2012-12-10 09:05:01 UTC (rev 528) +++ mplayerxp/libmpstream/s_ftp.cpp 2012-12-10 11:24:29 UTC (rev 529) @@ -39,6 +39,7 @@ virtual Stream::type_e type() const; virtual off_t size() const; virtual off_t sector_size() const; + virtual std::string mime_type() const; private: int readline(char *buf,int max); int readresp(char* rsp); @@ -421,6 +422,7 @@ Stream::type_e Ftp_Stream_Interface::type() const { return file_len?Stream::Type_Seekable:Stream::Type_Stream; } off_t Ftp_Stream_Interface::size() const { return file_len; } off_t Ftp_Stream_Interface::sector_size() const { return BUFSIZE; } +std::string Ftp_Stream_Interface::mime_type() const { return "application/octet-stream"; } MPXP_Rc Ftp_Stream_Interface::ctrl(unsigned cmd,any_t*args) { UNUSED(cmd); Modified: mplayerxp/libmpstream/s_lavc.cpp =================================================================== --- mplayerxp/libmpstream/s_lavc.cpp 2012-12-10 09:05:01 UTC (rev 528) +++ mplayerxp/libmpstream/s_lavc.cpp 2012-12-10 11:24:29 UTC (rev 529) @@ -25,6 +25,7 @@ virtual Stream::type_e type() const; virtual off_t size() const; virtual off_t sector_size() const; + virtual std::string mime_type() const; private: URLContext *ctx; off_t spos; @@ -84,6 +85,7 @@ Stream::type_e Lavs_Stream_Interface::type() const { return (ctx->is_streamed)?Stream::Type_Stream:Stream::Type_Seekable; } off_t Lavs_Stream_Interface::size() const { return end_pos; } off_t Lavs_Stream_Interface::sector_size() const { return STREAM_BUFFER_SIZE; } +std::string Lavs_Stream_Interface::mime_type() const { return "application/octet-stream"; } static Stream_Interface* query_interface(libinput_t* libinput) { return new(zeromem) Lavs_Stream_Interface(libinput); } Modified: mplayerxp/libmpstream/s_network.cpp =================================================================== --- mplayerxp/libmpstream/s_network.cpp 2012-12-10 09:05:01 UTC (rev 528) +++ mplayerxp/libmpstream/s_network.cpp 2012-12-10 11:24:29 UTC (rev 529) @@ -35,6 +35,7 @@ virtual Stream::type_e type() const; virtual off_t size() const; virtual off_t sector_size() const; + virtual std::string mime_type() const; private: URL_t* url; off_t spos; @@ -75,6 +76,7 @@ Stream::type_e Network_Stream_Interface::type() const { return Stream::Type_Stream; } off_t Network_Stream_Interface::size() const { return 0; } off_t Network_Stream_Interface::sector_size() const { return 1; } +std::string Network_Stream_Interface::mime_type() const { return networking->mime; } int Network_Stream_Interface::read(stream_packet_t*sp) { Modified: mplayerxp/libmpstream/s_null.cpp =================================================================== --- mplayerxp/libmpstream/s_null.cpp 2012-12-10 09:05:01 UTC (rev 528) +++ mplayerxp/libmpstream/s_null.cpp 2012-12-10 11:24:29 UTC (rev 529) @@ -22,6 +22,7 @@ virtual Stream::type_e type() const; virtual off_t size() const; virtual off_t sector_size() const; + virtual std::string mime_type() const; }; Null_Stream_Interface::Null_Stream_Interface(libinput_t*libinput):Stream_Interface(libinput) {} @@ -45,6 +46,7 @@ Stream::type_e Null_Stream_Interface::type() const { return Stream::Type_Stream; } off_t Null_Stream_Interface::size() const { return 0; } off_t Null_Stream_Interface::sector_size() const { return 0; } +std::string Null_Stream_Interface::mime_type() const { return "application/octet-stream"; } static Stream_Interface* query_interface(libinput_t* libinput) { return new(zeromem) Null_Stream_Interface(libinput); } Modified: mplayerxp/libmpstream/s_oss.cpp =================================================================== --- mplayerxp/libmpstream/s_oss.cpp 2012-12-10 09:05:01 UTC (rev 528) +++ mplayerxp/libmpstream/s_oss.cpp 2012-12-10 11:24:29 UTC (rev 529) @@ -42,6 +42,7 @@ virtual Stream::type_e type() const; virtual off_t size() const; virtual off_t sector_size() const; + virtual std::string mime_type() const; private: int fd; unsigned nchannels; /* 1,2,6 */ @@ -140,6 +141,7 @@ Stream::type_e Oss_Stream_Interface::type() const { return Stream::Type_Stream|Stream::Type_RawAudio; } off_t Oss_Stream_Interface::size() const { return -1; } off_t Oss_Stream_Interface::sector_size() const { return _sector_size; } +std::string Oss_Stream_Interface::mime_type() const { return "audio/PCMA"; } #ifndef TEMP_FAILURE_RETRY #define TEMP_FAILURE_RETRY(x) (x) Modified: mplayerxp/libmpstream/s_rtsp.cpp =================================================================== --- mplayerxp/libmpstream/s_rtsp.cpp 2012-12-10 09:05:01 UTC (rev 528) +++ mplayerxp/libmpstream/s_rtsp.cpp 2012-12-10 11:24:29 UTC (rev 529) @@ -41,6 +41,7 @@ virtual Stream::type_e type() const; virtual off_t size() const; virtual off_t sector_size() const; + virtual std::string mime_type() const; private: MPXP_Rc start (); @@ -166,6 +167,7 @@ Stream::type_e Rtsp_Stream_Interface::type() const { return Stream::Type_Stream; } off_t Rtsp_Stream_Interface::size() const { return 0; } off_t Rtsp_Stream_Interface::sector_size() const { return 1; } +std::string Rtsp_Stream_Interface::mime_type() const { return "application/octet-stream"; } static Stream_Interface* query_interface(libinput_t* libinput) { return new(zeromem) Rtsp_Stream_Interface(libinput); } Modified: mplayerxp/libmpstream/s_tv.cpp =================================================================== --- mplayerxp/libmpstream/s_tv.cpp 2012-12-10 09:05:01 UTC (rev 528) +++ mplayerxp/libmpstream/s_tv.cpp 2012-12-10 11:24:29 UTC (rev 529) @@ -593,6 +593,7 @@ virtual Stream::type_e type() const; virtual off_t size() const; virtual off_t sector_size() const; + virtual std::string mime_type() const; private: void cmd_handler(unsigned cmd) const; tvi_handle_t* priv; @@ -663,6 +664,7 @@ Stream::type_e Tv_Stream_Interface::type() const { return Stream::Type_Stream; } off_t Tv_Stream_Interface::size() const { return -1; } off_t Tv_Stream_Interface::sector_size() const { return 0; } +std::string Tv_Stream_Interface::mime_type() const { return "application/octet-stream"; } static Stream_Interface* query_interface(libinput_t* libinput) { return new(zeromem) Tv_Stream_Interface(libinput); } Modified: mplayerxp/libmpstream/s_udp.cpp =================================================================== --- mplayerxp/libmpstream/s_udp.cpp 2012-12-10 09:05:01 UTC (rev 528) +++ mplayerxp/libmpstream/s_udp.cpp 2012-12-10 11:24:29 UTC (rev 529) @@ -40,6 +40,7 @@ virtual Stream::type_e type() const; virtual off_t size() const; virtual off_t sector_size() const; + virtual std::string mime_type() const; private: MPXP_Rc start (); @@ -120,6 +121,7 @@ Stream::type_e Udp_Stream_Interface::type() const { return Stream::Type_Stream; } off_t Udp_Stream_Interface::size() const { return 0; } off_t Udp_Stream_Interface::sector_size() const { return 1; } +std::string Udp_Stream_Interface::mime_type() const { return "application/octet-stream"; } static Stream_Interface* query_interface(libinput_t* libinput) { return new(zeromem) Udp_Stream_Interface(libinput); } Modified: mplayerxp/libmpstream/s_vcdnav.cpp =================================================================== --- mplayerxp/libmpstream/s_vcdnav.cpp 2012-12-10 09:05:01 UTC (rev 528) +++ mplayerxp/libmpstream/s_vcdnav.cpp 2012-12-10 11:24:29 UTC (rev 529) @@ -44,6 +44,7 @@ virtual off_t start_pos() const; virtual off_t size() const; virtual off_t sector_size() const; + virtual std::string mime_type() const; private: void inc_lsn(); @@ -162,6 +163,7 @@ off_t VcdNav_Stream_Interface::start_pos() const { return start*sizeof(vcdsector_t); } off_t VcdNav_Stream_Interface::size() const { return (start+total)*sizeof(vcdsector_t); } off_t VcdNav_Stream_Interface::sector_size() const { return sizeof(vcdsector_t); } +std::string VcdNav_Stream_Interface::mime_type() const { return "application/octet-stream"; } void VcdNav_Stream_Interface::inc_lsn() { Modified: mplayerxp/libmpstream/stream.cpp =================================================================== --- mplayerxp/libmpstream/stream.cpp 2012-12-10 09:05:01 UTC (rev 528) +++ mplayerxp/libmpstream/stream.cpp 2012-12-10 11:24:29 UTC (rev 529) @@ -115,6 +115,7 @@ off_t Stream::end_pos() const { return driver->size(); } unsigned Stream::sector_size() const { return driver->sector_size(); } float Stream::stream_pts() const { return driver->stream_pts(); } +std::string Stream::mime_type() const { return driver->mime_type(); } void Stream::type(Stream::type_e t) { _type=t; } int Stream::eof() const { return _eof; } void Stream::eof(int e) { if(!e) reset(); _eof = e; } @@ -275,5 +276,6 @@ int Memory_Stream::eof() const { return _pos>=_len; } void Memory_Stream::eof(int e) { e?_pos=_len+1:_pos=0; } void Memory_Stream::reset() { _pos=0; } +std::string Memory_Stream::mime_type() const { return "application/octet-stream"; } } //namespace mpxp Modified: mplayerxp/libmpstream/stream.h =================================================================== --- mplayerxp/libmpstream/stream.h 2012-12-10 09:05:01 UTC (rev 528) +++ mplayerxp/libmpstream/stream.h 2012-12-10 11:24:29 UTC (rev 529) @@ -4,6 +4,7 @@ #include "osdep/mplib.h" using namespace mpxp; +#include <string> #include <inttypes.h> #include <sys/types.h> #include <string.h> @@ -74,6 +75,7 @@ virtual off_t end_pos() const; /**< real end of stream (media may be not fully filled) */ virtual unsigned sector_size() const; /**< alignment of read operations (1 for file, VCD_SECTOR_SIZE for VCDs) */ virtual float stream_pts() const; /**< PTS correction for idiotics DVD's discontinuities */ + virtual std::string mime_type() const; virtual int read_char(); virtual unsigned read_word(); @@ -120,6 +122,7 @@ virtual off_t start_pos() const; /**< real start of stream (without internet's headers) */ virtual off_t end_pos() const; /**< real end of stream (media may be not fully filled) */ virtual unsigned sector_size() const; /**< alignment of read operations (1 for file, VCD_SECTOR_SIZE for VCDs) */ + virtual std::string mime_type() const; /**< alignment of read operations (1 for file, VCD_SECTOR_SIZE for VCDs) */ private: off_t _pos; unsigned _len; @@ -165,7 +168,6 @@ SCTRL_TXT_GET_STREAM_SOURCE_MEDIA,/**< Returns mediatype of stream. Accepts char *name as pointer on 256 bytes array */ SCTRL_TXT_GET_STREAM_RATING, /**< Returns rating of stream. Accepts char *name as pointer on 256 bytes array */ SCTRL_TXT_GET_STREAM_COMMENT, /**< Returns comments for stream. Accepts char *name as pointer on 256 bytes array */ - SCTRL_TXT_GET_STREAM_MIME, /**< Returns mimetype of stream. Accepts char *name as pointer on 256 bytes array */ /* These controls extracts videospecific info from stream */ SCTRL_VID_GET_PALETTE=1000, /**< Returns palette array. Accepts unsigned** as pointer to palette array */ SCTRL_VID_GET_WIDTH, /**< Returns width of raw video in pixels. Accepts unsigned* as pointer to storage area */ Modified: mplayerxp/libmpstream/stream_internal.h =================================================================== --- mplayerxp/libmpstream/stream_internal.h 2012-12-10 09:05:01 UTC (rev 528) +++ mplayerxp/libmpstream/stream_internal.h 2012-12-10 11:24:29 UTC (rev 529) @@ -3,6 +3,7 @@ #include "mp_config.h" #include "osdep/mplib.h" using namespace mpxp; +#include <string> namespace mpxp { struct libinput_t; @@ -60,6 +61,7 @@ /** Return size of sector of stream */ virtual off_t sector_size() const = 0; virtual float stream_pts() const { return 0; } + virtual std::string mime_type() const = 0; }; /** Stream-driver interface */ This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |