Thread: [Mplayerxp-cvslog] SF.net SVN: mplayerxp:[516] mplayerxp (Page 8)
Brought to you by:
olov
From: <nic...@us...> - 2012-12-07 14:29:51
|
Revision: 516 http://mplayerxp.svn.sourceforge.net/mplayerxp/?rev=516&view=rev Author: nickols_k Date: 2012-12-07 14:29:41 +0000 (Fri, 07 Dec 2012) Log Message: ----------- use class Tcp and class Udp for networking instead of flat fd=open() access Modified Paths: -------------- mplayerxp/libmpstream/Makefile mplayerxp/libmpstream/asf_mmst_streaming.cpp mplayerxp/libmpstream/asf_streaming.cpp mplayerxp/libmpstream/asf_streaming.h mplayerxp/libmpstream/cache2.cpp mplayerxp/libmpstream/cddb.cpp mplayerxp/libmpstream/librtsp/rtsp.cpp mplayerxp/libmpstream/librtsp/rtsp.h mplayerxp/libmpstream/librtsp/rtsp_session.cpp mplayerxp/libmpstream/librtsp/rtsp_session.h mplayerxp/libmpstream/network.cpp mplayerxp/libmpstream/network.h mplayerxp/libmpstream/pnm.cpp mplayerxp/libmpstream/pnm.h mplayerxp/libmpstream/rtp.cpp mplayerxp/libmpstream/rtp.h mplayerxp/libmpstream/s_ftp.cpp mplayerxp/libmpstream/s_network.cpp mplayerxp/libmpstream/s_rtsp.cpp mplayerxp/libmpstream/s_udp.cpp mplayerxp/libmpstream/stream.cpp mplayerxp/libmpstream/stream.h mplayerxp/libmpstream/tcp.cpp mplayerxp/libmpstream/tcp.h mplayerxp/libmpstream/udp.cpp mplayerxp/libmpstream/udp.h mplayerxp/libmpsub/vobsub.cpp Modified: mplayerxp/libmpstream/Makefile =================================================================== --- mplayerxp/libmpstream/Makefile 2012-12-06 16:46:40 UTC (rev 515) +++ mplayerxp/libmpstream/Makefile 2012-12-07 14:29:41 UTC (rev 516) @@ -7,7 +7,7 @@ DO_ALL = @ for i in $(SUBDIRS); do $(MAKE) -C $$i all || exit; done CXXSRCS= s_file.cpp s_lavc.cpp s_null.cpp s_tv.cpp -CXXSRCS+= mrl.cpp stream.cpp url.cpp cache2.cpp +CXXSRCS+= mrl.cpp stream.cpp url.cpp cache2.cpp ifeq ($(HAVE_LIBCDIO_CDDA),yes) CXXSRCS += s_cdd.cpp CXXSRCS += cdda.cpp Modified: mplayerxp/libmpstream/asf_mmst_streaming.cpp =================================================================== --- mplayerxp/libmpstream/asf_mmst_streaming.cpp 2012-12-06 16:46:40 UTC (rev 515) +++ mplayerxp/libmpstream/asf_mmst_streaming.cpp 2012-12-07 14:29:41 UTC (rev 516) @@ -61,7 +61,7 @@ static int num_stream_ids; static int stream_ids[MAX_STREAMS]; -static int get_data (int s,unsigned char *buf, size_t count); +static int get_data (Tcp& s,unsigned char *buf, size_t count); static void put_32 (command_t *cmd, uint32_t value) { @@ -88,7 +88,7 @@ return ret; } -static void send_command (int s, int command, uint32_t switches, +static void send_command (Tcp& tcp, int command, uint32_t switches, uint32_t extra, int length, unsigned char *data) { @@ -117,7 +117,7 @@ if (length & 7) memset(&cmd.buf[48 + length], 0, 8 - (length & 7)); - if (send (s, cmd.buf, len8*8+48, 0) != (len8*8+48)) { + if (tcp.write (cmd.buf, len8*8+48) != (len8*8+48)) { MSG_ERR ("write error\n"); } } @@ -157,7 +157,7 @@ #endif } -static void get_answer (int s) +static void get_answer (Tcp& tcp) { unsigned char data[BUF_SIZE]; int command = 0x1b; @@ -165,7 +165,7 @@ while (command == 0x1b) { int len; - len = recv (s, data, BUF_SIZE, 0) ; + len = tcp.read(data, BUF_SIZE); if (!len) { MSG_ERR ("\nalert! eof\n"); return; @@ -174,18 +174,18 @@ command = get_32 (data, 36) & 0xFFFF; if (command == 0x1b) - send_command (s, 0x1b, 0, 0, 0, data); + send_command (tcp, 0x1b, 0, 0, 0, data); } } -static int get_data (int s,unsigned char *buf, size_t count) +static int get_data (Tcp& tcp,unsigned char *buf, size_t count) { ssize_t len; size_t total = 0; while (total < count) { - len = recv (s, &buf[total], count-total, 0); + len = tcp.read(&buf[total], count-total); if (len<=0) { MSG_ERR ("read error:"); @@ -205,7 +205,7 @@ } -static int get_header (int s, uint8_t *header, networking_t *networking) +static int get_header (Tcp& tcp, uint8_t *header, networking_t *networking) { unsigned char pre_header[8]; int header_len; @@ -213,7 +213,7 @@ header_len = 0; while (1) { - if (!get_data (s, pre_header, 8)) { + if (!get_data (tcp, pre_header, 8)) { MSG_ERR ("pre-header read failed\n"); return 0; } @@ -230,7 +230,7 @@ return 0; } - if (!get_data (s, &header[header_len], packet_len)) { + if (!get_data (tcp, &header[header_len], packet_len)) { MSG_ERR("header data read failed\n"); return 0; } @@ -256,7 +256,7 @@ int command; unsigned char data[BUF_SIZE]; - if (!get_data (s, (unsigned char*)&packet_len, 4)) { + if (!get_data (tcp, (unsigned char*)&packet_len, 4)) { MSG_ERR ("packet_len read failed\n"); return 0; } @@ -270,7 +270,7 @@ return 0; } - if (!get_data (s, data, packet_len)) { + if (!get_data (tcp, data, packet_len)) { MSG_ERR ("command data read failed\n"); return 0; } @@ -280,7 +280,7 @@ // printf ("command: %02x\n", command); if (command == 0x1b) - send_command (s, 0x1b, 0, 0, 0, data); + send_command (tcp, 0x1b, 0, 0, 0, data); } @@ -363,11 +363,11 @@ } -static int get_media_packet (int s, int padding, networking_t *stream_ctrl) { +static int get_media_packet (Tcp& tcp, int padding, networking_t *stream_ctrl) { unsigned char pre_header[8]; unsigned char data[BUF_SIZE]; - if (!get_data (s, pre_header, 8)) { + if (!get_data (tcp, pre_header, 8)) { MSG_ERR ("pre-header read failed\n"); return 0; } @@ -389,7 +389,7 @@ return 0; } - if (!get_data (s, data, packet_len)) { + if (!get_data (tcp, data, packet_len)) { MSG_ERR ("media data read failed\n"); return 0; } @@ -401,7 +401,7 @@ int32_t packet_len; int command; - if (!get_data (s, (unsigned char*)&packet_len, 4)) { + if (!get_data (tcp, (unsigned char*)&packet_len, 4)) { MSG_ERR ("packet_len read failed\n"); return 0; } @@ -413,7 +413,7 @@ return 0; } - if (!get_data (s, data, packet_len)) { + if (!get_data (tcp, data, packet_len)) { MSG_ERR ("command data read failed\n"); return 0; } @@ -430,7 +430,7 @@ // printf ("\ncommand packet detected, len=%d cmd=0x%X\n", packet_len, command); if (command == 0x1b) - send_command (s, 0x1b, 0, 0, 0, data); + send_command (tcp, 0x1b, 0, 0, 0, data); else if (command == 0x1e) { MSG_OK ("everything done. Thank you for downloading a media file containing proprietary and patentend technology.\n"); return 0; @@ -454,13 +454,13 @@ static int packet_length1; -static int asf_mmst_networking_read( int fd, char *buffer, int size, networking_t *stream_ctrl ) +static int asf_mmst_networking_read(Tcp& tcp, char *buffer, int size, networking_t *stream_ctrl ) { int len; while( stream_ctrl->buffer_size==0 ) { // buffer is empty - fill it! - int ret = get_media_packet( fd, packet_length1, stream_ctrl); + int ret = get_media_packet(tcp, packet_length1, stream_ctrl); if( ret<0 ) { MSG_ERR("get_media_packet error : %s\n",strerror(errno)); return -1; @@ -482,16 +482,15 @@ } -static int asf_mmst_networking_seek( int fd, off_t pos, networking_t *networking ) +static int asf_mmst_networking_seek(Tcp& tcp, off_t pos, networking_t *networking ) { - return -1; - // Shut up gcc warning - fd++; - pos++; - networking=NULL; + UNUSED(tcp); + UNUSED(pos); + UNUSED(networking); + return -1; } -int asf_mmst_networking_start(net_fd_t* fd, networking_t *networking) +int asf_mmst_networking_start(Tcp& tcp, networking_t *networking) { char str[1024]; unsigned char data[BUF_SIZE]; @@ -500,12 +499,8 @@ int len, i, packet_length; char *path, *unescpath; URL_t *url1 = networking->url; - net_fd_t s = *fd; - if( s>0 ) { - closesocket( *fd ); - *fd = -1; - } + tcp.close(); /* parse url */ path = strchr(url1->file,'/') + 1; @@ -524,10 +519,10 @@ if( url1->port==0 ) { url1->port=1755; } - s = tcp_connect2Server(networking->libinput, url1->hostname, url1->port, 0); - if( s<0 ) { + tcp.open(networking->libinput, url1->hostname, url1->port, Tcp::IP4); + if( !tcp.established()) { delete path; - return s; + return -1; } MSG_INFO ("connected\n"); @@ -551,9 +546,9 @@ snprintf (str, 1023, "\034\003NSPlayer/7.0.0.1956; {33715801-BAB3-9D85-24E9-03B90328270A}; Host: %s", url1->hostname); string_utf16 (data, str, strlen(str)); // send_command(s, commandno ....) - send_command (s, 1, 0, 0x0004000b, strlen(str) * 2+2, data); + send_command (tcp, 1, 0, 0x0004000b, strlen(str) * 2+2, data); - len = recv (s, data, BUF_SIZE, 0) ; + len = tcp.read (data, BUF_SIZE); /*This sends details of the local machine IP address to a Funnel system at the server. * Also, the TCP or UDP transport selection is sent. @@ -565,19 +560,19 @@ string_utf16 (&data[8], "\002\000\\\\192.168.0.1\\TCP\\1037", 24); memset (data, 0, 8); - send_command (s, 2, 0, 0, 24*2+10, data); + send_command (tcp, 2, 0, 0, 24*2+10, data); - len = recv (s, data, BUF_SIZE, 0) ; + len = tcp.read(data, BUF_SIZE); /* This command sends file path (at server) and file name request to the server. * 0x5 */ string_utf16 (&data[8], path, strlen(path)); memset (data, 0, 8); - send_command (s, 5, 0, 0, strlen(path)*2+10, data); + send_command (tcp, 5, 0, 0, strlen(path)*2+10, data); delete path; - get_answer (s); + get_answer (tcp); /* The ASF header chunk request. Includes ?session' variable for pre header value. * After this command is sent, @@ -587,15 +582,15 @@ memset (data, 0, 40); data[32] = 2; - send_command (s, 0x15, 1, 0, 40, data); + send_command (tcp, 0x15, 1, 0, 40, data); num_stream_ids = 0; /* get_headers(s, asf_header); */ - asf_header_len = get_header (s, asf_header, networking); + asf_header_len = get_header (tcp, asf_header, networking); // printf("---------------------------------- asf_header %d\n",asf_header); if (asf_header_len==0) { //error reading header - closesocket(s); + tcp.close(); return -1; } packet_length = interp_header (asf_header, asf_header_len); @@ -617,7 +612,7 @@ data[2] = 0xFF; data[3] = 0xFF; data[4] = mp_conf.audio_id; - send_command(s, 0x33, num_stream_ids, 0xFFFF | mp_conf.audio_id << 16, 8, data); + send_command(tcp, 0x33, num_stream_ids, 0xFFFF | mp_conf.audio_id << 16, 8, data); } else { for (i=1; i<num_stream_ids; i++) { data [ (i-1) * 6 + 2 ] = 0xFF; @@ -626,10 +621,10 @@ data [ (i-1) * 6 + 5 ] = 0x00; } - send_command (s, 0x33, num_stream_ids, 0xFFFF | stream_ids[0] << 16, (num_stream_ids-1)*6+2 , data); + send_command (tcp, 0x33, num_stream_ids, 0xFFFF | stream_ids[0] << 16, (num_stream_ids-1)*6+2 , data); } - get_answer (s); + get_answer (tcp); /* Start sending file from packet xx. * This command is also used for resume downloads or requesting a lost packet. @@ -644,9 +639,8 @@ data[20] = 0x04; - send_command (s, 0x07, 1, 0xFFFF | stream_ids[0] << 16, 24, data); + send_command (tcp, 0x07, 1, 0xFFFF | stream_ids[0] << 16, 24, data); - *fd = s; networking->networking_read = asf_mmst_networking_read; networking->networking_seek = asf_mmst_networking_seek; networking->buffering = 1; Modified: mplayerxp/libmpstream/asf_streaming.cpp =================================================================== --- mplayerxp/libmpstream/asf_streaming.cpp 2012-12-06 16:46:40 UTC (rev 515) +++ mplayerxp/libmpstream/asf_streaming.cpp 2012-12-07 14:29:41 UTC (rev 516) @@ -28,10 +28,9 @@ #include "stream_msg.h" #if defined( ARCH_X86 ) || defined(ARCH_X86_64) -#define ASF_LOAD_GUID_PREFIX(guid) (*(uint32_t *)(guid)) +static inline uint32_t ASF_LOAD_GUID_PREFIX(uint8_t* guid) { return *(uint32_t*)guid; } #else -#define ASF_LOAD_GUID_PREFIX(guid) \ - ((guid)[3] << 24 | (guid)[2] << 16 | (guid)[1] << 8 | (guid)[0]) +static inline uint32_t ASF_LOAD_GUID_PREFIX(uint8_t* guid) { return bswap_32(*(uint32_t*)guid); } #endif // ASF networking support several network protocol. @@ -52,7 +51,7 @@ // WMP sequence is MMSU then MMST and then HTTP. // In MPlayer case since HTTP support is more reliable, // we are doing HTTP first then we try MMST if HTTP fail. -static int asf_http_networking_start(net_fd_t* fd, networking_t *networking ); +static int asf_http_networking_start(Tcp& fd, networking_t *networking ); /* ASF networking support several network protocol. @@ -74,10 +73,10 @@ In MPlayer case since HTTP support is more reliable, we are doing HTTP first then we try MMST if HTTP fail. */ -int asf_networking_start(net_fd_t* fd, networking_t *networking) { +int asf_networking_start(Tcp& tcp, networking_t *networking) { char *proto = networking->url->protocol; - *fd = -1; int port = networking->url->port; + int rc; // Is protocol even valid mms,mmsu,mmst,http,http_proxy? if (!(!strncasecmp(proto, "mmst", 4) || !strncasecmp(proto, "mmsu", 4) || @@ -91,30 +90,30 @@ if (!strncasecmp(proto, "mmsu", 4) || !strncasecmp(proto, "mms", 3)) { MSG_V("Trying ASF/UDP...\n"); //fd = asf_mmsu_networking_start( stream ); - if( *fd>-1 ) return 0; //mmsu support is not implemented yet - using this code + //mmsu support is not implemented yet - using this code MSG_V(" ===> ASF/UDP failed\n"); - if( *fd==-2 ) return -1; + return -1; } //Is protocol mms or mmst? if (!strncasecmp(proto, "mmst", 4) || !strncasecmp(proto, "mms", 3)) { MSG_V("Trying ASF/TCP...\n"); - *fd = asf_mmst_networking_start(fd,networking); + rc = asf_mmst_networking_start(tcp,networking); networking->url->port = port; - if( *fd>-1 ) return 0; + if( rc>-1 ) return 0; MSG_V(" ===> ASF/TCP failed\n"); - if( *fd==-2 ) return -1; + if( rc==-2 ) return -1; } //Is protocol http, http_proxy, or mms? if (!strncasecmp(proto, "http_proxy", 10) || !strncasecmp(proto, "http", 4) || !strncasecmp(proto, "mms", 3)) { MSG_V("Trying ASF/HTTP...\n"); - *fd = asf_http_networking_start(fd,networking); + rc = asf_http_networking_start(tcp,networking); networking->url->port = port; - if( *fd>-1 ) return 0; + if( rc>-1 ) return 0; MSG_V(" ===> ASF/HTTP failed\n"); - if( *fd==-2 ) return -1; + if( rc==-2 ) return -1; } //everything failed return -1; @@ -186,7 +185,7 @@ } static int -asf_networking_parse_header(int fd, networking_t* networking) { +asf_networking_parse_header(Tcp& tcp, networking_t* networking) { ASF_header_t asfh; ASF_stream_chunck_t chunk; asf_http_networking_t* asf_ctrl = (asf_http_networking_t*) networking->data; @@ -206,7 +205,7 @@ // So we need to retrieve all the chunk before starting to parse the header. do { for( r=0; r < (int)sizeof(ASF_stream_chunck_t) ; ) { - i = nop_networking_read(fd,((char*)&chunk)+r,sizeof(ASF_stream_chunck_t) - r,networking); + i = nop_networking_read(tcp,((char*)&chunk)+r,sizeof(ASF_stream_chunck_t) - r,networking); if(i <= 0) return -1; r += i; } @@ -239,7 +238,7 @@ buffer_size += size; for(r = 0; r < size;) { - i = nop_networking_read(fd,buffer+r,size-r,networking); + i = nop_networking_read(tcp,buffer+r,size-r,networking); if(i < 0) { MSG_ERR("Error while reading network stream\n"); return -1; @@ -438,7 +437,7 @@ } static int -asf_http_networking_read( int fd, char *buffer, int size, networking_t *networking ) { +asf_http_networking_read( Tcp& tcp, char *buffer, int size, networking_t *networking ) { static ASF_stream_chunck_t chunk; int read,chunk_size = 0; static int rest = 0, drop_chunk = 0, waiting = 0; @@ -448,7 +447,7 @@ if (rest == 0 && waiting == 0) { read = 0; while(read < (int)sizeof(ASF_stream_chunck_t)){ - int r = nop_networking_read( fd, ((char*)&chunk) + read, + int r = nop_networking_read( tcp, ((char*)&chunk) + read, sizeof(ASF_stream_chunck_t)-read, networking ); if(r <= 0){ @@ -490,7 +489,7 @@ chunk_size = size; } while(read < chunk_size) { - int got = nop_networking_read( fd,buffer+read,chunk_size-read,networking ); + int got = nop_networking_read( tcp,buffer+read,chunk_size-read,networking ); if(got <= 0) { if(got < 0) MSG_ERR("Error while reading chunk\n"); @@ -514,12 +513,11 @@ } static int -asf_http_networking_seek( int fd, off_t pos, networking_t *networking ) { - return -1; - // to shut up gcc warning - fd++; - pos++; - networking=NULL; +asf_http_networking_seek( Tcp& tcp, off_t pos, networking_t *networking ) { + UNUSED(tcp); + UNUSED(pos); + UNUSED(networking); + return -1; } static int @@ -743,7 +741,7 @@ return 0; } -static int asf_http_networking_start(net_fd_t* fd, networking_t *networking) { +static int asf_http_networking_start(Tcp& tcp, networking_t *networking) { HTTP_header_t *http_hdr=NULL; URL_t *url = networking->url; asf_http_networking_t *asf_http_ctrl; @@ -765,20 +763,20 @@ do { done = 1; - if( *fd>0 ) closesocket( *fd ); + tcp.close(); if( !strcasecmp( url->protocol, "http_proxy" ) ) { if( url->port==0 ) url->port = 8080; } else { if( url->port==0 ) url->port = 80; } - *fd = tcp_connect2Server(networking->libinput, url->hostname, url->port, 0); - if( *fd<0 ) return 0; + tcp.open(networking->libinput, url->hostname, url->port, Tcp::IP4); + if( !tcp.established()) return 0; http_hdr = asf_http_request( networking ); MSG_DBG2("Request [%s]\n", http_hdr->buffer ); for(i=0; i < (int)http_hdr->buffer_size ; ) { - int r = send( *fd, http_hdr->buffer+i, http_hdr->buffer_size-i, 0); + int r = tcp.write((uint8_t*)(http_hdr->buffer+i), http_hdr->buffer_size-i); if(r <0) { MSG_ERR("Socket write error : %s\n",strerror(errno)); return -1; @@ -788,7 +786,7 @@ http_free( http_hdr ); http_hdr = http_new_header(); do { - i = recv( *fd, buffer, BUFFER_SIZE, 0); + i = tcp.read((uint8_t*)buffer, BUFFER_SIZE); if( i<=0 ) { perror("read"); http_free( http_hdr ); @@ -819,7 +817,7 @@ if( asf_http_ctrl->request==1 ) { if( asf_http_ctrl->networking_type!=ASF_PlainText_e ) { // First request, we only got the ASF header. - ret = asf_networking_parse_header(*fd,networking); + ret = asf_networking_parse_header(tcp,networking); if(ret < 0) return -1; if(asf_http_ctrl->n_audio == 0 && asf_http_ctrl->n_video == 0) { MSG_ERR("No stream found\n"); @@ -850,14 +848,13 @@ case ASF_Unknown_e: default: MSG_ERR("Unknown ASF networking type\n"); - closesocket(*fd); + tcp.close(); http_free( http_hdr ); return -1; } // Check if we got a redirect. } while(!done); - fd = fd; if( asf_http_ctrl->networking_type==ASF_PlainText_e || asf_http_ctrl->networking_type==ASF_Redirector_e ) { networking->networking_read = nop_networking_read; networking->networking_seek = nop_networking_seek; Modified: mplayerxp/libmpstream/asf_streaming.h =================================================================== --- mplayerxp/libmpstream/asf_streaming.h 2012-12-06 16:46:40 UTC (rev 515) +++ mplayerxp/libmpstream/asf_streaming.h 2012-12-07 14:29:41 UTC (rev 516) @@ -2,8 +2,10 @@ #define __ASF_STEAMING_H_INCLUDED 1 #include "stream.h" -typedef int net_fd_t; -extern int asf_networking_start(net_fd_t* fd, networking_t *networking); -extern int asf_mmst_networking_start(net_fd_t* fd, networking_t *networking); +namespace mpxp { + class Tcp; +} +extern int asf_networking_start(Tcp& fd, networking_t *networking); +extern int asf_mmst_networking_start(Tcp& fd, networking_t *networking); #endif Modified: mplayerxp/libmpstream/cache2.cpp =================================================================== --- mplayerxp/libmpstream/cache2.cpp 2012-12-06 16:46:40 UTC (rev 515) +++ mplayerxp/libmpstream/cache2.cpp 2012-12-07 14:29:41 UTC (rev 516) @@ -271,7 +271,7 @@ int ss=stream->sector_size()>1?stream->sector_size():STREAM_BUFFER_SIZE; cache_vars_t* c; - if (!(stream->type()&STREAMTYPE_SEEKABLE) && stream->fd < 0) { + if (!(stream->type()&STREAMTYPE_SEEKABLE)) { // The stream has no 'fd' behind it, so is non-cacheable MSG_WARN("\rThis stream is non-cacheable\n"); return 1; Modified: mplayerxp/libmpstream/cddb.cpp =================================================================== --- mplayerxp/libmpstream/cddb.cpp 2012-12-06 16:46:40 UTC (rev 515) +++ mplayerxp/libmpstream/cddb.cpp 2012-12-07 14:29:41 UTC (rev 516) @@ -44,6 +44,7 @@ #include "libmpconf/cfgparser.h" #include "cdd.h" +#include "tcp.h" #include "version.h" #include "network.h" #include "stream_msg.h" @@ -142,7 +143,8 @@ int __FASTCALL__ cddb_http_request(const char *command, int (*reply_parser)(HTTP_header_t*,cddb_data_t*), cddb_data_t *cddb_data) { char request[4096]; - int fd, ret = 0; + int ret = 0; + Tcp* tcp; URL_t *url; HTTP_header_t *http_hdr; @@ -157,15 +159,16 @@ return -1; } - fd = http_send_request(cddb_data->libinput,url,0); - if( fd<0 ) { + tcp = http_send_request(cddb_data->libinput,url,0); + if( !tcp ) { MSG_ERR("failed to send the http request\n"); return -1; } - http_hdr = http_read_response( fd ); + http_hdr = http_read_response( *tcp ); if( http_hdr==NULL ) { MSG_ERR("Failed to read the http response\n"); + delete tcp; return -1; } @@ -185,6 +188,7 @@ http_free( http_hdr ); url_free( url ); + delete tcp; return ret; } Modified: mplayerxp/libmpstream/librtsp/rtsp.cpp =================================================================== --- mplayerxp/libmpstream/librtsp/rtsp.cpp 2012-12-06 16:46:40 UTC (rev 515) +++ mplayerxp/libmpstream/librtsp/rtsp.cpp 2012-12-07 14:29:41 UTC (rev 516) @@ -54,6 +54,7 @@ #include <sys/types.h> #include <inttypes.h> +#include "tcp.h" #include "rtsp.h" #include "rtsp_session.h" #include "osdep/timer.h" @@ -69,7 +70,7 @@ struct rtsp_s { - int s; + Tcp* tcp; char *host; int port; @@ -117,14 +118,14 @@ * network utilities */ -static int write_stream(int s, const char *buf, int len) { +static int write_stream(Tcp& tcp, const char *buf, int len) { int total, timeout; total = 0; timeout = 30; while (total < len){ int n; - n = send (s, &buf[total], len - total, 0); + n = tcp.write((uint8_t*)(&buf[total]), len - total); if (n > 0) total += n; @@ -143,7 +144,7 @@ return total; } -static ssize_t read_stream(int fd, any_t*buf, size_t count) { +static ssize_t read_stream(Tcp& tcp, any_t*buf, size_t count) { ssize_t ret, total; @@ -151,30 +152,13 @@ while (total < count) { - ret=recv (fd, ((uint8_t*)buf)+total, count-total, 0); + ret=tcp.read(((uint8_t*)buf)+total, count-total); if (ret<0) { - if(errno == EAGAIN) { - fd_set rset; - struct timeval timeout; + if(errno == EAGAIN) if(!tcp.has_data(0)) return -1; + continue; + } else total += ret; - FD_ZERO (&rset); - FD_SET (fd, &rset); - - timeout.tv_sec = 30; - timeout.tv_usec = 0; - - if (select (fd+1, &rset, NULL, NULL, &timeout) <= 0) { - return -1; - } - continue; - } - - MSG_ERR("rtsp: read error.\n"); - return ret; - } else - total += ret; - /* end of stream */ if (!ret) break; } @@ -193,9 +177,9 @@ char *buffer = new char [BUF_SIZE]; char *string = NULL; - read_stream(s->s, buffer, 1); + read_stream(*s->tcp, buffer, 1); while (n<BUF_SIZE) { - read_stream(s->s, &(buffer[n]), 1); + read_stream(*s->tcp, &(buffer[n]), 1); if ((buffer[n-1]==0x0d)&&(buffer[n]==0x0a)) break; n++; } @@ -233,7 +217,7 @@ buf[len]=0x0d; buf[len+1]=0x0a; - write_stream(s->s, buf, len+2); + write_stream(*s->tcp, buf, len+2); #ifdef LOG MSG_INFO(" done.\n"); @@ -522,7 +506,7 @@ int i,seq; if (size>=4) { - i=read_stream(s->s, buffer, 4); + i=read_stream(*s->tcp, buffer, 4); if (i<4) return i; if (((buffer[0]=='S')&&(buffer[1]=='E')&&(buffer[2]=='T')&&(buffer[3]=='_')) || ((buffer[0]=='O')&&(buffer[1]=='P')&&(buffer[2]=='T')&&(buffer[3]=='I'))) // OPTIONS @@ -554,14 +538,14 @@ rtsp_put(s, rest); delete rest; rtsp_put(s, ""); - i=read_stream(s->s, buffer, size); + i=read_stream(*s->tcp, buffer, size); } else { - i=read_stream(s->s, buffer+4, size-4); + i=read_stream(*s->tcp, buffer+4, size-4); i+=4; } } else - i=read_stream(s->s, buffer, size); + i=read_stream(*s->tcp, buffer, size); #ifdef LOG MSG_INFO("librtsp: << %d of %d bytes\n", i, size); #endif @@ -574,7 +558,7 @@ */ //rtsp_t *rtsp_connect(const char *mrl, const char *user_agent) { -rtsp_t *rtsp_connect(int fd, char* mrl, char *path, char *host, int port, char *user_agent) { +rtsp_t *rtsp_connect(Tcp& tcp, char* mrl, char *path, char *host, int port, char *user_agent) { rtsp_t *s=new rtsp_t; int i; @@ -604,9 +588,9 @@ path++; if ((s->param = strchr(s->path, '?')) != NULL) s->param++; - s->s = fd; + s->tcp = &tcp; - if (s->s < 0) { + if (!tcp.established()) { MSG_ERR("rtsp: failed to connect to '%s'\n", s->host); rtsp_close(s); return NULL; @@ -640,7 +624,7 @@ { if (s->server_state == RTSP_PLAYING) rtsp_request_teardown (s, NULL); - closesocket (s->s); + s->tcp->close(); } if (s->path) delete s->path; Modified: mplayerxp/libmpstream/librtsp/rtsp.h =================================================================== --- mplayerxp/libmpstream/librtsp/rtsp.h 2012-12-06 16:46:40 UTC (rev 515) +++ mplayerxp/libmpstream/librtsp/rtsp.h 2012-12-07 14:29:41 UTC (rev 516) @@ -47,7 +47,7 @@ typedef struct rtsp_s rtsp_t; -rtsp_t* rtsp_connect (int fd, char *mrl, char *path, char *host, int port, char *user_agent); +rtsp_t* rtsp_connect (Tcp& tcp, char *mrl, char *path, char *host, int port, char *user_agent); int rtsp_request_options(rtsp_t *s, const char *what); int rtsp_request_describe(rtsp_t *s, const char *what); Modified: mplayerxp/libmpstream/librtsp/rtsp_session.cpp =================================================================== --- mplayerxp/libmpstream/librtsp/rtsp_session.cpp 2012-12-06 16:46:40 UTC (rev 515) +++ mplayerxp/libmpstream/librtsp/rtsp_session.cpp 2012-12-07 14:29:41 UTC (rev 516) @@ -47,6 +47,7 @@ #include <string.h> #include <inttypes.h> +#include "tcp.h" #include "url.h" #include "rtp.h" #include "rtsp.h" @@ -77,7 +78,7 @@ }; //rtsp_session_t *rtsp_session_start(char *mrl) { -rtsp_session_t *rtsp_session_start(int fd, char **mrl, char *path, char *host, +rtsp_session_t *rtsp_session_start(Tcp& tcp, char **mrl, char *path, char *host, int port, int *redir, uint32_t bandwidth, char *user, char *pass) { rtsp_session_t *rtsp_session = NULL; @@ -94,7 +95,7 @@ *redir = 0; /* connect to server */ - rtsp_session->s=rtsp_connect(fd,*mrl,path,host,port,NULL); + rtsp_session->s=rtsp_connect(tcp,*mrl,path,host,port,NULL); if (!rtsp_session->s) { MSG_ERR("rtsp_session: failed to connect to server %s\n", path); @@ -266,8 +267,9 @@ else if (self->rtp_session) { int l = 0; + Tcp tcp(self->rtp_session->rtp_socket); - l = read_rtp_from_server (self->rtp_session->rtp_socket, data, len); + l = read_rtp_from_server (tcp, data, len); /* send RTSP and RTCP keepalive */ rtcp_send_rr (self->s, self->rtp_session); Modified: mplayerxp/libmpstream/librtsp/rtsp_session.h =================================================================== --- mplayerxp/libmpstream/librtsp/rtsp_session.h 2012-12-06 16:46:40 UTC (rev 515) +++ mplayerxp/libmpstream/librtsp/rtsp_session.h 2012-12-07 14:29:41 UTC (rev 516) @@ -33,7 +33,7 @@ typedef struct rtsp_session_s rtsp_session_t; -rtsp_session_t *rtsp_session_start(int fd, char **mrl, char *path, char *host, +rtsp_session_t *rtsp_session_start(Tcp& tcp, char **mrl, char *path, char *host, int port, int *redir, uint32_t bandwidth, char *user, char *pass); int rtsp_session_read(rtsp_session_t *session, char *data, int len); Modified: mplayerxp/libmpstream/network.cpp =================================================================== --- mplayerxp/libmpstream/network.cpp 2012-12-06 16:46:40 UTC (rev 515) +++ mplayerxp/libmpstream/network.cpp 2012-12-07 14:29:41 UTC (rev 516) @@ -166,11 +166,11 @@ return url_out; } -net_fd_t http_send_request(libinput_t* libinput, URL_t *url, off_t pos ) { +Tcp* http_send_request(libinput_t* libinput, URL_t *url, off_t pos ) { HTTP_header_t *http_hdr; URL_t *server_url; char str[256]; - net_fd_t fd=-1; + Tcp* tcp=NULL; int ret; int proxy = 0; // Boolean @@ -215,19 +215,17 @@ if( proxy ) { if( url->port==0 ) url->port = 8080; // Default port for the proxy server - fd = tcp_connect2Server(libinput, url->hostname, url->port, 0); + tcp = new Tcp(libinput, url->hostname, url->port, Tcp::IP4); url_free( server_url ); server_url = NULL; } else { if( server_url->port==0 ) server_url->port = 80; // Default port for the web server - fd = tcp_connect2Server(libinput, server_url->hostname, server_url->port, 0); + tcp = new Tcp(libinput, server_url->hostname, server_url->port, Tcp::IP4); } - if( fd<0 ) { - goto err_out; - } + if(!tcp->established()) goto err_out; MSG_DBG2("Request: [%s]\n", http_hdr->buffer ); - ret = send( fd, http_hdr->buffer, http_hdr->buffer_size, 0); + ret = tcp->write((uint8_t*)(http_hdr->buffer), http_hdr->buffer_size); if( ret!=(int)http_hdr->buffer_size ) { MSG_ERR("Error while sending HTTP request: didn't sent all the request\n"); goto err_out; @@ -235,17 +233,16 @@ http_free( http_hdr ); - return fd; + return tcp; err_out: - if (fd > 0) closesocket(fd); + if (tcp) delete tcp; http_free(http_hdr); if (proxy && server_url) url_free(server_url); - return -1; + return NULL; } -HTTP_header_t * -http_read_response( int fd ) { +HTTP_header_t* http_read_response( Tcp& tcp ) { HTTP_header_t *http_hdr; char response[BUFFER_SIZE]; int i; @@ -256,7 +253,7 @@ } do { - i = recv( fd, response, BUFFER_SIZE, 0); + i = tcp.read((uint8_t*)response, BUFFER_SIZE); if( i<0 ) { MSG_ERR("Read failed\n"); http_free( http_hdr ); @@ -324,46 +321,48 @@ return 0; } -off_t http_seek(net_fd_t* fd, networking_t *networking, off_t pos ) { - HTTP_header_t *http_hdr = NULL; +off_t http_seek(Tcp& tcp, networking_t *networking, off_t pos ) { + HTTP_header_t *http_hdr = NULL; + Tcp* other_tcp; - if( *fd>0 ) closesocket(*fd); // need to reconnect to seek in http-stream - *fd = http_send_request(networking->libinput, networking->url, pos ); - if( *fd<0 ) return 0; + tcp.close(); + other_tcp = http_send_request(networking->libinput, networking->url, pos ); + if(! other_tcp->established() ) return 0; + tcp=*other_tcp; + delete other_tcp; - http_hdr = http_read_response( *fd ); + http_hdr = http_read_response(tcp); - if( http_hdr==NULL ) return 0; + if( http_hdr==NULL ) return 0; - switch( http_hdr->status_code ) { - case 200: - case 206: // OK - MSG_V("Content-Type: [%s]\n", http_get_field(http_hdr, "Content-Type") ); - MSG_V("Content-Length: [%s]\n", http_get_field(http_hdr, "Content-Length") ); - if( http_hdr->body_size>0 ) { - if( networking_bufferize( networking, http_hdr->body, http_hdr->body_size )<0 ) { - http_free( http_hdr ); - return 0; - } - } - break; - default: - MSG_ERR("Server return %d: %s\n", http_hdr->status_code, http_hdr->reason_phrase ); - close( *fd ); - *fd = -1; - } + switch( http_hdr->status_code ) { + case 200: + case 206: // OK + MSG_V("Content-Type: [%s]\n", http_get_field(http_hdr, "Content-Type") ); + MSG_V("Content-Length: [%s]\n", http_get_field(http_hdr, "Content-Length") ); + if( http_hdr->body_size>0 ) { + if( networking_bufferize( networking, http_hdr->body, http_hdr->body_size )<0 ) { + http_free( http_hdr ); + return 0; + } + } + break; + default: + MSG_ERR("Server return %d: %s\n", http_hdr->status_code, http_hdr->reason_phrase ); + tcp.close(); + } - if( http_hdr ) { - http_free( http_hdr ); - networking->data = NULL; - } + if( http_hdr ) { + http_free( http_hdr ); + networking->data = NULL; + } - return pos; + return pos; } // By using the protocol, the extension of the file or the content-type // we might be able to guess the networking type. -int autodetectProtocol(networking_t *networking, net_fd_t *fd_out) { +int autodetectProtocol(networking_t *networking, Tcp& tcp) { HTTP_header_t *http_hdr=NULL; unsigned int i; int fd=-1; @@ -377,7 +376,6 @@ URL_t *url = networking->url; do { - *fd_out = -1; next_url = NULL; extension = NULL; content_type = NULL; @@ -401,12 +399,11 @@ #endif // HTTP based protocol if( !strcasecmp(url->protocol, "http") || !strcasecmp(url->protocol, "http_proxy") ) { - fd = http_send_request(networking->libinput, url, 0 ); - if( fd<0 ) goto err_out; + tcp = *http_send_request(networking->libinput, url, 0 ); + if(!tcp.established()) goto err_out; - http_hdr = http_read_response( fd ); + http_hdr = http_read_response(tcp); if( http_hdr==NULL ) goto err_out; - *fd_out=fd; if( mp_conf.verbose ) http_debug_hdr( http_hdr ); networking->data = (any_t*)http_hdr; @@ -525,7 +522,7 @@ } int -nop_networking_read( int fd, char *buffer, int size, networking_t *stream_ctrl ) { +nop_networking_read(Tcp& tcp, char *buffer, int size, networking_t *stream_ctrl ) { int len=0; //printf("nop_networking_read\n"); if( stream_ctrl->buffer_size!=0 ) { @@ -546,7 +543,7 @@ } if( len<size ) { int ret; - ret = read( fd, buffer+len, size-len ); + ret = tcp.read((uint8_t*)(buffer+len), size-len); if( ret<0 ) { MSG_ERR("nop_networking_read error : %s\n",strerror(errno)); } @@ -557,21 +554,24 @@ } int -nop_networking_seek( int fd, off_t pos, networking_t *stream_ctrl ) { +nop_networking_seek(Tcp& tcp, off_t pos, networking_t *n ) { + UNUSED(tcp); + UNUSED(pos); + UNUSED(n); return -1; } int -nop_networking_start(net_fd_t *fd,networking_t* networking ) { +nop_networking_start(Tcp& tcp,networking_t* networking ) { HTTP_header_t *http_hdr = NULL; char *next_url=NULL; URL_t *rd_url=NULL; int ret; - if( *fd<0 ) { - *fd = http_send_request(networking->libinput, networking->url,0); - if( *fd<0 ) return -1; - http_hdr = http_read_response( *fd ); + if( !tcp.established() ) { + tcp = *http_send_request(networking->libinput, networking->url,0); + if( !tcp.established() ) return -1; + http_hdr = http_read_response(tcp); if( http_hdr==NULL ) return -1; switch( http_hdr->status_code ) { @@ -597,11 +597,10 @@ if (next_url != NULL && rd_url != NULL) { MSG_STATUS("Redirected: Using this url instead %s\n",next_url); networking->url=check4proxies(rd_url); - ret=nop_networking_start(fd,networking); //recursively get networking started + ret=nop_networking_start(tcp,networking); //recursively get networking started } else { MSG_ERR("Redirection failed\n"); - closesocket( *fd ); - *fd = -1; + tcp.close(); } return ret; break; @@ -611,8 +610,7 @@ case 500: //Server Error default: MSG_ERR("Server return %d: %s\n", http_hdr->status_code, http_hdr->reason_phrase ); - closesocket( *fd ); - *fd = -1; + tcp.close(); return -1; break; } @@ -653,20 +651,20 @@ } int -pnm_networking_read( int fd, char *buffer, int size, networking_t *stream_ctrl ) { +pnm_networking_read(Tcp& tcp, char *buffer, int size, networking_t *stream_ctrl ) { + UNUSED(tcp); return pnm_read(reinterpret_cast<pnm_t*>(stream_ctrl->data), buffer, size); } -int pnm_networking_start(net_fd_t *fd,networking_t *networking ) { +int pnm_networking_start(Tcp& tcp,networking_t *networking ) { pnm_t *pnm; - *fd = tcp_connect2Server(networking->libinput, networking->url->hostname, - networking->url->port ? networking->url->port : 7070, 0); - MSG_V("PNM:// fd=%d\n",fd); - if(*fd<0) return -1; + tcp.open(networking->libinput, networking->url->hostname, + networking->url->port ? networking->url->port : 7070); + if(!tcp.established()) return -1; - pnm = pnm_connect(fd,networking->url->file); + pnm = pnm_connect(tcp,networking->url->file); if(!pnm) return -2; networking->data=pnm; @@ -737,16 +735,18 @@ #ifndef STREAMING_LIVE_DOT_COM static int -rtp_networking_read( int fd, char *buffer, int size, networking_t *networking ) { - return read_rtp_from_server( fd, buffer, size ); +rtp_networking_read(Tcp& tcp, char *buffer, int size, networking_t *networking ) { + UNUSED(networking); + return read_rtp_from_server(tcp, buffer, size ); } static int -rtp_networking_start( net_fd_t* fd,networking_t* networking, int raw_udp ) { +rtp_networking_start(Tcp& tcp,networking_t* networking, int raw_udp ) { - if( *fd<0 ) { - *fd = udp_open_socket( (networking->url) ); - if( *fd<0 ) return -1; + if( !tcp.established() ) { + Udp* udp(new(zeromem) Udp(networking->url)); + tcp = udp->socket(); + if( !tcp.established()) return -1; } if(raw_udp) @@ -762,12 +762,12 @@ } #endif -int networking_start(net_fd_t* fd,networking_t* networking, URL_t *url) { +int networking_start(Tcp& tcp,networking_t* networking, URL_t *url) { int ret; networking->url = check4proxies( url ); - ret = autodetectProtocol( networking, fd); + ret = autodetectProtocol( networking, tcp); if( ret<0 ) return -1; ret = -1; @@ -777,15 +777,11 @@ // For RTP streams, we usually don't know the stream type until we open it. if( !strcasecmp( networking->url->protocol, "rtp")) { - if(*fd >= 0) { - if(closesocket(*fd) < 0) - MSG_ERR("networking_start : Closing socket %d failed %s\n",*fd,strerror(errno)); - } - *fd = -1; - ret = rtp_networking_start(fd, networking, 0); + if(tcp.established()) tcp.close(); + ret = rtp_networking_start(tcp, networking, 0); } else if( !strcasecmp( networking->url->protocol, "pnm")) { - *fd = -1; - ret = pnm_networking_start(fd, networking); + tcp.close(); + ret = pnm_networking_start(tcp, networking); if (ret == -1) { MSG_INFO("Can't connect with pnm, retrying with http.\n"); return -1; @@ -794,10 +790,10 @@ #ifdef HAVE_RTSP_SESSION_H else if( !strcasecmp( networking->url->protocol, "rtsp")) { *fd = -1; - if ((ret = realrtsp_networking_start( fd, networking )) < 0) { + if ((ret = realrtsp_networking_start( tcp, networking )) < 0) { MSG_INFO("Not a Realmedia rtsp url. Trying standard rtsp protocol.\n"); #ifdef STREAMING_LIVE_DOT_COM - ret = rtsp_networking_start( stream ); + ret = rtsp_networking_start( tcp, networking ); if( ret<0 ) MSG_ERR("rtsp_networking_start failed\n"); return ret; #else @@ -808,8 +804,8 @@ } #endif else if(!strcasecmp( networking->url->protocol, "udp")) { - *fd = -1; - ret = rtp_networking_start(fd, networking, 1); + tcp.close(); + ret = rtp_networking_start(tcp, networking, 1); if(ret<0) { MSG_ERR("rtp_networking_start(udp) failed\n"); return -1; @@ -820,16 +816,15 @@ // ASF raw stream is encapsulated. // It can also be a playlist (redirector) // so we need to pass demuxer_type too - ret = asf_networking_start(fd,networking); + ret = asf_networking_start(tcp,networking); if( ret<0 ) { //sometimes a file is just on a webserver and it is not streamed. //try loading them default method as last resort for http protocol if ( !strcasecmp(networking->url->protocol, "http") ) { MSG_STATUS("Trying default networking for http protocol\n "); //reset stream - close(*fd); - *fd=-1; - ret=nop_networking_start(fd,networking); + tcp.close(); + ret=nop_networking_start(tcp,networking); } if (ret<0) { MSG_ERR("asf_networking_start failed\n"); Modified: mplayerxp/libmpstream/network.h =================================================================== --- mplayerxp/libmpstream/network.h 2012-12-06 16:46:40 UTC (rev 515) +++ mplayerxp/libmpstream/network.h 2012-12-07 14:29:41 UTC (rev 516) @@ -28,8 +28,8 @@ namespace mpxp { struct stream_t; struct libinput_t; + class Tcp; } -typedef int net_fd_t; enum networking_status { networking_stopped_e, networking_playing_e @@ -44,24 +44,24 @@ unsigned int buffer_size; unsigned int buffer_pos; unsigned int bandwidth; // The downstream available - int (*networking_read)( net_fd_t fd, char *buffer, int buffer_size, networking_t *stream_ctrl ); - int (*networking_seek)( net_fd_t fd, off_t pos, networking_t *stream_ctrl ); + int (*networking_read)( Tcp& fd, char *buffer, int buffer_size, networking_t *stream_ctrl ); + int (*networking_seek)( Tcp& fd, off_t pos, networking_t *stream_ctrl ); any_t*data; libinput_t* libinput; /**< provides possibility to inperrupt network streams */ }; extern void fixup_network_stream_cache(networking_t *s); -extern int networking_start(net_fd_t* fd,networking_t *n, URL_t *url); +extern int networking_start(Tcp& fd,networking_t *n, URL_t *url); extern int networking_bufferize(networking_t *networking,unsigned char *buffer, int size); extern networking_t *new_networking(libinput_t* libinput); extern void free_networking( networking_t *networking ); extern URL_t* check4proxies( URL_t *url ); -int nop_networking_read( net_fd_t fd, char *buffer, int size, networking_t *stream_ctrl ); -int nop_networking_seek( net_fd_t fd, off_t pos, networking_t *stream_ctrl ); +int nop_networking_read(Tcp& fd, char *buffer, int size, networking_t *stream_ctrl ); +int nop_networking_seek(Tcp& fd, off_t pos, networking_t *stream_ctrl ); -int http_send_request(libinput_t* libinput,URL_t *url, off_t pos); -HTTP_header_t *http_read_response(net_fd_t fd); +Tcp* http_send_request(libinput_t* libinput,URL_t *url, off_t pos); +HTTP_header_t *http_read_response(Tcp& fd); int http_authenticate(HTTP_header_t *http_hdr, URL_t *url, int *auth_retry); Modified: mplayerxp/libmpstream/pnm.cpp =================================================================== --- mplayerxp/libmpstream/pnm.cpp 2012-12-06 16:46:40 UTC (rev 515) +++ mplayerxp/libmpstream/pnm.cpp 2012-12-07 14:29:41 UTC (rev 516) @@ -47,6 +47,7 @@ #include <winsock2.h> #endif +#include "tcp.h" #include "pnm.h" #define FOURCC_TAG( ch0, ch1, ch2, ch3 ) \ @@ -72,7 +73,7 @@ #define HEADER_SIZE 4096 struct pnm_s { - net_fd_t s; + Tcp* tcp; char* path; char buffer[BUF_SIZE]; /* scratch buffer */ /* receive buffer */ @@ -94,11 +95,11 @@ * utility macros */ -#define BE_16(x) be2me_16(*((uint16_t *)x)) -#define BE_32(x) be2me_16(*((uint32_t *)x)) +static inline uint16_t BE_16(uint8_t* x) { return be2me_16(*((uint16_t *)x)); } +static inline uint32_t BE_32(uint8_t* x) { return be2me_32(*((uint32_t *)x)); } /* D means direct (no pointer) */ -#define BE_16D(x) BE_16(x) +static inline uint16_t BE_16D(uint8_t* x) { return BE_16(x); } /* sizes */ #define PREAMBLE_SIZE 8 @@ -194,14 +195,14 @@ static void hexdump (char *buf, int length); -static int rm_write(int s, const char *buf, int len) { +static int rm_write(Tcp& tcp, const char *buf, int len) { int total, timeout; total = 0; timeout = 30; while (total < len){ int n; - n = send (s, &buf[total], len - total, 0); + n = tcp.write ((const uint8_t*)&buf[total], len - total); if (n > 0) total += n; @@ -220,7 +221,7 @@ return total; } -static ssize_t rm_read(int fd, any_t*buf, size_t count) { +static ssize_t rm_read(Tcp& tcp, any_t*buf, size_t count) { ssize_t ret, total; @@ -228,21 +229,8 @@ while (total < count) { - fd_set rset; - struct timeval timeout; + ret=tcp.read (((uint8_t*)buf)+total, count-total); - FD_ZERO (&rset); - FD_SET (fd, &rset); - - timeout.tv_sec = 3; - timeout.tv_usec = 0; - - if (select (fd+1, &rset, NULL, NULL, &timeout) <= 0) { - return -1; - } - - ret=recv (fd, ((uint8_t*)buf)+total, count-total, 0); - if (ret<=0) { printf ("input_pnm: read error.\n"); return ret; @@ -306,16 +294,16 @@ return -1; /* get first PREAMBLE_SIZE bytes and ignore checksum */ - rm_read (p->s, data, CHECKSUM_SIZE); + rm_read (*p->tcp, data, CHECKSUM_SIZE); if (data[0] == 0x72) - rm_read (p->s, data, PREAMBLE_SIZE); + rm_read (*p->tcp, data, PREAMBLE_SIZE); else - rm_read (p->s, data+CHECKSUM_SIZE, PREAMBLE_SIZE-CHECKSUM_SIZE); + rm_read (*p->tcp, data+CHECKSUM_SIZE, PREAMBLE_SIZE-CHECKSUM_SIZE); max -= PREAMBLE_SIZE; - *chunk_type = BE_32(data); - chunk_size = BE_32(data+4); + *chunk_type = BE_32((uint8_t*)data); + chunk_size = BE_32((uint8_t*)(data+4)); switch (*chunk_type) { case PNA_TAG: @@ -323,7 +311,7 @@ ptr=data+PREAMBLE_SIZE; if (max < 1) return -1; - rm_read (p->s, ptr++, 1); + rm_read (*p->tcp, ptr++, 1); max -= 1; while(1) { @@ -331,19 +319,19 @@ if (max < 2) return -1; - rm_read (p->s, ptr, 2); + rm_read (*p->tcp, ptr, 2); max -= 2; if (*ptr == 'X') /* checking for server message */ { printf("input_pnm: got a message from server:\n"); if (max < 1) return -1; - rm_read (p->s, ptr+2, 1); + rm_read (*p->tcp, ptr+2, 1); max = -1; - n=BE_16(ptr+1); + n=BE_16((uint8_t*)(ptr+1)); if (max < n) return -1; - rm_read (p->s, ptr+3, n); + rm_read (*p->tcp, ptr+3, n); max -= n; ptr[3+n]=0; printf("%s\n",ptr+3); @@ -365,14 +353,14 @@ n=ptr[1]; if (max < n) return -1; - rm_read (p->s, ptr+2, n); + rm_read (*p->tcp, ptr+2, n); max -= n; ptr+=(n+2); } /* the checksum of the next chunk is ignored here */ if (max < 1) return -1; - rm_read (p->s, ptr+2, 1); + rm_read (*p->tcp, ptr+2, 1); ptr+=3; chunk_size=ptr-data; break; @@ -384,12 +372,12 @@ if (chunk_size > max || chunk_size < PREAMBLE_SIZE) { printf("error: max chunk size exeeded (max was 0x%04x)\n", max); #ifdef LOG - n=rm_read (p->s, &data[PREAMBLE_SIZE], 0x100 - PREAMBLE_SIZE); + n=rm_read (*p->tcp, &data[PREAMBLE_SIZE], 0x100 - PREAMBLE_SIZE); hexdump(data,n+PREAMBLE_SIZE); #endif return -1; } - rm_read (p->s, &data[PREAMBLE_SIZE], chunk_size-PREAMBLE_SIZE); + rm_read (*p->tcp, &data[PREAMBLE_SIZE], chunk_size-PREAMBLE_SIZE); break; default: *chunk_type = 0; @@ -457,7 +445,7 @@ /* client id string */ p->buffer[c]=PNA_CLIENT_STRING; - i16=BE_16D((strlen(client_string)-1)); /* dont know why do we have -1 here */ + i16=BE_16D((uint8_t*)((strlen(client_string)-1))); /* dont know why do we have -1 here */ memcpy(&p->buffer[c+1],&i16,2); memcpy(&p->buffer[c+3],client_string,strlen(client_string)+1); c=c+3+strlen(client_string)+1; @@ -465,7 +453,7 @@ /* file path */ p->buffer[c]=0; p->buffer[c+1]=PNA_PATH_REQUEST; - i16=BE_16D(strlen(p->path)); + i16=BE_16D((uint8_t*)(strlen(p->path))); memcpy(&p->buffer[c+2],&i16,2); memcpy(&p->buffer[c+4],p->path,strlen(p->path)); c=c+4+strlen(p->path); @@ -474,7 +462,7 @@ p->buffer[c]='y'; p->buffer[c+1]='B'; - rm_write(p->s,p->buffer,c+2); + rm_write(*p->tcp,p->buffer,c+2); } /* @@ -491,7 +479,7 @@ memcpy(&p->buffer[3], response, size); - rm_write (p->s, p->buffer, size+3); + rm_write (*p->tcp, p->buffer, size+3); } @@ -554,7 +542,7 @@ /* read challenge */ memcpy (p->buffer, ptr, PREAMBLE_SIZE); - rm_read (p->s, &p->buffer[PREAMBLE_SIZE], 64); + rm_read (*p->tcp, &p->buffer[PREAMBLE_SIZE], 64); /* now write a data header */ memcpy(ptr, pnm_data_header, PNM_DATA_HEADER_SIZE); @@ -650,7 +638,7 @@ /* realplayer seems to do that every 43th package */ if ((p->packet%43) == 42) { - rm_write(p->s,&keepalive,1); + rm_write(*p->tcp,&keepalive,1); } /* data chunks begin with: 'Z' <o> <o> <i1> 'Z' <i2> @@ -659,13 +647,13 @@ * <i2> is a 8 bit index which counts from 0x10 to somewhere */ - n = rm_read (p->s, p->buffer, 8); + n = rm_read (*p->tcp, p->buffer, 8); if (n<8) return 0; /* skip 8 bytes if 0x62 is read */ if (p->buffer[0] == 0x62) { - n = rm_read (p->s, p->buffer, 8); + n = rm_read (*p->tcp, p->buffer, 8); if (n<8) return 0; #ifdef LOG printf("input_pnm: had to seek 8 bytes on 0x62\n"); @@ -675,9 +663,9 @@ /* a server message */ if (p->buffer[0] == 'X') { - int size=BE_16(&p->buffer[1]); + int size=BE_16((uint8_t*)(&p->buffer[1])); - rm_read (p->s, &p->buffer[8], size-5); + rm_read (*p->tcp, &p->buffer[8], size-5); p->buffer[size+3]=0; printf("input_pnm: got message from server while reading stream:\n%s\n", &p->buffer[3]); return 0; @@ -698,7 +686,7 @@ for (i=1; i<8; i++) { p->buffer[i-1]=p->buffer[i]; } - rm_read (p->s, &p->buffer[7], 1); + rm_read (*p->tcp, &p->buffer[7], 1); n++; } @@ -715,8 +703,8 @@ } /* check offsets */ - fof1=BE_16(&p->buffer[1]); - fof2=BE_16(&p->buffer[3]); + fof1=BE_16((uint8_t*)(&p->buffer[1])); + fof2=BE_16((uint8_t*)(&p->buffer[3])); if (fof1 != fof2) { printf("input_pnm: frame offsets are different: 0x%04x 0x%04x\n",fof1,fof2); @@ -724,10 +712,10 @@ } /* get first index */ - p->seq_current[0]=BE_16(&p->buffer[5]); + p->seq_current[0]=BE_16((uint8_t*)(&p->buffer[5])); /* now read the rest of stream chunk */ - n = rm_read (p->s, &p->recv[5], fof1-5); + n = rm_read (*p->tcp, &p->recv[5], fof1-5); if (n<(fof1-5)) return 0; /* get second index */ @@ -747,7 +735,7 @@ p->recv[0]=0; /* object version */ p->recv[1]=0; - fof2=BE_16(&fof2); + fof2=BE_16((uint8_t*)(&fof2)); memcpy(&p->recv[2], &fof2, 2); /*p->recv[2]=(fof2>>8)%0xff;*/ /* length */ /*p->recv[3]=(fof2)%0xff;*/ @@ -765,13 +753,13 @@ } // pnm_t *pnm_connect(const char *mrl) { -pnm_t *pnm_connect(int* fd,const char *path) { +pnm_t *pnm_connect(Tcp& tcp,const char *path) { pnm_t *p=new pnm_t; int need_response=0; p->path=mp_strdup(path); - p->s=*fd; + p->tcp=&tcp; pnm_send_request(p,pnm_available_bandwidths[10]); if (!pnm_get_headers(p, &need_response)) { @@ -836,8 +824,9 @@ void pnm_close(pnm_t *p) { - if (p->s >= 0) closesocket(p->s); + if (p->tcp->established()) p->tcp->close(); delete p->path; + delete p->tcp; delete p; } Modified: mplayerxp/libmpstream/pnm.h =================================================================== --- mplayerxp/libmpstream/pnm.h 2012-12-06 16:46:40 UTC (rev 515) +++ mplayerxp/libmpstream/pnm.h 2012-12-07 14:29:41 UTC (rev 516) @@ -31,9 +31,11 @@ /*#include "xine_internal.h" */ typedef struct pnm_s pnm_t; -typedef int net_fd_t; +namespace mpxp { + class Tcp; +} -pnm_t* pnm_connect (net_fd_t* fd,const char *url); +pnm_t* pnm_connect (Tcp&,const char *url); int pnm_read (pnm_t *self, char *data, int len); void pnm_close (pnm_t *self); Modified: mplayerxp/libmpstream/rtp.cpp =================================================================== --- mplayerxp/libmpstream/rtp.cpp 2012-12-06 16:46:40 UTC (rev 515) +++ mplayerxp/libmpstream/rtp.cpp 2012-12-07 14:29:41 UTC (rev 516) @@ -31,6 +31,7 @@ /* MPEG-2 TS RTP stack */ #define DEBUG 1 +#include "tcp.h" #include "rtp.h" #include "stream_msg.h" @@ -67,7 +68,7 @@ }; static struct rtpbuffer rtpbuf; -static int getrtp2(int fd, struct rtpheader *rh, char** data, int* lengthData); +static int getrtp2(Tcp& fd, struct rtpheader *rh, char** data, int* lengthData); // RTP Reordering functions // Algorithm works as follows: @@ -90,7 +91,7 @@ } // Write in a cache the rtp packet in right rtp sequence order -static int rtp_cache(int fd, char *buffer, int length) +static int rtp_cache(Tcp& tcp, char *buffer, int length) { struct rtpheader rh; int newseq; @@ -98,7 +99,7 @@ unsigned short seq; static int is_first = 1; - getrtp2(fd, &rh, &data, &length); + getrtp2(tcp, &rh, &data, &length); if(!length) return 0; seq = rh.b.sequence; @@ -159,7 +160,7 @@ // Get next packet in cache // Look in cache to get first packet in sequence -static int rtp_get_next(int fd, char *buffer, int length) +static int rtp_get_next(Tcp& tcp, char *buffer, int length) { int i; unsigned short nextseq; @@ -168,7 +169,7 @@ for (i=0; i < MAXRTPPACKETSIN -3; i++) { if (rtpbuf.len[rtpbuf.first] != 0) break; - length = rtp_cache(fd, buffer, length) ; + length = rtp_cache(tcp, buffer, length) ; // returns on first packet in sequence if (length > 0) { @@ -202,7 +203,7 @@ // Read next rtp packet using cache -int read_rtp_from_server(net_fd_t fd, char *buffer, int length) { +int read_rtp_from_server(Tcp& tcp, char *buffer, int length) { // Following test is ASSERT (i.e. uneuseful if code is correct) if(buffer==NULL || length<STREAM_BUFFER_SIZE) { MSG_ERR("RTP buffer invalid; no data return from network\n"); @@ -210,20 +211,20 @@ } // loop just to skip empty packets - while ((length = rtp_get_next(fd, buffer, length)) == 0) { + while ((length = rtp_get_next(tcp, buffer, length)) == 0) { MSG_ERR("Got empty packet from RTP cache!?\n"); } return(length); } -static int getrtp2(int fd, struct rtpheader *rh, char** data, int* lengthData) { +static int getrtp2(Tcp& tcp, struct rtpheader *rh, char** data, int* lengthData) { static char buf[1600]; unsigned int intP; char* charP = (char*) &intP; int headerSize; int lengthPacket; - lengthPacket=recv(fd,buf,1590,0); + lengthPacket=tcp.read((uint8_t*)(buf),1590); if (lengthPacket<0) MSG_ERR("rtp: socket read error\n"); else if (lengthPacket<12) Modified: mplayerxp/libmpstream/rtp.h =================================================================== --- mplayerxp/libmpstream/rtp.h 2012-12-06 16:46:40 UTC (rev 515) +++ mplayerxp/libmpstream/rtp.h 2012-12-07 14:29:41 UTC (rev 516) @@ -9,6 +9,6 @@ #define RTP_H #include "network.h" -int read_rtp_from_server(net_fd_t fd, char *buffer, int length); +int read_rtp_from_server(Tcp& fd, char *buffer, int length); #endif Modified: mplayerxp/libmpstream/s_ftp.cpp =================================================================== --- mplayerxp/libmpstream/s_ftp.cpp 2012-12-06 16:46:40 UTC (rev 515) +++ mplayerxp/libmpstream/s_ftp.cpp 2012-12-07 14:29:41 UTC (rev 516) @@ -40,7 +40,6 @@ virtual off_t size() const; virtual off_t sector_size() const; private: - static int fd_can_read(int fd,int timeout); int readline(char *buf,int max); int readresp(char* rsp); int OpenPort(); @@ -56,17 +55,16 @@ libinput_t* libinput; char* cput,*cget; - net_fd_t handle; + Tcp tcp; int cavail,cleft; char* buf; off_t spos; off_t file_len; }; -Ftp_Stream_Interface::Ftp_Stream_Interface() {} +Ftp_Stream_Interface::Ftp_Stream_Interface():tcp(-1) {} Ftp_Stream_Interface::~Ftp_Stream_Interface() { SendCmd("QUIT",NULL); - if(handle) ::closesocket(handle); if(buf) delete buf; } @@ -76,20 +74,6 @@ #define TELNET_IP 244 /* interrupt process--permanently */ #define TELNET_SYNCH 242 /* for telfunc calls */ -// Check if there is something to read on a fd. This avoid hanging -// forever if the network stop responding. -int Ftp_Stream_Interface::fd_can_read(int fd,int timeout) { - fd_set fds; - struct timeval tv; - - FD_ZERO(&fds); - FD_SET(fd,&fds); - tv.tv_sec = timeout; - tv.tv_usec = 0; - - return (::select(fd+1, &fds, NULL, NULL, &tv) > 0); -} - /* * read a line of text * @@ -135,12 +119,12 @@ if (retval == 0) retval = -1; break; } - if(!fd_can_read(handle, 15)) { + if(!tcp.has_data(15)) { MSG_ERR("[ftp] read timed out\n"); retval = -1; break; } - if ((x = recv(handle,cput,cleft,0)) == -1) { + if ((x = tcp.read((uint8_t*)cput,cleft)) == -1) { MSG_ERR("[ftp] read error: %s\n",strerror(errno)); retval = -1; break; @@ -195,7 +179,7 @@ if(hascrlf && l == 2) MSG_V("\n"); else MSG_V("[ftp] > %s",cmd); while(l > 0) { - int s = ::send(handle,cmd,l,0); + int s = tcp.write((const uint8_t*)cmd,l); if(s <= 0) { MSG_ERR("[ftp] write error: %s\n",strerror(errno)); return 0; @@ -226,10 +210,10 @@ } sscanf(par+1,"%u,%u,%u,%u,%u,%u",&num[0],&num[1],&num[2],&num[3],&num[4],&num[5]); snprintf(str,127,"%d.%d.%d.%d",num[0],num[1],num[2],num[3]); - fd = tcp_connect2Server(libinput,str,(num[4]<<8)+num[5],0); + tcp.open(libinput,str,(num[4]<<8)+num[5]); if(fd < 0) MSG_ERR("[ftp] failed to create data connection\n"); - return fd; + return 1; } int Ftp_Stream_Interface::OpenData(size_t newpos) { @@ -237,9 +221,9 @@ char str[256],rsp_txt[256]; // Open a new connection - handle = OpenPort(); + OpenPort(); - if(handle < 0) return 0; + if(tcp.established()) return 0; if(newpos > 0) { snprintf(str,255,"REST %"PRId64, (int64_t)newpos); @@ -266,12 +250,12 @@ if(!OpenData(spos)) return -1; - if(!fd_can_read(handle, 15)) { + if(!tcp.has_data(15)) { MSG_ERR("[ftp] read timed out\n"); return -1; } MSG_V("ftp read: %u bytes\n",sp->len); - r = ::recv(handle,sp->buf,sp->len,0); + r = tcp.read((uint8_t*)sp->buf,sp->len); spos+=r; return (r <= 0) ? -1 : r; } @@ -285,25 +269,21 @@ if(spos > file_len) return 0; // Check to see if the server did not already terminate the transfer - if(fd_can_read(handle, 0)) { + if(tcp.has_data(0)) { if(readresp(rsp_txt) != 2) MSG_WARN("[ftp] Warning the server didn't finished the transfer correctly: %s\n",rsp_txt); - ::closesocket(handle); - handle = -1; + tcp.close(); } // Close current download - if(handle >= 0) { + if(tcp.established()) { static const char pre_cmd[]={TELNET_IAC,TELNET_IP,TELNET_IAC,TELNET_SYNCH}; //int fl; - // First close the fd - ::closesocket(handle); - handle = -1; // Send send the telnet sequence needed to make the server react // send only first byte as OOB due to OOB braindamage in many unices - ::send(handle,pre_cmd,1,MSG_OOB); - ::send(handle,pre_cmd+1,sizeof(pre_cmd)-1,0); + tcp.write((uint8_t*)pre_cmd,1,MSG_OOB); + tcp.write((uint8_t*)(pre_cmd+1),sizeof(pre_cmd)-1); // Get the 426 Transfer aborted // Or the 226 Transfer complete @@ -315,6 +295,8 @@ // Send the ABOR command // Ignore the return code as sometimes it fail with "nothing to abort" SendCmd("ABOR",rsp_txt); + // close the fd + tcp.close(); } if(OpenData(newpos)) spos=newpos; return spos; @@ -327,10 +309,7 @@ void Ftp_Stream_Interface::close() { - if(handle > 0) { - ::closesocket(handle); - handle = 0; - } + if(tcp.established()) tcp.close(); } MPXP_Rc Ftp_Stream_Interface::open(libinput_t*_libinput,const char *_filename,unsigned flags) @@ -360,9 +339,9 @@ MSG_V("FTP: Opening ~%s :%s @%s :%i %s\n",user,pass,host,port,filename); // Open the control connection - handle = tcp_connect2Server(libinput,host,port,1); + tcp.open(libinput,host,port); - if(handle < 0) { + if(!tcp.established()) { url_free(url); return MPXP_False; } Modified: mplayerxp/libmpstream/s_network.cpp =================================================================== --- mplayerxp/libmpstream/s_network.cpp 2012-12-06 16:46:40 UTC (rev 515) +++ mplayerxp/libmpstream/s_network.cpp 2012-12-07 14:29:41 UTC (rev 516) @@ -17,6 +17,7 @@ #include "stream_msg.h" #include "url.h" +#include "tcp.h" #include "network.h" namespace mpxp { @@ -37,11 +38,11 @@ private: URL_t* url; off_t spos; - net_fd_t fd; + Tcp tcp; networking_t* networking; }; -Network_Stream_Interface::Network_Stream_Interface() {} +Network_Stream_Interface::Network_Stream_Interface():tcp(-1) {} Network_Stream_Interface::~Network_Stream_Interface() { if(url) { url_free(url); @@ -55,7 +56,7 @@ url = url_new(filename); if(url) { networking=new_networking(libinput); - if(networki... [truncated message content] |
From: <nic...@us...> - 2012-12-07 17:51:03
|
Revision: 518 http://mplayerxp.svn.sourceforge.net/mplayerxp/?rev=518&view=rev Author: nickols_k Date: 2012-12-07 17:50:52 +0000 (Fri, 07 Dec 2012) Log Message: ----------- convert struct stream_t into Stream Modified Paths: -------------- mplayerxp/dump.cpp mplayerxp/dump.h mplayerxp/libmpdemux/demux_aiff.cpp mplayerxp/libmpdemux/demux_asf.cpp mplayerxp/libmpdemux/demux_audio.cpp mplayerxp/libmpdemux/demux_avi.cpp mplayerxp/libmpdemux/demux_lavf.cpp mplayerxp/libmpdemux/demux_mkv.cpp mplayerxp/libmpdemux/demux_mov.cpp mplayerxp/libmpdemux/demux_mpg.cpp mplayerxp/libmpdemux/demux_mpxp64.cpp mplayerxp/libmpdemux/demux_ogg.cpp mplayerxp/libmpdemux/demux_rawaudio.cpp mplayerxp/libmpdemux/demux_rawvideo.cpp mplayerxp/libmpdemux/demux_real.cpp mplayerxp/libmpdemux/demux_ts.cpp mplayerxp/libmpdemux/demux_ty.cpp mplayerxp/libmpdemux/demux_vqf.cpp mplayerxp/libmpdemux/demuxer.cpp mplayerxp/libmpdemux/demuxer.h mplayerxp/libmpdemux/demuxer_stream.cpp mplayerxp/libmpdemux/demuxer_stream.h mplayerxp/libmpdemux/parse_mp4.cpp mplayerxp/libmpdemux/yuv4mpeg.cpp mplayerxp/libmpdemux/yuv4mpeg.h mplayerxp/libmpstream/cache2.cpp mplayerxp/libmpstream/cddb.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 mplayerxp/libmpsub/vobsub.cpp mplayerxp/libplaytree/asxparser.cpp mplayerxp/libplaytree/playtree.h mplayerxp/libplaytree/playtreeparser.cpp mplayerxp/libplaytree/playtreeparser.h mplayerxp/mplayerxp.cpp Modified: mplayerxp/dump.cpp =================================================================== --- mplayerxp/dump.cpp 2012-12-07 16:03:55 UTC (rev 517) +++ mplayerxp/dump.cpp 2012-12-07 17:50:52 UTC (rev 518) @@ -36,7 +36,7 @@ return type; } -void dump_stream(stream_t *stream) +void dump_stream(Stream *stream) { char buf[4096]; int len; @@ -92,7 +92,7 @@ libinput_t* libinput; }; -void __FASTCALL__ dump_stream_event_handler(stream_t *s,const stream_packet_t*sp) +void __FASTCALL__ dump_stream_event_handler(Stream *s,const stream_packet_t*sp) { } Modified: mplayerxp/dump.h =================================================================== --- mplayerxp/dump.h 2012-12-07 16:03:55 UTC (rev 517) +++ mplayerxp/dump.h 2012-12-07 17:50:52 UTC (rev 518) @@ -6,10 +6,10 @@ #include "libmpdemux/demuxer_r.h" namespace mpxp { int dump_parse(const char *param); - void dump_stream(stream_t *stream); + void dump_stream(Stream *stream); void dump_mux_init(Demuxer *demuxer,libinput_t*libinput); void dump_mux(Demuxer *demuxer,int use_pts,const char *seek_to_sec,unsigned play_n_frames); void dump_mux_close(Demuxer *demuxer); - void __FASTCALL__ dump_stream_event_handler(stream_t *s,const stream_packet_t*sp); + void __FASTCALL__ dump_stream_event_handler(Stream *s,const stream_packet_t*sp); } //namespace #endif Modified: mplayerxp/libmpdemux/demux_aiff.cpp =================================================================== --- mplayerxp/libmpdemux/demux_aiff.cpp 2012-12-07 16:03:55 UTC (rev 517) +++ mplayerxp/libmpdemux/demux_aiff.cpp 2012-12-07 17:50:52 UTC (rev 518) @@ -43,7 +43,7 @@ static MPXP_Rc aiff_probe(Demuxer* demuxer) { char buf[12]; - stream_t *s; + Stream *s; s = demuxer->stream; stream_read(s,buf,12); if(*((uint32_t *)&buf[0])==mmioFOURCC('F','O','R','M') && *((uint32_t *)&buf[8])==mmioFOURCC('A','I','F','F')) return MPXP_Ok; @@ -54,7 +54,7 @@ static Opaque* aiff_open(Demuxer* demuxer) { sh_audio_t* sh_audio; WAVEFORMATEX* w; - stream_t *s; + Stream *s; priv_t *priv; char preamble[8]; s = demuxer->stream; @@ -205,7 +205,7 @@ } static void aiff_seek(Demuxer *demuxer,const seek_args_t* seeka){ - stream_t* s = demuxer->stream; + Stream* s = demuxer->stream; sh_audio_t* sh_audio = reinterpret_cast<sh_audio_t*>(demuxer->audio->sh); off_t base,pos; Modified: mplayerxp/libmpdemux/demux_asf.cpp =================================================================== --- mplayerxp/libmpdemux/demux_asf.cpp 2012-12-07 16:03:55 UTC (rev 517) +++ mplayerxp/libmpdemux/demux_asf.cpp 2012-12-07 17:50:52 UTC (rev 518) @@ -502,7 +502,7 @@ // 0 = EOF or no stream found // 1 = successfully read a packet static int asf_demux(Demuxer *demux,Demuxer_Stream *ds){ -stream_t *stream=demux->stream; +Stream *stream=demux->stream; asf_priv_t *apriv=static_cast<asf_priv_t*>(demux->priv); int done=0; while(!done) Modified: mplayerxp/libmpdemux/demux_audio.cpp =================================================================== --- mplayerxp/libmpdemux/demux_audio.cpp 2012-12-07 16:03:55 UTC (rev 517) +++ mplayerxp/libmpdemux/demux_audio.cpp 2012-12-07 17:50:52 UTC (rev 518) @@ -431,7 +431,7 @@ static int read_mp3v1_tags(Demuxer *demuxer,uint8_t *hdr, off_t pos ) { unsigned n; - stream_t *s=demuxer->stream; + Stream *s=demuxer->stream; for(n = 0; n < 5 ; n++) { MSG_DBG2("read_mp3v1_tags\n"); pos = mp_decode_mp3_header(hdr,NULL,NULL,NULL,NULL); @@ -486,7 +486,7 @@ { uint8_t b[8]; unsigned n; - stream_t *s=demuxer->stream; + Stream *s=demuxer->stream; demuxer->movi_end = s->end_pos(); memcpy(b,hdr,4); stream_seek(s,pos+4); @@ -510,7 +510,7 @@ { uint8_t b[12]; unsigned n; - stream_t *s=demuxer->stream; + Stream *s=demuxer->stream; demuxer->movi_end = s->end_pos(); memcpy(b,hdr,4); stream_seek(s,pos+4); @@ -548,7 +548,7 @@ static int read_id3v22_tags(Demuxer *demuxer,unsigned flags,unsigned hsize) { off_t pos,epos; - stream_t *s=demuxer->stream; + Stream *s=demuxer->stream; if( flags==ID3V22_ZERO_FLAG || flags==ID3V22_UNSYNCH_FLAG || flags==ID3V22_COMPRESS_FLAG) return 0; @@ -613,7 +613,7 @@ static int read_id3v23_tags(Demuxer *demuxer,unsigned flags,unsigned hsize) { off_t pos,epos; - stream_t *s=demuxer->stream; + Stream *s=demuxer->stream; if( flags==ID3V23_ZERO_FLAG || flags==ID3V23_UNSYNCH_FLAG) return 0; if( flags==ID3V23_EXT_HEADER_FLAG ) @@ -689,7 +689,7 @@ static int read_id3v24_tags(Demuxer *demuxer,unsigned flags,unsigned hsize) { off_t pos,epos; - stream_t *s=demuxer->stream; + Stream *s=demuxer->stream; if( flags==ID3V24_ZERO_FLAG || flags==ID3V24_UNSYNCH_FLAG) return 0; if( flags==ID3V24_EXT_HEADER_FLAG ) @@ -744,7 +744,7 @@ static int read_id3v2_tags(Demuxer *demuxer) { char buf[4]; - stream_t* s=demuxer->stream; + Stream* s=demuxer->stream; unsigned vers,rev,flags,hsize; stream_seek(s,3); /* skip 'ID3' */ vers=stream_read_char(s); @@ -767,7 +767,7 @@ int retval=0; uint32_t fcc,fcc1,fmt; uint8_t *p,b[32]; - stream_t *s; + Stream *s; *brate=*samplerate=*channels=0; s = demuxer->stream; stream_seek(s,fptr); @@ -803,7 +803,7 @@ static MPXP_Rc audio_probe(Demuxer* demuxer) { uint32_t fcc1,fcc2; - stream_t *s; + Stream *s; uint8_t *p; s = demuxer->stream; fcc1=stream_read_dword(s); @@ -829,7 +829,7 @@ #define FRAMES_AND_BYTES (FRAMES_FLAG | BYTES_FLAG) #define MPG_MD_MONO 3 -static void Xing_test(stream_t *s,uint8_t *hdr,da_priv_t *priv) +static void Xing_test(Stream *s,uint8_t *hdr,da_priv_t *priv) { off_t fpos; unsigned mpeg1, mode, sr_index; @@ -865,7 +865,7 @@ extern const demuxer_driver_t demux_audio; static Opaque* audio_open(Demuxer* demuxer) { - stream_t *s; + Stream *s; sh_audio_t* sh_audio; uint8_t hdr[HDR_SIZE]; uint32_t fcc,fcc2; @@ -1375,7 +1375,7 @@ return priv; } -static uint32_t mpc_get_bits(da_priv_t* priv, stream_t* s, int bits) { +static uint32_t mpc_get_bits(da_priv_t* priv, Stream* s, int bits) { uint32_t out = priv->dword; uint32_t mask = (1 << bits) - 1; priv->pos += bits; @@ -1398,7 +1398,7 @@ sh_audio_t* sh_audio; Demuxer* demux; da_priv_t* priv; - stream_t* s; + Stream* s; int frmt,seof; #ifdef MP_DEBUG assert(ds != NULL); @@ -1552,7 +1552,7 @@ s = demux->stream; sh_audio = reinterpret_cast<sh_audio_t*>(ds->sh); - if (s->eof) return 0; + if (s->eof()) return 0; bit_len = mpc_get_bits(priv, s, 20); Demuxer_Packet* dp=new(zeromem) Demuxer_Packet((bit_len + 7) / 8); @@ -1644,7 +1644,7 @@ static void audio_seek(Demuxer *demuxer,const seek_args_t* seeka){ sh_audio_t* sh_audio; - stream_t* s; + Stream* s; int base,pos,frmt; float len; da_priv_t* priv; @@ -1672,7 +1672,7 @@ } mpc_get_bits(priv, s, bit_len % 32); priv->last_pts += priv->pts_per_packet; - if (s->eof) break; + if (s->eof()) break; } return; } Modified: mplayerxp/libmpdemux/demux_avi.cpp =================================================================== --- mplayerxp/libmpdemux/demux_avi.cpp 2012-12-07 16:03:55 UTC (rev 517) +++ mplayerxp/libmpdemux/demux_avi.cpp 2012-12-07 17:50:52 UTC (rev 518) @@ -1141,7 +1141,7 @@ demuxer->priv=priv; //---- AVI header: - read_avi_header(demuxer,(demuxer->stream->type()&STREAMTYPE_SEEKABLE)?index_mode:-2); + read_avi_header(demuxer,(demuxer->stream->type()&Stream::Type_Seekable)?index_mode:-2); if(demuxer->audio->id>=0 && !demuxer->get_sh_audio(demuxer->audio->id)){ MSG_WARN("AVI: invalid audio stream ID: %d - ignoring (nosound)\n",demuxer->audio->id); Modified: mplayerxp/libmpdemux/demux_lavf.cpp =================================================================== --- mplayerxp/libmpdemux/demux_lavf.cpp 2012-12-07 16:03:55 UTC (rev 517) +++ mplayerxp/libmpdemux/demux_lavf.cpp 2012-12-07 17:50:52 UTC (rev 518) @@ -129,19 +129,19 @@ } static int mpxp_read(any_t*opaque, unsigned char *buf, int size){ - stream_t* stream=reinterpret_cast<stream_t*>(opaque); + Stream* stream=reinterpret_cast<Stream*>(opaque); int ret; if(stream_eof(stream)) //needed? return -1; ret=stream_read(stream, buf, size); - MSG_DBG2("%d=mp_read(%p, %p, %d), eof:%d\n", ret, stream, buf, size, stream->eof); + MSG_DBG2("%d=mp_read(%p, %p, %d), eof:%d\n", ret, stream, buf, size, stream->eof()); return ret; } static int64_t mpxp_seek(any_t*opaque, int64_t pos, int whence){ - stream_t* stream=reinterpret_cast<stream_t*>(opaque); + Stream* stream=reinterpret_cast<Stream*>(opaque); MSG_DBG2("mpxp_seek(%p, %d, %d)\n", stream, (int)pos, whence); if(whence == SEEK_CUR) pos +=stream_tell(stream); @@ -150,7 +150,7 @@ else if(whence != SEEK_SET) return -1; - if(pos<stream->end_pos() && stream->eof) + if(pos<stream->end_pos() && stream->eof()) stream_reset(stream); if(stream_seek(stream, pos)==0) return -1; Modified: mplayerxp/libmpdemux/demux_mkv.cpp =================================================================== --- mplayerxp/libmpdemux/demux_mkv.cpp 2012-12-07 16:03:55 UTC (rev 517) +++ mplayerxp/libmpdemux/demux_mkv.cpp 2012-12-07 17:50:52 UTC (rev 518) @@ -114,7 +114,7 @@ static uint32_t -ebml_read_id (stream_t *s, int *length) +ebml_read_id (Stream *s, int *length) { int i, len_mask = 0x80; uint32_t id; @@ -182,7 +182,7 @@ * Read: element content length. */ static uint64_t -ebml_read_length (stream_t *s, int *length) +ebml_read_length (Stream *s, int *length) { int i, j, num_ffs = 0, len_mask = 0x80; uint64_t len; @@ -211,7 +211,7 @@ * Read the next element as an unsigned int. */ static uint64_t -ebml_read_uint (stream_t *s, uint64_t *length) +ebml_read_uint (Stream *s, uint64_t *length) { uint64_t len, value = 0; int l; @@ -232,7 +232,7 @@ * Read the next element as a signed int. */ static int64_t -ebml_read_int (stream_t *s, uint64_t *length) +ebml_read_int (Stream *s, uint64_t *length) { int64_t value = 0; uint64_t len; @@ -259,7 +259,7 @@ * Read the next element as a float. */ static long double -ebml_read_float (stream_t *s, uint64_t *length) +ebml_read_float (Stream *s, uint64_t *length) { long double value; uint64_t len; @@ -307,7 +307,7 @@ * Read the next element as an ASCII string. */ static char * -ebml_read_ascii (stream_t *s, uint64_t *length) +ebml_read_ascii (Stream *s, uint64_t *length) { uint64_t len; char *str; @@ -334,7 +334,7 @@ * Read the next element as a UTF-8 string. */ static char * -ebml_read_utf8 (stream_t *s, uint64_t *length) +ebml_read_utf8 (Stream *s, uint64_t *length) { return ebml_read_ascii (s, length); } @@ -343,7 +343,7 @@ * Skip the next element. */ static int -ebml_read_skip (stream_t *s, uint64_t *length) +ebml_read_skip (Stream *s, uint64_t *length) { uint64_t len; int l; @@ -364,7 +364,7 @@ * are supposed to be sub-elements which can be read separately. */ static uint32_t -ebml_read_master (stream_t *s, uint64_t *length) +ebml_read_master (Stream *s, uint64_t *length) { uint64_t len; uint32_t id; @@ -387,7 +387,7 @@ * Read an EBML header. */ static char * -ebml_read_header (stream_t *s, int *version) +ebml_read_header (Stream *s, int *version) { uint64_t length, l, num; uint32_t id; @@ -1055,7 +1055,7 @@ demux_mkv_read_info (Demuxer *demuxer) { mkv_demuxer_t *mkv_d = static_cast<mkv_demuxer_t*>(demuxer->priv); - stream_t *s = demuxer->stream; + Stream *s = demuxer->stream; uint64_t length, l; int il; uint64_t tc_scale = 1000000; @@ -1114,7 +1114,7 @@ static int demux_mkv_read_trackencodings (Demuxer *demuxer, mkv_track_t *track) { - stream_t *s = demuxer->stream; + Stream *s = demuxer->stream; mkv_content_encoding_t *ce, e; uint64_t len, length, l; int il, n; @@ -1266,7 +1266,7 @@ static int demux_mkv_read_trackaudio (Demuxer *demuxer, mkv_track_t *track) { - stream_t *s = demuxer->stream; + Stream *s = demuxer->stream; uint64_t len, length, l; int il; @@ -1324,7 +1324,7 @@ static int demux_mkv_read_trackvideo (Demuxer *demuxer, mkv_track_t *track) { - stream_t *s = demuxer->stream; + Stream *s = demuxer->stream; uint64_t len, length, l; int il; @@ -1404,7 +1404,7 @@ demux_mkv_read_trackentry (Demuxer *demuxer) { mkv_demuxer_t *mkv_d = static_cast<mkv_demuxer_t*>(demuxer->priv); - stream_t *s = demuxer->stream; + Stream *s = demuxer->stream; mkv_track_t *track; uint64_t len, length, l; int il; @@ -1585,7 +1585,7 @@ demux_mkv_read_tracks (Demuxer *demuxer) { mkv_demuxer_t *mkv_d = static_cast<mkv_demuxer_t*>(demuxer->priv); - stream_t *s = demuxer->stream; + Stream *s = demuxer->stream; uint64_t length, l; int il; @@ -1620,7 +1620,7 @@ demux_mkv_read_cues (Demuxer *demuxer) { mkv_demuxer_t *mkv_d = static_cast<mkv_demuxer_t*>(demuxer->priv); - stream_t *s = demuxer->stream; + Stream *s = demuxer->stream; uint64_t length, l, time, track, pos; off_t off; int i, il; @@ -1736,7 +1736,7 @@ demux_mkv_read_chapters (Demuxer *demuxer) { mkv_demuxer_t *mkv_d = static_cast<mkv_demuxer_t*>(demuxer->priv); - stream_t *s = demuxer->stream; + Stream *s = demuxer->stream; uint64_t length, l; int il; @@ -1880,7 +1880,7 @@ demux_mkv_read_attachments (Demuxer *demuxer) { mkv_demuxer_t *mkv_d = static_cast<mkv_demuxer_t*>(demuxer->priv); - stream_t *s = demuxer->stream; + Stream *s = demuxer->stream; uint64_t length, l; int il; @@ -1995,7 +1995,7 @@ demux_mkv_read_seekhead (Demuxer *demuxer) { mkv_demuxer_t *mkv_d = static_cast<mkv_demuxer_t*>(demuxer->priv); - stream_t *s = demuxer->stream; + Stream *s = demuxer->stream; uint64_t length, l, seek_pos, saved_pos, num; uint32_t seek_id; int i, il, res = 0; @@ -2788,7 +2788,7 @@ static MPXP_Rc mkv_probe(Demuxer *demuxer) { - stream_t *s = demuxer->stream; + Stream *s = demuxer->stream; int version; char *str; stream_seek(s, s->start_pos()); @@ -2803,7 +2803,7 @@ static Opaque* mkv_open(Demuxer *demuxer) { - stream_t *s = demuxer->stream; + Stream *s = demuxer->stream; mkv_demuxer_t *mkv_d; mkv_track_t *track; int i, version, cont = 0; @@ -3671,7 +3671,7 @@ { UNUSED(ds); mkv_demuxer_t *mkv_d = static_cast<mkv_demuxer_t*>(demuxer->priv); - stream_t *s = demuxer->stream; + Stream *s = demuxer->stream; uint64_t l; int il, tmp; @@ -3821,7 +3821,7 @@ mkv_d->free_cached_dps (); if (!(seeka->flags & 2)) /* time in secs */ { - stream_t *s = demuxer->stream; + Stream *s = demuxer->stream; int64_t target_timecode = 0, diff, min_diff=0xFFFFFFFFFFFFFFFLL; int i; @@ -3846,7 +3846,7 @@ else stream_seek (s, stream_tell (s) + mkv_d->cluster_size); /* parse all the clusters upto target_filepos */ - while (!s->eof && stream_tell(s) < (off_t) target_filepos) + while (!s->eof() && stream_tell(s) < (off_t) target_filepos) { switch (ebml_read_id (s, &i)) { @@ -3860,7 +3860,7 @@ } ebml_read_skip (s, NULL); } - if (s->eof) + if (s->eof()) stream_reset(s); } @@ -3942,7 +3942,7 @@ else { mkv_demuxer_t *mkv_d = static_cast<mkv_demuxer_t*>(demuxer->priv); - stream_t *s = demuxer->stream; + Stream *s = demuxer->stream; uint64_t target_filepos; mkv_index_t *_index = NULL; int i; Modified: mplayerxp/libmpdemux/demux_mov.cpp =================================================================== --- mplayerxp/libmpdemux/demux_mov.cpp 2012-12-07 16:03:55 UTC (rev 517) +++ mplayerxp/libmpdemux/demux_mov.cpp 2012-12-07 17:50:52 UTC (rev 518) @@ -1327,7 +1327,7 @@ unsigned char* moov_buf=new unsigned char[moov_sz+16]; int zret; z_stream zstrm; - stream_t* backup; + Stream* backup; if (moov_sz > std::numeric_limits<size_t>::max() - 16) { MSG_ERR( "Invalid cmvd atom size %d\n", moov_sz); Modified: mplayerxp/libmpdemux/demux_mpg.cpp =================================================================== --- mplayerxp/libmpdemux/demux_mpg.cpp 2012-12-07 16:03:55 UTC (rev 517) +++ mplayerxp/libmpdemux/demux_mpg.cpp 2012-12-07 17:50:52 UTC (rev 518) @@ -79,7 +79,7 @@ int num_mp3audio_packets; }mpg_stat; -static unsigned int read_mpeg_timestamp(stream_t *s,int c){ +static unsigned int read_mpeg_timestamp(Stream *s,int c){ int d,e; unsigned int pts; d=stream_read_word(s); @@ -561,7 +561,7 @@ } if(newpos<demuxer->movi_start){ - if(!(demuxer->stream->type()&STREAMTYPE_PROGRAM)) demuxer->movi_start=0; // for VCD + if(!(demuxer->stream->type()&Stream::Type_Program)) demuxer->movi_start=0; // for VCD if(newpos<demuxer->movi_start) newpos=demuxer->movi_start; } Modified: mplayerxp/libmpdemux/demux_mpxp64.cpp =================================================================== --- mplayerxp/libmpdemux/demux_mpxp64.cpp 2012-12-07 16:03:55 UTC (rev 517) +++ mplayerxp/libmpdemux/demux_mpxp64.cpp 2012-12-07 17:50:52 UTC (rev 518) @@ -140,7 +140,7 @@ static void mpxpav64_read_indexes(Demuxer *demuxer,unsigned id,uint64_t idx_off) { uint64_t i,fpos,iid; - stream_t *s=demuxer->stream; + Stream *s=demuxer->stream; mpxpav64_priv_t *priv=static_cast<mpxpav64_priv_t*>(demuxer->priv); unsigned sid; int is_valid; @@ -185,7 +185,7 @@ static int mpxpav64_read_st64v(Demuxer *demuxer,unsigned hsize,unsigned id){ mpxpav64_priv_t *priv=static_cast<mpxpav64_priv_t*>(demuxer->priv); - stream_t *s=demuxer->stream; + Stream *s=demuxer->stream; uint32_t fourcc,fsize; int have_bih=0; sh_video_t *sh=demuxer->new_sh_video(id); @@ -259,7 +259,7 @@ } static int mpxpav64_read_st64a(Demuxer *demuxer,unsigned hsize,unsigned id){ - stream_t *s=demuxer->stream; + Stream *s=demuxer->stream; uint32_t fourcc,fsize; int have_wf=0; sh_audio_t *sh=demuxer->new_sh_audio(id); @@ -308,7 +308,7 @@ } static int mpxpav64_read_st64(Demuxer *demuxer,unsigned hsize,unsigned id){ - stream_t *s=demuxer->stream; + Stream *s=demuxer->stream; mpxpav64_priv_t *priv=static_cast<mpxpav64_priv_t*>(demuxer->priv); uint64_t idx_off; uint32_t fourcc,hoff; @@ -362,7 +362,7 @@ static void mpxpav64_read_fcnt(Demuxer* demuxer,unsigned fsize) { mpxpav64_priv_t *priv=static_cast<mpxpav64_priv_t*>(demuxer->priv); - stream_t *s=demuxer->stream; + Stream *s=demuxer->stream; int64_t hoff; const char * codepage; hoff=stream_tell(s)+fsize; @@ -434,7 +434,7 @@ } static Opaque* mpxpav64_open(Demuxer* demuxer){ - stream_t *s=demuxer->stream; + Stream *s=demuxer->stream; uint64_t id,hsize,t; uint32_t fourcc; uint16_t scount=0; @@ -529,7 +529,7 @@ static int mpxpav64_read_packet(Demuxer *demux,unsigned id,uint64_t len,float pts,int keyframe) { Demuxer_Stream *ds=NULL; - stream_t* s=demux->stream; + Stream* s=demux->stream; if(demux->video->id==-1) if(demux->get_sh_video(id)) @@ -578,7 +578,7 @@ /* DATx|stn|size|pts|stream data of size32 */ static int mpxpav64_demux(Demuxer *demux,Demuxer_Stream *__ds){ - stream_t* s=demux->stream; + Stream* s=demux->stream; mpxpav64_priv_t *priv=static_cast<mpxpav64_priv_t*>(demux->priv); uint8_t flg; char p[8]; @@ -695,7 +695,7 @@ static int mpxpav64_test_seekpoint(Demuxer *demuxer) { - stream_t* s=demuxer->stream; + Stream* s=demuxer->stream; uint64_t len=0; int is_key,nkeys=0; char p[4]; @@ -751,7 +751,7 @@ static int mpxpav64_sync(Demuxer *demuxer) { - stream_t* s=demuxer->stream; + Stream* s=demuxer->stream; char p[4]; off_t rpos,cpos=stream_tell(s); while(!stream_eof(s)) Modified: mplayerxp/libmpdemux/demux_ogg.cpp =================================================================== --- mplayerxp/libmpdemux/demux_ogg.cpp 2012-12-07 16:03:55 UTC (rev 517) +++ mplayerxp/libmpdemux/demux_ogg.cpp 2012-12-07 17:50:52 UTC (rev 518) @@ -592,7 +592,7 @@ /// otherwise try to get at least the final_granulepos static void demux_ogg_scan_stream(Demuxer* demuxer) { ogg_demuxer_t* ogg_d = static_cast<ogg_demuxer_t*>(demuxer->priv); - stream_t *s = demuxer->stream; + Stream *s = demuxer->stream; ogg_sync_state* sync = &ogg_d->sync; ogg_page* page= &ogg_d->page; ogg_stream_state* oss; @@ -635,7 +635,7 @@ if(np <= 0) { // We need more data char* buf = ogg_sync_buffer(sync,BLOCK_SIZE); int len = stream_read(s,buf,BLOCK_SIZE); - if(len == 0 && s->eof) + if(len == 0 && s->eof()) break; ogg_sync_wrote(sync,len); continue; @@ -690,7 +690,7 @@ if(np <= 0) { // We need more data char* buf = ogg_sync_buffer(sync,BLOCK_SIZE); int len = stream_read(s,buf,BLOCK_SIZE); - if(len == 0 && s->eof) { + if(len == 0 && s->eof()) { MSG_ERR("EOF while trying to get the first page !!!!\n"); break; } @@ -743,7 +743,7 @@ /// Open an ogg physical stream static Opaque* ogg_open(Demuxer* demuxer) { ogg_demuxer_t* ogg_d; - stream_t *s; + Stream *s; char* buf; int np,s_no, n_audio = 0, n_video = 0; int audio_id = -1, video_id = -1, text_id = -1; @@ -785,7 +785,7 @@ int len; buf = ogg_sync_buffer(sync,BLOCK_SIZE); len = stream_read(s,buf,BLOCK_SIZE); - if(len == 0 && s->eof) { + if(len == 0 && s->eof()) { goto err_out; } ogg_sync_wrote(sync,len); @@ -1090,7 +1090,7 @@ static int ogg_demux(Demuxer *d,Demuxer_Stream *__ds) { UNUSED(__ds); ogg_demuxer_t* ogg_d; - stream_t *s; + Stream *s; Demuxer_Stream *ds; ogg_sync_state* sync; ogg_stream_state* os; @@ -1131,7 +1131,7 @@ /// We need more data buf = ogg_sync_buffer(sync,BLOCK_SIZE); len = stream_read(s,buf,BLOCK_SIZE); - if(len == 0 && s->eof) { + if(len == 0 && s->eof()) { MSG_DBG2("Ogg : Stream EOF !!!!\n"); return 0; } @@ -1274,7 +1274,7 @@ if(np <= 0) { // We need more data char* buf = ogg_sync_buffer(sync,BLOCK_SIZE); int len = stream_read(demuxer->stream,buf,BLOCK_SIZE); - if(len == 0 && demuxer->stream->eof) { + if(len == 0 && demuxer->stream->eof()) { MSG_ERR("EOF while trying to seek !!!!\n"); break; } Modified: mplayerxp/libmpdemux/demux_rawaudio.cpp =================================================================== --- mplayerxp/libmpdemux/demux_rawaudio.cpp 2012-12-07 16:03:55 UTC (rev 517) +++ mplayerxp/libmpdemux/demux_rawaudio.cpp 2012-12-07 17:50:52 UTC (rev 518) @@ -36,7 +36,7 @@ static MPXP_Rc rawaudio_probe(Demuxer* demuxer) { - if(demuxer->stream->type() & STREAMTYPE_RAWAUDIO || use_rawaudio) { + if(demuxer->stream->type() & Stream::Type_RawAudio || use_rawaudio) { demuxer->file_format=Demuxer::Type_RAWAUDIO; return MPXP_Ok; } @@ -71,7 +71,7 @@ demuxer->audio->sh = sh_audio; demuxer->audio->id = 0; sh_audio->ds = demuxer->audio; - if(!(demuxer->stream->type() & STREAMTYPE_SEEKABLE)) demuxer->flags &= ~Demuxer::Seekable; + if(!(demuxer->stream->type() & Stream::Type_Seekable)) demuxer->flags &= ~Demuxer::Seekable; check_pin("demuxer",demuxer->pin,DEMUX_PIN); return demuxer; } @@ -96,7 +96,7 @@ } static void rawaudio_seek(Demuxer *demuxer,const seek_args_t* seeka){ - stream_t* s = demuxer->stream; + Stream* s = demuxer->stream; sh_audio_t* sh_audio = reinterpret_cast<sh_audio_t*>(demuxer->audio->sh); off_t base,pos; Modified: mplayerxp/libmpdemux/demux_rawvideo.cpp =================================================================== --- mplayerxp/libmpdemux/demux_rawvideo.cpp 2012-12-07 16:03:55 UTC (rev 517) +++ mplayerxp/libmpdemux/demux_rawvideo.cpp 2012-12-07 17:50:52 UTC (rev 518) @@ -60,7 +60,7 @@ static MPXP_Rc rawvideo_probe(Demuxer* demuxer) { - if(demuxer->stream->type() & STREAMTYPE_RAWVIDEO || priv.use_rawvideo) { + if(demuxer->stream->type() & Stream::Type_RawVideo || priv.use_rawvideo) { priv.fps=25; demuxer->file_format=Demuxer::Type_RAWVIDEO; return MPXP_Ok; @@ -131,7 +131,7 @@ } static void rawvideo_seek(Demuxer *demuxer,const seek_args_t* seeka){ - stream_t* s = demuxer->stream; + Stream* s = demuxer->stream; off_t pos; pos =(seeka->flags & DEMUX_SEEK_SET)?demuxer->movi_start:stream_tell(s); Modified: mplayerxp/libmpdemux/demux_real.cpp =================================================================== --- mplayerxp/libmpdemux/demux_real.cpp 2012-12-07 16:03:55 UTC (rev 517) +++ mplayerxp/libmpdemux/demux_real.cpp 2012-12-07 17:50:52 UTC (rev 518) @@ -452,7 +452,7 @@ len = stream_read_word(demuxer->stream); } else if ((version == 0x494e) && (len == 0x4458)) { MSG_V("demux_real: Found INDX chunk. EOF.\n"); - demuxer->stream->eof=1; + demuxer->stream->eof(1); return 0; } Modified: mplayerxp/libmpdemux/demux_ts.cpp =================================================================== --- mplayerxp/libmpdemux/demux_ts.cpp 2012-12-07 16:03:55 UTC (rev 517) +++ mplayerxp/libmpdemux/demux_ts.cpp 2012-12-07 17:50:52 UTC (rev 518) @@ -392,7 +392,7 @@ while(((c=stream_read_char(demuxer->stream)) != 0x47) && (c >= 0) && (i < MAX_CHECK_SIZE) - && ! demuxer->stream->eof + && ! demuxer->stream->eof() ) i++; @@ -652,7 +652,7 @@ while(1) { pos = stream_tell(demuxer->stream); - if(pos > end_pos || demuxer->stream->eof) + if(pos > end_pos || demuxer->stream->eof()) break; if(ts_parse(demuxer, &es, tmp, 1)) @@ -883,7 +883,7 @@ if(video_found || audio_found) { - if(demuxer->stream->eof && (ret == 0)) + if(demuxer->stream->eof() && (ret == 0)) ret = init_pos; MSG_INFO( " PROGRAM N. %d\n", param->prog); } @@ -1484,13 +1484,13 @@ -static int ts_sync(stream_t *stream) +static int ts_sync(Stream *stream) { int c=0; MSG_DBG2( "TS_SYNC \n"); - while(((c=stream_read_char(stream)) != 0x47) && ! stream->eof); + while(((c=stream_read_char(stream)) != 0x47) && ! stream->eof()); if(c == 0x47) return c; @@ -2588,7 +2588,7 @@ int buf_size, is_start, pid, base; int len, cc, cc_ok, afc, retv = 0, is_video, is_audio, is_sub; ts_priv_t * priv = static_cast<ts_priv_t*>(demuxer->priv); - stream_t *stream = demuxer->stream; + Stream *stream = demuxer->stream; unsigned char *p; Demuxer_Stream *ds = NULL; Demuxer_Packet **dp = NULL; Modified: mplayerxp/libmpdemux/demux_ty.cpp =================================================================== --- mplayerxp/libmpdemux/demux_ty.cpp 2012-12-07 16:03:55 UTC (rev 517) +++ mplayerxp/libmpdemux/demux_ty.cpp 2012-12-07 17:50:52 UTC (rev 518) @@ -122,7 +122,7 @@ stream_seek(demux->stream, 0); MSG_DBG3("Dumping tar contents\n" ); - while (!demux->stream->eof) + while (!demux->stream->eof()) { char header[ 512 ]; char *name; @@ -360,7 +360,7 @@ #endif MSG_DBG3( "ty:ty processing\n" ); - if( demux->stream->eof ) return 0; + if( demux->stream->eof()) return 0; // ====================================================================== // If we haven't figured out the size of the stream, let's do so @@ -465,7 +465,7 @@ if ( tivo->size > 0 && stream_tell( demux->stream ) > tivo->size ) { - demux->stream->eof = 1; + demux->stream->eof(1); return 0; } Modified: mplayerxp/libmpdemux/demux_vqf.cpp =================================================================== --- mplayerxp/libmpdemux/demux_vqf.cpp 2012-12-07 16:03:55 UTC (rev 517) +++ mplayerxp/libmpdemux/demux_vqf.cpp 2012-12-07 17:50:52 UTC (rev 518) @@ -42,7 +42,7 @@ static MPXP_Rc vqf_probe(Demuxer* demuxer) { char buf[12]; - stream_t *s; + Stream *s; s = demuxer->stream; stream_read(s,buf,12); if(memcmp(buf,"TWIN",4)==0) return MPXP_Ok; /*version: 97012000*/ @@ -52,7 +52,7 @@ static Opaque* vqf_open(Demuxer* demuxer) { sh_audio_t* sh_audio; WAVEFORMATEX* w; - stream_t *s; + Stream *s; headerInfo *hi; s = demuxer->stream; @@ -210,7 +210,7 @@ } static void vqf_seek(Demuxer *demuxer,const seek_args_t* seeka){ - stream_t* s = demuxer->stream; + Stream* s = demuxer->stream; sh_audio_t* sh_audio = reinterpret_cast<sh_audio_t*>(demuxer->audio->sh); off_t base,pos; Modified: mplayerxp/libmpdemux/demuxer.cpp =================================================================== --- mplayerxp/libmpdemux/demuxer.cpp 2012-12-07 16:03:55 UTC (rev 517) +++ mplayerxp/libmpdemux/demuxer.cpp 2012-12-07 17:50:52 UTC (rev 518) @@ -114,7 +114,7 @@ } } -void Demuxer::_init(stream_t *_stream,int a_id,int v_id,int s_id) +void Demuxer::_init(Stream *_stream,int a_id,int v_id,int s_id) { stream=_stream; movi_start=_stream->start_pos(); @@ -138,7 +138,7 @@ pin=DEMUX_PIN; } -Demuxer::Demuxer(stream_t *_stream,int a_id,int v_id,int s_id) +Demuxer::Demuxer(Stream *_stream,int a_id,int v_id,int s_id) :demuxer_priv(new(zeromem) demuxer_priv_t), _info(new(zeromem) Demuxer_Info) { @@ -364,8 +364,8 @@ return MPXP_Ok; } -Demuxer* Demuxer::open(stream_t *vs,int audio_id,int video_id,int dvdsub_id){ - stream_t *as = NULL,*ss = NULL; +Demuxer* Demuxer::open(Stream *vs,int audio_id,int video_id,int dvdsub_id){ + Stream *as = NULL,*ss = NULL; Demuxer *vd,*ad = NULL,*sd = NULL; int afmt = 0,sfmt = 0; libinput_t* libinput=NULL; @@ -374,16 +374,18 @@ #endif if(demux_conf.audio_stream) { - as = open_stream(libinput,demux_conf.audio_stream,&afmt,NULL); - if(!as) { + as = new(zeromem) Stream(); + if(as->open(libinput,demux_conf.audio_stream,&afmt,NULL)!=MPXP_Ok) { MSG_ERR("Can't open audio stream: %s\n",demux_conf.audio_stream); + delete as; return NULL; } } if(demux_conf.sub_stream) { - ss = open_stream(libinput,demux_conf.sub_stream,&sfmt,NULL); - if(!ss) { + ss = new(zeromem) Stream(); + if(ss->open(libinput,demux_conf.sub_stream,&sfmt,NULL)!=MPXP_Ok) { MSG_ERR("Can't open subtitles stream: %s\n",demux_conf.sub_stream); + delete ss; return NULL; } } @@ -423,7 +425,7 @@ demuxer_priv_t& dpriv = static_cast<demuxer_priv_t&>(*demuxer_priv); sh_audio_t *sh_audio=reinterpret_cast<sh_audio_t*>(audio->sh); - if(!(stream->type()&STREAMTYPE_SEEKABLE)) + if(!(stream->type()&Stream::Type_Seekable)) { MSG_WARN("Stream is not seekable\n"); return 0; Modified: mplayerxp/libmpdemux/demuxer.h =================================================================== --- mplayerxp/libmpdemux/demuxer.h 2012-12-07 16:03:55 UTC (rev 517) +++ mplayerxp/libmpdemux/demuxer.h 2012-12-07 17:50:52 UTC (rev 518) @@ -48,7 +48,7 @@ struct Demuxer : public Opaque { public: Demuxer(); - Demuxer(stream_t *stream,int a_id,int v_id,int s_id); + Demuxer(Stream *stream,int a_id,int v_id,int s_id); virtual ~Demuxer(); enum demuxer_type_e { @@ -101,7 +101,7 @@ Switch_Subs =3 }; - static Demuxer* open(stream_t *stream,int aid,int vid,int sid); + static Demuxer* open(Stream* stream,int aid,int vid,int sid); virtual MPXP_Rc open(); virtual int demux(Demuxer_Stream* ds); @@ -126,7 +126,7 @@ char antiviral_hole[RND_CHAR3]; unsigned pin; /**< personal identification number */ - stream_t* stream; /**< stream for movie reading */ + Stream* stream; /**< stream for movie reading */ Demuxer_Stream* audio; /**< audio buffer/demuxer */ Demuxer_Stream* video; /**< video buffer/demuxer */ Demuxer_Stream* sub; /**< DVD's subtitle buffer/demuxer */ @@ -139,7 +139,7 @@ int synced; /**< indicates stream synchronisation. TODO: mpg->priv */ Opaque* priv; /**< private data of demuxer's driver.*/ private: - void _init(stream_t *_stream,int a_id,int v_id,int s_id); + void _init(Stream *_stream,int a_id,int v_id,int s_id); LocalPtr<Opaque> demuxer_priv; LocalPtr<Demuxer_Info> _info; /**< human-readable info from stream/movie (like movie name,author,duration)*/ @@ -153,7 +153,7 @@ inline Demuxer::demuxer_flags_e operator^=(Demuxer::demuxer_flags_e a, Demuxer::demuxer_flags_e b) { return (a=static_cast<Demuxer::demuxer_flags_e>(static_cast<unsigned>(a)^static_cast<unsigned>(b))); } // This is defined here because demux_stream_t ins't defined in stream.h - stream_t* __FASTCALL__ new_ds_stream(Demuxer_Stream *ds); + Stream* __FASTCALL__ new_ds_stream(Demuxer_Stream *ds); Demuxer* new_demuxers_demuxer(Demuxer* vd, Demuxer* ad, Demuxer* sd); }// namespace mpxp #endif Modified: mplayerxp/libmpdemux/demuxer_stream.cpp =================================================================== --- mplayerxp/libmpdemux/demuxer_stream.cpp 2012-12-07 16:03:55 UTC (rev 517) +++ mplayerxp/libmpdemux/demuxer_stream.cpp 2012-12-07 17:50:52 UTC (rev 518) @@ -77,7 +77,7 @@ dp->length(),dp->pts,(unsigned int)dp->pos,demuxer->audio->_packs,demuxer->video->_packs); } -void Demuxer_Stream::read_packet(stream_t *stream,int len,float _pts,off_t _pos,dp_flags_e _flags){ +void Demuxer_Stream::read_packet(Stream *stream,int len,float _pts,off_t _pos,dp_flags_e _flags){ Demuxer_Packet* dp=new(zeromem) Demuxer_Packet(len); len=stream_read(stream,dp->buffer(),len); dp->resize(len); Modified: mplayerxp/libmpdemux/demuxer_stream.h =================================================================== --- mplayerxp/libmpdemux/demuxer_stream.h 2012-12-07 16:03:55 UTC (rev 517) +++ mplayerxp/libmpdemux/demuxer_stream.h 2012-12-07 17:50:52 UTC (rev 518) @@ -9,14 +9,14 @@ namespace mpxp { struct Demuxer; - struct stream_t; + struct Stream; class Demuxer_Stream : public Opaque { public: Demuxer_Stream(Demuxer *demuxer,int id); virtual ~Demuxer_Stream(); void add_packet(Demuxer_Packet* dp); - void read_packet(stream_t *stream,int len,float pts,off_t pos,dp_flags_e flags); + void read_packet(Stream *stream,int len,float pts,off_t pos,dp_flags_e flags); int read_data(unsigned char* mem,int len); void free_packs(); void free_packs_until_pts(float pts); Modified: mplayerxp/libmpdemux/parse_mp4.cpp =================================================================== --- mplayerxp/libmpdemux/parse_mp4.cpp 2012-12-07 16:03:55 UTC (rev 517) +++ mplayerxp/libmpdemux/parse_mp4.cpp 2012-12-07 17:50:52 UTC (rev 518) @@ -18,7 +18,7 @@ #define freereturn(a,b) delete a; return b -int mp4_read_descr_len(stream_t *s) { +int mp4_read_descr_len(Stream *s) { uint8_t b; uint8_t numBytes = 0; uint32_t length = 0; @@ -35,7 +35,7 @@ /* parse the data part of MP4 esds atoms */ int mp4_parse_esds(unsigned char *data, int datalen, esds_t *esds) { /* create memory stream from data */ - stream_t *s = new_memory_stream(data, datalen); + Stream *s = new_memory_stream(data, datalen); uint8_t len; #ifdef MP4_DUMPATOM {int i; Modified: mplayerxp/libmpdemux/yuv4mpeg.cpp =================================================================== --- mplayerxp/libmpdemux/yuv4mpeg.cpp 2012-12-07 16:03:55 UTC (rev 517) +++ mplayerxp/libmpdemux/yuv4mpeg.cpp 2012-12-07 17:50:52 UTC (rev 518) @@ -65,7 +65,7 @@ *************************************************************************/ -ssize_t y4m_read(stream_t *s, char *buf, size_t len) +ssize_t y4m_read(Stream *s, char *buf, size_t len) { ssize_t n; @@ -458,7 +458,7 @@ *************************************************************************/ -int y4m_read_stream_header(stream_t *s, y4m_stream_info_t *i) +int y4m_read_stream_header(Stream *s, y4m_stream_info_t *i) { char line[Y4M_LINE_MAX]; char *p; @@ -523,7 +523,7 @@ * *************************************************************************/ -int y4m_read_frame_header(stream_t *s, y4m_frame_info_t *i) +int y4m_read_frame_header(Stream *s, y4m_frame_info_t *i) { char line[Y4M_LINE_MAX]; char *p; @@ -592,7 +592,7 @@ * *************************************************************************/ -int y4m_read_frame(stream_t *s, y4m_stream_info_t *si, +int y4m_read_frame(Stream *s, y4m_stream_info_t *si, y4m_frame_info_t *fi, unsigned char *yuv[3]) { int err; Modified: mplayerxp/libmpdemux/yuv4mpeg.h =================================================================== --- mplayerxp/libmpdemux/yuv4mpeg.h 2012-12-07 16:03:55 UTC (rev 517) +++ mplayerxp/libmpdemux/yuv4mpeg.h 2012-12-07 17:50:52 UTC (rev 518) @@ -270,7 +270,7 @@ ************************************************************************/ /* read len bytes from fd into buf */ -ssize_t y4m_read(stream_t *s, char *buf, size_t len); +ssize_t y4m_read(Stream *s, char *buf, size_t len); #if 0 /* write len bytes from fd into buf */ @@ -291,7 +291,7 @@ int y4m_parse_stream_tags(char *s, y4m_stream_info_t *i); /* read a stream header from file descriptor fd */ -int y4m_read_stream_header(stream_t *s, y4m_stream_info_t *i); +int y4m_read_stream_header(Stream *s, y4m_stream_info_t *i); #if 0 /* write a stream header to file descriptor fd */ @@ -309,7 +309,7 @@ ************************************************************************/ /* read a frame header from file descriptor fd */ -int y4m_read_frame_header(stream_t *s, y4m_frame_info_t *i); +int y4m_read_frame_header(Stream *s, y4m_frame_info_t *i); #if 0 /* write a frame header to file descriptor fd */ @@ -318,7 +318,7 @@ /* read a complete frame (header + data) o yuv[3] points to three buffers, one each for Y, U, V planes */ -int y4m_read_frame(stream_t *s, y4m_stream_info_t *si, +int y4m_read_frame(Stream *s, y4m_stream_info_t *si, y4m_frame_info_t *fi, unsigned char *yuv[3]); #if 0 Modified: mplayerxp/libmpstream/cache2.cpp =================================================================== --- mplayerxp/libmpstream/cache2.cpp 2012-12-07 16:03:55 UTC (rev 517) +++ mplayerxp/libmpstream/cache2.cpp 2012-12-07 17:50:52 UTC (rev 518) @@ -52,7 +52,7 @@ int eof; /* reader's pointers: */ off_t read_filepos; - stream_t* stream; /* parent stream */ + Stream* stream; /* parent stream */ /* thread related stuff */ int in_fill; pthread_mutex_t mutex; @@ -107,11 +107,11 @@ new_start = readpos - c->back_size; if(new_start<c->stream->start_pos()) new_start=c->stream->start_pos(); seek_eof=0; - if(!in_cache && c->stream->type()&STREAMTYPE_SEEKABLE) { + if(!in_cache && c->stream->type()&Stream::Type_Seekable) { /* seeking... */ MSG_DBG2("Out of boundaries... seeking to %lli {in_cache(%i) %lli<%lli>%lli} \n" ,new_start,in_cache,START_FILEPOS(c),readpos,END_FILEPOS(c)); - if(c->stream->eof || c->eof) nc_stream_reset(c->stream); + if(c->stream->eof() || c->eof) c->stream->reset(); c->stream->driver->seek(new_start); if(errno) { MSG_WARN("c2_seek(drv:%s) error: %s\n",c->stream->driver_info->mrl,strerror(errno)); errno=0; } if((c->packets[c->first].filepos=c->stream->driver->tell())<0) seek_eof=1; @@ -267,11 +267,11 @@ return arg; } -int stream_enable_cache(stream_t *stream,libinput_t* libinput,int size,int _min,int prefill){ +int stream_enable_cache(Stream *stream,libinput_t* libinput,int size,int _min,int prefill){ int ss=stream->sector_size()>1?stream->sector_size():STREAM_BUFFER_SIZE; cache_vars_t* c; - if (!(stream->type()&STREAMTYPE_SEEKABLE)) { + if (!(stream->type()&Stream::Type_Seekable)) { // The stream has no 'fd' behind it, so is non-cacheable MSG_WARN("\rThis stream is non-cacheable\n"); return 1; @@ -293,7 +293,7 @@ START_FILEPOS(c),c->read_filepos,END_FILEPOS(c),_min,c->eof,ss); while((c->read_filepos<START_FILEPOS(c) || END_FILEPOS(c)-c->read_filepos<_min) && !c->eof && CP_NEXT(c,c->last)!=c->first){ - if(!(stream->type()&STREAMTYPE_SEEKABLE)) + if(!(stream->type()&Stream::Type_Seekable)) MSG_STATUS("\rCache fill: %5.2f%% (%d bytes) ", 100.0*(float)(END_FILEPOS(c)-c->read_filepos)/(float)(c->buffer_size), END_FILEPOS(c)-c->read_filepos); @@ -309,7 +309,7 @@ return 1; // parent exits } -void stream_disable_cache(stream_t *st) +void stream_disable_cache(Stream *st) { cache_vars_t* c; c=st->cache_data; @@ -343,7 +343,7 @@ unsigned cidx; int was_eof; MSG_DBG2("c2_stream_reset\n"); - nc_stream_reset(c->stream); + c->stream->reset(); cidx=c->first; was_eof=0; do{ was_eof |= (c->packets[cidx].state&CPF_EOF); c->packets[cidx].state&=~CPF_EOF; cidx=CP_NEXT(c,cidx); }while(cidx!=c->first); @@ -567,30 +567,30 @@ /* main interface here! */ -int __FASTCALL__ stream_read(stream_t *s,any_t* _mem,int total) +int __FASTCALL__ stream_read(Stream *s,any_t* _mem,int total) { char *mem = reinterpret_cast<char*>(_mem); if(s->cache_data) return c2_stream_read(s->cache_data,mem,total); else return nc_stream_read(s,mem,total); } -int __FASTCALL__ stream_eof(stream_t *s) +int __FASTCALL__ stream_eof(Stream *s) { if(s->cache_data) return c2_stream_eof(s->cache_data); - else return s->eof; + else return s->eof(); } -void __FASTCALL__ stream_set_eof(stream_t *s,int eof) +void __FASTCALL__ stream_set_eof(Stream *s,int eof) { if(!eof) stream_reset(s); else { if(s->cache_data) c2_stream_set_eof(s->cache_data,eof); - else s->eof=eof; + else s->eof(eof); } } -int __FASTCALL__ stream_read_char(stream_t *s) +int __FASTCALL__ stream_read_char(Stream *s) { if(s->cache_data) { @@ -601,72 +601,72 @@ else return nc_stream_read_char(s); } -off_t __FASTCALL__ stream_tell(stream_t *s) +off_t __FASTCALL__ stream_tell(Stream *s) { if(s->cache_data) return c2_stream_tell(s->cache_data); else return nc_stream_tell(s); } -int __FASTCALL__ stream_seek(stream_t *s,off_t pos) +int __FASTCALL__ stream_seek(Stream *s,off_t pos) { if(s->cache_data) return c2_stream_seek(s->cache_data,pos); else return nc_stream_seek(s,pos); } -int __FASTCALL__ stream_skip(stream_t *s,off_t len) +int __FASTCALL__ stream_skip(Stream *s,off_t len) { if(s->cache_data) return c2_stream_skip(s->cache_data,len); else return nc_stream_skip(s,len); } -MPXP_Rc __FASTCALL__ stream_control(const stream_t *s,unsigned cmd,any_t*param) +MPXP_Rc __FASTCALL__ stream_control(const Stream *s,unsigned cmd,any_t*param) { return nc_stream_control(s,cmd,param); } -void __FASTCALL__ stream_reset(stream_t *s) +void __FASTCALL__ stream_reset(Stream *s) { if(s->cache_data) c2_stream_reset(s->cache_data); - else nc_stream_reset(s); + else s->reset(); } -unsigned int __FASTCALL__ stream_read_word(stream_t *s){ +unsigned int __FASTCALL__ stream_read_word(Stream *s){ unsigned short retval; stream_read(s,(char *)&retval,2); return me2be_16(retval); } -unsigned int __FASTCALL__ stream_read_dword(stream_t *s){ +unsigned int __FASTCALL__ stream_read_dword(Stream *s){ unsigned int retval; stream_read(s,(char *)&retval,4); return me2be_32(retval); } -uint64_t __FASTCALL__ stream_read_qword(stream_t *s){ +uint64_t __FASTCALL__ stream_read_qword(Stream *s){ uint64_t retval; stream_read(s,(char *)&retval,8); return me2be_64(retval); } -unsigned int __FASTCALL__ stream_read_word_le(stream_t *s){ +unsigned int __FASTCALL__ stream_read_word_le(Stream *s){ unsigned short retval; stream_read(s,(char *)&retval,2); return me2le_16(retval); } -unsigned int __FASTCALL__ stream_read_dword_le(stream_t *s){ +unsigned int __FASTCALL__ stream_read_dword_le(Stream *s){ unsigned int retval; stream_read(s,(char *)&retval,4); return me2le_32(retval); } -uint64_t __FASTCALL__ stream_read_qword_le(stream_t *s){ +uint64_t __FASTCALL__ stream_read_qword_le(Stream *s){ uint64_t retval; stream_read(s,(char *)&retval,8); return me2le_64(retval); } -unsigned int __FASTCALL__ stream_read_int24(stream_t *s){ +unsigned int __FASTCALL__ stream_read_int24(Stream *s){ unsigned int y; y = stream_read_char(s); y=(y<<8)|stream_read_char(s); Modified: mplayerxp/libmpstream/cddb.cpp =================================================================== --- mplayerxp/libmpstream/cddb.cpp 2012-12-07 16:03:55 UTC (rev 517) +++ mplayerxp/libmpstream/cddb.cpp 2012-12-07 17:50:52 UTC (rev 518) @@ -494,7 +494,7 @@ } user_name = getenv("LOGNAME"); } - sprintf( cddb_data->cddb_hello, "&hello=%s+%s+%s+%s", user_name, host_name, "MPlayerXP", VERSION ); + sprintf( cddb_data->cddb_hello, "&hello=%s+%s+%s", user_name, host_name, "MPlayerXP"); } int __FASTCALL__ cddb_retrieve(cddb_data_t *cddb_data) { Modified: mplayerxp/libmpstream/network.h =================================================================== --- mplayerxp/libmpstream/network.h 2012-12-07 16:03:55 UTC (rev 517) +++ mplayerxp/libmpstream/network.h 2012-12-07 17:50:52 UTC (rev 518) @@ -26,7 +26,7 @@ #define BUFFER_SIZE 2048 namespace mpxp { - struct stream_t; + struct Stream; struct libinput_t; class Tcp; } Modified: mplayerxp/libmpstream/s_cdd.cpp =================================================================== --- mplayerxp/libmpstream/s_cdd.cpp 2012-12-07 16:03:55 UTC (rev 517) +++ mplayerxp/libmpstream/s_cdd.cpp 2012-12-07 17:50:52 UTC (rev 518) @@ -29,7 +29,7 @@ virtual off_t tell() const; virtual void close(); virtual MPXP_Rc ctrl(unsigned cmd,any_t* param); - virtual stream_type_e type() const; + virtual Stream::type_e type() const; virtual off_t start_pos() const; virtual off_t size() const; virtual off_t sector_size() const; @@ -58,7 +58,7 @@ return priv?MPXP_Ok:MPXP_False; } -stream_type_e Cdda_Stream_Interface::type() const { return STREAMTYPE_RAWAUDIO|STREAMTYPE_SEEKABLE; } +Stream::type_e Cdda_Stream_Interface::type() const { return Stream::Type_RawAudio|Stream::Type_Seekable; } 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; } Modified: mplayerxp/libmpstream/s_dvdnav.cpp =================================================================== --- mplayerxp/libmpstream/s_dvdnav.cpp 2012-12-07 16:03:55 UTC (rev 517) +++ mplayerxp/libmpstream/s_dvdnav.cpp 2012-12-07 17:50:52 UTC (rev 518) @@ -59,7 +59,7 @@ virtual off_t tell() const; virtual void close(); virtual MPXP_Rc ctrl(unsigned cmd,any_t* param); - virtual stream_type_e type() const; + virtual Stream::type_e type() const; virtual off_t start_pos() const; virtual off_t size() const; virtual off_t sector_size() const; @@ -228,11 +228,11 @@ } return MPXP_Ok; } -stream_type_e DvdNav_Stream_Interface::type() const { +Stream::type_e DvdNav_Stream_Interface::type() const { if( dvdnav_is_domain_vmgm(dvdnav) || dvdnav_is_domain_vtsm(dvdnav) || menu_mode ) - return STREAMTYPE_MENU|STREAMTYPE_SEEKABLE; - return STREAMTYPE_SEEKABLE|STREAMTYPE_PROGRAM; + return Stream::Type_Menu|Stream::Type_Seekable; + return Stream::Type_Seekable|Stream::Type_Program; } off_t DvdNav_Stream_Interface::start_pos() const { return cpos; } off_t DvdNav_Stream_Interface::size() const { return -1; } Modified: mplayerxp/libmpstream/s_dvdread.cpp =================================================================== --- mplayerxp/libmpstream/s_dvdread.cpp 2012-12-07 16:03:55 UTC (rev 517) +++ mplayerxp/libmpstream/s_dvdread.cpp 2012-12-07 17:50:52 UTC (rev 518) @@ -60,7 +60,7 @@ virtual off_t tell() const; virtual void close(); virtual MPXP_Rc ctrl(unsigned cmd,any_t* param); - virtual stream_type_e type() const; + virtual Stream::type_e type() const; virtual off_t start_pos() const; virtual off_t size() const; virtual off_t sector_size() const; @@ -712,7 +712,7 @@ spos=0; return MPXP_Ok; } -stream_type_e DvdRead_Stream_Interface::type() const { return STREAMTYPE_SEEKABLE|STREAMTYPE_PROGRAM; } +Stream::type_e DvdRead_Stream_Interface::type() const { return Stream::Type_Seekable|Stream::Type_Program; } off_t DvdRead_Stream_Interface::start_pos() const { return (off_t)cur_pack*2048; } off_t DvdRead_Stream_Interface::size() const { return _end_pos; } off_t DvdRead_Stream_Interface::sector_size() const { return 2048; } Modified: mplayerxp/libmpstream/s_file.cpp =================================================================== --- mplayerxp/libmpstream/s_file.cpp 2012-12-07 16:03:55 UTC (rev 517) +++ mplayerxp/libmpstream/s_file.cpp 2012-12-07 17:50:52 UTC (rev 518) @@ -31,7 +31,7 @@ virtual off_t tell() const; virtual void close(); virtual MPXP_Rc ctrl(unsigned cmd,any_t* param); - virtual stream_type_e type() const; + virtual Stream::type_e type() const; virtual off_t size() const; virtual off_t sector_size() const; private: @@ -64,7 +64,7 @@ return MPXP_Ok; } -stream_type_e File_Stream_Interface::type() const { return (end_pos==-1)?STREAMTYPE_STREAM:STREAMTYPE_SEEKABLE; } +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; } Modified: mplayerxp/libmpstream/s_ftp.cpp =================================================================== --- mplayerxp/libmpstream/s_ftp.cpp 2012-12-07 16:03:55 UTC (rev 517) +++ mplayerxp/libmpstream/s_ftp.cpp 2012-12-07 17:50:52 UTC (rev 518) @@ -36,7 +36,7 @@ virtual off_t tell() const; virtual void close(); virtual MPXP_Rc ctrl(unsigned cmd,any_t* param); - virtual stream_type_e type() const; + virtual Stream::type_e type() const; virtual off_t size() const; virtual off_t sector_size() const; private: @@ -418,7 +418,7 @@ url_free(url); return MPXP_Ok; } -stream_type_e Ftp_Stream_Interface::type() const { return file_len?STREAMTYPE_SEEKABLE:STREAMTYPE_STREAM; } +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; } Modified: mplayerxp/libmpstream/s_lavc.cpp =================================================================== --- mplayerxp/libmpstream/s_lavc.cpp 2012-12-07 16:03:55 UTC (rev 517) +++ mplayerxp/libmpstream/s_lavc.cpp 2012-12-07 17:50:52 UTC (rev 518) @@ -22,7 +22,7 @@ virtual off_t tell() const; virtual void close(); virtual MPXP_Rc ctrl(unsigned cmd,any_t* param); - virtual stream_type_e type() const; + virtual Stream::type_e type() const; virtual off_t size() const; virtual off_t sector_size() const; private: @@ -80,7 +80,7 @@ return MPXP_Ok; } -stream_type_e Lavs_Stream_Interface::type() const { return (ctx->is_streamed)?STREAMTYPE_STREAM:STREAMTYPE_SEEKABLE; } +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; } Modified: mplayerxp/libmpstream/s_network.cpp =================================================================== --- mplayerxp/libmpstream/s_network.cpp 2012-12-07 16:03:55 UTC (rev 517) +++ mplayerxp/libmpstream/s_network.cpp 2012-12-07 17:50:52 UTC (rev 518) @@ -32,7 +32,7 @@ virtual off_t tell() const; virtual void close(); virtual MPXP_Rc ctrl(unsigned cmd,any_t* param); - virtual stream_type_e type() const; + virtual Stream::type_e type() const; virtual off_t size() const; virtual off_t sector_size() const; private: @@ -70,7 +70,7 @@ } return MPXP_False; } -stream_type_e Network_Stream_Interface::type() const { return STREAMTYPE_STREAM; } +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; } Modified: mplayerxp/libmpstream/s_null.cpp =================================================================== --- mplayerxp/libmpstream/s_null.cpp 2012-12-07 16:03:55 UTC (rev 517) +++ mplayerxp/libmpstream/s_null.cpp 2012-12-07 17:50:52 UTC (rev 518) @@ -19,7 +19,7 @@ virtual off_t tell() const; virtual void close(); virtual MPXP_Rc ctrl(unsigned cmd,any_t* param); - virtual stream_type_e type() const; + virtual Stream::type_e type() const; virtual off_t size() const; virtual off_t sector_size() const; }; @@ -43,7 +43,7 @@ UNUSED(args); return MPXP_Unknown; } -stream_type_e Null_Stream_Interface::type() const { return STREAMTYPE_STREAM; } +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; } Modified: mplayerxp/libmpstream/s_oss.cpp =================================================================== --- mplayerxp/libmpstream/s_oss.cpp 2012-12-07 16:03:55 UTC (rev 517) +++ mplayerxp/libmpstream/s_oss.cpp 2012-12-07 17:50:52 UTC (rev 518) @@ -39,7 +39,7 @@ virtual off_t tell() const; virtual void close(); virtual MPXP_Rc ctrl(unsigned cmd,any_t* param); - virtual stream_type_e type() const; + virtual Stream::type_e type() const; virtual off_t size() const; virtual off_t sector_size() const; private: @@ -137,7 +137,7 @@ delete args; return MPXP_Ok; } -stream_type_e Oss_Stream_Interface::type() const { return STREAMTYPE_STREAM|STREAMTYPE_RAWAUDIO; } +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; } Modified: mplayerxp/libmpstream/s_rtsp.cpp =================================================================== --- mplayerxp/libmpstream/s_rtsp.cpp 2012-12-07 16:03:55 UTC (rev 517) +++ mplayerxp/libmpstream/s_rtsp.cpp 2012-12-07 17:50:52 UTC (rev 518) @@ -38,7 +38,7 @@ virtual off_t tell() const; virtual void close(); virtual MPXP_Rc ctrl(unsigned cmd,any_t* param); - virtual stream_type_e type() const; + virtual Stream::type_e type() const; virtual off_t size() const; virtual off_t sector_size() const; private: @@ -162,7 +162,7 @@ fixup_network_stream_cache (networking); return MPXP_Ok; } -stream_type_e Rtsp_Stream_Interface::type() const { return STREAMTYPE_STREAM; } +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; } Modified: mplayerxp/libmpstream/s_tv.cpp =================================================================== --- mplayerxp/libmpstream/s_tv.cpp 2012-12-07 16:03:55 UTC (rev 517) +++ mplayerxp/libmpstream/s_tv.cpp 2012-12-07 17:50:52 UTC (rev 518) @@ -590,7 +590,7 @@ virtual off_t tell() const; virtual void close(); virtual MPXP_Rc ctrl(unsigned cmd,any_t* param); - virtual stream_type_e type() const; + virtual Stream::type_e type() const; virtual off_t size() const; virtual off_t sector_size() const; private: @@ -661,7 +661,7 @@ return MPXP_Unknown; } -stream_type_e Tv_Stream_Interface::type() const { return STREAMTYPE_STREAM; } +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; } Modified: mplayerxp/libmpstream/s_udp.cpp =================================================================== --- mplayerxp/libmpstream/s_udp.cpp 2012-12-07 16:03:55 UTC (rev 517) +++ mplayerxp/libmpstream/s_udp.cpp 2012-12-07 17:50:52 UTC (rev 518) @@ -37,7 +37,7 @@ virtual off_t tell() const; virtual void close(); virtual MPXP_Rc ctrl(unsigned cmd,any_t* param); - virtual stream_type_e type() const; + virtual Stream::type_e type() const; virtual off_t size() const; virtual off_t sector_size() const; private: @@ -115,7 +115,7 @@ fixup_network_stream_cache (networking); return MPXP_Ok; } -stream_type_e Udp_Stream_Interface::type() const { return STREAMTYPE_STREAM; } +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; } Modified: mplayerxp/libmpstream/s_vcdnav.cpp =================================================================== --- mplayerxp/libmpstream/s_vcdnav.cpp 2012-12-07 16:03:55 UTC (rev 517) +++ mplayerxp/libmpstream/s_vcdnav.cpp 2012-12-07 17:50:52 UTC (rev 518) @@ -40,7 +40,7 @@ virtual off_t tell() const; virtual void close(); virtual MPXP_Rc ctrl(unsigned cmd,any_t* param); - virtual stream_type_e type() const; + virtual Stream::type_e type() const; virtual off_t start_pos() const; virtual off_t size() const; virtual off_t sector_size() const; @@ -158,7 +158,7 @@ MSG_DBG2("vcdnav_open start=%i end=%i\n",lsn,total); return MPXP_Ok; } -stream_type_e VcdNav_Stream_Interface::type() const { return STREAMTYPE_SEEKABLE|STREAMTYPE_PROGRAM; } +Stream::type_e VcdNav_Stream_Interface::type() const { return Stream::Type_Seekable|Stream::Type_Program; } 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); } Modified: mplayerxp/libmpstream/stream.cpp =================================================================== --- mplayerxp/libmpstream/stream.cpp 2012-12-07 16:03:55 UTC (rev 517) +++ mplayerxp/libmpstream/stream.cpp 2012-12-07 17:50:52 UTC (rev 518) @@ -88,24 ... [truncated message content] |
From: <nic...@us...> - 2012-12-08 07:53:13
|
Revision: 519 http://mplayerxp.svn.sourceforge.net/mplayerxp/?rev=519&view=rev Author: nickols_k Date: 2012-12-08 07:53:03 +0000 (Sat, 08 Dec 2012) Log Message: ----------- move libinput into private of class Tcp Modified Paths: -------------- mplayerxp/Makefile mplayerxp/libmpstream/asf_mmst_streaming.cpp mplayerxp/libmpstream/asf_streaming.cpp mplayerxp/libmpstream/cddb.cpp mplayerxp/libmpstream/librtsp/rtsp_session.cpp mplayerxp/libmpstream/librtsp/rtsp_session.h 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_internal.h mplayerxp/libmpstream/tcp.cpp mplayerxp/libmpstream/tcp.h Modified: mplayerxp/Makefile =================================================================== --- mplayerxp/Makefile 2012-12-07 17:50:52 UTC (rev 518) +++ mplayerxp/Makefile 2012-12-08 07:53:03 UTC (rev 519) @@ -107,7 +107,7 @@ ./version.sh `$(CC) --version` $(MAKE) dep -dep: +dep: version.h $(CXX) -MM $(CXXFLAGS) $(SRCS) 1>.depend $(DO_MAKE) Modified: mplayerxp/libmpstream/asf_mmst_streaming.cpp =================================================================== --- mplayerxp/libmpstream/asf_mmst_streaming.cpp 2012-12-07 17:50:52 UTC (rev 518) +++ mplayerxp/libmpstream/asf_mmst_streaming.cpp 2012-12-08 07:53:03 UTC (rev 519) @@ -517,7 +517,7 @@ path=unescpath; if( url1->port==0 ) url1->port=1755; - tcp.open(networking->libinput, url1->hostname, url1->port, Tcp::IP4); + tcp.open(url1->hostname, url1->port, Tcp::IP4); if( !tcp.established()) { delete path; return MPXP_False; Modified: mplayerxp/libmpstream/asf_streaming.cpp =================================================================== --- mplayerxp/libmpstream/asf_streaming.cpp 2012-12-07 17:50:52 UTC (rev 518) +++ mplayerxp/libmpstream/asf_streaming.cpp 2012-12-08 07:53:03 UTC (rev 519) @@ -749,7 +749,7 @@ } else { if( url->port==0 ) url->port = 80; } - tcp.open(networking->libinput, url->hostname, url->port, Tcp::IP4); + tcp.open(url->hostname, url->port, Tcp::IP4); if( !tcp.established()) return MPXP_False; http_hdr = asf_http_request( networking ); Modified: mplayerxp/libmpstream/cddb.cpp =================================================================== --- mplayerxp/libmpstream/cddb.cpp 2012-12-07 17:50:52 UTC (rev 518) +++ mplayerxp/libmpstream/cddb.cpp 2012-12-08 07:53:03 UTC (rev 519) @@ -144,7 +144,7 @@ int __FASTCALL__ cddb_http_request(const char *command, int (*reply_parser)(HTTP_header_t*,cddb_data_t*), cddb_data_t *cddb_data) { char request[4096]; int ret = 0; - Tcp* tcp; + Tcp tcp(cddb_data->libinput,-1); URL_t *url; HTTP_header_t *http_hdr; @@ -159,16 +159,14 @@ return -1; } - tcp = http_send_request(cddb_data->libinput,url,0); - if( !tcp ) { + if(http_send_request(tcp,url,0)!=MPXP_Ok) { MSG_ERR("failed to send the http request\n"); return -1; } - http_hdr = http_read_response( *tcp ); + http_hdr = http_read_response( tcp ); if( http_hdr==NULL ) { MSG_ERR("Failed to read the http response\n"); - delete tcp; return -1; } @@ -188,7 +186,6 @@ http_free( http_hdr ); url_free( url ); - delete tcp; return ret; } @@ -494,7 +491,7 @@ } user_name = getenv("LOGNAME"); } - sprintf( cddb_data->cddb_hello, "&hello=%s+%s+%s", user_name, host_name, "MPlayerXP"); + sprintf( cddb_data->cddb_hello, "&hello=%s+%s+%s+%s", user_name, host_name, "MPlayerXP", VERSION); } int __FASTCALL__ cddb_retrieve(cddb_data_t *cddb_data) { Modified: mplayerxp/libmpstream/librtsp/rtsp_session.cpp =================================================================== --- mplayerxp/libmpstream/librtsp/rtsp_session.cpp 2012-12-07 17:50:52 UTC (rev 518) +++ mplayerxp/libmpstream/librtsp/rtsp_session.cpp 2012-12-08 07:53:03 UTC (rev 519) @@ -219,7 +219,7 @@ return rtsp_session; } -int rtsp_session_read (rtsp_session_t *self, char *data, int len) { +int rtsp_session_read (libinput_t* libinput,rtsp_session_t *self, char *data, int len) { if (self->real_session) { int to_copy=len; @@ -267,7 +267,7 @@ else if (self->rtp_session) { int l = 0; - Tcp tcp(self->rtp_session->rtp_socket); + Tcp tcp(libinput,self->rtp_session->rtp_socket); l = read_rtp_from_server (tcp, data, len); /* send RTSP and RTCP keepalive */ Modified: mplayerxp/libmpstream/librtsp/rtsp_session.h =================================================================== --- mplayerxp/libmpstream/librtsp/rtsp_session.h 2012-12-07 17:50:52 UTC (rev 518) +++ mplayerxp/libmpstream/librtsp/rtsp_session.h 2012-12-08 07:53:03 UTC (rev 519) @@ -36,7 +36,7 @@ rtsp_session_t *rtsp_session_start(Tcp& tcp, char **mrl, char *path, char *host, int port, int *redir, uint32_t bandwidth, char *user, char *pass); -int rtsp_session_read(rtsp_session_t *session, char *data, int len); +int rtsp_session_read(libinput_t* libinput,rtsp_session_t *session, char *data, int len); void rtsp_session_end(rtsp_session_t *session); Modified: mplayerxp/libmpstream/network.cpp =================================================================== --- mplayerxp/libmpstream/network.cpp 2012-12-07 17:50:52 UTC (rev 518) +++ mplayerxp/libmpstream/network.cpp 2012-12-08 07:53:03 UTC (rev 519) @@ -94,13 +94,12 @@ { "misc/ultravox", Demuxer::Type_NSV} }; -networking_t* new_networking(libinput_t*libinput) { +networking_t* new_networking() { networking_t *networking = new(zeromem) networking_t; if( networking==NULL ) { MSG_FATAL(MSGTR_OutOfMemory); return NULL; } - networking->libinput=libinput; return networking; } @@ -166,11 +165,10 @@ return url_out; } -Tcp* http_send_request(libinput_t* libinput, URL_t *url, off_t pos ) { +MPXP_Rc http_send_request(Tcp& tcp, URL_t *url, off_t pos ) { HTTP_header_t *http_hdr; URL_t *server_url; char str[256]; - Tcp* tcp=NULL; int ret; int proxy = 0; // Boolean @@ -215,17 +213,19 @@ if( proxy ) { if( url->port==0 ) url->port = 8080; // Default port for the proxy server - tcp = new Tcp(libinput, url->hostname, url->port, Tcp::IP4); + tcp.close(); + tcp.open(url->hostname, url->port, Tcp::IP4); url_free( server_url ); server_url = NULL; } else { if( server_url->port==0 ) server_url->port = 80; // Default port for the web server - tcp = new Tcp(libinput, server_url->hostname, server_url->port, Tcp::IP4); + tcp.close(); + tcp.open(server_url->hostname, server_url->port, Tcp::IP4); } - if(!tcp->established()) goto err_out; + if(!tcp.established()) goto err_out; MSG_DBG2("Request: [%s]\n", http_hdr->buffer ); - ret = tcp->write((uint8_t*)(http_hdr->buffer), http_hdr->buffer_size); + ret = tcp.write((uint8_t*)(http_hdr->buffer), http_hdr->buffer_size); if( ret!=(int)http_hdr->buffer_size ) { MSG_ERR("Error while sending HTTP request: didn't sent all the request\n"); goto err_out; @@ -233,13 +233,12 @@ http_free( http_hdr ); - return tcp; + return MPXP_Ok; err_out: - if (tcp) delete tcp; http_free(http_hdr); if (proxy && server_url) url_free(server_url); - return NULL; + return MPXP_False; } HTTP_header_t* http_read_response( Tcp& tcp ) { @@ -323,13 +322,9 @@ off_t http_seek(Tcp& tcp, networking_t *networking, off_t pos ) { HTTP_header_t *http_hdr = NULL; - Tcp* other_tcp; tcp.close(); - other_tcp = http_send_request(networking->libinput, networking->url, pos ); - if(! other_tcp->established() ) return 0; - tcp=*other_tcp; - delete other_tcp; + if(http_send_request(tcp,networking->url, pos)==MPXP_Ok) return 0; http_hdr = http_read_response(tcp); @@ -398,7 +393,7 @@ #endif // HTTP based protocol if( !strcasecmp(url->protocol, "http") || !strcasecmp(url->protocol, "http_proxy") ) { - tcp = *http_send_request(networking->libinput, url, 0 ); + http_send_request(tcp, url, 0 ); if(!tcp.established()) goto err_out; http_hdr = http_read_response(tcp); @@ -565,7 +560,7 @@ MPXP_Rc ret; if( !tcp.established() ) { - tcp = *http_send_request(networking->libinput, networking->url,0); + http_send_request(tcp, networking->url,0); if( !tcp.established() ) return MPXP_False; http_hdr = http_read_response(tcp); if( http_hdr==NULL ) return MPXP_False; @@ -655,7 +650,7 @@ MPXP_Rc pnm_networking_start(Tcp& tcp,networking_t *networking ) { pnm_t *pnm; - tcp.open(networking->libinput, networking->url->hostname, + tcp.open(networking->url->hostname, networking->url->port ? networking->url->port : 7070); if(!tcp.established()) return MPXP_False; Modified: mplayerxp/libmpstream/network.h =================================================================== --- mplayerxp/libmpstream/network.h 2012-12-07 17:50:52 UTC (rev 518) +++ mplayerxp/libmpstream/network.h 2012-12-08 07:53:03 UTC (rev 519) @@ -47,20 +47,19 @@ int (*networking_read)( Tcp& fd, char *buffer, int buffer_size, networking_t *stream_ctrl ); int (*networking_seek)( Tcp& fd, off_t pos, networking_t *stream_ctrl ); any_t*data; - libinput_t* libinput; /**< provides possibility to inperrupt network streams */ }; extern void fixup_network_stream_cache(networking_t *s); extern MPXP_Rc networking_start(Tcp& fd,networking_t *n, URL_t *url); extern int networking_bufferize(networking_t *networking,unsigned char *buffer, int size); -extern networking_t *new_networking(libinput_t* libinput); +extern networking_t *new_networking(); extern void free_networking( networking_t *networking ); extern URL_t* check4proxies( URL_t *url ); int nop_networking_read(Tcp& fd, char *buffer, int size, networking_t *stream_ctrl ); int nop_networking_seek(Tcp& fd, off_t pos, networking_t *stream_ctrl ); -Tcp* http_send_request(libinput_t* libinput,URL_t *url, off_t pos); +MPXP_Rc http_send_request(Tcp& tcp,URL_t *url, off_t pos); HTTP_header_t *http_read_response(Tcp& fd); int http_authenticate(HTTP_header_t *http_hdr, URL_t *url, int *auth_retry); Modified: mplayerxp/libmpstream/s_cdd.cpp =================================================================== --- mplayerxp/libmpstream/s_cdd.cpp 2012-12-07 17:50:52 UTC (rev 518) +++ mplayerxp/libmpstream/s_cdd.cpp 2012-12-08 07:53:03 UTC (rev 519) @@ -20,10 +20,10 @@ namespace mpxp { class Cdda_Stream_Interface : public Stream_Interface { public: - Cdda_Stream_Interface(); + Cdda_Stream_Interface(libinput_t* libinput); virtual ~Cdda_Stream_Interface(); - virtual MPXP_Rc open(libinput_t* libinput,const char *filename,unsigned flags); + virtual MPXP_Rc open(const char *filename,unsigned flags); virtual int read(stream_packet_t * sp); virtual off_t seek(off_t off); virtual off_t tell() const; @@ -39,14 +39,15 @@ track_t track_idx; }; -Cdda_Stream_Interface::Cdda_Stream_Interface():track_idx(255) {} +Cdda_Stream_Interface::Cdda_Stream_Interface(libinput_t* libinput) + :Stream_Interface(libinput), + track_idx(255) {} Cdda_Stream_Interface::~Cdda_Stream_Interface() {} -MPXP_Rc Cdda_Stream_Interface::open(libinput_t*libinput,const char *filename,unsigned flags) +MPXP_Rc Cdda_Stream_Interface::open(const char *filename,unsigned flags) { const char *param; char *device; - UNUSED(libinput); UNUSED(flags); if(strcmp(filename,"help") == 0) { MSG_HINT("Usage: cdda://<@device><#trackno>\n"); @@ -114,7 +115,7 @@ return MPXP_False; } -static Stream_Interface* query_cdda_interface() { return new(zeromem) Cdda_Stream_Interface; } +static Stream_Interface* query_cdda_interface(libinput_t* libinput) { return new(zeromem) Cdda_Stream_Interface(libinput); } extern const stream_interface_info_t cdda_stream = { @@ -125,15 +126,19 @@ class Cddb_Stream_Interface : public Cdda_Stream_Interface { public: - Cddb_Stream_Interface(); + Cddb_Stream_Interface(libinput_t* libinput); virtual ~Cddb_Stream_Interface(); - virtual MPXP_Rc open(libinput_t* libinput,const char *filename,unsigned flags); + virtual MPXP_Rc open(const char *filename,unsigned flags); + private: + libinput_t* libinput; }; -Cddb_Stream_Interface::Cddb_Stream_Interface() {} +Cddb_Stream_Interface::Cddb_Stream_Interface(libinput_t*_libinput) + :Cdda_Stream_Interface(_libinput), + libinput(_libinput) {} Cddb_Stream_Interface::~Cddb_Stream_Interface() {} -MPXP_Rc Cddb_Stream_Interface::open(libinput_t*libinput,const char *filename,unsigned flags) +MPXP_Rc Cddb_Stream_Interface::open(const char *filename,unsigned flags) { #ifdef HAVE_STREAMING const char *param; @@ -153,7 +158,7 @@ #endif } -static Stream_Interface* query_cddb_interface() { return new(zeromem) Cddb_Stream_Interface; } +static Stream_Interface* query_cddb_interface(libinput_t* libinput) { return new(zeromem) Cddb_Stream_Interface(libinput); } extern const stream_interface_info_t cddb_stream = { "cddb://", Modified: mplayerxp/libmpstream/s_dvdnav.cpp =================================================================== --- mplayerxp/libmpstream/s_dvdnav.cpp 2012-12-07 17:50:52 UTC (rev 518) +++ mplayerxp/libmpstream/s_dvdnav.cpp 2012-12-08 07:53:03 UTC (rev 519) @@ -50,10 +50,10 @@ class DvdNav_Stream_Interface : public Stream_Interface { public: - DvdNav_Stream_Interface(); + DvdNav_Stream_Interface(libinput_t* libinput); virtual ~DvdNav_Stream_Interface(); - virtual MPXP_Rc open(libinput_t* libinput,const char *filename,unsigned flags); + virtual MPXP_Rc open(const char *filename,unsigned flags); virtual int read(stream_packet_t * sp); virtual off_t seek(off_t off); virtual off_t tell() const; @@ -93,8 +93,9 @@ float _stream_pts; }; -DvdNav_Stream_Interface::DvdNav_Stream_Interface() - :hlev(*new dvdnav_highlight_event_t) {} +DvdNav_Stream_Interface::DvdNav_Stream_Interface(libinput_t* libinput) + :Stream_Interface(libinput), + hlev(*new dvdnav_highlight_event_t) {} DvdNav_Stream_Interface::~DvdNav_Stream_Interface() { dvdnav_close(dvdnav); delete &hlev; @@ -178,13 +179,12 @@ return 0; } -MPXP_Rc DvdNav_Stream_Interface::open(libinput_t*libinput,const char *_filename,unsigned flags) +MPXP_Rc DvdNav_Stream_Interface::open(const char *_filename,unsigned flags) { const char *param; char *dvd_device; int ntitles; UNUSED(flags); - UNUSED(libinput); filename=_filename; param=mrl_parse_line(_filename,NULL,NULL,&dvd_device,NULL); if(strcmp(param,"help") == 0) { @@ -590,7 +590,7 @@ return MPXP_False; } -static Stream_Interface* query_interface() { return new(zeromem) DvdNav_Stream_Interface; } +static Stream_Interface* query_interface(libinput_t* libinput) { return new(zeromem) DvdNav_Stream_Interface(libinput); } extern const stream_interface_info_t dvdnav_stream = { Modified: mplayerxp/libmpstream/s_dvdread.cpp =================================================================== --- mplayerxp/libmpstream/s_dvdread.cpp 2012-12-07 17:50:52 UTC (rev 518) +++ mplayerxp/libmpstream/s_dvdread.cpp 2012-12-08 07:53:03 UTC (rev 519) @@ -51,10 +51,10 @@ class DvdRead_Stream_Interface : public Stream_Interface { public: - DvdRead_Stream_Interface(); + DvdRead_Stream_Interface(libinput_t* libinput); virtual ~DvdRead_Stream_Interface(); - virtual MPXP_Rc open(libinput_t* libinput,const char *filename,unsigned flags); + virtual MPXP_Rc open(const char *filename,unsigned flags); virtual int read(stream_packet_t * sp); virtual off_t seek(off_t off); virtual off_t tell() const; @@ -111,10 +111,9 @@ off_t _end_pos; }; -DvdRead_Stream_Interface::DvdRead_Stream_Interface() - :dvd_chapter(1),dvd_angle(1) -{ -} +DvdRead_Stream_Interface::DvdRead_Stream_Interface(libinput_t* libinput) + :Stream_Interface(libinput), + dvd_chapter(1),dvd_angle(1) {} DvdRead_Stream_Interface::~DvdRead_Stream_Interface() {} static const char * dvd_audio_stream_types[8] = @@ -589,7 +588,7 @@ dvd_angle=1; } -MPXP_Rc DvdRead_Stream_Interface::open(libinput_t*libinput,const char *filename,unsigned flags) +MPXP_Rc DvdRead_Stream_Interface::open(const char *filename,unsigned flags) { UNUSED(flags); int dvd_title; @@ -598,7 +597,6 @@ char param[256]; last_title=-1; - UNUSED(libinput); if(strcmp(filename,"help") == 0 || strlen(filename)==10) { MSG_HINT("Usage: dvdread://<@device>#<titleno>-<lasttitle>,<chapter>-<lastchapter>,<angle>\n"); return MPXP_False; @@ -778,7 +776,7 @@ return MPXP_False; } -static Stream_Interface* query_interface() { return new(zeromem) DvdRead_Stream_Interface; } +static Stream_Interface* query_interface(libinput_t* libinput) { return new(zeromem) DvdRead_Stream_Interface(libinput); } extern const stream_interface_info_t dvdread_stream = { Modified: mplayerxp/libmpstream/s_file.cpp =================================================================== --- mplayerxp/libmpstream/s_file.cpp 2012-12-07 17:50:52 UTC (rev 518) +++ mplayerxp/libmpstream/s_file.cpp 2012-12-08 07:53:03 UTC (rev 519) @@ -22,10 +22,10 @@ namespace mpxp { class File_Stream_Interface : public Stream_Interface { public: - File_Stream_Interface(); + File_Stream_Interface(libinput_t* libinput); virtual ~File_Stream_Interface(); - virtual MPXP_Rc open(libinput_t* libinput,const char *filename,unsigned flags); + virtual MPXP_Rc open(const char *filename,unsigned flags); virtual int read(stream_packet_t * sp); virtual off_t seek(off_t off); virtual off_t tell() const; @@ -41,13 +41,14 @@ off_t end_pos; }; -File_Stream_Interface::File_Stream_Interface():fd(0),was_open(0),spos(0) {} +File_Stream_Interface::File_Stream_Interface(libinput_t*l) + :Stream_Interface(l), + fd(0),was_open(0),spos(0) {} File_Stream_Interface::~File_Stream_Interface() {} -MPXP_Rc File_Stream_Interface::open(libinput_t*libinput,const char *filename,unsigned flags) +MPXP_Rc File_Stream_Interface::open(const char *filename,unsigned flags) { UNUSED(flags); - UNUSED(libinput); if(strcmp(filename,"-")==0) fd=0; else fd=::open(filename,O_RDONLY); if(fd<0) { @@ -112,7 +113,7 @@ return MPXP_Unknown; } -static Stream_Interface* query_file_interface() { return new(zeromem) File_Stream_Interface; } +static Stream_Interface* query_file_interface(libinput_t* libinput) { return new(zeromem) File_Stream_Interface(libinput); } extern const stream_interface_info_t file_stream = { @@ -123,21 +124,20 @@ class Stdin_Stream_Interface : public File_Stream_Interface { public: - Stdin_Stream_Interface(); + Stdin_Stream_Interface(libinput_t* libinput); virtual ~Stdin_Stream_Interface(); - virtual MPXP_Rc open(libinput_t* libinput,const char *filename,unsigned flags); + virtual MPXP_Rc open(const char *filename,unsigned flags); }; -Stdin_Stream_Interface::Stdin_Stream_Interface() {} +Stdin_Stream_Interface::Stdin_Stream_Interface(libinput_t*l):File_Stream_Interface(l) {} Stdin_Stream_Interface::~Stdin_Stream_Interface() {} -MPXP_Rc Stdin_Stream_Interface::open(libinput_t*libinput,const char *filename,unsigned flags) { - UNUSED(libinput); +MPXP_Rc Stdin_Stream_Interface::open(const char *filename,unsigned flags) { UNUSED(filename); - return File_Stream_Interface::open(NULL,"-",flags); + return File_Stream_Interface::open("-",flags); } -static Stream_Interface* query_stdin_interface() { return new(zeromem) Stdin_Stream_Interface; } +static Stream_Interface* query_stdin_interface(libinput_t* libinput) { return new(zeromem) Stdin_Stream_Interface(libinput); } extern const stream_interface_info_t stdin_stream = { Modified: mplayerxp/libmpstream/s_ftp.cpp =================================================================== --- mplayerxp/libmpstream/s_ftp.cpp 2012-12-07 17:50:52 UTC (rev 518) +++ mplayerxp/libmpstream/s_ftp.cpp 2012-12-08 07:53:03 UTC (rev 519) @@ -27,10 +27,10 @@ namespace mpxp { class Ftp_Stream_Interface : public Stream_Interface { public: - Ftp_Stream_Interface(); + Ftp_Stream_Interface(libinput_t* libinput); virtual ~Ftp_Stream_Interface(); - virtual MPXP_Rc open(libinput_t* libinput,const char *filename,unsigned flags); + virtual MPXP_Rc open(const char *filename,unsigned flags); virtual int read(stream_packet_t * sp); virtual off_t seek(off_t off); virtual off_t tell() const; @@ -52,7 +52,6 @@ int port; const char* filename; URL_t* url; - libinput_t* libinput; char* cput,*cget; Tcp tcp; @@ -62,7 +61,9 @@ off_t file_len; }; -Ftp_Stream_Interface::Ftp_Stream_Interface():tcp(-1) {} +Ftp_Stream_Interface::Ftp_Stream_Interface(libinput_t* libinput) + :Stream_Interface(libinput), + tcp(libinput,-1) {} Ftp_Stream_Interface::~Ftp_Stream_Interface() { SendCmd("QUIT",NULL); if(buf) delete buf; @@ -210,7 +211,7 @@ } sscanf(par+1,"%u,%u,%u,%u,%u,%u",&num[0],&num[1],&num[2],&num[3],&num[4],&num[5]); snprintf(str,127,"%d.%d.%d.%d",num[0],num[1],num[2],num[3]); - tcp.open(libinput,str,(num[4]<<8)+num[5]); + tcp.open(str,(num[4]<<8)+num[5]); if(fd < 0) MSG_ERR("[ftp] failed to create data connection\n"); return 1; @@ -312,14 +313,13 @@ if(tcp.established()) tcp.close(); } -MPXP_Rc Ftp_Stream_Interface::open(libinput_t*_libinput,const char *_filename,unsigned flags) +MPXP_Rc Ftp_Stream_Interface::open(const char *_filename,unsigned flags) { int resp; char str[256],rsp_txt[256]; char *uname; UNUSED(flags); - libinput=_libinput; if(!(uname=new char [strlen(_filename)+7])) return MPXP_False; strcpy(uname,"ftp://"); strcat(uname,_filename); @@ -339,7 +339,7 @@ MSG_V("FTP: Opening ~%s :%s @%s :%i %s\n",user,pass,host,port,filename); // Open the control connection - tcp.open(libinput,host,port); + tcp.open(host,port); if(!tcp.established()) { url_free(url); @@ -428,7 +428,7 @@ return MPXP_Unknown; } -static Stream_Interface* query_interface() { return new(zeromem) Ftp_Stream_Interface; } +static Stream_Interface* query_interface(libinput_t* libinput) { return new(zeromem) Ftp_Stream_Interface(libinput); } /* "reuse a bit of code from ftplib written by Thomas Pfau", */ extern const stream_interface_info_t ftp_stream = Modified: mplayerxp/libmpstream/s_lavc.cpp =================================================================== --- mplayerxp/libmpstream/s_lavc.cpp 2012-12-07 17:50:52 UTC (rev 518) +++ mplayerxp/libmpstream/s_lavc.cpp 2012-12-08 07:53:03 UTC (rev 519) @@ -13,10 +13,10 @@ namespace mpxp { class Lavs_Stream_Interface : public Stream_Interface { public: - Lavs_Stream_Interface(); + Lavs_Stream_Interface(libinput_t* libinput); virtual ~Lavs_Stream_Interface(); - virtual MPXP_Rc open(libinput_t* libinput,const char *filename,unsigned flags); + virtual MPXP_Rc open(const char *filename,unsigned flags); virtual int read(stream_packet_t * sp); virtual off_t seek(off_t off); virtual off_t tell() const; @@ -31,7 +31,9 @@ off_t end_pos; }; -Lavs_Stream_Interface::Lavs_Stream_Interface():ctx(NULL),end_pos(-1) {} +Lavs_Stream_Interface::Lavs_Stream_Interface(libinput_t*libinput) + :Stream_Interface(libinput), + ctx(NULL),end_pos(-1) {} Lavs_Stream_Interface::~Lavs_Stream_Interface() { if(ctx) ffurl_close(ctx); } @@ -64,12 +66,11 @@ void Lavs_Stream_Interface::close() {} -MPXP_Rc Lavs_Stream_Interface::open(libinput_t*libinput,const char *filename,unsigned flags) +MPXP_Rc Lavs_Stream_Interface::open(const char *filename,unsigned flags) { int64_t _size; UNUSED(flags); - UNUSED(libinput); av_register_all(); MSG_V("[lavc] Opening %s\n", filename); @@ -84,7 +85,7 @@ off_t Lavs_Stream_Interface::size() const { return end_pos; } off_t Lavs_Stream_Interface::sector_size() const { return STREAM_BUFFER_SIZE; } -static Stream_Interface* query_interface() { return new(zeromem) Lavs_Stream_Interface; } +static Stream_Interface* query_interface(libinput_t* libinput) { return new(zeromem) Lavs_Stream_Interface(libinput); } extern const stream_interface_info_t lavs_stream = { Modified: mplayerxp/libmpstream/s_network.cpp =================================================================== --- mplayerxp/libmpstream/s_network.cpp 2012-12-07 17:50:52 UTC (rev 518) +++ mplayerxp/libmpstream/s_network.cpp 2012-12-08 07:53:03 UTC (rev 519) @@ -23,10 +23,10 @@ namespace mpxp { class Network_Stream_Interface : public Stream_Interface { public: - Network_Stream_Interface(); + Network_Stream_Interface(libinput_t* libinput); virtual ~Network_Stream_Interface(); - virtual MPXP_Rc open(libinput_t* libinput,const char *filename,unsigned flags); + virtual MPXP_Rc open(const char *filename,unsigned flags); virtual int read(stream_packet_t * sp); virtual off_t seek(off_t off); virtual off_t tell() const; @@ -42,7 +42,9 @@ networking_t* networking; }; -Network_Stream_Interface::Network_Stream_Interface():tcp(-1) {} +Network_Stream_Interface::Network_Stream_Interface(libinput_t* libinput) + :Stream_Interface(libinput), + tcp(libinput,-1) {} Network_Stream_Interface::~Network_Stream_Interface() { if(url) { url_free(url); @@ -50,12 +52,12 @@ } } -MPXP_Rc Network_Stream_Interface::open(libinput_t* libinput,const char *filename,unsigned flags) +MPXP_Rc Network_Stream_Interface::open(const char *filename,unsigned flags) { UNUSED(flags); url = url_new(filename); if(url) { - networking=new_networking(libinput); + networking=new_networking(); if(networking_start(tcp,networking,url)!=MPXP_Ok){ MSG_ERR(MSGTR_UnableOpenURL, filename); url_free(url); @@ -113,7 +115,7 @@ return MPXP_Unknown; } -static Stream_Interface* query_interface() { return new(zeromem) Network_Stream_Interface; } +static Stream_Interface* query_interface(libinput_t* libinput) { return new(zeromem) Network_Stream_Interface(libinput); } extern const stream_interface_info_t network_stream = { Modified: mplayerxp/libmpstream/s_null.cpp =================================================================== --- mplayerxp/libmpstream/s_null.cpp 2012-12-07 17:50:52 UTC (rev 518) +++ mplayerxp/libmpstream/s_null.cpp 2012-12-08 07:53:03 UTC (rev 519) @@ -10,10 +10,10 @@ namespace mpxp { class Null_Stream_Interface : public Stream_Interface { public: - Null_Stream_Interface(); + Null_Stream_Interface(libinput_t* libinput); virtual ~Null_Stream_Interface(); - virtual MPXP_Rc open(libinput_t* libinput,const char *filename,unsigned flags); + virtual MPXP_Rc open(const char *filename,unsigned flags); virtual int read(stream_packet_t * sp); virtual off_t seek(off_t off); virtual off_t tell() const; @@ -24,11 +24,10 @@ virtual off_t sector_size() const; }; -Null_Stream_Interface::Null_Stream_Interface() {} +Null_Stream_Interface::Null_Stream_Interface(libinput_t*libinput):Stream_Interface(libinput) {} Null_Stream_Interface::~Null_Stream_Interface() {} -MPXP_Rc Null_Stream_Interface::open(libinput_t*libinput,const char *filename,unsigned flags) { - UNUSED(libinput); +MPXP_Rc Null_Stream_Interface::open(const char *filename,unsigned flags) { UNUSED(filename); UNUSED(flags); return MPXP_False; @@ -47,7 +46,7 @@ off_t Null_Stream_Interface::size() const { return 0; } off_t Null_Stream_Interface::sector_size() const { return 0; } -static Stream_Interface* query_interface() { return new(zeromem) Null_Stream_Interface; } +static Stream_Interface* query_interface(libinput_t* libinput) { return new(zeromem) Null_Stream_Interface(libinput); } extern const stream_interface_info_t null_stream = { Modified: mplayerxp/libmpstream/s_oss.cpp =================================================================== --- mplayerxp/libmpstream/s_oss.cpp 2012-12-07 17:50:52 UTC (rev 518) +++ mplayerxp/libmpstream/s_oss.cpp 2012-12-08 07:53:03 UTC (rev 519) @@ -30,10 +30,10 @@ namespace mpxp { class Oss_Stream_Interface : public Stream_Interface { public: - Oss_Stream_Interface(); + Oss_Stream_Interface(libinput_t* libinput); virtual ~Oss_Stream_Interface(); - virtual MPXP_Rc open(libinput_t* libinput,const char *filename,unsigned flags); + virtual MPXP_Rc open(const char *filename,unsigned flags); virtual int read(stream_packet_t * sp); virtual off_t seek(off_t off); virtual off_t tell() const; @@ -51,17 +51,17 @@ unsigned _sector_size; }; -Oss_Stream_Interface::Oss_Stream_Interface() {} +Oss_Stream_Interface::Oss_Stream_Interface(libinput_t* libinput) + :Stream_Interface(libinput) {} Oss_Stream_Interface::~Oss_Stream_Interface() {} -MPXP_Rc Oss_Stream_Interface::open(libinput_t*libinput,const char *filename,unsigned flags) +MPXP_Rc Oss_Stream_Interface::open(const char *filename,unsigned flags) { char *args; char *oss_device,*comma; unsigned tmp,param; int err; UNUSED(flags); - UNUSED(libinput); if(strcmp(filename,"help") == 0) { MSG_HINT("Usage: oss://<@device>#<channels>,<samplerate>,<sampleformat>\n"); return MPXP_False; @@ -270,7 +270,7 @@ return MPXP_Unknown; } -static Stream_Interface* query_interface() { return new(zeromem) Oss_Stream_Interface; } +static Stream_Interface* query_interface(libinput_t* libinput) { return new(zeromem) Oss_Stream_Interface(libinput); } extern const stream_interface_info_t oss_stream = { Modified: mplayerxp/libmpstream/s_rtsp.cpp =================================================================== --- mplayerxp/libmpstream/s_rtsp.cpp 2012-12-07 17:50:52 UTC (rev 518) +++ mplayerxp/libmpstream/s_rtsp.cpp 2012-12-08 07:53:03 UTC (rev 519) @@ -29,10 +29,10 @@ namespace mpxp { class Rtsp_Stream_Interface : public Stream_Interface { public: - Rtsp_Stream_Interface(); + Rtsp_Stream_Interface(libinput_t* libinput); virtual ~Rtsp_Stream_Interface(); - virtual MPXP_Rc open(libinput_t* libinput,const char *filename,unsigned flags); + virtual MPXP_Rc open(const char *filename,unsigned flags); virtual int read(stream_packet_t * sp); virtual off_t seek(off_t off); virtual off_t tell() const; @@ -46,16 +46,20 @@ networking_t* networking; Tcp tcp; + libinput_t* libinput; }; -Rtsp_Stream_Interface::Rtsp_Stream_Interface():tcp(-1) {} +Rtsp_Stream_Interface::Rtsp_Stream_Interface(libinput_t* _libinput) + :Stream_Interface(_libinput), + tcp(_libinput,-1), + libinput(_libinput) {} Rtsp_Stream_Interface::~Rtsp_Stream_Interface() {} #define RTSP_DEFAULT_PORT 554 int Rtsp_Stream_Interface::read(stream_packet_t*sp) { - return rtsp_session_read (reinterpret_cast<rtsp_session_t*>(networking->data), sp->buf, sp->len); + return rtsp_session_read (libinput,reinterpret_cast<rtsp_session_t*>(networking->data), sp->buf, sp->len); } off_t Rtsp_Stream_Interface::seek(off_t newpos) { return newpos; } @@ -94,12 +98,12 @@ do { redirected = 0; - tcp.open(networking->libinput,networking->url->hostname, + tcp.open(networking->url->hostname, port = (networking->url->port ? networking->url->port : RTSP_DEFAULT_PORT)); if (!tcp.established() && !networking->url->port) - tcp.open(networking->libinput,networking->url->hostname, + tcp.open(networking->url->hostname, port = 7070); if (!tcp.established()) return MPXP_False; file = networking->url->file; @@ -137,14 +141,14 @@ extern int network_bandwidth; extern int index_mode; -MPXP_Rc Rtsp_Stream_Interface::open(libinput_t* libinput,const char *filename,unsigned flags) +MPXP_Rc Rtsp_Stream_Interface::open(const char *filename,unsigned flags) { URL_t *url; UNUSED(flags); if(strncmp(filename,"rtsp://",7)!=0) return MPXP_False; MSG_V("STREAM_RTSP, URL: %s\n", filename); - networking = new_networking(libinput); + networking = new_networking(); if (!networking) return MPXP_False; networking->bandwidth = network_bandwidth; @@ -166,7 +170,7 @@ off_t Rtsp_Stream_Interface::size() const { return 0; } off_t Rtsp_Stream_Interface::sector_size() const { return 1; } -static Stream_Interface* query_interface() { return new(zeromem) Rtsp_Stream_Interface; } +static Stream_Interface* query_interface(libinput_t* libinput) { return new(zeromem) Rtsp_Stream_Interface(libinput); } /* "reuse a bit of code from ftplib written by Thomas Pfau", */ extern const stream_interface_info_t rtsp_stream = Modified: mplayerxp/libmpstream/s_tv.cpp =================================================================== --- mplayerxp/libmpstream/s_tv.cpp 2012-12-07 17:50:52 UTC (rev 518) +++ mplayerxp/libmpstream/s_tv.cpp 2012-12-08 07:53:03 UTC (rev 519) @@ -581,10 +581,10 @@ /* fill demux->video and demux->audio */ class Tv_Stream_Interface : public Stream_Interface { public: - Tv_Stream_Interface(); + Tv_Stream_Interface(libinput_t* libinput); virtual ~Tv_Stream_Interface(); - virtual MPXP_Rc open(libinput_t* libinput,const char *filename,unsigned flags); + virtual MPXP_Rc open(const char *filename,unsigned flags); virtual int read(stream_packet_t * sp); virtual off_t seek(off_t off); virtual off_t tell() const; @@ -598,13 +598,12 @@ tvi_handle_t* priv; }; -Tv_Stream_Interface::Tv_Stream_Interface() { } +Tv_Stream_Interface::Tv_Stream_Interface(libinput_t*libinput):Stream_Interface(libinput) {} Tv_Stream_Interface::~Tv_Stream_Interface() { delete priv; } -MPXP_Rc Tv_Stream_Interface::open(libinput_t*libinput,const char *filename,unsigned flags) +MPXP_Rc Tv_Stream_Interface::open(const char *filename,unsigned flags) { UNUSED(flags); - UNUSED(libinput); mrl_parse_params(filename,tvopts_conf); /* create tvi handler */ if(!(priv = tv_begin())) goto tv_err; @@ -665,7 +664,7 @@ off_t Tv_Stream_Interface::size() const { return -1; } off_t Tv_Stream_Interface::sector_size() const { return 0; } -static Stream_Interface* query_interface() { return new(zeromem) Tv_Stream_Interface; } +static Stream_Interface* query_interface(libinput_t* libinput) { return new(zeromem) Tv_Stream_Interface(libinput); } extern const stream_interface_info_t tv_stream = { Modified: mplayerxp/libmpstream/s_udp.cpp =================================================================== --- mplayerxp/libmpstream/s_udp.cpp 2012-12-07 17:50:52 UTC (rev 518) +++ mplayerxp/libmpstream/s_udp.cpp 2012-12-08 07:53:03 UTC (rev 519) @@ -28,10 +28,10 @@ namespace mpxp { class Udp_Stream_Interface : public Stream_Interface { public: - Udp_Stream_Interface(); + Udp_Stream_Interface(libinput_t* libinput); virtual ~Udp_Stream_Interface(); - virtual MPXP_Rc open(libinput_t* libinput,const char *filename,unsigned flags); + virtual MPXP_Rc open(const char *filename,unsigned flags); virtual int read(stream_packet_t * sp); virtual off_t seek(off_t off); virtual off_t tell() const; @@ -48,7 +48,10 @@ Tcp tcp; }; -Udp_Stream_Interface::Udp_Stream_Interface():udp(-1),tcp(-1) {} +Udp_Stream_Interface::Udp_Stream_Interface(libinput_t* libinput) + :Stream_Interface(libinput), + udp(-1), + tcp(libinput,-1) {} Udp_Stream_Interface::~Udp_Stream_Interface() {} int Udp_Stream_Interface::read(stream_packet_t*sp) @@ -89,12 +92,12 @@ } extern int network_bandwidth; -MPXP_Rc Udp_Stream_Interface::open(libinput_t* libinput,const char *filename,unsigned flags) +MPXP_Rc Udp_Stream_Interface::open(const char *filename,unsigned flags) { URL_t *url; UNUSED(flags); MSG_V("STREAM_UDP, URL: %s\n", filename); - networking = new_networking(libinput); + networking = new_networking(); if (!networking) return MPXP_False; networking->bandwidth = network_bandwidth; @@ -119,7 +122,7 @@ off_t Udp_Stream_Interface::size() const { return 0; } off_t Udp_Stream_Interface::sector_size() const { return 1; } -static Stream_Interface* query_interface() { return new(zeromem) Udp_Stream_Interface; } +static Stream_Interface* query_interface(libinput_t* libinput) { return new(zeromem) Udp_Stream_Interface(libinput); } /* "reuse a bit of code from ftplib written by Thomas Pfau", */ extern const stream_interface_info_t rtsp_stream = Modified: mplayerxp/libmpstream/s_vcdnav.cpp =================================================================== --- mplayerxp/libmpstream/s_vcdnav.cpp 2012-12-07 17:50:52 UTC (rev 518) +++ mplayerxp/libmpstream/s_vcdnav.cpp 2012-12-08 07:53:03 UTC (rev 519) @@ -31,10 +31,10 @@ class VcdNav_Stream_Interface : public Stream_Interface { public: - VcdNav_Stream_Interface(); + VcdNav_Stream_Interface(libinput_t* libinput); virtual ~VcdNav_Stream_Interface(); - virtual MPXP_Rc open(libinput_t* libinput,const char *filename,unsigned flags); + virtual MPXP_Rc open(const char *filename,unsigned flags); virtual int read(stream_packet_t * sp); virtual off_t seek(off_t off); virtual off_t tell() const; @@ -63,7 +63,8 @@ lsn_t vcd_sector_lsn; }; -VcdNav_Stream_Interface::VcdNav_Stream_Interface() {} +VcdNav_Stream_Interface::VcdNav_Stream_Interface(libinput_t* libinput) + :Stream_Interface(libinput) {} VcdNav_Stream_Interface::~VcdNav_Stream_Interface() { vcdinfo_close(fd); if(track) delete track; @@ -82,7 +83,7 @@ } } -MPXP_Rc VcdNav_Stream_Interface::open(libinput_t*libinput,const char *filename,unsigned flags) +MPXP_Rc VcdNav_Stream_Interface::open(const char *filename,unsigned flags) { const char *param; char *device,*dev; @@ -90,7 +91,6 @@ int vcd_track=-1; vcdinfo_open_return_t open_rc; UNUSED(flags); - UNUSED(libinput); if(strcmp(filename,"help") == 0) { MSG_HINT("Usage: vcdnav://<@device><#trackno>\n"); return MPXP_False; @@ -267,7 +267,7 @@ return MPXP_Unknown; } -static Stream_Interface* query_interface() { return new(zeromem) VcdNav_Stream_Interface; } +static Stream_Interface* query_interface(libinput_t* libinput) { return new(zeromem) VcdNav_Stream_Interface(libinput); } extern const stream_interface_info_t vcdnav_stream = { Modified: mplayerxp/libmpstream/stream.cpp =================================================================== --- mplayerxp/libmpstream/stream.cpp 2012-12-07 17:50:52 UTC (rev 518) +++ mplayerxp/libmpstream/stream.cpp 2012-12-08 07:53:03 UTC (rev 519) @@ -132,9 +132,9 @@ mrl_len=strlen(sdrivers[i]->mrl); if(strncmp(filename,sdrivers[i]->mrl,mrl_len)==0||sdrivers[i]->mrl[0]=='*') { MSG_V("Opening %s ... ",sdrivers[i]->mrl); - Stream_Interface* drv = sdrivers[i]->query_interface(); + Stream_Interface* drv = sdrivers[i]->query_interface(libinput); if(sdrivers[i]->mrl[0]=='*') mrl_len=0; - if(drv->open(libinput,&filename[mrl_len],0)==MPXP_Ok) { + if(drv->open(&filename[mrl_len],0)==MPXP_Ok) { MSG_V("OK\n"); *ff = file_format; driver_info=sdrivers[i]; @@ -147,9 +147,9 @@ MSG_V("False\n"); } } - Stream_Interface* file_drv = file_stream.query_interface(); + Stream_Interface* file_drv = file_stream.query_interface(libinput); /* Last hope if not mrl specified */ - if(file_drv->open(libinput,filename,0)) { + if(file_drv->open(filename,0)) { *ff = file_format; driver_info=&file_stream; driver=file_drv; Modified: mplayerxp/libmpstream/stream_internal.h =================================================================== --- mplayerxp/libmpstream/stream_internal.h 2012-12-07 17:50:52 UTC (rev 518) +++ mplayerxp/libmpstream/stream_internal.h 2012-12-08 07:53:03 UTC (rev 519) @@ -10,7 +10,7 @@ /** Stream-driver interface */ class Stream_Interface : public Opaque { public: - Stream_Interface() {} + Stream_Interface(libinput_t*) {} virtual ~Stream_Interface() {} /** Opens stream with given name * @param libinput points libinput2 @@ -18,7 +18,7 @@ * @param filename points MRL of stream (vcdnav://, file://, http://, ...) * @param flags currently unused and filled as 0 **/ - virtual MPXP_Rc open(libinput_t* libinput,const char *filename,unsigned flags) = 0; + virtual MPXP_Rc open(const char *filename,unsigned flags) = 0; /** Reads next packet from stream * @param _this points structure which identifies stream @@ -66,7 +66,7 @@ struct stream_interface_info_t { const char* mrl; /**< MRL of stream driver */ const char* descr; /**< description of the driver */ - Stream_Interface* (*query_interface)(); + Stream_Interface* (*query_interface)(libinput_t*); }; } // namespace mpxp #endif Modified: mplayerxp/libmpstream/tcp.cpp =================================================================== --- mplayerxp/libmpstream/tcp.cpp 2012-12-07 17:50:52 UTC (rev 518) +++ mplayerxp/libmpstream/tcp.cpp 2012-12-08 07:53:03 UTC (rev 519) @@ -51,7 +51,7 @@ // return -2 for fatal error, like unable to resolve name, connection timeout... // return -1 is unable to connect to a particular port -void Tcp::open(libinput_t* libinput,const char *host, int port, tcp_af_e af) { +void Tcp::open(const char *host, int port, tcp_af_e af) { socklen_t err_len; int ret,count = 0; fd_set set; @@ -224,16 +224,18 @@ } } -Tcp::Tcp(libinput_t* libinput,const char *host,int port,tcp_af_e af) +Tcp::Tcp(libinput_t* _libinput,const char *host,int port,tcp_af_e af) :_fd(-1), - _error(Tcp::Err_None) + _error(Tcp::Err_None), + libinput(_libinput) { - open(libinput,host,port,af); + open(host,port,af); } -Tcp::Tcp(net_fd_t fd) +Tcp::Tcp(libinput_t* _libinput,net_fd_t fd) :_fd(fd), - _error(Tcp::Err_None) + _error(Tcp::Err_None), + libinput(_libinput) { } Modified: mplayerxp/libmpstream/tcp.h =================================================================== --- mplayerxp/libmpstream/tcp.h 2012-12-07 17:50:52 UTC (rev 518) +++ mplayerxp/libmpstream/tcp.h 2012-12-08 07:53:03 UTC (rev 519) @@ -38,7 +38,7 @@ Err_Port =-1, /* unable to connect to a particular port */ Err_None =0 /* no error */ }; - Tcp(net_fd_t fd); + Tcp(libinput_t* libinput,net_fd_t fd); Tcp(libinput_t* libinput,const char *host,int port,tcp_af_e af=Tcp::IP4); virtual ~Tcp(); @@ -49,13 +49,14 @@ virtual int has_data(int timeout) const; virtual tcp_error_e error() const; - virtual void open(libinput_t* libinput,const char *host,int port,tcp_af_e af=Tcp::IP4); + virtual void open(const char *host,int port,tcp_af_e af=Tcp::IP4); virtual int read(uint8_t* buf,unsigned len,int flags=0); virtual int write(const uint8_t* buf,unsigned len,int flags=0) const; virtual void close(); private: net_fd_t _fd; tcp_error_e _error; + libinput_t* libinput; }; } // namespace mpxp #endif /* TCP_H */ This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <nic...@us...> - 2012-12-08 09:18:01
|
Revision: 522 http://mplayerxp.svn.sourceforge.net/mplayerxp/?rev=522&view=rev Author: nickols_k Date: 2012-12-08 09:17:54 +0000 (Sat, 08 Dec 2012) Log Message: ----------- security patch: more private data for struct Stream and make it independed from Demuxer* and networking_t* Modified Paths: -------------- mplayerxp/libmpdemux/demux_asf.cpp mplayerxp/libmpdemux/demux_rawaudio.cpp mplayerxp/libmpdemux/demux_rawvideo.cpp mplayerxp/libmpdemux/demuxer.cpp mplayerxp/libmpstream/cache2.cpp mplayerxp/libmpstream/stream.cpp mplayerxp/libmpstream/stream.h mplayerxp/mplayerxp.cpp Modified: mplayerxp/libmpdemux/demux_asf.cpp =================================================================== --- mplayerxp/libmpdemux/demux_asf.cpp 2012-12-08 08:35:38 UTC (rev 521) +++ mplayerxp/libmpdemux/demux_asf.cpp 2012-12-08 09:17:54 UTC (rev 522) @@ -333,14 +333,6 @@ if(streams) { uint32_t vr = 0, ar = 0,i; -#ifdef HAVE_STREAMING - if( demuxer->stream->networking!=NULL ) { - if( demuxer->stream->networking->bandwidth!=0 && demuxer->stream->networking->data!=NULL ) { - best_audio = ((asf_http_networking_t*)demuxer->stream->networking->data)->audio_id; - best_video = ((asf_http_networking_t*)demuxer->stream->networking->data)->video_id; - } - } else -#endif for(i = 0; i < stream_count; i++) { uint32_t id = streams[2*i]; uint32_t rate = streams[2*i+1]; Modified: mplayerxp/libmpdemux/demux_rawaudio.cpp =================================================================== --- mplayerxp/libmpdemux/demux_rawaudio.cpp 2012-12-08 08:35:38 UTC (rev 521) +++ mplayerxp/libmpdemux/demux_rawaudio.cpp 2012-12-08 09:17:54 UTC (rev 522) @@ -48,10 +48,10 @@ sh_audio_t* sh_audio; WAVEFORMATEX* w; - stream_control(demuxer->stream,SCTRL_AUD_GET_CHANNELS,&channels); - stream_control(demuxer->stream,SCTRL_AUD_GET_SAMPLERATE,&samplerate); - stream_control(demuxer->stream,SCTRL_AUD_GET_SAMPLESIZE,&samplesize); - stream_control(demuxer->stream,SCTRL_AUD_GET_FORMAT,&wtag); + demuxer->stream->ctrl(SCTRL_AUD_GET_CHANNELS,&channels); + demuxer->stream->ctrl(SCTRL_AUD_GET_SAMPLERATE,&samplerate); + demuxer->stream->ctrl(SCTRL_AUD_GET_SAMPLESIZE,&samplesize); + demuxer->stream->ctrl(SCTRL_AUD_GET_FORMAT,&wtag); sh_audio = demuxer->new_sh_audio(); sh_audio->wf = w = (WAVEFORMATEX*)mp_malloc(sizeof(WAVEFORMATEX)); w->wFormatTag = sh_audio->wtag = wtag; Modified: mplayerxp/libmpdemux/demux_rawvideo.cpp =================================================================== --- mplayerxp/libmpdemux/demux_rawvideo.cpp 2012-12-08 08:35:38 UTC (rev 521) +++ mplayerxp/libmpdemux/demux_rawvideo.cpp 2012-12-08 09:17:54 UTC (rev 522) @@ -81,10 +81,10 @@ case 7: priv.width=1408;priv.height=1152;break; case 8: priv.width=352; priv.height=240; break; } - stream_control(demuxer->stream,SCTRL_VID_GET_WIDTH,&priv.width); - stream_control(demuxer->stream,SCTRL_VID_GET_HEIGHT,&priv.height); - stream_control(demuxer->stream,SCTRL_VID_GET_FORMAT,&priv.format); - stream_control(demuxer->stream,SCTRL_VID_GET_FPS,&priv.fps); + demuxer->stream->ctrl(SCTRL_VID_GET_WIDTH,&priv.width); + demuxer->stream->ctrl(SCTRL_VID_GET_HEIGHT,&priv.height); + demuxer->stream->ctrl(SCTRL_VID_GET_FORMAT,&priv.format); + demuxer->stream->ctrl(SCTRL_VID_GET_FPS,&priv.fps); if(!priv.width || !priv.height){ MSG_ERR("rawvideo: width or height not specified!\n"); Modified: mplayerxp/libmpdemux/demuxer.cpp =================================================================== --- mplayerxp/libmpdemux/demuxer.cpp 2012-12-08 08:35:38 UTC (rev 521) +++ mplayerxp/libmpdemux/demuxer.cpp 2012-12-08 09:17:54 UTC (rev 522) @@ -356,11 +356,10 @@ for(i=0;i<sizeof(stream_txt_ids)/sizeof(struct s_stream_txt_ids);i++) if(!info().get(stream_txt_ids[i].demuxer_id)) { char stream_name[256]; - if(stream_control(stream,stream_txt_ids[i].stream_id,stream_name) == MPXP_Ok) { + if(stream->ctrl(stream_txt_ids[i].stream_id,stream_name) == MPXP_Ok) { info().add(stream_txt_ids[i].demuxer_id,stream_name); } } - stream->demuxer=this; return MPXP_Ok; } Modified: mplayerxp/libmpstream/cache2.cpp =================================================================== --- mplayerxp/libmpstream/cache2.cpp 2012-12-08 08:35:38 UTC (rev 521) +++ mplayerxp/libmpstream/cache2.cpp 2012-12-08 09:17:54 UTC (rev 522) @@ -112,9 +112,9 @@ MSG_DBG2("Out of boundaries... seeking to %lli {in_cache(%i) %lli<%lli>%lli} \n" ,new_start,in_cache,START_FILEPOS(c),readpos,END_FILEPOS(c)); if(c->stream->eof() || c->eof) c->stream->reset(); - c->stream->driver->seek(new_start); + c->stream->seek(new_start); if(errno) { MSG_WARN("c2_seek(drv:%s) error: %s\n",c->stream->driver_info->mrl,strerror(errno)); errno=0; } - if((c->packets[c->first].filepos=c->stream->driver->tell())<0) seek_eof=1; + if((c->packets[c->first].filepos=c->stream->tell())<0) seek_eof=1; c->last=c->first; if(c->packets[c->first].filepos < new_start-(off_t)c->stream->sector_size()) MSG_WARN("CACHE2: found wrong offset after seeking %lli (wanted: %lli)\n",c->packets[c->first].filepos,new_start); @@ -144,8 +144,8 @@ { CACHE2_PACKET_TLOCK(cidx); c->packets[cidx].sp.len=c->sector_size; - c->packets[cidx].filepos = c->stream->driver->tell(); - c->stream->driver->read(&c->packets[cidx].sp); + c->packets[cidx].filepos = c->stream->tell(); + c->stream->read(&c->packets[cidx].sp); MSG_DBG2("CACHE2: read_packet at %lli (wanted %u got %u type %i)",c->packets[cidx].filepos,c->sector_size,c->packets[cidx].sp.len,c->packets[cidx].sp.type); if(mp_conf.verbose>1) if(c->packets[cidx].sp.len>8) { @@ -154,7 +154,7 @@ MSG_DBG2("%02X ",(int)(unsigned char)c->packets[cidx].sp.buf[i]); } MSG_DBG2("\n"); - if(stream_control(c->stream,SCTRL_EOF,NULL)==MPXP_Ok) legacy_eof=1; + if(c->stream->ctrl(SCTRL_EOF,NULL)==MPXP_Ok) legacy_eof=1; else legacy_eof=0; if(c->packets[cidx].sp.len < 0 || (c->packets[cidx].sp.len == 0 && c->packets[cidx].sp.type == 0) || legacy_eof || seek_eof) { /* EOF */ @@ -354,7 +354,7 @@ do{ c->packets[cidx].state|=CPF_EMPTY; cidx=CP_NEXT(c,cidx); }while(cidx!=c->first); c->last=c->first; c->read_filepos=c->stream->start_pos(); - c->stream->driver->seek(c->read_filepos); + c->stream->seek(c->read_filepos); } } @@ -619,11 +619,6 @@ else return nc_stream_skip(s,len); } -MPXP_Rc __FASTCALL__ stream_control(const Stream *s,unsigned cmd,any_t*param) -{ - return nc_stream_control(s,cmd,param); -} - void __FASTCALL__ stream_reset(Stream *s) { if(s->cache_data) c2_stream_reset(s->cache_data); Modified: mplayerxp/libmpstream/stream.cpp =================================================================== --- mplayerxp/libmpstream/stream.cpp 2012-12-08 08:35:38 UTC (rev 521) +++ mplayerxp/libmpstream/stream.cpp 2012-12-08 09:17:54 UTC (rev 522) @@ -98,9 +98,15 @@ reset(); } +Stream::Stream(Demuxer_Stream* ds) { + _type=Stream::Type_DS; + driver=ds->demuxer->stream->driver; + priv = ds; +} + Stream::~Stream(){ MSG_INFO("\n*** free_stream(drv:%s) called [errno: %s]***\n",driver_info->mrl,strerror(errno)); - if(driver) driver->close(); + if(driver) close(); delete buffer; delete driver; } @@ -161,6 +167,11 @@ delete buffer; return MPXP_False; } +MPXP_Rc Stream::ctrl(unsigned cmd,any_t* param) { return driver->ctrl(cmd,param); } +int Stream::read(stream_packet_t * sp) { return driver->read(sp); } +off_t Stream::seek(off_t off) { return driver->seek(off); } +off_t Stream::tell() const { return driver->tell(); } +void Stream::close() { driver->close(); } void Stream::reset(){ if(_eof){ @@ -191,15 +202,15 @@ sp.type=0; sp.len=s->sector_size(); sp.buf=(char *)s->buffer; - if(s->type()==Stream::Type_DS) len = reinterpret_cast<Demuxer_Stream*>(s->priv)->read_data(s->buffer,s->sector_size()); - else { if(!s->driver) { s->eof(1); return 0; } len = s->driver->read(&sp); } + if(s->type()==Stream::Type_DS) len = reinterpret_cast<Demuxer_Stream*>(s)->read_data(s->buffer,s->sector_size()); + else len = s->read(&sp); if(sp.type) { if(s->event_handler) s->event_handler(s,&sp); continue; } - if(s->driver->ctrl(SCTRL_EOF,NULL)==MPXP_Ok) legacy_eof=1; - else legacy_eof=0; + if(s->ctrl(SCTRL_EOF,NULL)==MPXP_Ok)legacy_eof=1; + else legacy_eof=0; if(sp.len<=0 || legacy_eof) { MSG_DBG3("nc_stream_read_cbuffer: Guess EOF\n"); @@ -230,8 +241,7 @@ MSG_DBG3("nc_stream_seek_long to %llu\n",newpos); if(newpos==0 || newpos!=s->pos()) { - if(!s->driver) { s->eof(1); return 0; } - s->pos(s->driver->seek(newpos)); + s->pos(s->seek(newpos)); if(errno) { MSG_WARN("nc_stream_seek(drv:%s) error: %s\n",s->driver_info->mrl,strerror(errno)); errno=0; } } MSG_DBG3("nc_stream_seek_long after: %llu\n",s->pos()); @@ -275,14 +285,6 @@ return s; } -Stream* __FASTCALL__ new_ds_stream(Demuxer_Stream *ds) { - Stream* s = new(zeromem) Stream(Stream::Type_DS); - s->driver=ds->demuxer->stream->driver; - s->priv = ds; - check_pin("stream",ds->pin,DS_PIN); - return s; -} - int __FASTCALL__ nc_stream_read_char(Stream *s) { unsigned char retval; @@ -411,7 +413,4 @@ return 1; } -MPXP_Rc __FASTCALL__ nc_stream_control(const Stream *s,unsigned cmd,any_t*param) { - return s->driver->ctrl(cmd,param); -} } //namespace mpxp Modified: mplayerxp/libmpstream/stream.h =================================================================== --- mplayerxp/libmpstream/stream.h 2012-12-08 08:35:38 UTC (rev 521) +++ mplayerxp/libmpstream/stream.h 2012-12-08 09:17:54 UTC (rev 522) @@ -39,7 +39,7 @@ }; struct cache_vars_s; - struct Demuxer; + class Demuxer_Stream; class Stream_Interface; struct stream_interface_info_t; /** Stream description */ @@ -58,40 +58,43 @@ Type_Menu =0x00000100, /**< Stream contains DVD menu... */ }; Stream(type_e type=Stream::Type_Unknown); + Stream(Demuxer_Stream* ds); virtual ~Stream(); - MPXP_Rc open(libinput_t*libinput,const char* filename,int* file_format,stream_callback event_handler); - void reset(); - void type(type_e);/**< assign new propertie for the stream (see STREAMTYPE_ for detail) */ - type_e type(); /**< properties of the stream (see STREAMTYPE_ for detail) */ - off_t pos() const; /**< SOF offset from begin of stream */ - void pos(off_t); /**< SOF offset from begin of stream */ - int eof() const; /**< indicates EOF */ - void eof(int); /**< set EOF */ - off_t start_pos() const; /**< real start of stream (without internet's headers) */ - off_t end_pos() const; /**< real end of stream (media may be not fully filled) */ - unsigned sector_size() const; /**< alignment of read operations (1 for file, VCD_SECTOR_SIZE for VCDs) */ - float stream_pts() const; /**< PTS correction for idiotics DVD's discontinuities */ + virtual MPXP_Rc open(libinput_t*libinput,const char* filename,int* file_format,stream_callback event_handler); + virtual int read(stream_packet_t * sp); + virtual off_t seek(off_t off); + virtual off_t tell() const; + virtual void close(); + virtual MPXP_Rc ctrl(unsigned cmd,any_t* param); + virtual void reset(); + virtual void type(type_e);/**< assign new propertie for the stream (see STREAMTYPE_ for detail) */ + virtual type_e type(); /**< properties of the stream (see STREAMTYPE_ for detail) */ + virtual off_t pos() const; /**< SOF offset from begin of stream */ + virtual void pos(off_t); /**< SOF offset from begin of stream */ + virtual int eof() const; /**< indicates EOF */ + virtual void eof(int); /**< set EOF */ + 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 float stream_pts() const; /**< PTS correction for idiotics DVD's discontinuities */ + char antiviral_hole[RND_CHAR3]; unsigned pin; /**< personal identification number */ int file_format; /**< detected file format (by http:// protocol for example) */ unsigned int buf_pos; /**< position whitin of small cache */ unsigned int buf_len; /**< length of small cache */ unsigned char* buffer;/**< buffer of small cache */ - Demuxer* demuxer; /* parent demuxer */ struct cache_vars_s*cache_data; /**< large cache */ - Opaque* priv; /**< private data used by stream driver */ -#ifdef HAVE_STREAMING - networking_t* networking; /**< callback for internet networking control */ -#endif - Stream_Interface *driver; /**< low-level stream driver */ const stream_interface_info_t* driver_info; stream_callback event_handler; /**< callback for streams which provide events */ private: - type_e _type; - off_t _pos; /**< SOF offset from begin of stream */ - int _eof; /**< indicates EOF */ + Stream_Interface* driver; /**< low-level stream driver */ + Opaque* priv; /**< private data used by stream driver */ + type_e _type; + off_t _pos; /**< SOF offset from begin of stream */ + int _eof; /**< indicates EOF */ }; inline Stream::type_e operator~(Stream::type_e a) { return static_cast<Stream::type_e>(~static_cast<unsigned>(a)); } inline Stream::type_e operator|(Stream::type_e a, Stream::type_e b) { return static_cast<Stream::type_e>(static_cast<unsigned>(a)|static_cast<unsigned>(b)); } @@ -113,8 +116,6 @@ extern int __FASTCALL__ nc_stream_seek(Stream *s,off_t pos); extern int __FASTCALL__ nc_stream_skip(Stream *s,off_t len); - extern MPXP_Rc __FASTCALL__ nc_stream_control(const Stream *s,unsigned cmd,any_t*param); - /* this block describes interface to cache/non-cache stream functions */ extern int __FASTCALL__ stream_read_char(Stream *s); extern int __FASTCALL__ stream_read(Stream *s,any_t* mem,int total); @@ -123,7 +124,6 @@ extern int __FASTCALL__ stream_skip(Stream *s,off_t len); extern int __FASTCALL__ stream_eof(Stream *s); extern void __FASTCALL__ stream_set_eof(Stream *s,int eof); - extern MPXP_Rc __FASTCALL__ stream_control(const Stream *s,unsigned cmd,any_t*param); void __FASTCALL__ stream_reset(Stream *s); Stream* __FASTCALL__ new_memory_stream(const unsigned char* data,int len); Modified: mplayerxp/mplayerxp.cpp =================================================================== --- mplayerxp/mplayerxp.cpp 2012-12-08 08:35:38 UTC (rev 521) +++ mplayerxp/mplayerxp.cpp 2012-12-08 09:17:54 UTC (rev 522) @@ -793,7 +793,7 @@ static void __FASTCALL__ mpxp_stream_event_handler(Stream *s,const stream_packet_t *sp) { - stream_control(s,SCRTL_EVT_HANDLE,(any_t*)sp); + s->ctrl(SCRTL_EVT_HANDLE,(any_t*)sp); } static void init_benchmark(void) @@ -1007,7 +1007,7 @@ if(mp_conf.audio_lang) { lang=new char [std::max(strlen(mp_conf.audio_lang)+1,size_t(4))]; strcpy(lang,mp_conf.audio_lang); - if(mp_conf.audio_id==-1 && stream_control(stream,SCTRL_LNG_GET_AID,lang)==MPXP_Ok) { + if(mp_conf.audio_id==-1 && stream->ctrl(SCTRL_LNG_GET_AID,lang)==MPXP_Ok) { mp_conf.audio_id=*(int *)lang; } delete lang; @@ -1015,7 +1015,7 @@ if(mp_conf.dvdsub_lang) { lang=new char [std::max(strlen(mp_conf.dvdsub_lang)+1,size_t(4))]; strcpy(lang,mp_conf.dvdsub_lang); - if(mp_conf.dvdsub_id==-1 && stream_control(stream,SCTRL_LNG_GET_SID,lang)==MPXP_Ok) { + if(mp_conf.dvdsub_id==-1 && stream->ctrl(SCTRL_LNG_GET_SID,lang)==MPXP_Ok) { mp_conf.dvdsub_id=*(int *)lang; } delete lang; @@ -1089,7 +1089,7 @@ if (mpxp_context().video().output->spudec==NULL) { unsigned *pal; MP_UNIT("spudec_init"); - if(stream_control(stream,SCTRL_VID_GET_PALETTE,&pal)==MPXP_Ok) + if(stream->ctrl(SCTRL_VID_GET_PALETTE,&pal)==MPXP_Ok) mpxp_context().video().output->spudec=spudec_new_scaled(pal,sh_video->src_w, sh_video->src_h); } @@ -1351,7 +1351,7 @@ #ifdef USE_OSD int MPXPSystem::paint_osd(int* osd_visible,int* in_pause) { - const Stream* stream=_demuxer->stream; + Stream* stream=_demuxer->stream; sh_audio_t* sh_audio=reinterpret_cast<sh_audio_t*>(_demuxer->audio->sh); sh_video_t* sh_video=reinterpret_cast<sh_video_t*>(_demuxer->video->sh); int rc=0; @@ -1365,7 +1365,7 @@ } if(osd_function==OSD_DVDMENU) { rect_highlight_t hl; - if(stream_control(stream,SCTRL_VID_GET_HILIGHT,&hl)==MPXP_Ok) { + if(stream->ctrl(SCTRL_VID_GET_HILIGHT,&hl)==MPXP_Ok) { osd_set_nav_box (hl.sx, hl.sy, hl.ex, hl.ey); MSG_V("Set nav box: %i %i %i %i\n",hl.sx, hl.sy, hl.ex, hl.ey); vo_osd_changed (OSDTYPE_DVDNAV); @@ -1603,10 +1603,10 @@ else cmd->id=MP_CMD_TV_STEP_CHANNEL_DOWN; case MP_CMD_TV_STEP_NORM: case MP_CMD_TV_STEP_CHANNEL_LIST: - stream_control(stream,SCRTL_MPXP_CMD,(any_t*)cmd->id); + stream->ctrl(SCRTL_MPXP_CMD,(any_t*)cmd->id); break; case MP_CMD_DVDNAV: - if(stream_control(stream,SCRTL_MPXP_CMD,(any_t*)cmd->args[0].v.i)==MPXP_Ok) { + if(stream->ctrl(SCRTL_MPXP_CMD,(any_t*)cmd->args[0].v.i)==MPXP_Ok) { if(cmd->args[0].v.i!=MP_CMD_DVDNAV_SELECT) { stream->type(Stream::Type_Menu); state->need_repaint=1; This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <nic...@us...> - 2012-12-08 09:26:23
|
Revision: 523 http://mplayerxp.svn.sourceforge.net/mplayerxp/?rev=523&view=rev Author: nickols_k Date: 2012-12-08 09:26:17 +0000 (Sat, 08 Dec 2012) Log Message: ----------- security patch: make struct Stream independed from Demuxer_Stream* Modified Paths: -------------- mplayerxp/libmpdemux/demuxer.h mplayerxp/libmpstream/stream.cpp mplayerxp/libmpstream/stream.h Modified: mplayerxp/libmpdemux/demuxer.h =================================================================== --- mplayerxp/libmpdemux/demuxer.h 2012-12-08 09:17:54 UTC (rev 522) +++ mplayerxp/libmpdemux/demuxer.h 2012-12-08 09:26:17 UTC (rev 523) @@ -152,8 +152,6 @@ inline Demuxer::demuxer_flags_e operator&=(Demuxer::demuxer_flags_e a, Demuxer::demuxer_flags_e b) { return (a=static_cast<Demuxer::demuxer_flags_e>(static_cast<unsigned>(a)&static_cast<unsigned>(b))); } inline Demuxer::demuxer_flags_e operator^=(Demuxer::demuxer_flags_e a, Demuxer::demuxer_flags_e b) { return (a=static_cast<Demuxer::demuxer_flags_e>(static_cast<unsigned>(a)^static_cast<unsigned>(b))); } - // This is defined here because demux_stream_t ins't defined in stream.h - Stream* __FASTCALL__ new_ds_stream(Demuxer_Stream *ds); Demuxer* new_demuxers_demuxer(Demuxer* vd, Demuxer* ad, Demuxer* sd); }// namespace mpxp #endif Modified: mplayerxp/libmpstream/stream.cpp =================================================================== --- mplayerxp/libmpstream/stream.cpp 2012-12-08 09:17:54 UTC (rev 522) +++ mplayerxp/libmpstream/stream.cpp 2012-12-08 09:26:17 UTC (rev 523) @@ -98,12 +98,6 @@ reset(); } -Stream::Stream(Demuxer_Stream* ds) { - _type=Stream::Type_DS; - driver=ds->demuxer->stream->driver; - priv = ds; -} - Stream::~Stream(){ MSG_INFO("\n*** free_stream(drv:%s) called [errno: %s]***\n",driver_info->mrl,strerror(errno)); if(driver) close(); Modified: mplayerxp/libmpstream/stream.h =================================================================== --- mplayerxp/libmpstream/stream.h 2012-12-08 09:17:54 UTC (rev 522) +++ mplayerxp/libmpstream/stream.h 2012-12-08 09:26:17 UTC (rev 523) @@ -39,7 +39,6 @@ }; struct cache_vars_s; - class Demuxer_Stream; class Stream_Interface; struct stream_interface_info_t; /** Stream description */ @@ -58,7 +57,6 @@ Type_Menu =0x00000100, /**< Stream contains DVD menu... */ }; Stream(type_e type=Stream::Type_Unknown); - Stream(Demuxer_Stream* ds); virtual ~Stream(); virtual MPXP_Rc open(libinput_t*libinput,const char* filename,int* file_format,stream_callback event_handler); This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <nic...@us...> - 2012-12-08 13:28:05
|
Revision: 524 http://mplayerxp.svn.sourceforge.net/mplayerxp/?rev=524&view=rev Author: nickols_k Date: 2012-12-08 13:27:53 +0000 (Sat, 08 Dec 2012) Log Message: ----------- New classes based on struct Stream. Removed event_handler callback as meaningless Modified Paths: -------------- mplayerxp/dump.cpp mplayerxp/dump.h mplayerxp/libmpdemux/demux_aiff.cpp mplayerxp/libmpdemux/demux_asf.cpp mplayerxp/libmpdemux/demux_audio.cpp mplayerxp/libmpdemux/demux_avi.cpp mplayerxp/libmpdemux/demux_bmp.cpp mplayerxp/libmpdemux/demux_demuxers.cpp mplayerxp/libmpdemux/demux_dv.cpp mplayerxp/libmpdemux/demux_film.cpp mplayerxp/libmpdemux/demux_fli.cpp mplayerxp/libmpdemux/demux_lavf.cpp mplayerxp/libmpdemux/demux_mkv.cpp mplayerxp/libmpdemux/demux_mov.cpp mplayerxp/libmpdemux/demux_mpg.cpp mplayerxp/libmpdemux/demux_mpxp64.cpp mplayerxp/libmpdemux/demux_nsv.cpp mplayerxp/libmpdemux/demux_nuv.cpp mplayerxp/libmpdemux/demux_ogg.cpp mplayerxp/libmpdemux/demux_pva.cpp mplayerxp/libmpdemux/demux_rawaudio.cpp mplayerxp/libmpdemux/demux_rawvideo.cpp mplayerxp/libmpdemux/demux_real.cpp mplayerxp/libmpdemux/demux_realaud.cpp mplayerxp/libmpdemux/demux_roq.cpp mplayerxp/libmpdemux/demux_smjpeg.cpp mplayerxp/libmpdemux/demux_ts.cpp mplayerxp/libmpdemux/demux_ty.cpp mplayerxp/libmpdemux/demux_viv.cpp mplayerxp/libmpdemux/demux_vqf.cpp mplayerxp/libmpdemux/demux_y4m.cpp mplayerxp/libmpdemux/demuxer.cpp mplayerxp/libmpdemux/demuxer_stream.cpp mplayerxp/libmpdemux/parse_mp4.cpp mplayerxp/libmpdemux/yuv4mpeg.cpp mplayerxp/libmpdemux/yuv4mpeg.h mplayerxp/libmpstream/cache2.cpp mplayerxp/libmpstream/stream.cpp mplayerxp/libmpstream/stream.h mplayerxp/libmpsub/vobsub.cpp mplayerxp/libplaytree/asxparser.cpp mplayerxp/libplaytree/playtreeparser.cpp mplayerxp/mplayerxp.cpp Modified: mplayerxp/dump.cpp =================================================================== --- mplayerxp/dump.cpp 2012-12-08 09:26:17 UTC (rev 523) +++ mplayerxp/dump.cpp 2012-12-08 13:27:53 UTC (rev 524) @@ -43,8 +43,8 @@ FILE *f; const char *ext,*name; MP_UNIT("dumpstream"); - stream_reset(stream); - stream_seek(stream,stream->start_pos()); + stream->reset(); + stream->seek(stream->start_pos()); ext=".ext"; if(!port) { @@ -62,8 +62,8 @@ exit_player(MSGTR_Exit_error); } MSG_INFO("Dumping stream to %s\n",name); - while(!stream_eof(stream)){ - len=stream_read(stream,buf,4096); + while(!stream->eof()){ + len=stream->read(buf,4096); if(len>0) fwrite(buf,len,1,f); } fclose(f); @@ -92,10 +92,6 @@ libinput_t* libinput; }; -void __FASTCALL__ dump_stream_event_handler(Stream *s,const stream_packet_t*sp) -{ -} - /* returns: 0 - nothing interested -1 - quit Modified: mplayerxp/dump.h =================================================================== --- mplayerxp/dump.h 2012-12-08 09:26:17 UTC (rev 523) +++ mplayerxp/dump.h 2012-12-08 13:27:53 UTC (rev 524) @@ -10,6 +10,5 @@ void dump_mux_init(Demuxer *demuxer,libinput_t*libinput); void dump_mux(Demuxer *demuxer,int use_pts,const char *seek_to_sec,unsigned play_n_frames); void dump_mux_close(Demuxer *demuxer); - void __FASTCALL__ dump_stream_event_handler(Stream *s,const stream_packet_t*sp); } //namespace #endif Modified: mplayerxp/libmpdemux/demux_aiff.cpp =================================================================== --- mplayerxp/libmpdemux/demux_aiff.cpp 2012-12-08 09:26:17 UTC (rev 523) +++ mplayerxp/libmpdemux/demux_aiff.cpp 2012-12-08 13:27:53 UTC (rev 524) @@ -45,7 +45,7 @@ char buf[12]; Stream *s; s = demuxer->stream; - stream_read(s,buf,12); + s->read(buf,12); if(*((uint32_t *)&buf[0])==mmioFOURCC('F','O','R','M') && *((uint32_t *)&buf[8])==mmioFOURCC('A','I','F','F')) return MPXP_Ok; if(*((uint32_t *)&buf[0])==mmioFOURCC('F','O','R','M') && *((uint32_t *)&buf[8])==mmioFOURCC('A','I','F','C')) return MPXP_Ok; return MPXP_False; @@ -70,16 +70,16 @@ sh_audio->afmt = bps2afmt(2); w->wBitsPerSample = 8*afmt2bps(sh_audio->afmt); w->cbSize = 0; - stream_reset(s); - stream_seek(s,8); - if(stream_read(s,preamble,4)!=4) return NULL; + s->reset(); + s->seek(8); + if(s->read(preamble,4)!=4) return NULL; if(*((uint32_t *)&preamble[0])==mmioFOURCC('A','I','F','C')) priv->verc=1; demuxer->movi_start=0; while(1) { unsigned frames=0; int chunk_size; - if(stream_read(s,preamble,8)!=8) break; + if(s->read(preamble,8)!=8) break; chunk_size=be2me_32(*((uint32_t *)&preamble[4])); MSG_V("Got preamble: %c%c%c%c\n",preamble[0],preamble[1],preamble[2],preamble[3]); if(*((uint32_t *)&preamble[0])==mmioFOURCC('F','V','E','R')) @@ -89,7 +89,7 @@ MSG_V("Wrong length of VFER chunk %lu\n",be2me_32(*((uint32_t *)&preamble[4]))); return NULL; } - if(stream_read(s,preamble,4)!=4) return NULL; + if(s->read(preamble,4)!=4) return NULL; if(be2me_32(*((uint32_t *)&preamble[0])) == 0xA2805140) priv->verc=1; else { @@ -107,7 +107,7 @@ MSG_V("Invalid COMM length %u\n",chunk_size); return NULL; } - if(stream_read(s,buf,chunk_size)!=chunk_size) return NULL; + if(s->read(buf,chunk_size)!=chunk_size) return NULL; w->nChannels = sh_audio->nch = be2me_16(*((uint16_t *)&buf[0])); frames=be2me_32(*((uint32_t *)&buf[2])); w->wBitsPerSample = be2me_16(*((uint16_t *)&buf[6])); @@ -128,51 +128,51 @@ if(*((uint32_t *)&preamble[0])==mmioFOURCC('S','S','N','D') || *((uint32_t *)&preamble[0])==mmioFOURCC('A','P','C','M')) { - demuxer->movi_start=stream_tell(s)+8; + demuxer->movi_start=s->tell()+8; demuxer->movi_end=demuxer->movi_start+chunk_size; if(priv->verc && (chunk_size&1)) chunk_size++; - stream_skip(s,chunk_size); + s->skip(chunk_size); } else if(*((uint32_t *)&preamble[0])==mmioFOURCC('N','A','M','E')) { char buf[chunk_size+1]; - stream_read(s,buf,chunk_size); + s->read(buf,chunk_size); buf[chunk_size]=0; demuxer->info().add(INFOT_NAME, buf); - if(priv->verc && (chunk_size&1)) stream_read_char(s); + if(priv->verc && (chunk_size&1)) s->read_char(); } else if(*((uint32_t *)&preamble[0])==mmioFOURCC('A','U','T','H')) { char buf[chunk_size+1]; - stream_read(s,buf,chunk_size); + s->read(buf,chunk_size); buf[chunk_size]=0; demuxer->info().add(INFOT_AUTHOR, buf); - if(priv->verc && (chunk_size&1)) stream_read_char(s); + if(priv->verc && (chunk_size&1)) s->read_char(); } else if(*((uint32_t *)&preamble[0])==mmioFOURCC('(','c',')',' ')) { char buf[chunk_size+1]; - stream_read(s,buf,chunk_size); + s->read(buf,chunk_size); buf[chunk_size]=0; demuxer->info().add(INFOT_COPYRIGHT, buf); - if(priv->verc && (chunk_size&1)) stream_read_char(s); + if(priv->verc && (chunk_size&1)) s->read_char(); } else if(*((uint32_t *)&preamble[0])==mmioFOURCC('A','N','N','O')) { char buf[chunk_size+1]; - stream_read(s,buf,chunk_size); + s->read(buf,chunk_size); buf[chunk_size]=0; demuxer->info().add(INFOT_DESCRIPTION, buf); - if(priv->verc && (chunk_size&1)) stream_read_char(s); + if(priv->verc && (chunk_size&1)) s->read_char(); } else { if(priv->verc && (chunk_size&1)) chunk_size++; - stream_skip(s,chunk_size); /*unknown chunk type */ + s->skip(chunk_size); /*unknown chunk type */ } } if(!w->nAvgBytesPerSec) { MSG_V("COMM chunk not found\n"); return NULL; /* memleak here!!! */} @@ -180,16 +180,16 @@ demuxer->movi_length = (demuxer->movi_end-demuxer->movi_start)/w->nAvgBytesPerSec; demuxer->audio->sh = sh_audio; sh_audio->ds = demuxer->audio; - stream_seek(s,demuxer->movi_start); + s->seek(demuxer->movi_start); return priv; } static int aiff_demux(Demuxer* demuxer, Demuxer_Stream *ds) { sh_audio_t* sh_audio = reinterpret_cast<sh_audio_t*>(demuxer->audio->sh); int l = sh_audio->wf->nAvgBytesPerSec; - off_t spos = stream_tell(demuxer->stream); + off_t spos = demuxer->stream->tell(); - if(stream_eof(demuxer->stream)) + if(demuxer->stream->eof()) return 0; Demuxer_Packet* dp = new(zeromem) Demuxer_Packet(l); @@ -197,7 +197,7 @@ dp->pos = spos; dp->flags = DP_NONKEYFRAME; - l=stream_read(demuxer->stream,dp->buffer(),l); + l=demuxer->stream->read(dp->buffer(),l); dp->resize(l); ds->add_packet(dp); @@ -209,10 +209,10 @@ sh_audio_t* sh_audio = reinterpret_cast<sh_audio_t*>(demuxer->audio->sh); off_t base,pos; - base = (seeka->flags&DEMUX_SEEK_SET) ? demuxer->movi_start : stream_tell(s); + base = (seeka->flags&DEMUX_SEEK_SET) ? demuxer->movi_start : s->tell(); pos=base+(seeka->flags&DEMUX_SEEK_PERCENTS?(demuxer->movi_end - demuxer->movi_start):sh_audio->i_bps)*seeka->secs; pos -= (pos % (sh_audio->nch * afmt2bps(sh_audio->afmt))); - stream_seek(s,pos); + s->seek(pos); } static void aiff_close(Demuxer* demuxer) Modified: mplayerxp/libmpdemux/demux_asf.cpp =================================================================== --- mplayerxp/libmpdemux/demux_asf.cpp 2012-12-08 09:26:17 UTC (rev 523) +++ mplayerxp/libmpdemux/demux_asf.cpp 2012-12-08 13:27:53 UTC (rev 524) @@ -133,7 +133,7 @@ apriv->asf_packetrate=0; apriv->asf_movielength=0; - stream_read(demuxer->stream,(char*)&apriv->asfh,sizeof(ASF_header_t)); // header obj + demuxer->stream->read((char*)&apriv->asfh,sizeof(ASF_header_t)); // header obj le2me_ASF_header_t(&apriv->asfh); // swap to machine endian if(memcmp(asf2hdrguid,apriv->asfh.objh.guid,16)==0){ MSG_ERR("ASF_check: found ASF v2 guid!\nCurrently is not supported - please report!\n"); @@ -164,16 +164,16 @@ int best_audio = -1; asf_priv_t *apriv=static_cast<asf_priv_t*>(demuxer->priv); -while(!stream_eof(demuxer->stream)){ +while(!demuxer->stream->eof()){ int pos,endpos; - pos=stream_tell(demuxer->stream); - stream_read(demuxer->stream,(char*) &apriv->objh,sizeof(ASF_obj_header_t)); + pos=demuxer->stream->tell(); + demuxer->stream->read((char*) &apriv->objh,sizeof(ASF_obj_header_t)); le2me_ASF_obj_header_t(&apriv->objh); - if(stream_eof(demuxer->stream)) break; // EOF + if(demuxer->stream->eof()) break; // EOF endpos=pos+apriv->objh.size; switch(ASF_LOAD_GUID_PREFIX(apriv->objh.guid)){ case ASF_GUID_PREFIX_stream_header: - stream_read(demuxer->stream,(char*) &apriv->streamh,sizeof(ASF_stream_header_t)); + demuxer->stream->read((char*) &apriv->streamh,sizeof(ASF_stream_header_t)); le2me_ASF_stream_header_t(&apriv->streamh); MSG_V("stream type: %s\n" "stream concealment: %s\n" @@ -184,9 +184,9 @@ ,asf_chunk_type(apriv->streamh.concealment) ,(int)apriv->streamh.type_size,(int)apriv->streamh.stream_size,(int)apriv->streamh.stream_no ,(unsigned long)apriv->streamh.unk1,(unsigned int)apriv->streamh.unk2 - ,stream_tell(demuxer->stream)); + ,demuxer->stream->tell()); // type-specific data: - stream_read(demuxer->stream,(char*) buffer,apriv->streamh.type_size); + demuxer->stream->read((char*) buffer,apriv->streamh.type_size); switch(ASF_LOAD_GUID_PREFIX(apriv->streamh.type)){ case ASF_GUID_PREFIX_audio_stream: { sh_audio_t* sh_audio=demuxer->new_sh_audio(apriv->streamh.stream_no & 0x7F); @@ -196,7 +196,7 @@ le2me_WAVEFORMATEX(sh_audio->wf); if(mp_conf.verbose>=1) print_wave_header(sh_audio->wf,apriv->streamh.type_size); if(ASF_LOAD_GUID_PREFIX(apriv->streamh.concealment)==ASF_GUID_PREFIX_audio_conceal_interleave){ - stream_read(demuxer->stream,(char*) buffer,apriv->streamh.stream_size); + demuxer->stream->read((char*) buffer,apriv->streamh.stream_size); apriv->asf_scrambling_h=buffer[0]; apriv->asf_scrambling_w=(buffer[2]<<8)|buffer[1]; apriv->asf_scrambling_b=(buffer[4]<<8)|buffer[3]; @@ -222,7 +222,7 @@ break; // case ASF_GUID_PREFIX_header_2_0: return "guid_header_2_0"; case ASF_GUID_PREFIX_file_header: // guid_file_header - stream_read(demuxer->stream,(char*) &apriv->fileh,sizeof(ASF_file_header_t)); + demuxer->stream->read((char*) &apriv->fileh,sizeof(ASF_file_header_t)); le2me_ASF_file_header_t(&apriv->fileh); MSG_V("ASF: size: %llu play_duration: %llu send_duration: %llu packets: %d\nflags: %d min_packet_size: %d max_packet_size: %d max_bitrate: %d preroll: %d\n", (uint64_t)apriv->fileh.file_size,(uint64_t)apriv->fileh.play_duration,(uint64_t)apriv->fileh.send_duration, @@ -233,7 +233,7 @@ demuxer->movi_length=apriv->asf_movielength=apriv->fileh.send_duration/10000000LL; break; case ASF_GUID_PREFIX_data_chunk: // guid_data_chunk - demuxer->movi_start=stream_tell(demuxer->stream)+26; + demuxer->movi_start=demuxer->stream->tell()+26; demuxer->movi_end=endpos; MSG_V("Found movie at 0x%X - 0x%X\n",(int)demuxer->movi_start,(int)demuxer->movi_end); break; @@ -243,13 +243,13 @@ case ASF_GUID_PREFIX_content_desc: // Content description { char *string=NULL; - stream_read(demuxer->stream,(char*) &apriv->contenth,sizeof(ASF_content_description_t)); + demuxer->stream->read((char*) &apriv->contenth,sizeof(ASF_content_description_t)); le2me_ASF_content_description_t(&apriv->contenth); MSG_V("\n"); // extract the title if( apriv->contenth.title_size!=0 ) { string=new char[apriv->contenth.title_size]; - stream_read(demuxer->stream, string, apriv->contenth.title_size); + demuxer->stream->read( string, apriv->contenth.title_size); pack_asf_string(string, apriv->contenth.title_size); demuxer->info().add(INFOT_NAME, string); delete string; @@ -257,7 +257,7 @@ // extract the author if( apriv->contenth.author_size!=0 ) { string=new char [apriv->contenth.author_size]; - stream_read(demuxer->stream, string, apriv->contenth.author_size); + demuxer->stream->read( string, apriv->contenth.author_size); pack_asf_string(string, apriv->contenth.author_size); demuxer->info().add(INFOT_AUTHOR, string); delete string; @@ -265,7 +265,7 @@ // extract the copyright if( apriv->contenth.copyright_size!=0 ) { string=new char [apriv->contenth.copyright_size]; - stream_read(demuxer->stream, string, apriv->contenth.copyright_size); + demuxer->stream->read( string, apriv->contenth.copyright_size); pack_asf_string(string, apriv->contenth.copyright_size); demuxer->info().add(INFOT_COPYRIGHT, string); delete string; @@ -273,7 +273,7 @@ // extract the comment if( apriv->contenth.comment_size!=0 ) { string=new char [apriv->contenth.comment_size]; - stream_read(demuxer->stream, string, apriv->contenth.comment_size); + demuxer->stream->read( string, apriv->contenth.comment_size); pack_asf_string(string, apriv->contenth.comment_size); demuxer->info().add(INFOT_COMMENTS, string); delete string; @@ -281,7 +281,7 @@ // extract the rating if( apriv->contenth.rating_size!=0 ) { string=new char [apriv->contenth.rating_size]; - stream_read(demuxer->stream, string, apriv->contenth.rating_size); + demuxer->stream->read( string, apriv->contenth.rating_size); pack_asf_string(string, apriv->contenth.comment_size); demuxer->info().add(INFOT_RATING, string); delete string; @@ -295,13 +295,13 @@ char *object=NULL, *ptr=NULL; MSG_V("============ ASF Stream group == START ===\n"); MSG_V(" object size = %d\n", (int)apriv->objh.size); - object = (char*)mp_malloc(apriv->objh.size); + object = new char[apriv->objh.size]; if( object==NULL ) { MSG_ERR("Memory allocation failed\n"); delete demuxer->priv; return NULL; } - stream_read( demuxer->stream, object, apriv->objh.size ); + demuxer->stream->read(object, apriv->objh.size ); // FIXME: We need some endian handling below... ptr = object; stream_count = le2me_16(*(uint16_t*)ptr); @@ -328,7 +328,7 @@ if(ASF_LOAD_GUID_PREFIX(apriv->objh.guid)==ASF_GUID_PREFIX_data_chunk) break; // movi chunk - if(!stream_seek(demuxer->stream,endpos)) break; + if(!demuxer->stream->seek(endpos)) break; } // while EOF if(streams) { @@ -362,8 +362,8 @@ { Demuxer_Stream *d_video=demuxer->video; Demuxer_Stream *d_audio=demuxer->audio; - stream_reset(demuxer->stream); - stream_seek(demuxer->stream,demuxer->movi_start); + demuxer->stream->reset(); + demuxer->stream->seek(demuxer->movi_start); if(d_video->id != -2) { if(!d_video->fill_buffer()){ MSG_WARN("ASF: " MSGTR_MissingVideoStream); @@ -459,22 +459,22 @@ Demuxer_Packet* dp=ds->asf_packet; if(dp->length()!=unsigned(offs) && offs!=-1) MSG_V("warning! fragment.len=%d BUT next fragment offset=%d \n",dp->length(),offs); dp->resize(dp->length()+len); - stream_seek(demux->stream,dataoff); - stream_read(demux->stream,dp->buffer()+dp->length(),len); + demux->stream->seek(dataoff); + demux->stream->read(dp->buffer()+dp->length(),len); MSG_DBG3("data appended! %d+%d\n",dp->length(),len); // we are ready now. return 1; } } // create new packet: - { + { if(offs>0){ MSG_V("warning! broken fragment or incomplete seeking, %d bytes missing \n",offs); return 0; } Demuxer_Packet* dp=new(zeromem) Demuxer_Packet(len); - stream_seek(demux->stream,dataoff); - len=stream_read(demux->stream,dp->buffer(),len); + demux->stream->seek(dataoff); + len=demux->stream->read(dp->buffer(),len); dp->resize(len); dp->pts=time*0.001f; dp->flags=keyframe?DP_KEYFRAME:DP_NONKEYFRAME; @@ -499,15 +499,15 @@ int done=0; while(!done) { - demux->filepos=stream_tell(demux->stream); + demux->filepos=stream->tell(); // Broadcast stream have movi_start==movi_end // Better test ? if((demux->movi_start != demux->movi_end) && (demux->filepos>=demux->movi_end)){ - stream_set_eof(demux->stream,1); + stream->eof(1); return 0; } - if(stream_eof(demux->stream)) return 0; // EOF + if(stream->eof()) return 0; // EOF { unsigned char ecc_flags; off_t p_start,p_end; unsigned char flags; @@ -521,36 +521,36 @@ unsigned char segsizetype=0x80; int seg=-1; - p_start=stream_tell(stream); + p_start=stream->tell(); p_end = p_start+apriv->asf_packetsize; /* FIXME: parser is not ready for variable packet length */ - ecc_flags=stream_read_char(stream); /* read v82 header */ + ecc_flags=stream->read_char(); /* read v82 header */ MSG_DBG2("ecc=%02X ecc_flags=%u\n",ecc_flags,ecc_flags&0x0F); - stream_skip(stream,ecc_flags&15); - flags=stream_read_char(stream); - segtype=stream_read_char(stream); + stream->skip(ecc_flags&15); + flags=stream->read_char(); + segtype=stream->read_char(); /* Read packet size (plen): */ switch((flags>>5)&3){ - case 3: plen=stream_read_dword_le(stream);break; // dword - case 2: plen=stream_read_word_le(stream);break; // word - case 1: plen=stream_read_char(stream);break; // byte + case 3: plen=stream->read_dword_le();break; // dword + case 2: plen=stream->read_word_le();break; // word + case 1: plen=stream->read_char();break; // byte default: plen=0; /* not present */ // MSG_V("Invalid plen type! assuming plen=0 (flags=%02X)\n",flags); } /* Read sequence: */ switch((flags>>1)&3){ - case 3: sequence=stream_read_dword_le(stream);break;// dword - case 2: sequence=stream_read_word_le(stream);break; // word - case 1: sequence=stream_read_char(stream);break; // byte + case 3: sequence=stream->read_dword_le();break;// dword + case 2: sequence=stream->read_word_le();break; // word + case 1: sequence=stream->read_char();break; // byte default: sequence=0; } /* Read padding size (padding): */ switch((flags>>3)&3){ - case 3: padding=stream_read_dword_le(stream);break; // dword - case 2: padding=stream_read_word_le(stream);break; // word - case 1: padding=stream_read_char(stream);break; // byte + case 3: padding=stream->read_dword_le();break; // dword + case 2: padding=stream->read_word_le();break; // word + case 1: padding=stream->read_char();break; // byte default: padding=0; } @@ -564,12 +564,12 @@ } // Read time & duration: - time = stream_read_dword_le(stream); - duration = stream_read_word_le(stream); + time = stream->read_dword_le(); + duration = stream->read_word_le(); // Read payload flags: if(flags&1){ - unsigned char sf=stream_read_char(stream); + unsigned char sf=stream->read_char(); // multiple sub-packets segsizetype=sf>>6; segs=sf & 0x3F; @@ -589,65 +589,65 @@ unsigned int time2=0; int keyframe=0; - if(stream_tell(stream)>=p_end) MSG_V("Warning! invalid packet 1, sig11 coming soon...\n"); + if(stream->tell()>=p_end) MSG_V("Warning! invalid packet 1, sig11 coming soon...\n"); - st=stream_read_char(stream); + st=stream->read_char(); streamno=st&0x7F; if(st&0x80) keyframe=1; // Read media object number (seq): switch((segtype>>4)&3){ - case 3: seq=stream_read_dword_le(stream);break; // dword - case 2: seq=stream_read_word_le(stream);break; // word - case 1: seq=stream_read_char(stream);break; // byte + case 3: seq=stream->read_dword_le();break;// dword + case 2: seq=stream->read_word_le();break; // word + case 1: seq=stream->read_char();break; // byte default: seq=0; } // Read offset or timestamp: switch((segtype>>2)&3){ - case 3: x=stream_read_dword_le(stream);break; // dword - case 2: x=stream_read_word_le(stream);break; // word - case 1: x=stream_read_char(stream);break; // byte + case 3: x=stream->read_dword_le();break; // dword + case 2: x=stream->read_word_le();break; // word + case 1: x=stream->read_char();break; // byte default: x=0; } // Read replic.data len: switch((segtype)&3){ - case 3: rlen=stream_read_dword_le(stream);break; // dword - case 2: rlen=stream_read_word_le(stream);break; // word - case 1: rlen=stream_read_char(stream);break; // byte + case 3: rlen=stream->read_dword_le();break; // dword + case 2: rlen=stream->read_word_le();break; // word + case 1: rlen=stream->read_char();break; // byte default: rlen=0; } switch(rlen){ case 0x01: // 1 = special, means grouping - stream_skip(stream,1); // skip PTS delta + stream->skip(1); // skip PTS delta break; default: if(rlen>=8){ - stream_skip(stream,4);// skip object size - time2=stream_read_dword_le(stream); // read PTS - stream_skip(stream,rlen-8); + stream->skip(4);// skip object size + time2=stream->read_dword_le(); // read PTS + stream->skip(rlen-8); } else { MSG_V("unknown segment type (rlen): 0x%02X \n",rlen); time2=0; // unknown - stream_skip(stream,rlen); + stream->skip(rlen); } } if(flags&1){ // multiple segments switch(segsizetype){ - case 3: len=stream_read_dword_le(stream);break; // dword - case 2: len=stream_read_word_le(stream);break; // word - case 1: len=stream_read_char(stream);break; // byte - default: len=plen-(stream_tell(stream)-p_start); // ??? + case 3: len=stream->read_dword_le();break; // dword + case 2: len=stream->read_word_le();break; // word + case 1: len=stream->read_char();break; // byte + default: len=plen-(stream->tell()-p_start); // ??? } } else { // single segment - len=plen-(stream_tell(stream)-p_start); + len=plen-(stream->tell()-p_start); } - if(len<0 || (stream_tell(stream)+len)>p_end){ + if(len<0 || (stream->tell()+len)>p_end){ MSG_V("ASF_parser: warning! segment len=%d\n",len); } MSG_DBG2(" seg #%d: streamno=%d seq=%d type=%02X len=%d\n",seg,streamno,seq,rlen,len); @@ -656,9 +656,9 @@ case 0x01: // GROUPING: while(len>0){ - int len2=stream_read_char(stream); + int len2=stream->read_char(); if(len2<0) len2=0; - done=demux_asf_read_packet(demux,stream_tell(stream),len2,streamno,seq,x,duration,-1,keyframe); + done=demux_asf_read_packet(demux,stream->tell(),len2,streamno,seq,x,duration,-1,keyframe); len-=len2+1; ++seq; } @@ -669,12 +669,12 @@ default: // NO GROUPING: if(len<0) len=0; - done=demux_asf_read_packet(demux,stream_tell(stream),len,streamno,seq,time2,duration,x,keyframe); + done=demux_asf_read_packet(demux,stream->tell(),len,streamno,seq,time2,duration,x,keyframe); break; } } // for segs - stream_seek(stream,p_end); + stream->seek(p_end); if(done) return 1; // success } } @@ -697,7 +697,7 @@ off_t newpos; newpos=((seeka->flags&DEMUX_SEEK_SET)?demuxer->movi_start:demuxer->filepos)+rel_seek_bytes; if(newpos<0 || newpos<demuxer->movi_start) newpos=demuxer->movi_start; - stream_seek(demuxer->stream,newpos); + demuxer->stream->seek(newpos); /*!!! FIXME: this loop is too long sometime !!!*/ while(d_video->fill_buffer()) Modified: mplayerxp/libmpdemux/demux_audio.cpp =================================================================== --- mplayerxp/libmpdemux/demux_audio.cpp 2012-12-08 09:26:17 UTC (rev 523) +++ mplayerxp/libmpdemux/demux_audio.cpp 2012-12-08 13:27:53 UTC (rev 524) @@ -414,15 +414,15 @@ static void find_next_mp3_hdr(Demuxer *demuxer,uint8_t *hdr) { int len; off_t spos; - while(!stream_eof(demuxer->stream)) { - spos=stream_tell(demuxer->stream); - stream_read(demuxer->stream,hdr,4); + while(!demuxer->stream->eof()) { + spos=demuxer->stream->tell(); + demuxer->stream->read(hdr,4); len = mp_decode_mp3_header(hdr,NULL,NULL,NULL,NULL); if(len < 0) { - stream_skip(demuxer->stream,-3); + demuxer->stream->skip(-3); continue; } - stream_seek(demuxer->stream,spos); + demuxer->stream->seek(spos); break; } } @@ -437,37 +437,37 @@ pos = mp_decode_mp3_header(hdr,NULL,NULL,NULL,NULL); if(pos < 0) return 0; - stream_skip(s,pos-4); - if(stream_eof(s)) + s->skip(pos-4); + if(s->eof()) return 0; - stream_read(s,hdr,4); - if(stream_eof(s)) + s->read(hdr,4); + if(s->eof()) return 0; } if(s->end_pos()) { char tag[4]; - stream_seek(s,s->end_pos()-128); - stream_read(s,tag,3); + s->seek(s->end_pos()-128); + s->read(tag,3); tag[3] = '\0'; if(strcmp(tag,"TAG")) demuxer->movi_end = s->end_pos(); else { char buf[31]; uint8_t g; - demuxer->movi_end = stream_tell(s)-3; - stream_read(s,buf,30); + demuxer->movi_end = s->tell()-3; + s->read(buf,30); buf[30] = '\0'; demuxer->info().add(INFOT_NAME,buf); - stream_read(s,buf,30); + s->read(buf,30); buf[30] = '\0'; demuxer->info().add(INFOT_AUTHOR,buf); - stream_read(s,buf,30); + s->read(buf,30); buf[30] = '\0'; demuxer->info().add(INFOT_ALBUM,buf); - stream_read(s,buf,4); + s->read(buf,4); buf[4] = '\0'; demuxer->info().add(INFOT_DATE,buf); - stream_read(s,buf,30); + s->read(buf,30); buf[30] = '\0'; demuxer->info().add(INFOT_COMMENTS,buf); if(buf[28] == 0 && buf[29] != 0) { @@ -475,7 +475,7 @@ sprintf(buf,"%d",trk); demuxer->info().add(INFOT_TRACK,buf); } - g = stream_read_char(s); + g = s->read_char(); demuxer->info().add(INFOT_GENRE,genres[g]); } } @@ -489,18 +489,18 @@ Stream *s=demuxer->stream; demuxer->movi_end = s->end_pos(); memcpy(b,hdr,4); - stream_seek(s,pos+4); - stream_read(s,&b[4],4); + s->seek(pos+4); + s->read(&b[4],4); for(n = 0; n < 5 ; n++) { MSG_DBG2("read_ac3_tags\n"); pos = ac3_decode_header(b,bitrate,samplerate,channels); if(pos < 0) return 0; - stream_skip(s,pos-8); - if(stream_eof(s)) + s->skip(pos-8); + if(s->eof()) return 0; - stream_read(s,b,8); - if(stream_eof(s)) + s->read(b,8); + if(s->eof()) return 0; } return 1; @@ -513,18 +513,18 @@ Stream *s=demuxer->stream; demuxer->movi_end = s->end_pos(); memcpy(b,hdr,4); - stream_seek(s,pos+4); - stream_read(s,&b[4],8); + s->seek(pos+4); + s->read(&b[4],8); for(n = 0; n < 5 ; n++) { MSG_DBG2("read_ddca_tags\n"); pos = ddca_decode_header(b,bitrate,samplerate,channels); if(pos < 0) return 0; - stream_skip(s,pos-12); - if(stream_eof(s)) + s->skip(pos-12); + if(s->eof()) return 0; - stream_read(s,hdr,12); - if(stream_eof(s)) + s->read(hdr,12); + if(s->eof()) return 0; } return 1; @@ -552,7 +552,7 @@ if( flags==ID3V22_ZERO_FLAG || flags==ID3V22_UNSYNCH_FLAG || flags==ID3V22_COMPRESS_FLAG) return 0; - pos=stream_tell(s); + pos=s->tell(); epos=pos+hsize; while(pos<epos) { @@ -560,10 +560,10 @@ unsigned len; unsigned char buf[ID3V22_FRAME_HEADER_SIZE]; char data[4096]; - stream_read(s,buf,ID3V22_FRAME_HEADER_SIZE); + s->read(buf,ID3V22_FRAME_HEADER_SIZE); id=(buf[2] << 16) + (buf[1] << 8) + buf[0]; len=(buf[3] << 14) + (buf[4] << 7) + buf[5]; - stream_read(s,data,std::min(len,unsigned(4096))); + s->read(data,std::min(len,unsigned(4096))); data[std::min(len,unsigned(4096))]=0; switch(id) { @@ -585,7 +585,7 @@ case 0: goto end; default: MSG_WARN("Unhandled frame: %3s\n",buf); break; } - pos=stream_tell(s); + pos=s->tell(); } end: return 1; @@ -620,11 +620,11 @@ { char buf[4]; unsigned ehsize; - stream_read(demuxer->stream,buf,4); + demuxer->stream->read(buf,4); ehsize=(buf[0] << 21) + (buf[1] << 14) + (buf[2] << 7) + buf[3]; - stream_skip(demuxer->stream,ehsize); + demuxer->stream->skip(ehsize); } - pos=stream_tell(s); + pos=s->tell(); epos=pos+hsize; while(pos<epos) { @@ -632,10 +632,10 @@ unsigned len; unsigned char buf[ID3V23_FRAME_HEADER_SIZE]; char data[4096]; - stream_read(s,buf,ID3V23_FRAME_HEADER_SIZE); + s->read(buf,ID3V23_FRAME_HEADER_SIZE); id=*((uint32_t *)buf); len=(buf[4] << 21) + (buf[5] << 14) + (buf[6] << 7) + buf[7]; - stream_read(s,data,std::min(len,unsigned(4096))); + s->read(data,std::min(len,unsigned(4096))); data[std::min(len,unsigned(4096))]=0; MSG_V("ID3: %4s len %u\n",buf,len); switch(id) @@ -658,7 +658,7 @@ case 0: goto end; default: MSG_V("Unhandled frame: %4s\n",buf); break; } - pos=stream_tell(s); + pos=s->tell(); } end: return 1; @@ -696,11 +696,11 @@ { char buf[4]; unsigned ehsize; - stream_read(demuxer->stream,buf,4); + demuxer->stream->read(buf,4); ehsize=(buf[0] << 21) + (buf[1] << 14) + (buf[2] << 7) + buf[3]; - stream_skip(demuxer->stream,ehsize); + demuxer->stream->skip(ehsize); } - pos=stream_tell(s); + pos=s->tell(); epos=pos+hsize; while(pos<epos) { @@ -708,10 +708,10 @@ unsigned len; unsigned char buf[ID3V23_FRAME_HEADER_SIZE]; char data[4096]; - stream_read(s,buf,ID3V23_FRAME_HEADER_SIZE); + s->read(buf,ID3V23_FRAME_HEADER_SIZE); id=*((uint32_t *)buf); len=(buf[4] << 21) + (buf[5] << 14) + (buf[6] << 7) + buf[7]; - stream_read(s,data,std::min(len,unsigned(4096))); + s->read(data,std::min(len,unsigned(4096))); data[std::min(len,unsigned(4096))]=0; MSG_V("ID3: %4s len %u\n",buf,len); switch(id) @@ -735,7 +735,7 @@ case 0: goto end; default: MSG_V("Unhandled frame: %4s\n",buf); break; } - pos=stream_tell(s); + pos=s->tell(); } end: return 1; @@ -746,11 +746,11 @@ char buf[4]; Stream* s=demuxer->stream; unsigned vers,rev,flags,hsize; - stream_seek(s,3); /* skip 'ID3' */ - vers=stream_read_char(s); - rev=stream_read_char(s); - flags=stream_read_char(s); - stream_read(s,buf,4); + s->seek(3); /* skip 'ID3' */ + vers=s->read_char(); + rev=s->read_char(); + flags=s->read_char(); + s->read(buf,4); hsize=(buf[0] << 21) + (buf[1] << 14) + (buf[2] << 7) + buf[3]; MSG_V("Found ID3v2.%d.%d flags %d size %d\n",vers,rev,flags,hsize); if(vers==2) return read_id3v22_tags(demuxer,flags,hsize); @@ -770,12 +770,12 @@ Stream *s; *brate=*samplerate=*channels=0; s = demuxer->stream; - stream_seek(s,fptr); - fcc=fcc1=stream_read_dword(s); + s->seek(fptr); + fcc=fcc1=s->read_dword(); fcc1=me2be_32(fcc1); p = (uint8_t *)&fcc1; - stream_seek(s,fptr); - stream_read(s,b,sizeof(b)); + s->seek(fptr); + s->read(b,sizeof(b)); if(p[0] == 'M' && p[1] == 'P' && p[2] == '+' && (p[3] >= 4 && p[3] <= 0x20)) retval = RAW_MUSEPACK; else if(fcc1 == mmioFOURCC('f','L','a','C')) retval = RAW_FLAC; @@ -796,7 +796,7 @@ if(ddca_decode_header(b,samplerate,brate,channels)>0) retval = RAW_DCA; else if(memcmp(b,"Creative Voice File\x1A",20)==0) retval = RAW_VOC; - stream_seek(s,fptr); + s->seek(fptr); return retval; } @@ -806,13 +806,13 @@ Stream *s; uint8_t *p; s = demuxer->stream; - fcc1=stream_read_dword(s); + fcc1=s->read_dword(); fcc1=me2be_32(fcc1); p = (uint8_t *)&fcc1; if(fcc1 == mmioFOURCC('R','I','F','F')) { - stream_skip(s,4); - fcc2 = stream_read_fourcc(s); + s->skip(4); + fcc2 = s->read_fourcc(); if(fcc2 == mmioFOURCC('W','A','V','E')) return MPXP_Ok; } else @@ -842,24 +842,24 @@ mode = (hdr[3]>>6)&3; if(mpeg1) off=mode!=MPG_MD_MONO?32:17; else off=mode!=MPG_MD_MONO?17:9;/* mpeg2 */ - fpos = stream_tell(s); - stream_skip(s,off); - stream_read(s,buf,4); + fpos = s->tell(); + s->skip(off); + s->read(buf,4); if(memcmp(buf,"Xing",4) == 0 || memcmp(buf,"Info",4) == 0) { priv->is_xing=1; priv->lsf=mpeg1?0:1; priv->srate=sr_table[sr_index&0x3]; - head_flags = stream_read_dword(s); - if(head_flags & FRAMES_FLAG) priv->nframes=stream_read_dword(s); - if(head_flags & BYTES_FLAG) priv->nbytes=stream_read_dword(s); - if(head_flags & TOC_FLAG) stream_read(s,priv->toc,100); - if(head_flags & VBR_SCALE_FLAG) priv->scale = stream_read_dword(s); + head_flags = s->read_dword(); + if(head_flags & FRAMES_FLAG) priv->nframes=s->read_dword(); + if(head_flags & BYTES_FLAG) priv->nbytes=s->read_dword(); + if(head_flags & TOC_FLAG) s->read(priv->toc,100); + if(head_flags & VBR_SCALE_FLAG) priv->scale = s->read_dword(); MSG_DBG2("Found Xing VBR header: flags=%08X nframes=%u nbytes=%u scale=%i srate=%u\n" ,head_flags,priv->nframes,priv->nbytes,priv->scale,priv->srate); - stream_seek(s,fpos); + s->seek(fpos); } - else stream_seek(s,fpos); + else s->seek(fpos); } extern const demuxer_driver_t demux_audio; @@ -881,15 +881,15 @@ priv = new(zeromem) da_priv_t; s = demuxer->stream; - stream_reset(s); - stream_seek(s,s->start_pos()); - while(n < 5 && !stream_eof(s)) + s->reset(); + s->seek(s->start_pos()); + while(n < 5 && !s->eof()) { - st_pos = stream_tell(s); + st_pos = s->tell(); step = 1; if(pos < HDR_SIZE) { - stream_read(s,&hdr[pos],HDR_SIZE-pos); + s->read(&hdr[pos],HDR_SIZE-pos); pos = HDR_SIZE; } @@ -899,25 +899,25 @@ if(fcc == mmioFOURCC('R','I','F','F')) { MSG_DBG2("Found RIFF\n"); - stream_skip(s,4); - if(stream_eof(s)) break; - stream_read(s,hdr,4); - if(stream_eof(s)) break; + s->skip(4); + if(s->eof()) break; + s->read(hdr,4); + if(s->eof()) break; fcc2 = le2me_32(*(uint32_t *)hdr); pfcc= (const unsigned char *)&fcc2; MSG_DBG2("RIFF fcc=%c%c%c%c\n",pfcc[0],pfcc[1],pfcc[2],pfcc[3]); - if(fcc2!=mmioFOURCC('W','A','V','E')) stream_skip(s,-8); + if(fcc2!=mmioFOURCC('W','A','V','E')) s->skip(-8); else { /* We found wav header. Now we should find 'fmt '*/ off_t fpos; - fpos=stream_tell(s); + fpos=s->tell(); MSG_DBG2("RIFF WAVE found. Start detection from %llu\n",fpos); step = 4; while(1) { unsigned chunk_len; - fcc=stream_read_fourcc(s); + fcc=s->read_fourcc(); pfcc= (const unsigned char *)&fcc; MSG_DBG2("fmt fcc=%c%c%c%c\n",pfcc[0],pfcc[1],pfcc[2],pfcc[3]); if(fcc==mmioFOURCC('f','m','t',' ')) @@ -926,12 +926,12 @@ frmt = RAW_WAV; break; } - if(stream_eof(s)) break; - chunk_len=stream_read_dword_le(s); - stream_skip(s,chunk_len); + if(s->eof()) break; + chunk_len=s->read_dword_le(); + s->skip(chunk_len); } MSG_DBG2("Restore stream pos %llu\n",fpos); - stream_seek(s,fpos); + s->seek(fpos); if(frmt==RAW_WAV) break; } } @@ -939,11 +939,11 @@ if( hdr[0] == 'I' && hdr[1] == 'D' && hdr[2] == '3' && (hdr[3] >= 2)) { unsigned len,fmt; - stream_skip(s,2); - stream_read(s,hdr,4); + s->skip(2); + s->read(hdr,4); len = (hdr[0]<<21) | (hdr[1]<<14) | (hdr[2]<<7) | hdr[3]; read_id3v2_tags(demuxer); - stream_seek(s,len+10); + s->seek(len+10); find_next_mp3_hdr(demuxer,hdr); Xing_test(s,hdr,priv); mp_decode_mp3_header(hdr,&fmt,&mp3_brate,&mp3_samplerate,&mp3_channels); @@ -982,7 +982,7 @@ break; } memcpy(b,hdr,HDR_SIZE); - stream_read(s,&b[HDR_SIZE],12-HDR_SIZE); + s->read(&b[HDR_SIZE],12-HDR_SIZE); if((n = ac3_decode_header(b,&fmt,&fmt,&fmt)) > 0) { demuxer->movi_start = st_pos; @@ -1013,7 +1013,7 @@ } sh_audio = demuxer->new_sh_audio(); MSG_DBG2("mp3_header off: st_pos=%lu n=%lu HDR_SIZE=%u\n",st_pos,n,HDR_SIZE); - demuxer->movi_start = stream_tell(s); + demuxer->movi_start = s->tell(); demuxer->movi_end = s->end_pos(); switch(frmt) { case RAW_FLAC: @@ -1024,7 +1024,7 @@ /* loop through the metadata blocks; use a do-while construct since there * will always be 1 metadata block */ do { - if(stream_read(s,chunk,4)!=4) return NULL; + if(s->read(chunk,4)!=4) return NULL; block_size=(chunk[1]<<16)|(chunk[2]<<8)|chunk[3]; switch (chunk[0] & 0x7F) { /* STREAMINFO */ @@ -1039,7 +1039,7 @@ MSG_V("expected STREAMINFO chunk of %d bytes\n",block_size); return 0; } - if(stream_read(s,sinfo,block_size)!=(int)block_size) return NULL; + if(s->read(sinfo,block_size)!=(int)block_size) return NULL; sh_audio->rate=be2me_32(*(uint32_t *)&sinfo[10]); sh_audio->nch=w->nChannels=((sh_audio->rate>>9)&0x07)+1; w->wBitsPerSample=((sh_audio->rate>>4)&0x1F)+1; @@ -1069,12 +1069,12 @@ /* APPLICATION */ case 2: MSG_V("metadata %i size %u\n",chunk[0] & 0x7F,block_size); - stream_skip(s,block_size); + s->skip(block_size); break; } } while ((chunk[0] & 0x80) == 0); /* We have reached 1st FRAME_HEADER here. */ - demuxer->movi_start = 0;//stream_tell(s); (ffmpeg.flac requires STREAM_HEADER to be proceed too!!!) + demuxer->movi_start = 0;//s->tell(); (ffmpeg.flac requires STREAM_HEADER to be proceed too!!!) demuxer->movi_end += demuxer->movi_start; break; } @@ -1083,9 +1083,9 @@ uint32_t id; WAVEFORMATEX* w; sh_audio->wf = w = (WAVEFORMATEX*)mp_malloc(sizeof(WAVEFORMATEX)); - hsize=stream_read_dword(s); - dsize=stream_read_dword(s); - id = stream_read_dword(s); + hsize=s->read_dword(); + dsize=s->read_dword(); + id = s->read_dword(); sh_audio->afmt=bps2afmt(2); if(id == 1) id = WAVE_FORMAT_MULAW; else @@ -1095,8 +1095,8 @@ w->wFormatTag = sh_audio->wtag = id; /* Trickly mplayerxp will threat 'raw ' as big-endian */ if(id == 0x1) sh_audio->wtag=mmioFOURCC('r','a','w',' '); - w->nSamplesPerSec = sh_audio->rate = stream_read_dword(s); - w->nChannels = sh_audio->nch = stream_read_dword(s); + w->nSamplesPerSec = sh_audio->rate = s->read_dword(); + w->nChannels = sh_audio->nch = s->read_dword(); w->nAvgBytesPerSec = sh_audio->rate*afmt2bps(sh_audio->afmt)*sh_audio->nch; w->nBlockAlign = sh_audio->nch*afmt2bps(sh_audio->afmt); w->wBitsPerSample = 8*afmt2bps(sh_audio->afmt); @@ -1138,10 +1138,10 @@ uint32_t frames; unsigned char bt; sh_audio->wtag = mmioFOURCC('M','P','C',' '); - stream_seek(s,4); - frames = stream_read_dword(s); - stream_skip(s,2); - bt=stream_read_char(s); + s->seek(4); + frames = s->read_dword(); + s->skip(2); + bt=s->read_char(); sh_audio->wf = (WAVEFORMATEX *)mp_malloc(sizeof(WAVEFORMATEX)); sh_audio->wf->wFormatTag = sh_audio->wtag; sh_audio->wf->nChannels = 2; @@ -1171,17 +1171,17 @@ char chunk[4]; unsigned size; WAVEFORMATEX* w; - stream_seek(s,0x14); - stream_read(s,chunk,2); + s->seek(0x14); + s->read(chunk,2); size=le2me_16(*reinterpret_cast<uint16_t*>(&chunk[0])); - stream_seek(s,size); - stream_read(s,chunk,4); + s->seek(size); + s->read(chunk,4); if(chunk[0]!=0x01) { MSG_V("VOC unknown block type %02X\n",chunk[0]); return NULL; } size=chunk[1]|(chunk[2]<<8)|(chunk[3]<<16); sh_audio->wtag = 0x01; /* PCM */ - stream_read(s,chunk,2); + s->read(chunk,2); if(chunk[1]!=0) { MSG_V("VOC unknown compression type %02X\n",chunk[1]); return NULL; } - demuxer->movi_start=stream_tell(s); + demuxer->movi_start=s->tell(); demuxer->movi_end=demuxer->movi_start+size; sh_audio->rate=256-(1000000/chunk[0]); sh_audio->nch=1; @@ -1205,9 +1205,9 @@ sh_audio->wf = w = (WAVEFORMATEX*)mp_malloc(sizeof(WAVEFORMATEX)); do { - chunk_type = stream_read_fourcc(s); - chunk_size = stream_read_dword_le(s); - fpos=stream_tell(s); + chunk_type = s->read_fourcc(); + chunk_size = s->read_dword_le(); + fpos=s->tell(); switch(chunk_type) { case mmioFOURCC('f','m','t',' '): @@ -1219,29 +1219,29 @@ delete sh_audio; return NULL; } - w->wFormatTag = sh_audio->wtag = stream_read_word_le(s); - w->nChannels = sh_audio->nch = stream_read_word_le(s); - w->nSamplesPerSec = sh_audio->rate = stream_read_dword_le(s); - w->nAvgBytesPerSec = stream_read_dword_le(s); - w->nBlockAlign = stream_read_word_le(s); - w->wBitsPerSample = stream_read_word_le(s); + w->wFormatTag = sh_audio->wtag = s->read_word_le(); + w->nChannels = sh_audio->nch = s->read_word_le(); + w->nSamplesPerSec = sh_audio->rate = s->read_dword_le(); + w->nAvgBytesPerSec = s->read_dword_le(); + w->nBlockAlign = s->read_word_le(); + w->wBitsPerSample = s->read_word_le(); sh_audio->afmt = bps2afmt((w->wBitsPerSample+7)/8); w->cbSize = 0; l -= 16; - if(l) stream_skip(s,l); + if(l) s->skip(l); } break; case mmioFOURCC('d', 'a', 't', 'a'): MSG_DBG2("Found data chunk at %llu\n",fpos); data_off=fpos; - stream_skip(s,chunk_size); + s->skip(chunk_size); break; case mmioFOURCC('l', 'i', 's', 't'): { uint32_t cfcc; MSG_DBG2("RIFF 'list' found\n"); - cfcc=stream_read_fourcc(s); - if(cfcc!=mmioFOURCC('a', 'd', 't', 'l')) { stream_seek(s,fpos); break; } + cfcc=s->read_fourcc(); + if(cfcc!=mmioFOURCC('a', 'd', 't', 'l')) { s->seek(fpos); break; } do { unsigned int subchunk_type; @@ -1250,16 +1250,16 @@ unsigned slen,rlen; char note[256]; MSG_DBG2("RIFF 'list' accepted\n"); - subchunk_type = stream_read_fourcc(s); - subchunk_size = stream_read_dword_le(s); - subchunk_id = stream_read_dword_le(s); + subchunk_type = s->read_fourcc(); + subchunk_size = s->read_dword_le(); + subchunk_id = s->read_dword_le(); if(subchunk_type==mmioFOURCC('l','a','b','l')) { slen=subchunk_size-4; rlen=std::min(sizeof(note),size_t(slen)); - stream_read(s,note,rlen); + s->read(note,rlen); note[rlen]=0; - if(slen>rlen) stream_skip(s,slen-rlen); + if(slen>rlen) s->skip(slen-rlen); demuxer->info().add(INFOT_NAME,note); MSG_DBG2("RIFF 'labl' %u %s accepted\n",slen,note); } @@ -1268,31 +1268,31 @@ { slen=subchunk_size-4; rlen=std::min(sizeof(note),size_t(slen)); - stream_read(s,note,rlen); + s->read(note,rlen); note[rlen]=0; - if(slen>rlen) stream_skip(s,slen-rlen); + if(slen>rlen) s->skip(slen-rlen); demuxer->info().add(INFOT_COMMENTS,note); MSG_DBG2("RIFF 'note' %u %s accepted\n",slen,note); } - else stream_skip(s,subchunk_size); - }while(stream_tell(s)<fpos+chunk_size); - stream_seek(s,fpos+chunk_size); + else s->skip(subchunk_size); + }while(s->tell()<fpos+chunk_size); + s->seek(fpos+chunk_size); } break; default: - stream_skip(s, chunk_size); + s->skip( chunk_size); pfcc=(unsigned char *)&chunk_type; MSG_DBG2("RIFF unhandled '%c%c%c%c' chunk skipped\n",pfcc[0],pfcc[1],pfcc[2],pfcc[3]); break; } - } while (!stream_eof(s)); + } while (!s->eof()); if(data_off==-1) { MSG_ERR("RIFF WAVE - no 'data' chunk found\n"); return NULL; } - stream_seek(s,data_off); - demuxer->movi_start = stream_tell(s); + s->seek(data_off); + demuxer->movi_start = s->tell(); if(w->wFormatTag==0x01) /* PCM */ { int raw_id; @@ -1307,9 +1307,9 @@ case RAW_SND_AU: { unsigned hsize,dsize; uint32_t id; - hsize=stream_read_dword(s); - dsize=stream_read_dword(s); - id = stream_read_dword(s); + hsize=s->read_dword(); + dsize=s->read_dword(); + id = s->read_dword(); if(id == 1) id = WAVE_FORMAT_MULAW; else if(id == 27) id=WAVE_FORMAT_ALAW; @@ -1333,18 +1333,18 @@ if(samplerate) w->nSamplesPerSec = sh_audio->rate = samplerate; } } - stream_seek(s,data_off); + s->seek(data_off); /* id3v1 tags may exist within WAV */ if(sh_audio->wtag==0x50 || sh_audio->wtag==0x55) { - stream_seek(s,data_off); - stream_read(s,hdr,4); + s->seek(data_off); + s->read(hdr,4); MSG_DBG2("Trying id3v1 at %llX\n",data_off); if(!read_mp3v1_tags(demuxer,hdr,data_off)) demuxer->movi_end = s->end_pos(); } else demuxer->movi_end = s->end_pos(); - stream_seek(s,data_off); + s->seek(data_off); } break; } @@ -1366,8 +1366,8 @@ MSG_DBG2("stream length by xing header=%u secs\n",demuxer->movi_length); } MSG_V("demux_audio: audio data 0x%llX - 0x%llX \n",demuxer->movi_start,demuxer->movi_end); - if(stream_tell(s) != demuxer->movi_start) - stream_seek(s,demuxer->movi_start); + if(s->tell() != demuxer->movi_start) + s->seek(demuxer->movi_start); if(mp_conf.verbose && sh_audio->wf) print_wave_header(sh_audio->wf,sizeof(WAVEFORMATEX)); if(demuxer->movi_length==UINT_MAX && sh_audio->i_bps) demuxer->movi_length=(unsigned)(((float)demuxer->movi_end-(float)demuxer->movi_start)/(float)sh_audio->i_bps); @@ -1383,7 +1383,7 @@ out >>= (32 - priv->pos); } else { - stream_read(s, (any_t*)&priv->dword, 4); + s->read( (any_t*)&priv->dword, 4); priv->dword = le2me_32(priv->dword); priv->pos -= 32; if (priv->pos) { @@ -1410,13 +1410,13 @@ priv = static_cast<da_priv_t*>(demux->priv); s = demux->stream; - seof=stream_eof(s); - if(seof || (demux->movi_end && stream_tell(s) >= demux->movi_end)) { + seof=s->eof(); + if(seof || (demux->movi_end && s->tell() >= demux->movi_end)) { MSG_DBG2("audio_demux: EOF due: %s\n", - seof?"stream_eof(s)":"stream_tell(s) >= demux->movi_end"); + seof?"s->eof()":"s->tell() >= demux->movi_end"); if(!seof) { MSG_DBG2("audio_demux: stream_pos=%llu movi_end=%llu\n", - stream_tell(s), + s->tell(), demux->movi_end); } return 0; @@ -1437,88 +1437,88 @@ case RAW_MP1: case RAW_MP2: case RAW_MP3: - while(!stream_eof(s) || (demux->movi_end && stream_tell(s) >= demux->movi_end) ) { + while(!s->eof() || (demux->movi_end && s->tell() >= demux->movi_end) ) { uint8_t hdr[4]; int len; - stream_read(s,hdr,4); + s->read(hdr,4); MSG_DBG2("audio_fillbuffer\n"); len = mp_decode_mp3_header(hdr,NULL,NULL,NULL,NULL); - if(stream_eof(s)) return 0; /* workaround for dead-lock (skip(-3)) below */ + if(s->eof()) return 0; /* workaround for dead-lock (skip(-3)) below */ if(len < 0) { - stream_skip(s,-3); + s->skip(-3); } else { - if(stream_eof(s) || (demux->movi_end && stream_tell(s) >= demux->movi_end) ) + if(s->eof() || (demux->movi_end && s->tell() >= demux->movi_end) ) return 0; if(len>4) { Demuxer_Packet* dp = new(zeromem) Demuxer_Packet(len); memcpy(dp->buffer(),hdr,4); dp->resize(len+4); - len=stream_read(s,dp->buffer() + 4,len-4); + len=s->read(dp->buffer() + 4,len-4); priv->last_pts = priv->last_pts < 0 ? 0 : priv->last_pts + len/(float)sh_audio->i_bps; dp->pts = priv->last_pts - (demux->audio->tell_pts()-sh_audio->a_in_buffer_len)/(float)sh_audio->i_bps; dp->flags=DP_NONKEYFRAME; ds->add_packet(dp); } - else stream_skip(s,len); + else s->skip(len); return 1; } } break; case RAW_AC3: - while(!stream_eof(s) || (demux->movi_end && stream_tell(s) >= demux->movi_end) ) { + while(!s->eof() || (demux->movi_end && s->tell() >= demux->movi_end) ) { uint8_t hdr[8]; int len; unsigned dummy; - stream_read(s,hdr,8); + s->read(hdr,8); len = ac3_decode_header(hdr,&dummy,&dummy,&dummy); MSG_DBG2("audio_fillbuffer %u bytes\n",len); - if(stream_eof(s)) return 0; /* workaround for dead-lock (skip(-7)) below */ + if(s->eof()) return 0; /* workaround for dead-lock (skip(-7)) below */ if(len < 0) { - stream_skip(s,-7); + s->skip(-7); } else { - if(stream_eof(s) || (demux->movi_end && stream_tell(s) >= demux->movi_end) ) + if(s->eof() || (demux->movi_end && s->tell() >= demux->movi_end) ) return 0; if(len>8) { Demuxer_Packet* dp = new(zeromem) Demuxer_Packet(len); memcpy(dp->buffer(),hdr,8); dp->resize(len+8); - len=stream_read(s,dp->buffer()+8,len-8); + len=s->read(dp->buffer()+8,len-8); priv->last_pts = priv->last_pts < 0 ? 0 : priv->last_pts + len/(float)sh_audio->i_bps; dp->pts = priv->last_pts - (demux->audio->tell_pts()-sh_audio->a_in_buffer_len)/(float)sh_audio->i_bps; dp->flags=DP_NONKEYFRAME; ds->add_packet(dp); } - else stream_skip(s,len); + else s->skip(len); return 1; } } break; case RAW_DCA: - while(!stream_eof(s) || (demux->movi_end && stream_tell(s) >= demux->movi_end) ) { + while(!s->eof() || (demux->movi_end && s->tell() >= demux->movi_end) ) { uint8_t hdr[16]; int len; unsigned dummy; - stream_read(s,hdr,16); + s->read(hdr,16); len = ddca_decode_header(hdr,&dummy,&dummy,&dummy); MSG_DBG2("audio_fillbuffer %u bytes\n",len); - if(stream_eof(s)) return 0; /* workaround for dead-lock (skip(-7)) below */ + if(s->eof()) return 0; /* workaround for dead-lock (skip(-7)) below */ if(len < 0) { - stream_skip(s,-15); + s->skip(-15); } else { - if(stream_eof(s) || (demux->movi_end && stream_tell(s) >= demux->movi_end) ) + if(s->eof() || (demux->movi_end && s->tell() >= demux->movi_end) ) return 0; if(len>16) { Demuxer_Packet* dp = new(zeromem) Demuxer_Packet(len); dp->resize(len+16); memcpy(dp->buffer(),hdr,16); - len=stream_read(s,dp->buffer()+16,len-16); + len=s->read(dp->buffer()+16,len-16); priv->last_pts = priv->last_pts < 0 ? 0 : priv->last_pts + len/(float)sh_audio->i_bps; dp->pts = priv->last_pts - (demux->audio->tell_pts()-sh_audio->a_in_buffer_len)/(float)sh_audio->i_bps; dp->flags=DP_NONKEYFRAME; ds->add_packet(dp); } - else stream_skip(s,len); + else s->skip(len); return 1; } } break; @@ -1527,7 +1527,7 @@ case RAW_WAV : { int l = sh_audio->wf->nAvgBytesPerSec; Demuxer_Packet* dp =new(zeromem) Demuxer_Packet(l); - l=stream_read(s,dp->buffer(),l); + l=s->read(dp->buffer(),l); dp->resize(l); priv->last_pts = priv->last_pts < 0 ? 0 : priv->last_pts + l/(float)sh_audio->i_bps; dp->pts = priv->last_pts - (demux->audio->tell_pts()-sh_audio->a_in_buffer_len)/(float)sh_audio->i_bps; @@ -1538,7 +1538,7 @@ case RAW_VOC : { int l = 65536; Demuxer_Packet* dp =new(zeromem) Demuxer_Packet(l); - l=stream_read(s,dp->buffer(),l); + l=s->read(dp->buffer(),l); dp->resize(l); priv->last_pts = priv->last_pts < 0 ? 0 : priv->last_pts + l/(float)sh_audio->i_bps; dp->pts = priv->last_pts - (demux->audio->tell_pts()-sh_audio->a_in_buffer_len)/(float)sh_audio->i_bps; @@ -1585,14 +1585,14 @@ nf = _time*sh->rate/1152; while(nf > 0) { - stream_read(demuxer->stream,hdr,4); + demuxer->stream->read(hdr,4); MSG_DBG2("high_res_mp3_seek\n"); len = mp_decode_mp3_header(hdr,NULL,NULL,NULL,NULL); if(len < 0) { - stream_skip(demuxer->stream,-3); + demuxer->stream->skip(-3); continue; } - stream_skip(demuxer->stream,len-4); + demuxer->stream->skip(len-4); priv->last_pts += 1152/(float)sh->rate; nf--; } @@ -1607,14 +1607,14 @@ nf = _time*sh->rate/1152; while(nf > 0) { - stream_read(demuxer->stream,hdr,8); + demuxer->stream->read(hdr,8); MSG_DBG2("high_res_mp3_seek\n"); len = ac3_decode_header(hdr,&tmp,&tmp,&tmp); if(len < 0) { - stream_skip(demuxer->stream,-7); + demuxer->stream->skip(-7); continue; } - stream_skip(demuxer->stream,len-8); + demuxer->stream->skip(len-8); priv->last_pts += 1152/(float)sh->rate; nf--; } @@ -1629,14 +1629,14 @@ nf = _time*sh->rate/1152; while(nf > 0) { - stream_read(demuxer->stream,hdr,12); + demuxer->stream->read(hdr,12); MSG_DBG2("high_res_ddca_seek\n"); len = ddca_decode_header(hdr,&tmp,&tmp,&tmp); if(len < 0) { - stream_skip(demuxer->stream,-11); + demuxer->stream->skip(-11); continue; } - stream_skip(demuxer->stream,len-12); + demuxer->stream->skip(len-12); priv->last_pts += 1152/(float)sh->rate; nf--; } @@ -1659,7 +1659,7 @@ if (seeka->flags & DEMUX_SEEK_PERCENTS) target *= priv->length; if (!(seeka->flags & DEMUX_SEEK_SET)) target += priv->last_pts; if (target < priv->last_pts) { - stream_seek(s, demuxer->movi_start); + s->seek( demuxer->movi_start); priv->pos = 32; // empty bit buffer mpc_get_bits(priv, s, 8); // discard first 8 bits priv->last_pts = 0; @@ -1667,7 +1667,7 @@ while (target > priv->last_pts) { int bit_len = mpc_get_bits(priv, s, 20); if (bit_len > 32) { - stream_skip(s, bit_len / 32 * 4 - 4); + s->skip( bit_len / 32 * 4 - 4); mpc_get_bits(priv, s, 32); // make sure dword is reloaded } mpc_get_bits(priv, s, bit_len % 32); @@ -1682,20 +1682,20 @@ unsigned percents,cpercents,npercents; off_t newpos,spos; percents = (unsigned)(seeka->secs*100.)/(float)demuxer->movi_length; - spos=stream_tell(demuxer->stream); + spos=demuxer->stream->tell(); cpercents=(unsigned)((float)spos*100./(float)priv->nbytes); npercents=(seeka->flags&DEMUX_SEEK_SET)?percents:cpercents+percents; if(npercents>100) npercents=100; newpos=demuxer->movi_start+(off_t)(((float)priv->toc[npercents]/256.0)*priv->nbytes); MSG_DBG2("xing seeking: secs=%f prcnts=%u cprcnts=%u spos=%llu newpos=%llu\n",seeka->secs,npercents,cpercents,spos,newpos); - stream_seek(demuxer->stream,newpos); + demuxer->stream->seek(newpos); priv->last_pts=(((float)demuxer->movi_length*npercents)/100.)*1000.; return; } if((priv->frmt == RAW_MP3 || priv->frmt == RAW_MP2 || priv->frmt == RAW_MP1) && hr_mp3_seek && !(seeka->flags & DEMUX_SEEK_PERCENTS)) { len = (seeka->flags & DEMUX_SEEK_SET) ? seeka->secs - priv->last_pts : seeka->secs; if(len < 0) { - stream_seek(s,demuxer->movi_start); + s->seek(demuxer->movi_start); len = priv->last_pts + len; priv->last_pts = 0; } @@ -1705,11 +1705,11 @@ return; } - base = seeka->flags&DEMUX_SEEK_SET ? demuxer->movi_start : stream_tell(s); + base = seeka->flags&DEMUX_SEEK_SET ? demuxer->movi_start : s->tell(); pos=base+(seeka->flags&DEMUX_SEEK_PERCENTS?(demuxer->movi_end - demuxer->movi_start):sh_audio->i_bps)*seeka->secs; if(demuxer->movi_end && pos >= demuxer->movi_end) { - sh_audio->timer = (stream_tell(s) - demuxer->movi_start)/(float)sh_audio->i_bps; + sh_audio->timer = (s->tell() - demuxer->movi_start)/(float)sh_audio->i_bps; return; } else if(pos < demuxer->movi_start) pos = demuxer->movi_start; @@ -1731,7 +1731,7 @@ case RAW_AC3: { len = (seeka->flags & DEMUX_SEEK_SET) ? seeka->secs - priv->last_pts : seeka->secs; if(len < 0) { - stream_seek(s,demuxer->movi_start); + s->seek(demuxer->movi_start); len = priv->last_pts + len; priv->last_pts = 0; } @@ -1743,7 +1743,7 @@ case RAW_DCA: { len = (seeka->flags & DEMUX_SEEK_SET) ? seeka->secs - priv->last_pts : seeka->secs; if(len < 0) { - stream_seek(s,demuxer->movi_start); + s->seek(demuxer->movi_start); len = priv->last_pts + len; priv->last_pts = 0; } @@ -1761,7 +1761,7 @@ priv->last_pts -= sh_audio->wf->nAvgBytesPerSec/(float)sh_audio->i_bps; break; } - stream_seek(s,pos); + s->seek(pos); } static void audio_close(Demuxer* demuxer) { Modified: mplayerxp/libmpdemux/demux_avi.cpp =================================================================== --- mplayerxp/libmpdemux/demux_avi.cpp 2012-12-08 09:26:17 UTC (rev 523) +++ mplayerxp/libmpdemux/demux_avi.cpp 2012-12-08 13:27:53 UTC (rev 524) @@ -133,21 +133,21 @@ priv->idx_size=0; priv->audio_streams=0; while(1){ - int id=stream_read_dword_le(demuxer->stream); + int id=demuxer->stream->read_dword_le(); unsigned chunksize,size2; static int last_fccType=0; const char* hdr=NULL; int infot; // - if(stream_eof(demuxer->stream)) break; + if(demuxer->stream->eof()) break; // if(id==mmioFOURCC('L','I','S','T')){ - unsigned len=stream_read_dword_le(demuxer->stream); // list size - id=stream_read_dword_le(demuxer->stream); // list type + unsigned len=demuxer->stream->read_dword_le(); // list size + id=demuxer->stream->read_dword_le(); // list type MSG_DBG2("LIST %.4s len=%u\n",(char *) &id,len); if(len >= 4) { len -= 4; - list_end=stream_tell(demuxer->stream)+((len+1)&(~1)); + list_end=demuxer->stream->tell()+((len+1)&(~1)); } else { MSG_WARN("** empty list?!\n"); list_end = 0; @@ -155,18 +155,18 @@ MSG_DBG2("list_end=0x%X\n",(int)list_end); if(id==listtypeAVIMOVIE){ // found MOVI header - if(!demuxer->movi_start) demuxer->movi_start=stream_tell(demuxer->stream); - demuxer->movi_end=stream_tell(demuxer->stream)+len; + if(!demuxer->movi_start) demuxer->movi_start=demuxer->stream->tell(); + demuxer->movi_end=demuxer->stream->tell()+len; MSG_V("Found movie at 0x%X - 0x%X\n",(int)demuxer->movi_start,(int)demuxer->movi_end); if(demuxer->stream->end_pos()>demuxer->movi_end) demuxer->movi_end=demuxer->stream->end_pos(); if(index_mode==-2 || index_mode==2 || index_mode==0) break; // reading from non-seekable source (stdin) or forced index or no index forced - if(list_end>0) stream_seek(demuxer->stream,list_end); // skip movi + if(list_end>0) demuxer->stream->seek(list_end); // skip movi list_end=0; } continue; } - size2=stream_read_dword_le(demuxer->stream); + size2=demuxer->stream->read_dword_le(); MSG_V("CHUNK %.4s len=%u\n",(char *) &id,size2); chunksize=(size2+1)&(~1); infot=-1; @@ -250,7 +250,7 @@ case mmioFOURCC('I','D','I','T'): hdr="Digitization Time";break; case ckidAVIMAINHDR: // read 'avih' - stream_read(demuxer->stream,(char*) &avih,std::min((unsigned long)size2,sizeof(avih))); + demuxer->stream->read((char*) &avih,std::min((unsigned long)size2,sizeof(avih))); le2me_MainAVIHeader(&avih); // swap to machine endian chunksize-=std::min((unsigned long)size2,sizeof(avih)); demuxer->movi_length=avih.dwTotalFrames; @@ -258,7 +258,7 @@ break; case ckidSTREAMHEADER: { // read 'strh' AVIStreamHeader h; - stream_read(demuxer->stream,(char*) &h,std::min((unsigned long)size2,sizeof(h))); + demuxer->stream->read((char*) &h,std::min((unsigned long)size2,sizeof(h))); le2me_AVIStreamHeader(&h); // swap to machine endian chunksize-=std::min((unsigned long)size2,sizeof(h)); ++stream_id; @@ -290,12 +290,12 @@ chunksize-=24; memcpy(s->fcc, "indx", 4); s->dwSize = size2; - s->wLongsPe... [truncated message content] |
From: <nic...@us...> - 2012-12-08 14:01:08
|
Revision: 526 http://mplayerxp.svn.sourceforge.net/mplayerxp/?rev=526&view=rev Author: nickols_k Date: 2012-12-08 14:01:01 +0000 (Sat, 08 Dec 2012) Log Message: ----------- segfault-- Modified Paths: -------------- mplayerxp/libmpcodecs/dec_video.cpp mplayerxp/libvo/video_out.cpp Modified: mplayerxp/libmpcodecs/dec_video.cpp =================================================================== --- mplayerxp/libmpcodecs/dec_video.cpp 2012-12-08 13:40:58 UTC (rev 525) +++ mplayerxp/libmpcodecs/dec_video.cpp 2012-12-08 14:01:01 UTC (rev 526) @@ -301,13 +301,11 @@ for(i=j;i<smp_num_cpus;i++) { MSG_DBG2("parallel: dec_video.put_slice[%ux%u] %i %i %i %i\n",ampi[i]->width,ampi[i]->height,ampi[i]->x,ampi[i]->y,ampi[i]->w,ampi[i]->h); vf_put_slice(s,ampi[i]); - free_mp_image(ampi[i]); } } for(;j<num_slices;j++) { MSG_DBG2("par_tail: dec_video.put_slice[%ux%u] %i %i %i %i\n",ampi[i]->width,ampi[i]->height,ampi[i]->x,ampi[i]->y,ampi[i]->w,ampi[i]->h); vf_put_slice(s,ampi[j]); - free_mp_image(ampi[j]); } } else @@ -317,9 +315,9 @@ for(i=0;i<num_slices;i++) { MSG_DBG2("dec_video.put_slice[%ux%u] %i %i %i %i -> [%i]\n",ampi[i]->width,ampi[i]->height,ampi[i]->x,ampi[i]->y,ampi[i]->w,ampi[i]->h,ampi[i]->xp_idx); vf_put_slice(s,ampi[i]); - free_mp_image(ampi[i]); } } + for(i=0;i<num_slices;i++) free_mp_image(ampi[i]); } else { MSG_DBG2("Put whole frame[%ux%u]\n",mpi->width,mpi->height); vf_put_slice(s,mpi); Modified: mplayerxp/libvo/video_out.cpp =================================================================== --- mplayerxp/libvo/video_out.cpp 2012-12-08 13:40:58 UTC (rev 525) +++ mplayerxp/libvo/video_out.cpp 2012-12-08 14:01:01 UTC (rev 526) @@ -577,7 +577,7 @@ ps_src[i] = mpi->planes[i]+(y*mpi->stride[i])+x+priv.ps_off[i]; } for(i=0;i<4;i++) { - if(mpi->stride[i]) { + if(mpi->stride[i] && dstStride[i]) { if(finalize) stream_copy_pic(dst[i],ps_src[i],_w[i],_h[i],dstStride[i],mpi->stride[i]); else This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
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. |
From: <nic...@us...> - 2012-12-10 13:18:27
|
Revision: 531 http://mplayerxp.svn.sourceforge.net/mplayerxp/?rev=531&view=rev Author: nickols_k Date: 2012-12-10 13:18:14 +0000 (Mon, 10 Dec 2012) Log Message: ----------- convert cdda_priv_t into class CDD_Interface + using std::string Modified Paths: -------------- mplayerxp/libmpstream/cdd.h mplayerxp/libmpstream/cdda.cpp mplayerxp/libmpstream/cddb.cpp mplayerxp/libmpstream/s_cdd.cpp mplayerxp/libvo/vo_sdl.cpp Modified: mplayerxp/libmpstream/cdd.h =================================================================== --- mplayerxp/libmpstream/cdd.h 2012-12-10 11:27:53 UTC (rev 530) +++ mplayerxp/libmpstream/cdd.h 2012-12-10 13:18:14 UTC (rev 531) @@ -7,18 +7,18 @@ struct libinput_t; struct cddb_data_t { - char cddb_hello[1024]; - unsigned long disc_id; - unsigned int tracks; - char *cache_dir; - char *freedb_server; - int freedb_proto_level; - int anonymous; - char category[100]; - char *xmcd_file; - size_t xmcd_file_size; - any_t*user_data; - libinput_t*libinput; + std::string cddb_hello; + unsigned long disc_id; + unsigned int tracks; + char* cache_dir; + const char* freedb_server; + int freedb_proto_level; + int anonymous; + std::string category; + char* xmcd_file; + size_t xmcd_file_size; + any_t* user_data; + libinput_t* libinput; }; struct cd_toc_t { @@ -26,7 +26,7 @@ }; struct cd_track_t { - char *name; + std::string name; unsigned int track_nb; unsigned int min; unsigned int sec; @@ -37,17 +37,29 @@ cd_track_t *next; }; - struct cd_info_t { - char *artist; - char *album; - char *genre; - unsigned int nb_tracks; - unsigned int min; - unsigned int sec; - unsigned msec; - cd_track_t *first; - cd_track_t *last; - cd_track_t *current; + class CD_Info : public Opaque { + public: + CD_Info(); + virtual ~CD_Info(); + + virtual cd_track_t* add_track(const char *track_name, unsigned int track_nb, unsigned int min, unsigned int sec, unsigned int msec, unsigned long frame_begin, unsigned long frame_length); + virtual cd_track_t* get_track(unsigned int track_nb) const; + + virtual void print() const; + virtual MPXP_Rc parse_xmcd(const char *_xmcd_file); + + std::string artist; + std::string album; + std::string genre; + private: + unsigned int nb_tracks; + unsigned int min; + unsigned int sec; + unsigned msec; + + cd_track_t *first; + cd_track_t *last; + cd_track_t *current; }; struct my_track_t { @@ -56,11 +68,25 @@ lsn_t end_sector; }; - struct cdda_priv : public Opaque { + class CDD_Interface : public Opaque { public: - cdda_priv(); - virtual ~cdda_priv(); + CDD_Interface(); + virtual ~CDD_Interface(); + virtual MPXP_Rc open_cdda(const char* dev,const char* track); + virtual MPXP_Rc open_cddb(libinput_t*,const char* dev,const char* track); + + virtual int read(char *buf,track_t* trackidx); + virtual void seek(off_t pos,track_t *trackidx); + virtual off_t tell() const; + virtual void close(); + virtual off_t start() const; + virtual off_t size() const; + virtual int channels(unsigned track_idx) const; + private: + lsn_t map_sector(lsn_t sector,track_t *tr); + unsigned long psa(unsigned long sector); + cdrom_drive_t* cd; my_track_t tracks[256]; /* hope that's enough */ unsigned min; @@ -71,19 +97,6 @@ lsn_t end_sector; }; - cd_info_t* __FASTCALL__ cd_info_new(); - void __FASTCALL__ cd_info_free(cd_info_t *cd_info); - cd_track_t* __FASTCALL__ cd_info_add_track(cd_info_t *cd_info, char *track_name, unsigned int track_nb, unsigned int min, unsigned int sec, unsigned int msec, unsigned long frame_begin, unsigned long frame_length); - cd_track_t* __FASTCALL__ cd_info_get_track(cd_info_t *cd_info, unsigned int track_nb); - - cdda_priv* __FASTCALL__ open_cdda(const char* dev,const char* track); - cdda_priv* __FASTCALL__ open_cddb(libinput_t*,const char* dev,const char* track); - int __FASTCALL__ read_cdda(cdda_priv* s,char *buf,track_t* trackidx); - void __FASTCALL__ seek_cdda(cdda_priv* s,off_t pos,track_t *trackidx); - off_t __FASTCALL__ tell_cdda(const cdda_priv* s); - void __FASTCALL__ close_cdda(cdda_priv*); - off_t __FASTCALL__ cdda_start(cdda_priv*); - off_t __FASTCALL__ cdda_size(cdda_priv*); void cdda_register_options(m_config_t* cfg); } // namespace mpxp #endif // __CDD_H__ Modified: mplayerxp/libmpstream/cdda.cpp =================================================================== --- mplayerxp/libmpstream/cdda.cpp 2012-12-10 11:27:53 UTC (rev 530) +++ mplayerxp/libmpstream/cdda.cpp 2012-12-10 13:18:14 UTC (rev 531) @@ -75,152 +75,144 @@ return rval; } -cdda_priv* __FASTCALL__ open_cdda(const char* dev,const char* arg) { +MPXP_Rc CDD_Interface::open_cdda(const char* dev,const char* arg) { unsigned cd_tracks; - cdda_priv* priv; unsigned int audiolen=0; unsigned i; unsigned char arr[256]; int st_inited; - priv = new(zeromem) cdda_priv; + cd = cdio_cddap_identify(dev,mp_conf.verbose?1:0,NULL); - priv->cd = cdio_cddap_identify(dev,mp_conf.verbose?1:0,NULL); - - if(!priv->cd) { + if(!cd) { MSG_ERR("Can't open cdda device: %s\n",dev); - delete priv; - return NULL; + return MPXP_False; } - cdio_cddap_verbose_set(priv->cd, mp_conf.verbose?CDDA_MESSAGE_PRINTIT:CDDA_MESSAGE_FORGETIT, mp_conf.verbose?CDDA_MESSAGE_PRINTIT:CDDA_MESSAGE_FORGETIT); + cdio_cddap_verbose_set(cd, mp_conf.verbose?CDDA_MESSAGE_PRINTIT:CDDA_MESSAGE_FORGETIT, mp_conf.verbose?CDDA_MESSAGE_PRINTIT:CDDA_MESSAGE_FORGETIT); - if(cdio_cddap_open(priv->cd) != 0) { + if(cdio_cddap_open(cd) != 0) { MSG_ERR("Can't open disc\n"); - cdda_close(priv->cd); - delete priv; - return NULL; + cdda_close(cd); + return MPXP_False; } - cd_tracks=cdio_cddap_tracks(priv->cd); + cd_tracks=cdio_cddap_tracks(cd); MSG_V("Found %d tracks on disc\n",cd_tracks); if(!arg[0]) - for(i=1;i<=cd_tracks;i++) priv->tracks[i-1].play=1; + for(i=1;i<=cd_tracks;i++) tracks[i-1].play=1; cdda_parse_tracks(arr,sizeof(arr)/sizeof(unsigned),arg); - for(i=1;i<=256;i++) if (arr[i]) priv->tracks[i-1].play=1; + for(i=1;i<=256;i++) if (arr[i]) tracks[i-1].play=1; st_inited=0; MSG_V("[CDDA] Queued tracks:"); for(i=0;i<cd_tracks;i++) { - if(priv->tracks[i].play) { - priv->tracks[i].start_sector=cdio_cddap_track_firstsector(priv->cd,i+1); - priv->tracks[i].end_sector=cdio_cddap_track_lastsector(priv->cd,i+1); - MSG_V(" %d[%d-%d]",i+1,priv->tracks[i].start_sector,priv->tracks[i].end_sector); - if(!st_inited) { priv->start_sector=priv->tracks[i].start_sector; st_inited=1; } - priv->end_sector=priv->tracks[i].end_sector; - audiolen += priv->tracks[i].end_sector-priv->tracks[i].start_sector+1; + if(tracks[i].play) { + tracks[i].start_sector=cdio_cddap_track_firstsector(cd,i+1); + tracks[i].end_sector=cdio_cddap_track_lastsector(cd,i+1); + MSG_V(" %d[%d-%d]",i+1,tracks[i].start_sector,tracks[i].end_sector); + if(!st_inited) { start_sector=tracks[i].start_sector; st_inited=1; } + end_sector=tracks[i].end_sector; + audiolen +=tracks[i].end_sector-tracks[i].start_sector+1; } } - for(;i<256;i++) priv->tracks[i].play=0; + for(;i<256;i++) tracks[i].play=0; MSG_V("\n"); - priv->min = (unsigned int)(audiolen/(60*75)); - priv->sec = (unsigned int)((audiolen/75)%60); - priv->msec = (unsigned int)(audiolen%75); + min = (unsigned int)(audiolen/(60*75)); + sec = (unsigned int)((audiolen/75)%60); + msec = (unsigned int)(audiolen%75); - if(speed) cdio_cddap_speed_set(priv->cd,speed); + if(speed) cdio_cddap_speed_set(cd,speed); - priv->sector = priv->start_sector; - return priv; + sector = start_sector; + return MPXP_Ok; } -off_t __FASTCALL__ cdda_start(cdda_priv* priv) { return priv->start_sector*CDIO_CD_FRAMESIZE_RAW; } -off_t __FASTCALL__ cdda_size(cdda_priv* priv) { return priv->end_sector*CDIO_CD_FRAMESIZE_RAW; } - -static lsn_t map_sector(cdda_priv*p,lsn_t sector,track_t *tr) +off_t CDD_Interface::start() const { return start_sector*CDIO_CD_FRAMESIZE_RAW; } +off_t CDD_Interface::size() const { return end_sector*CDIO_CD_FRAMESIZE_RAW; } +int CDD_Interface::channels(unsigned track_idx) const { return cdio_cddap_track_channels(cd, track_idx); } +lsn_t CDD_Interface::map_sector(lsn_t _sector,track_t *tr) { unsigned i,j; - lsn_t cd_track=sector; + lsn_t cd_track=_sector; for(i=0;i<256;i++){ - if(p->tracks[i].play && p->tracks[i].end_sector==sector) { - cd_track=0; - MSG_V("Found track changing. old track=%u Sector=%u",i,sector); - for(j=i+1;j<256;j++) { - if(p->tracks[j].play && p->tracks[j].start_sector==sector+1) { - cd_track=p->tracks[j].start_sector; - if(tr) *tr=j; - MSG_V("new track=%u Sector=%u",j,cd_track); - } + if(tracks[i].play && tracks[i].end_sector==_sector) { + cd_track=0; + MSG_V("Found track changing. old track=%u Sector=%u",i,_sector); + for(j=i+1;j<256;j++) { + if(tracks[j].play && tracks[j].start_sector==_sector+1) { + cd_track=tracks[j].start_sector; + if(tr) *tr=j; + MSG_V("new track=%u Sector=%u",j,cd_track); } + } } } return cd_track; } /* return physical sector address */ -static unsigned long psa(cdda_priv*p,unsigned long sector) +unsigned long CDD_Interface::psa(unsigned long _sector) { unsigned i; - unsigned long got_sectors=p->start_sector,track_len; + unsigned long got_sectors=start_sector,track_len; for(i=0;i<256;i++){ - if(p->tracks[i].play) { - track_len=p->tracks[i].end_sector-p->tracks[i].start_sector; - if(sector>=got_sectors && sector <= track_len) return sector+p->tracks[i].start_sector; + if(tracks[i].play) { + track_len=tracks[i].end_sector-tracks[i].start_sector; + if(_sector>=got_sectors && _sector <= track_len) return _sector+tracks[i].start_sector; got_sectors+=track_len; } } return 0; } -int __FASTCALL__ read_cdda(cdda_priv* p,char *buf,track_t *tr) { - track_t i=255; +int CDD_Interface::read(char *buf,track_t *tr) { + track_t i=255; - if(cdio_cddap_read(p->cd, buf, p->sector, 1)==0) { - MSG_ERR("[CD-DA]: read error occured\n"); - return -1; /* EOF */ - } - p->sector++; - if(p->sector == p->end_sector) { - MSG_DBG2("EOF was reached\n"); - return -1; /* EOF */ - } + if(cdio_cddap_read(cd, buf, sector, 1)==0) { + MSG_ERR("[CD-DA]: read error occured\n"); + return -1; /* EOF */ + } + sector++; + if(sector == end_sector) { + MSG_DBG2("EOF was reached\n"); + return -1; /* EOF */ + } - p->sector=map_sector(p,p->sector,&i); - if(!p->sector) return -1; - if(i!=255) { - *tr=i+1; - MSG_V("Track %d, sector=%d\n", *tr, p->sector); - } - else MSG_DBG2("Track %d, sector=%d\n", *tr, p->sector); - return CDIO_CD_FRAMESIZE_RAW; + sector=map_sector(sector,&i); + if(!sector) return -1; + if(i!=255) { + *tr=i+1; + MSG_V("Track %d, sector=%d\n", *tr, sector); + } else MSG_DBG2("Track %d, sector=%d\n", *tr, sector); + return CDIO_CD_FRAMESIZE_RAW; } -void __FASTCALL__ seek_cdda(cdda_priv* p,off_t pos,track_t *tr) { - long sec; +void CDD_Interface::seek(off_t pos,track_t *tr) { + long _sec; long seeked_track=0; track_t j=255; - sec = pos/CDIO_CD_FRAMESIZE_RAW; - MSG_DBG2("[CDDA] prepare seek to %ld\n",sec); - seeked_track=sec; + _sec = pos/CDIO_CD_FRAMESIZE_RAW; + MSG_DBG2("[CDDA] prepare seek to %ld\n",_sec); + seeked_track=_sec; *tr=255; - if( p->sector!=seeked_track ) { - seeked_track = map_sector(p,seeked_track,&j); + if( sector!=seeked_track ) { + seeked_track = map_sector(seeked_track,&j); if(seeked_track) *tr=j+1; } - p->sector=seeked_track; + sector=seeked_track; } -off_t __FASTCALL__ tell_cdda(const cdda_priv* p) { - return p->sector*CDIO_CD_FRAMESIZE_RAW; +off_t CDD_Interface::tell() const { + return sector*CDIO_CD_FRAMESIZE_RAW; } -void __FASTCALL__ close_cdda(cdda_priv* p) { - delete p; -} - -cdda_priv::cdda_priv() {} -cdda_priv::~cdda_priv() { +void CDD_Interface::close() { cdio_cddap_close(cd); } + +CDD_Interface::CDD_Interface() {} +CDD_Interface::~CDD_Interface() {} } // namespace mpxp #endif Modified: mplayerxp/libmpstream/cddb.cpp =================================================================== --- mplayerxp/libmpstream/cddb.cpp 2012-12-10 11:27:53 UTC (rev 530) +++ mplayerxp/libmpstream/cddb.cpp 2012-12-10 13:18:14 UTC (rev 531) @@ -57,7 +57,7 @@ static cd_toc_t cdtoc[100]; #if defined(__linux__) -int read_toc(void) { +static int read_toc(void) { int drive = open("/dev/cdrom", O_RDONLY | O_NONBLOCK); struct cdrom_tochdr tochdr; struct cdrom_tocentry tocentry; @@ -87,7 +87,7 @@ } #elif defined(SYS_BSD) -int read_toc(void) { +static int read_toc(void) { int drive = open("/dev/acd0c", O_RDONLY | O_NONBLOCK); struct ioc_toc_header tochdr; struct ioc_read_toc_single_entry tocentry; @@ -117,7 +117,7 @@ } #endif -unsigned int __FASTCALL__ cddb_sum(int n) { +static unsigned int __FASTCALL__ cddb_sum(int n) { unsigned int ret; ret = 0; @@ -128,7 +128,7 @@ return ret; } -unsigned long __FASTCALL__ cddb_discid(int tot_trks) { +static unsigned long __FASTCALL__ cddb_discid(int tot_trks) { unsigned int i, t = 0, n = 0; i = 0; @@ -141,7 +141,7 @@ return ((n % 0xff) << 24 | t << 8 | tot_trks); } -int __FASTCALL__ cddb_http_request(const char *command, int (*reply_parser)(HTTP_header_t*,cddb_data_t*), cddb_data_t *cddb_data) { +static int __FASTCALL__ cddb_http_request(const char *command, int (*reply_parser)(HTTP_header_t*,cddb_data_t*), cddb_data_t *cddb_data) { char request[4096]; int ret = 0; Tcp tcp(cddb_data->libinput,-1); @@ -150,7 +150,7 @@ if( reply_parser==NULL || command==NULL || cddb_data==NULL ) return -1; - sprintf( request, "http://%s/~cddb/cddb.cgi?cmd=%s%s&proto=%d", cddb_data->freedb_server, command, cddb_data->cddb_hello, cddb_data->freedb_proto_level ); + sprintf( request, "http://%s/~cddb/cddb.cgi?cmd=%s%s&proto=%d", cddb_data->freedb_server, command, cddb_data->cddb_hello.c_str(), cddb_data->freedb_proto_level ); MSG_V("Request[%s]\n", request ); url = url_new(request); @@ -190,7 +190,7 @@ return ret; } -int __FASTCALL__ cddb_read_cache(cddb_data_t *cddb_data) { +static int __FASTCALL__ cddb_read_cache(cddb_data_t *cddb_data) { char file_name[100]; struct stat stats; int file_fd, ret; @@ -214,7 +214,7 @@ file_size = stats.st_size; } - cddb_data->xmcd_file = (char*)mp_malloc(file_size); + cddb_data->xmcd_file = new char [file_size]; if( cddb_data->xmcd_file==NULL ) { MSG_FATAL("Memory allocation failed\n"); close(file_fd); @@ -232,7 +232,7 @@ return 0; } -int __FASTCALL__ cddb_write_cache(cddb_data_t *cddb_data) { +static int __FASTCALL__ cddb_write_cache(cddb_data_t *cddb_data) { // We have the file, save it for cache. char file_name[100]; int file_fd; @@ -321,80 +321,80 @@ return 0; } -int __FASTCALL__ cddb_request_titles(cddb_data_t *cddb_data) { - char command[1024]; - sprintf( command, "cddb+read+%s+%08lx", cddb_data->category, cddb_data->disc_id); - return cddb_http_request(command, cddb_read_parse, cddb_data); +static int __FASTCALL__ cddb_request_titles(cddb_data_t *cddb_data) { + char command[1024]; + sprintf( command, "cddb+read+%s+%08lx", cddb_data->category.c_str(), cddb_data->disc_id); + return cddb_http_request(command, cddb_read_parse, cddb_data); } static int cddb_query_parse(HTTP_header_t *http_hdr, cddb_data_t *cddb_data) { - char album_title[100]; - char *ptr = NULL; - int ret, status; + char album_title[100]; + char *ptr = NULL; + int ret, status; - ret = sscanf((char*)http_hdr->body, "%d ", &status); - if( ret!=1 ) { + ret = sscanf((char*)http_hdr->body, "%d ", &status); + if( ret!=1 ) { + MSG_ERR("Parse error\n"); + return -1; + } + + switch(status) { + case 200: + // Found exact match + ret = sscanf((char*)http_hdr->body, "%d %s %08lx %s", &status, cddb_data->category.c_str(), &(cddb_data->disc_id), album_title); + if( ret!=4 ) { MSG_ERR("Parse error\n"); return -1; - } - - switch(status) { - case 200: - // Found exact match - ret = sscanf((char*)http_hdr->body, "%d %s %08lx %s", &status, cddb_data->category, &(cddb_data->disc_id), album_title); - if( ret!=4 ) { - MSG_ERR("Parse error\n"); - return -1; - } - ptr = strstr((char*)http_hdr->body, album_title); - if( ptr!=NULL ) { - char *ptr2; - int len; - ptr2 = strstr(ptr, "\n"); - if( ptr2==NULL ) { - len = (http_hdr->body_size)-(ptr-(char*)(http_hdr->body)); - } else { - len = ptr2-ptr+1; - } - strncpy(album_title, ptr, len); - album_title[len-2]='\0'; - } - MSG_V("Parse OK, found: %s\n", album_title); - return cddb_request_titles(cddb_data); - case 202: - // No match found - MSG_ERR("Album not found\n"); - break; - case 210: - // Found exact matches, list follows - ptr = strstr((char*)http_hdr->body, "\n"); - if( ptr==NULL ) { - MSG_ERR("Unable to find end of line\n"); - return -1; - } - ptr++; - // We have a list of exact matches, so which one do - // we use? So let's take the first one. - ret = sscanf(ptr, "%s %08lx %s", cddb_data->category, &(cddb_data->disc_id), album_title); - if( ret!=3 ) { - MSG_ERR("Parse error\n"); - return -1; - } - ptr = strstr((char*)http_hdr->body, album_title); - if( ptr!=NULL ) { - char *ptr2; - int len; - ptr2 = strstr(ptr, "\n"); - if( ptr2==NULL ) { - len = (http_hdr->body_size)-(ptr-(char*)(http_hdr->body)); - } else { - len = ptr2-ptr+1; - } - strncpy(album_title, ptr, len); - album_title[len-2]='\0'; - } - MSG_V("Parse OK, found: %s\n", album_title); - return cddb_request_titles(cddb_data); + } + ptr = strstr((char*)http_hdr->body, album_title); + if( ptr!=NULL ) { + char *ptr2; + int len; + ptr2 = strstr(ptr, "\n"); + if( ptr2==NULL ) { + len = (http_hdr->body_size)-(ptr-(char*)(http_hdr->body)); + } else { + len = ptr2-ptr+1; + } + strncpy(album_title, ptr, len); + album_title[len-2]='\0'; + } + MSG_V("Parse OK, found: %s\n", album_title); + return cddb_request_titles(cddb_data); + case 202: + // No match found + MSG_ERR("Album not found\n"); + break; + case 210: + // Found exact matches, list follows + ptr = strstr((char*)http_hdr->body, "\n"); + if( ptr==NULL ) { + MSG_ERR("Unable to find end of line\n"); + return -1; + } + ptr++; + // We have a list of exact matches, so which one do + // we use? So let's take the first one. + ret = sscanf(ptr, "%s %08lx %s", cddb_data->category.c_str(), &(cddb_data->disc_id), album_title); + if( ret!=3 ) { + MSG_ERR("Parse error\n"); + return -1; + } + ptr = strstr((char*)http_hdr->body, album_title); + if( ptr!=NULL ) { + char *ptr2; + int len; + ptr2 = strstr(ptr, "\n"); + if( ptr2==NULL ) { + len = (http_hdr->body_size)-(ptr-(char*)(http_hdr->body)); + } else { + len = ptr2-ptr+1; + } + strncpy(album_title, ptr, len); + album_title[len-2]='\0'; + } + MSG_V("Parse OK, found: %s\n", album_title); + return cddb_request_titles(cddb_data); /* body=[210 Found exact matches, list follows (until terminating `.') misc c711930d Santana / Supernatural @@ -402,99 +402,99 @@ blues c711930d Santana / Supernatural .] */ - case 211: - // Found inexact matches, list follows - MSG_WARN("No exact matches found, list follows\n"); - break; - default: - MSG_ERR("Unhandled code\n"); - } - return -1; + case 211: + // Found inexact matches, list follows + MSG_WARN("No exact matches found, list follows\n"); + break; + default: + MSG_ERR("Unhandled code\n"); + } + return -1; } static int cddb_proto_level_parse(HTTP_header_t *http_hdr, cddb_data_t *cddb_data) { - int max; - int ret, status; - char *ptr; + int max; + int ret, status; + char *ptr; - ret = sscanf((char*)http_hdr->body, "%d ", &status); - if( ret!=1 ) { + ret = sscanf((char*)http_hdr->body, "%d ", &status); + if( ret!=1 ) { + MSG_ERR("Parse error\n"); + return -1; + } + + switch(status) { + case 210: + ptr = strstr((char*)http_hdr->body, "max proto:"); + if( ptr==NULL ) { MSG_ERR("Parse error\n"); return -1; - } - - switch(status) { - case 210: - ptr = strstr((char*)http_hdr->body, "max proto:"); - if( ptr==NULL ) { - MSG_ERR("Parse error\n"); - return -1; - } - ret = sscanf(ptr, "max proto: %d", &max); - if( ret!=1 ) { - MSG_ERR("Parse error\n"); - return -1; - } - cddb_data->freedb_proto_level = max; - return 0; - default: - MSG_ERR("Unhandled code\n"); - } - return -1; + } + ret = sscanf(ptr, "max proto: %d", &max); + if( ret!=1 ) { + MSG_ERR("Parse error\n"); + return -1; + } + cddb_data->freedb_proto_level = max; + return 0; + default: + MSG_ERR("Unhandled code\n"); + } + return -1; } -int __FASTCALL__ cddb_get_proto_level(cddb_data_t *cddb_data) { - return cddb_http_request("stat", cddb_proto_level_parse, cddb_data); +static int __FASTCALL__ cddb_get_proto_level(cddb_data_t *cddb_data) { + return cddb_http_request("stat", cddb_proto_level_parse, cddb_data); } static int cddb_freedb_sites_parse(HTTP_header_t *http_hdr, cddb_data_t *cddb_data) { - int ret, status; - UNUSED(cddb_data); - ret = sscanf((char*)http_hdr->body, "%d ", &status); - if( ret!=1 ) { - MSG_ERR("Parse error\n"); - return -1; - } - - switch(status) { - case 210: - // Parse the sites - return 0; - case 401: - MSG_ERR("No sites information available\n"); - break; - default: - MSG_ERR("Unhandled code\n"); - } + int ret, status; + UNUSED(cddb_data); + ret = sscanf((char*)http_hdr->body, "%d ", &status); + if( ret!=1 ) { + MSG_ERR("Parse error\n"); return -1; + } + + switch(status) { + case 210: + // Parse the sites + return 0; + case 401: + MSG_ERR("No sites information available\n"); + break; + default: + MSG_ERR("Unhandled code\n"); + } + return -1; } -int __FASTCALL__ cddb_get_freedb_sites(cddb_data_t *cddb_data) { - return cddb_http_request("sites", cddb_freedb_sites_parse, cddb_data); +static int __FASTCALL__ cddb_get_freedb_sites(cddb_data_t *cddb_data) { + return cddb_http_request("sites", cddb_freedb_sites_parse, cddb_data); } -void __FASTCALL__ cddb_create_hello(cddb_data_t *cddb_data) { - char host_name[51]; - const char *user_name; +static void __FASTCALL__ cddb_create_hello(cddb_data_t *cddb_data) { + char host_name[51]; + const char *user_name; - if( cddb_data->anonymous ) { // Default is anonymous - /* Note from Eduardo P\xE9rez Ureta <ep...@it...> : - * We don't send current user/host name in hello to prevent spam. - * Software that sends this is considered spyware - * that most people don't like. - */ - user_name = "anonymous"; - strcpy(host_name, "localhost"); - } else { - if( gethostname(host_name, 50)<0 ) { - strcpy(host_name, "localhost"); - } - user_name = getenv("LOGNAME"); + if( cddb_data->anonymous ) { // Default is anonymous + /* Note from Eduardo P\xE9rez Ureta <ep...@it...> : + * We don't send current user/host name in hello to prevent spam. + * Software that sends this is considered spyware + * that most people don't like. + */ + user_name = "anonymous"; + strcpy(host_name, "localhost"); + } else { + if( gethostname(host_name, 50)<0 ) { + strcpy(host_name, "localhost"); } - sprintf( cddb_data->cddb_hello, "&hello=%s+%s+%s+%s", user_name, host_name, "MPlayerXP", VERSION); + user_name = getenv("LOGNAME"); + } + cddb_data->cddb_hello=std::string("&hello=")+user_name+"+"+host_name+"+"+"MPlayerXP"+"+"+VERSION; } -int __FASTCALL__ cddb_retrieve(cddb_data_t *cddb_data) { +static int __FASTCALL__ cddb_retrieve(cddb_data_t *cddb_data) { char offsets[1024], command[1024]; char *ptr; unsigned idx; @@ -528,7 +528,7 @@ return 0; } -MPXP_Rc __FASTCALL__ cddb_resolve(libinput_t*libinput,char **xmcd_file) { +static MPXP_Rc __FASTCALL__ cddb_resolve(libinput_t*libinput,char **xmcd_file) { char cddb_cache_dir[] = DEFAULT_CACHE_DIR; char *home_dir = NULL; cddb_data_t cddb_data; @@ -571,228 +571,183 @@ * *******************************************************************************************************************/ -cd_info_t* __FASTCALL__ cd_info_new() { - cd_info_t *cd_info = NULL; - - cd_info = (cd_info_t*)mp_mallocz(sizeof(cd_info_t)); - if( cd_info==NULL ) { - MSG_FATAL("Memory allocation failed\n"); - return NULL; +CD_Info::CD_Info() {} +CD_Info::~CD_Info() { + cd_track_t *cd_track, *cd_track_next; + cd_track_next = first; + while( cd_track_next!=NULL ) { + cd_track = cd_track_next; + cd_track_next = cd_track->next; + delete cd_track; } - - return cd_info; } -void __FASTCALL__ cd_info_free(cd_info_t *cd_info) { - cd_track_t *cd_track, *cd_track_next; - if( cd_info==NULL ) return; - if( cd_info->artist!=NULL ) delete cd_info->artist; - if( cd_info->album!=NULL ) delete cd_info->album; - if( cd_info->genre!=NULL ) delete cd_info->genre; +cd_track_t* CD_Info::add_track(const char *track_name, + unsigned int track_nb, + unsigned int _min, + unsigned int _sec, + unsigned int _msec, + unsigned long frame_begin, + unsigned long frame_length) { + cd_track_t *cd_track; - cd_track_next = cd_info->first; - while( cd_track_next!=NULL ) { - cd_track = cd_track_next; - cd_track_next = cd_track->next; - if( cd_track->name!=NULL ) delete cd_track->name; - delete cd_track; - } -} + if( track_name==NULL ) return NULL; -cd_track_t* __FASTCALL__ cd_info_add_track(cd_info_t *cd_info, char *track_name, unsigned int track_nb, unsigned int min, unsigned int sec, unsigned int msec, unsigned long frame_begin, unsigned long frame_length) { - cd_track_t *cd_track; - - if( cd_info==NULL || track_name==NULL ) return NULL; - - cd_track = (cd_track_t*)mp_mallocz(sizeof(cd_track_t)); - if( cd_track==NULL ) { + cd_track = new(zeromem) cd_track_t; + if( cd_track==NULL ) { MSG_FATAL("Memory allocation failed\n"); return NULL; - } - cd_track->name = (char*)mp_malloc(strlen(track_name)+1); - if( cd_track->name==NULL ) { - MSG_FATAL("Memory allocation failed\n"); - delete cd_track; - return NULL; - } - strcpy(cd_track->name, track_name); - cd_track->track_nb = track_nb; - cd_track->min = min; - cd_track->sec = sec; - cd_track->msec = msec; - cd_track->frame_begin = frame_begin; - cd_track->frame_length = frame_length; + } + cd_track->name=track_name; + cd_track->track_nb = track_nb; + cd_track->min = _min; + cd_track->sec = _sec; + cd_track->msec = _msec; + cd_track->frame_begin = frame_begin; + cd_track->frame_length = frame_length; - if( cd_info->first==NULL ) { - cd_info->first = cd_track; - } - if( cd_info->last!=NULL ) { - cd_info->last->next = cd_track; - } + if( first==NULL ) first = cd_track; + if( last!=NULL ) last->next = cd_track; - cd_track->prev = cd_info->last; + cd_track->prev = last; - cd_info->last = cd_track; - cd_info->current = cd_track; + last = cd_track; + current = cd_track; - cd_info->nb_tracks++; + nb_tracks++; - return cd_track; + return cd_track; } -cd_track_t* __FASTCALL__ cd_info_get_track(cd_info_t *cd_info, unsigned int track_nb) { - cd_track_t *cd_track=NULL; +cd_track_t* CD_Info::get_track(unsigned int track_nb) const { + cd_track_t *cd_track=NULL; - if( cd_info==NULL ) return NULL; - - cd_track = cd_info->first; - while( cd_track!=NULL ) { - if( cd_track->track_nb==track_nb ) { - return cd_track; - } - cd_track = cd_track->next; - } - return NULL; + cd_track = first; + while( cd_track!=NULL ) { + if( cd_track->track_nb==track_nb ) return cd_track; + cd_track = cd_track->next; + } + return NULL; } -void __FASTCALL__ cd_info_debug(cd_info_t *cd_info) { - cd_track_t *current_track; - MSG_INFO("================ CD INFO === start =========\n"); - if( cd_info==NULL ) { - MSG_INFO("cd_info is NULL\n"); - return; - } - MSG_INFO(" artist=[%s]\n" - " album=[%s]\n" - " genre=[%s]\n" - " nb_tracks=%d\n" - " length= %2d:%02d.%02d\n" - , cd_info->artist - , cd_info->album - , cd_info->genre - , cd_info->nb_tracks - , cd_info->min, cd_info->sec, cd_info->msec); - current_track = cd_info->first; - while( current_track!=NULL ) { - MSG_V(" #%2d %2d:%02d.%02d @ %7ld\t[%s] \n", current_track->track_nb, current_track->min, current_track->sec, current_track->msec, current_track->frame_begin, current_track->name); - current_track = current_track->next; - } - MSG_INFO("================ CD INFO === end =========\n"); +void CD_Info::print() const { + cd_track_t *current_track; + MSG_INFO("================ CD INFO === start =========\n"); + MSG_INFO(" artist=[%s]\n" + " album=[%s]\n" + " genre=[%s]\n" + " nb_tracks=%d\n" + " length= %2d:%02d.%02d\n" + , artist.c_str() + , album.c_str() + , genre.c_str() + , nb_tracks + , min, sec, msec); + current_track = first; + while( current_track!=NULL ) { + MSG_V(" #%2d %2d:%02d.%02d @ %7ld\t[%s] \n", current_track->track_nb, current_track->min, current_track->sec, current_track->msec, current_track->frame_begin, current_track->name.c_str()); + current_track = current_track->next; + } + MSG_INFO("================ CD INFO === end =========\n"); } -char* __FASTCALL__ xmcd_parse_dtitle(cd_info_t *cd_info, char *line) { - char *ptr, *album; - ptr = strstr(line, "DTITLE="); - if( ptr!=NULL ) { - ptr += 7; - album = strstr(ptr, "/"); - if( album==NULL ) return NULL; - cd_info->album = (char*)mp_malloc(strlen(album+2)+1); - if( cd_info->album==NULL ) { - return NULL; - } - strcpy( cd_info->album, album+2 ); - album--; - album[0] = '\0'; - cd_info->artist = (char*)mp_malloc(strlen(ptr)+1); - if( cd_info->artist==NULL ) { - return NULL; - } - strcpy( cd_info->artist, ptr ); - } - return ptr; +static char* __FASTCALL__ xmcd_parse_dtitle(CD_Info& cd_info,char *line) { + char *ptr, *album; + ptr = strstr(line, "DTITLE="); + if( ptr!=NULL ) { + ptr += 7; + album = strstr(ptr, "/"); + if( album==NULL ) return NULL; + cd_info.album=album+2; + album--; + album[0] = '\0'; + cd_info.artist=ptr; + } + return ptr; } -char* __FASTCALL__ xmcd_parse_dgenre(cd_info_t *cd_info, char *line) { - char *ptr; - ptr = strstr(line, "DGENRE="); - if( ptr!=NULL ) { - ptr += 7; - cd_info->genre = (char*)mp_malloc(strlen(ptr)+1); - if( cd_info->genre==NULL ) { - return NULL; - } - strcpy( cd_info->genre, ptr ); - } - return ptr; +char* __FASTCALL__ xmcd_parse_dgenre(CD_Info& cd_info,char *line) { + char *ptr; + ptr = strstr(line, "DGENRE="); + if( ptr!=NULL ) { + ptr += 7; + cd_info.genre=ptr; + } + return ptr; } -char* __FASTCALL__ xmcd_parse_ttitle(cd_info_t *cd_info, char *line) { - unsigned int track_nb; - unsigned long sec, off; - char *ptr; - ptr = strstr(line, "TTITLE"); - if( ptr!=NULL ) { - ptr += 6; - // Here we point to the track number - track_nb = atoi(ptr); - ptr = strstr(ptr, "="); - if( ptr==NULL ) return NULL; - ptr++; +static char* __FASTCALL__ xmcd_parse_ttitle(CD_Info& cd_info,char *line) { + unsigned int track_nb; + unsigned long sec, off; + char *ptr; + ptr = strstr(line, "TTITLE"); + if( ptr!=NULL ) { + ptr += 6; + // Here we point to the track number + track_nb = atoi(ptr); + ptr = strstr(ptr, "="); + if( ptr==NULL ) return NULL; + ptr++; - sec = cdtoc[track_nb].frame; - off = cdtoc[track_nb+1].frame-sec+1; + sec = cdtoc[track_nb].frame; + off = cdtoc[track_nb+1].frame-sec+1; - cd_info_add_track( cd_info, ptr, track_nb+1, (unsigned int)(off/(60*75)), (unsigned int)((off/75)%60), (unsigned int)(off%75), sec, off ); - } - return ptr; + cd_info.add_track( ptr, track_nb+1, (unsigned int)(off/(60*75)), (unsigned int)((off/75)%60), (unsigned int)(off%75), sec, off ); + } + return ptr; } -cd_info_t* __FASTCALL__ cddb_parse_xmcd(char *xmcd_file) { - cd_info_t *cd_info = NULL; - int length, pos = 0; - char *ptr, *ptr2; - unsigned int audiolen; - if( xmcd_file==NULL ) return NULL; +MPXP_Rc CD_Info::parse_xmcd(const char *_xmcd_file) { + int length, pos = 0; + char *ptr; + char *ptr2; + unsigned int audiolen; + if( _xmcd_file==NULL ) return MPXP_False; + char* xmcd_file = mp_strdup(_xmcd_file); - cd_info = cd_info_new(); - if( cd_info==NULL ) { - return NULL; + length = strlen(xmcd_file); + ptr = xmcd_file; + while( ptr!=NULL && pos<length ) { + // Read a line + ptr2 = ptr; + while( ptr2[0]!='\0' && ptr2[0]!='\r' && ptr2[0]!='\n' ) ptr2++; + if( ptr2[0]=='\0' ) break; + ptr2[0] = '\0'; + // Ignore comments + if( ptr[0]!='#' ) { + // Search for the album title + if( xmcd_parse_dtitle(*this, ptr) ); + // Search for the genre + else if( xmcd_parse_dgenre(*this, ptr) ); + // Search for a track title + else if( xmcd_parse_ttitle(*this, ptr) ){} } + if( ptr2[1]=='\n' ) ptr2++; + pos = (ptr2+1)-ptr; + ptr = ptr2+1; + } - length = strlen(xmcd_file); - ptr = xmcd_file; - while( ptr!=NULL && pos<length ) { - // Read a line - ptr2 = ptr; - while( ptr2[0]!='\0' && ptr2[0]!='\r' && ptr2[0]!='\n' ) ptr2++; - if( ptr2[0]=='\0' ) { - break; - } - ptr2[0] = '\0'; - // Ignore comments - if( ptr[0]!='#' ) { - // Search for the album title - if( xmcd_parse_dtitle(cd_info, ptr) ); - // Search for the genre - else if( xmcd_parse_dgenre(cd_info, ptr) ); - // Search for a track title - else if( xmcd_parse_ttitle(cd_info, ptr) ){} - } - if( ptr2[1]=='\n' ) ptr2++; - pos = (ptr2+1)-ptr; - ptr = ptr2+1; - } + audiolen = cdtoc[nb_tracks].frame-cdtoc[0].frame; + min = (unsigned int)(audiolen/(60*75)); + sec = (unsigned int)((audiolen/75)%60); + msec = (unsigned int)(audiolen%75); + delete xmcd_file; - audiolen = cdtoc[cd_info->nb_tracks].frame-cdtoc[0].frame; - cd_info->min = (unsigned int)(audiolen/(60*75)); - cd_info->sec = (unsigned int)((audiolen/75)%60); - cd_info->msec = (unsigned int)(audiolen%75); - - return cd_info; + return MPXP_Ok; } -cdda_priv* __FASTCALL__ open_cddb(libinput_t *libinput,const char *dev, const char *track) { - cd_info_t *cd_info = NULL; +MPXP_Rc CDD_Interface::open_cddb(libinput_t *libinput,const char *dev, const char *track) { char *xmcd_file = NULL; MPXP_Rc ret; ret = cddb_resolve(libinput,&xmcd_file); if( ret==MPXP_False ) { - cd_info = cddb_parse_xmcd(xmcd_file); + CD_Info& cd_info = *new(zeromem) CD_Info; + if(cd_info.parse_xmcd(xmcd_file)==MPXP_Ok) + cd_info.print(); delete xmcd_file; - cd_info_debug( cd_info ); - return NULL; + delete &cd_info; + return ret; } return open_cdda(dev, track); } Modified: mplayerxp/libmpstream/s_cdd.cpp =================================================================== --- mplayerxp/libmpstream/s_cdd.cpp 2012-12-10 11:27:53 UTC (rev 530) +++ mplayerxp/libmpstream/s_cdd.cpp 2012-12-10 13:18:14 UTC (rev 531) @@ -35,18 +35,20 @@ virtual off_t sector_size() const; virtual std::string mime_type() const; protected: - cdda_priv* priv; + CDD_Interface* priv; private: track_t track_idx; }; Cdda_Stream_Interface::Cdda_Stream_Interface(libinput_t* libinput) :Stream_Interface(libinput), + priv(new(zeromem) CDD_Interface), track_idx(255) {} -Cdda_Stream_Interface::~Cdda_Stream_Interface() {} +Cdda_Stream_Interface::~Cdda_Stream_Interface() { delete priv; } MPXP_Rc Cdda_Stream_Interface::open(const char *filename,unsigned flags) { + MPXP_Rc rc; const char *param; char *device; UNUSED(flags); @@ -55,38 +57,38 @@ return MPXP_False; } param=mrl_parse_line(filename,NULL,NULL,&device,NULL); - priv = open_cdda(device ? device : DEFAULT_CDROM_DEVICE,param); + rc = priv->open_cdda(device ? device : DEFAULT_CDROM_DEVICE,param); if(device) delete device; - return priv?MPXP_Ok:MPXP_False; + return rc; } Stream::type_e Cdda_Stream_Interface::type() const { return Stream::Type_RawAudio|Stream::Type_Seekable; } -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::start_pos() const { return priv->start(); } +off_t Cdda_Stream_Interface::size() const { return priv->size(); } 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) { sp->type=0; - sp->len=read_cdda(priv,sp->buf,&track_idx); + sp->len=priv->read(sp->buf,&track_idx); return sp->len; } off_t Cdda_Stream_Interface::seek(off_t pos) { - seek_cdda(priv,pos,&track_idx); + priv->seek(pos,&track_idx); return pos; } off_t Cdda_Stream_Interface::tell() const { - return tell_cdda(priv); + return priv->tell(); } void Cdda_Stream_Interface::close() { - close_cdda(priv); + priv->close(); } MPXP_Rc Cdda_Stream_Interface::ctrl(unsigned cmd,any_t*args) @@ -99,7 +101,7 @@ } break; case SCTRL_AUD_GET_CHANNELS: - *(int *)args=cdio_cddap_track_channels(priv->cd, track_idx); + *(int *)args=priv->channels(track_idx); if(*(int *)args<=0) *(int *)args=2; MSG_V("cdda channels: %u\n",*(int *)args); return MPXP_Ok; @@ -152,9 +154,9 @@ return MPXP_False; } param=mrl_parse_line(filename,NULL,NULL,&device,NULL); - priv = open_cddb(libinput,device ? device : DEFAULT_CDROM_DEVICE,param); + retval = priv->open_cddb(libinput,device ? device : DEFAULT_CDROM_DEVICE,param); if(device) delete device; - return priv?MPXP_Ok:MPXP_False; + return retval; #else return MPXP_False; #endif Modified: mplayerxp/libvo/vo_sdl.cpp =================================================================== --- mplayerxp/libvo/vo_sdl.cpp 2012-12-10 11:27:53 UTC (rev 530) +++ mplayerxp/libvo/vo_sdl.cpp 2012-12-10 13:18:14 UTC (rev 531) @@ -200,8 +200,8 @@ const char* parse_sub_device(const char *sd) const; - char sdl_subdevice[100]; - char driver[8]; /* output driver used by sdl */ + std::string sdl_subdevice; + std::string driver; /* output driver used by sdl */ unsigned flags; LocalPtr<Aspect>aspect; SDL_Surface* surface; /* SDL display surface */ @@ -273,8 +273,7 @@ const char* vidix_name=NULL; num_buffs = 1; surface = NULL; - sdl_subdevice[0]='\0'; - if(arg) strcpy(sdl_subdevice,arg); + if(arg) sdl_subdevice=arg; if(arg) vidix_name = parse_sub_device(arg); #ifdef CONFIG_VIDIX if(vidix_name) { @@ -324,9 +323,10 @@ void SDL_VO_Interface::sdl_open( ) { + char drv[8]; const SDL_VideoInfo *vidInfo = NULL; MSG_DBG3("SDL: Opening Plugin\n"); - if(sdl_subdevice[0]) setenv("SDL_VIDEODRIVER", sdl_subdevice, 1); + if(!sdl_subdevice.empty()) setenv("SDL_VIDEODRIVER", sdl_subdevice.c_str(), 1); /* does the user want SDL to try and force Xv */ if(sdl_forcexv) setenv("SDL_VIDEO_X11_NODIRECTCOLOR", "1", 1); @@ -349,10 +349,11 @@ } #ifdef CONFIG_VIDIX - if(memcmp(sdl_subdevice,"vidix",5) != 0) + if(memcmp(sdl_subdevice.c_str(),"vidix",5) != 0) #endif - SDL_VideoDriverName(driver, 8); - MSG_OK("SDL: Using driver: %s\n", driver); + SDL_VideoDriverName(drv, 8); + driver=drv; + MSG_OK("SDL: Using driver: %s\n", driver.c_str()); /* other default values */ #ifdef SDL_NOHWSURFACE MSG_V("SDL: using software-surface\n"); @@ -682,11 +683,10 @@ retval = set_fullmode(fullmode); if(retval!=MPXP_Ok) return retval; } else { - if((strcmp(driver, "x11") == 0) - ||(strcmp(driver, "windib") == 0) - ||(strcmp(driver, "directx") == 0) - ||((strcmp(driver, "aalib") == 0) - && X)) { + if(driver=="x11" + ||driver=="windib" + ||driver=="directx" + ||(driver=="aalib" && X)) { MSG_V("SDL: setting windowed mode\n"); retval = set_video_mode(dstwidth, dstheight, bpp, sdlflags); if(retval!=MPXP_Ok) return retval; This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <nic...@us...> - 2012-12-10 15:13:41
|
Revision: 533 http://mplayerxp.svn.sourceforge.net/mplayerxp/?rev=533&view=rev Author: nickols_k Date: 2012-12-10 15:13:31 +0000 (Mon, 10 Dec 2012) Log Message: ----------- security patch: use const std::string& instead of const char* in classes where it's possible Modified Paths: -------------- mplayerxp/libmpdemux/demuxer_info.cpp mplayerxp/libmpdemux/demuxer_info.h mplayerxp/libmpstream/cdd.h mplayerxp/libmpstream/cdda.cpp mplayerxp/libmpstream/cddb.cpp mplayerxp/libmpstream/mrl.cpp mplayerxp/libmpstream/mrl.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 mplayerxp/libmpstream/url.cpp mplayerxp/libmpstream/url.h mplayerxp/libvo/video_out.cpp mplayerxp/libvo/video_out.h mplayerxp/libvo/video_out_internal.h mplayerxp/libvo/vo_fbdev.cpp mplayerxp/libvo/vo_null.cpp mplayerxp/libvo/vo_opengl.cpp mplayerxp/libvo/vo_sdl.cpp mplayerxp/libvo/vo_vesa.cpp mplayerxp/libvo/vo_x11.cpp mplayerxp/libvo/vo_xv.cpp mplayerxp/libvo/x11_system.cpp mplayerxp/libvo/x11_system.h mplayerxp/mplayerxp.cpp Modified: mplayerxp/libmpdemux/demuxer_info.cpp =================================================================== --- mplayerxp/libmpdemux/demuxer_info.cpp 2012-12-10 13:30:58 UTC (rev 532) +++ mplayerxp/libmpdemux/demuxer_info.cpp 2012-12-10 15:13:31 UTC (rev 533) @@ -48,10 +48,10 @@ return MPXP_Ok; } -int Demuxer_Info::print(const char *filename) const +int Demuxer_Info::print(const std::string& filename) const { unsigned i; - MSG_HINT(" CLIP INFO (%s):\n",filename); + MSG_HINT(" CLIP INFO (%s):\n",filename.c_str()); for(i=0;i<INFOT_MAX;i++) if(id[i]) MSG_HINT(" %s: %s\n",info_names[i],id[i]); Modified: mplayerxp/libmpdemux/demuxer_info.h =================================================================== --- mplayerxp/libmpdemux/demuxer_info.h 2012-12-10 13:30:58 UTC (rev 532) +++ mplayerxp/libmpdemux/demuxer_info.h 2012-12-10 15:13:31 UTC (rev 533) @@ -4,6 +4,7 @@ #include "osdep/mplib.h" using namespace mpxp; #include "xmpcore/xmp_enums.h" +#include <string> namespace mpxp { enum { @@ -33,7 +34,7 @@ MPXP_Rc add(unsigned opt, const char *param); const char* get(unsigned opt) const; - int print(const char *filename) const; + int print(const std::string& filename) const; private: char *id[INFOT_MAX]; Modified: mplayerxp/libmpstream/cdd.h =================================================================== --- mplayerxp/libmpstream/cdd.h 2012-12-10 13:30:58 UTC (rev 532) +++ mplayerxp/libmpstream/cdd.h 2012-12-10 15:13:31 UTC (rev 533) @@ -42,11 +42,11 @@ CD_Info(); virtual ~CD_Info(); - virtual cd_track_t* add_track(const char *track_name, unsigned int track_nb, unsigned int min, unsigned int sec, unsigned int msec, unsigned long frame_begin, unsigned long frame_length); + virtual cd_track_t* add_track(const std::string& track_name, unsigned int track_nb, unsigned int min, unsigned int sec, unsigned int msec, unsigned long frame_begin, unsigned long frame_length); virtual cd_track_t* get_track(unsigned int track_nb) const; virtual void print() const; - virtual MPXP_Rc parse_xmcd(const char *_xmcd_file); + virtual MPXP_Rc parse_xmcd(const std::string& _xmcd_file); std::string artist; std::string album; @@ -73,8 +73,8 @@ CDD_Interface(); virtual ~CDD_Interface(); - virtual MPXP_Rc open_cdda(const char* dev,const char* track); - virtual MPXP_Rc open_cddb(libinput_t*,const char* dev,const char* track); + virtual MPXP_Rc open_cdda(const std::string& dev,const std::string& track); + virtual MPXP_Rc open_cddb(libinput_t*,const std::string& dev,const std::string& track); virtual int read(char *buf,track_t* trackidx); virtual void seek(off_t pos,track_t *trackidx); Modified: mplayerxp/libmpstream/cdda.cpp =================================================================== --- mplayerxp/libmpstream/cdda.cpp 2012-12-10 13:30:58 UTC (rev 532) +++ mplayerxp/libmpstream/cdda.cpp 2012-12-10 15:13:31 UTC (rev 533) @@ -37,12 +37,12 @@ m_config_register_options(cfg,cdda_conf); } -static unsigned cdda_parse_tracks(unsigned char *arr,unsigned nelem,const char *arg) +static unsigned cdda_parse_tracks(unsigned char *arr,unsigned nelem,const std::string& arg) { const char *st,*end; unsigned rval=0; - unsigned slen=strlen(arg); - st=arg; + unsigned slen=arg.length(); + st=arg.c_str(); memset(arr,0,sizeof(unsigned char)*nelem); do { size_t datalen,value,evalue,i; @@ -70,22 +70,22 @@ rval=value; } st=end+1; - if(st>arg+slen) break; + if(st>arg.c_str()+slen) break; }while(end); return rval; } -MPXP_Rc CDD_Interface::open_cdda(const char* dev,const char* arg) { +MPXP_Rc CDD_Interface::open_cdda(const std::string& dev,const std::string& arg) { unsigned cd_tracks; unsigned int audiolen=0; unsigned i; unsigned char arr[256]; int st_inited; - cd = cdio_cddap_identify(dev,mp_conf.verbose?1:0,NULL); + cd = cdio_cddap_identify(dev.c_str(),mp_conf.verbose?1:0,NULL); if(!cd) { - MSG_ERR("Can't open cdda device: %s\n",dev); + MSG_ERR("Can't open cdda device: %s\n",dev.c_str()); return MPXP_False; } Modified: mplayerxp/libmpstream/cddb.cpp =================================================================== --- mplayerxp/libmpstream/cddb.cpp 2012-12-10 13:30:58 UTC (rev 532) +++ mplayerxp/libmpstream/cddb.cpp 2012-12-10 15:13:31 UTC (rev 533) @@ -582,7 +582,7 @@ } } -cd_track_t* CD_Info::add_track(const char *track_name, +cd_track_t* CD_Info::add_track(const std::string& track_name, unsigned int track_nb, unsigned int _min, unsigned int _sec, @@ -591,7 +591,7 @@ unsigned long frame_length) { cd_track_t *cd_track; - if( track_name==NULL ) return NULL; + if( track_name.empty()) return NULL; cd_track = new(zeromem) cd_track_t; if( cd_track==NULL ) { @@ -697,13 +697,13 @@ return ptr; } -MPXP_Rc CD_Info::parse_xmcd(const char *_xmcd_file) { +MPXP_Rc CD_Info::parse_xmcd(const std::string& _xmcd_file) { int length, pos = 0; char *ptr; char *ptr2; unsigned int audiolen; - if( _xmcd_file==NULL ) return MPXP_False; - char* xmcd_file = mp_strdup(_xmcd_file); + if( _xmcd_file.empty() ) return MPXP_False; + char* xmcd_file = mp_strdup(_xmcd_file.c_str()); length = strlen(xmcd_file); ptr = xmcd_file; @@ -736,7 +736,7 @@ return MPXP_Ok; } -MPXP_Rc CDD_Interface::open_cddb(libinput_t *libinput,const char *dev, const char *track) { +MPXP_Rc CDD_Interface::open_cddb(libinput_t *libinput,const std::string& dev, const std::string& track) { char *xmcd_file = NULL; MPXP_Rc ret; Modified: mplayerxp/libmpstream/mrl.cpp =================================================================== --- mplayerxp/libmpstream/mrl.cpp 2012-12-10 13:30:58 UTC (rev 532) +++ mplayerxp/libmpstream/mrl.cpp 2012-12-10 15:13:31 UTC (rev 533) @@ -82,6 +82,11 @@ return line; } +const char *mrl_parse_line(const std::string& line,char **user,char **pass,char **ms,char **port) +{ + return mrl_parse_line(line.c_str(),user,pass,ms,port); +} + static void mrl_store_args(const char *arg,char *value, const mrl_config_t * args) { #ifdef TEST_MRL @@ -180,5 +185,9 @@ if(value) delete value; return param; } +const char * mrl_parse_params(const std::string& param, const mrl_config_t * args) +{ + return mrl_parse_params(param.c_str(),args); +} } // namespace mpxp Modified: mplayerxp/libmpstream/mrl.h =================================================================== --- mplayerxp/libmpstream/mrl.h 2012-12-10 13:30:58 UTC (rev 532) +++ mplayerxp/libmpstream/mrl.h 2012-12-10 15:13:31 UTC (rev 533) @@ -3,6 +3,7 @@ #define __MPXP_MRL_H 1 #include "mp_config.h" +#include <string> namespace mpxp { /** Parses line which contains MRL and splits it on components. * @param line source line to be parsed @@ -23,6 +24,7 @@ * @see mrl_parse_params **/ extern const char *mrl_parse_line(const char *line,char **user,char **pass,char **ms,char **port); + extern const char *mrl_parse_line(const std::string& line,char **user,char **pass,char **ms,char **port); enum { MRL_TYPE_PRINT =0, /**< NoType! Just printout value of argument */ @@ -52,5 +54,6 @@ * @see mrl_parse_line **/ extern const char * mrl_parse_params(const char *param,const mrl_config_t * args); + extern const char * mrl_parse_params(const std::string& param,const mrl_config_t * args); } // namespace mpxp #endif Modified: mplayerxp/libmpstream/s_cdd.cpp =================================================================== --- mplayerxp/libmpstream/s_cdd.cpp 2012-12-10 13:30:58 UTC (rev 532) +++ mplayerxp/libmpstream/s_cdd.cpp 2012-12-10 15:13:31 UTC (rev 533) @@ -23,7 +23,7 @@ Cdda_Stream_Interface(libinput_t* libinput); virtual ~Cdda_Stream_Interface(); - virtual MPXP_Rc open(const char *filename,unsigned flags); + virtual MPXP_Rc open(const std::string& filename,unsigned flags); virtual int read(stream_packet_t * sp); virtual off_t seek(off_t off); virtual off_t tell() const; @@ -46,13 +46,13 @@ track_idx(255) {} Cdda_Stream_Interface::~Cdda_Stream_Interface() { delete priv; } -MPXP_Rc Cdda_Stream_Interface::open(const char *filename,unsigned flags) +MPXP_Rc Cdda_Stream_Interface::open(const std::string& filename,unsigned flags) { MPXP_Rc rc; const char *param; char *device; UNUSED(flags); - if(strcmp(filename,"help") == 0) { + if(filename=="help") { MSG_HINT("Usage: cdda://<@device><#trackno>\n"); return MPXP_False; } @@ -133,7 +133,7 @@ Cddb_Stream_Interface(libinput_t* libinput); virtual ~Cddb_Stream_Interface(); - virtual MPXP_Rc open(const char *filename,unsigned flags); + virtual MPXP_Rc open(const std::string& filename,unsigned flags); private: libinput_t* libinput; }; @@ -142,14 +142,14 @@ libinput(_libinput) {} Cddb_Stream_Interface::~Cddb_Stream_Interface() {} -MPXP_Rc Cddb_Stream_Interface::open(const char *filename,unsigned flags) +MPXP_Rc Cddb_Stream_Interface::open(const std::string& filename,unsigned flags) { #ifdef HAVE_STREAMING const char *param; char *device; MPXP_Rc retval; UNUSED(flags); - if(strcmp(filename,"help") == 0) { + if(filename=="help") { MSG_HINT("Usage: cddb://<@device><#trackno>\n"); return MPXP_False; } Modified: mplayerxp/libmpstream/s_dvdnav.cpp =================================================================== --- mplayerxp/libmpstream/s_dvdnav.cpp 2012-12-10 13:30:58 UTC (rev 532) +++ mplayerxp/libmpstream/s_dvdnav.cpp 2012-12-10 15:13:31 UTC (rev 533) @@ -53,7 +53,7 @@ DvdNav_Stream_Interface(libinput_t* libinput); virtual ~DvdNav_Stream_Interface(); - virtual MPXP_Rc open(const char *filename,unsigned flags); + virtual MPXP_Rc open(const std::string& filename,unsigned flags); virtual int read(stream_packet_t * sp); virtual off_t seek(off_t off); virtual off_t tell() const; @@ -66,7 +66,7 @@ virtual float stream_pts() const; virtual std::string mime_type() const; private: - MPXP_Rc new_stream(const char * filename); + MPXP_Rc new_stream(const std::string& filename); void stream_ignore_timers(int ignore); void stream_sleep(int seconds); int stream_sleeping(); @@ -77,7 +77,7 @@ void cmd_handler(unsigned cmd); dvdnav_t* dvdnav; /* handle to libdvdnav stuff */ - const char* filename; /* path */ + std::string filename; /* path */ int ignore_timers; /* should timers be skipped? */ int sleeping; /* are we sleeping? */ unsigned int sleep_until; /* timer */ @@ -106,14 +106,13 @@ ignore_timers=ignore; } -MPXP_Rc DvdNav_Stream_Interface::new_stream(const char* _filename) { - const char * title_str; +MPXP_Rc DvdNav_Stream_Interface::new_stream(const std::string& _filename) { + const char* title_str; - if (!_filename) return MPXP_False; - filename=mp_strdup(_filename); + if (_filename.empty()) return MPXP_False; + filename=_filename; - if(dvdnav_open(&dvdnav,filename)!=DVDNAV_STATUS_OK) { - delete filename; + if(dvdnav_open(&dvdnav,filename.c_str())!=DVDNAV_STATUS_OK) { return MPXP_False; } @@ -180,7 +179,7 @@ return 0; } -MPXP_Rc DvdNav_Stream_Interface::open(const char *_filename,unsigned flags) +MPXP_Rc DvdNav_Stream_Interface::open(const std::string& _filename,unsigned flags) { const char *param; char *dvd_device; Modified: mplayerxp/libmpstream/s_dvdread.cpp =================================================================== --- mplayerxp/libmpstream/s_dvdread.cpp 2012-12-10 13:30:58 UTC (rev 532) +++ mplayerxp/libmpstream/s_dvdread.cpp 2012-12-10 15:13:31 UTC (rev 533) @@ -54,7 +54,7 @@ DvdRead_Stream_Interface(libinput_t* libinput); virtual ~DvdRead_Stream_Interface(); - virtual MPXP_Rc open(const char *filename,unsigned flags); + virtual MPXP_Rc open(const std::string& filename,unsigned flags); virtual int read(stream_packet_t * sp); virtual off_t seek(off_t off); virtual off_t tell() const; @@ -69,8 +69,8 @@ private: int chapter_from_cell(int title,int cell); int number_of_subs() const; - int aid_from_lang(const char* lang) const; - int sid_from_lang(const char* lang) const; + int aid_from_lang(const std::string& lang) const; + int sid_from_lang(const std::string& lang) const; int lang_from_sid(int id) const; int next_title(int dvd_title); int next_cell(); @@ -153,9 +153,10 @@ int DvdRead_Stream_Interface::number_of_subs() const { return nr_of_subtitles; } -int DvdRead_Stream_Interface::aid_from_lang(const char* lang) const { +int DvdRead_Stream_Interface::aid_from_lang(const std::string& _lang) const { int code; unsigned i; + const char* lang=_lang.c_str(); while(lang && strlen(lang)>=2){ code=lang[1]|(lang[0]<<8); for(i=0;i<unsigned(nr_of_channels);i++){ @@ -171,9 +172,10 @@ return -1; } -int DvdRead_Stream_Interface::sid_from_lang(const char* lang) const { +int DvdRead_Stream_Interface::sid_from_lang(const std::string& _lang) const { int code; unsigned i; + const char* lang=_lang.c_str(); while(lang && strlen(lang)>=2){ code=lang[1]|(lang[0]<<8); for(i=0;i<unsigned(nr_of_subtitles);i++){ @@ -589,7 +591,7 @@ dvd_angle=1; } -MPXP_Rc DvdRead_Stream_Interface::open(const char *filename,unsigned flags) +MPXP_Rc DvdRead_Stream_Interface::open(const std::string& filename,unsigned flags) { UNUSED(flags); int dvd_title; @@ -598,7 +600,7 @@ char param[256]; last_title=-1; - if(strcmp(filename,"help") == 0 || strlen(filename)==10) { + if(filename=="help" || filename.length()==10) { MSG_HINT("Usage: dvdread://<@device>#<titleno>-<lasttitle>,<chapter>-<lastchapter>,<angle>\n"); return MPXP_False; } Modified: mplayerxp/libmpstream/s_file.cpp =================================================================== --- mplayerxp/libmpstream/s_file.cpp 2012-12-10 13:30:58 UTC (rev 532) +++ mplayerxp/libmpstream/s_file.cpp 2012-12-10 15:13:31 UTC (rev 533) @@ -25,7 +25,7 @@ File_Stream_Interface(libinput_t* libinput); virtual ~File_Stream_Interface(); - virtual MPXP_Rc open(const char *filename,unsigned flags); + virtual MPXP_Rc open(const std::string& filename,unsigned flags); virtual int read(stream_packet_t * sp); virtual off_t seek(off_t off); virtual off_t tell() const; @@ -47,13 +47,13 @@ fd(0),was_open(0),spos(0) {} File_Stream_Interface::~File_Stream_Interface() {} -MPXP_Rc File_Stream_Interface::open(const char *filename,unsigned flags) +MPXP_Rc File_Stream_Interface::open(const std::string& filename,unsigned flags) { UNUSED(flags); - if(strcmp(filename,"-")==0) fd=0; - else fd=::open(filename,O_RDONLY); + if(filename=="-") fd=0; + else fd=::open(filename.c_str(),O_RDONLY); if(fd<0) { - MSG_ERR("[s_file] Cannot open file: '%s'\n",filename); + MSG_ERR("[s_file] Cannot open file: '%s'\n",filename.c_str()); return MPXP_False; } was_open = (fd==0)?0:1; @@ -117,12 +117,12 @@ Stdin_Stream_Interface(libinput_t* libinput); virtual ~Stdin_Stream_Interface(); - virtual MPXP_Rc open(const char *filename,unsigned flags); + virtual MPXP_Rc open(const std::string& filename,unsigned flags); }; Stdin_Stream_Interface::Stdin_Stream_Interface(libinput_t*l):File_Stream_Interface(l) {} Stdin_Stream_Interface::~Stdin_Stream_Interface() {} -MPXP_Rc Stdin_Stream_Interface::open(const char *filename,unsigned flags) { +MPXP_Rc Stdin_Stream_Interface::open(const std::string& filename,unsigned flags) { UNUSED(filename); return File_Stream_Interface::open("-",flags); } Modified: mplayerxp/libmpstream/s_ftp.cpp =================================================================== --- mplayerxp/libmpstream/s_ftp.cpp 2012-12-10 13:30:58 UTC (rev 532) +++ mplayerxp/libmpstream/s_ftp.cpp 2012-12-10 15:13:31 UTC (rev 533) @@ -30,7 +30,7 @@ Ftp_Stream_Interface(libinput_t* libinput); virtual ~Ftp_Stream_Interface(); - virtual MPXP_Rc open(const char *filename,unsigned flags); + virtual MPXP_Rc open(const std::string& filename,unsigned flags); virtual int read(stream_packet_t * sp); virtual off_t seek(off_t off); virtual off_t tell() const; @@ -45,7 +45,7 @@ int readresp(char* rsp); int OpenPort(); int OpenData(size_t newpos); - int SendCmd(const char *cmd,char* rsp); + int SendCmd(const std::string& cmd,char* rsp); const char* user; const char* pass; @@ -173,9 +173,10 @@ return r; } -int Ftp_Stream_Interface::SendCmd(const char *cmd,char* rsp) +int Ftp_Stream_Interface::SendCmd(const std::string& _cmd,char* rsp) { - int l = strlen(cmd); + const char* cmd=_cmd.c_str(); + int l = _cmd.length(); int hascrlf = cmd[l - 2] == '\r' && cmd[l - 1] == '\n'; if(hascrlf && l == 2) MSG_V("\n"); @@ -314,18 +315,15 @@ if(tcp.established()) tcp.close(); } -MPXP_Rc Ftp_Stream_Interface::open(const char *_filename,unsigned flags) +MPXP_Rc Ftp_Stream_Interface::open(const std::string& _filename,unsigned flags) { int resp; char str[256],rsp_txt[256]; - char *uname; + std::string uname; UNUSED(flags); - if(!(uname=new char [strlen(_filename)+7])) return MPXP_False; - strcpy(uname,"ftp://"); - strcat(uname,_filename); + uname=std::string("ftp://")+_filename; if(!(url=url_new(uname))) goto bad_url; - delete uname; // url = check4proxies (rurl); if(!(url->hostname && url->file)) { bad_url: Modified: mplayerxp/libmpstream/s_lavc.cpp =================================================================== --- mplayerxp/libmpstream/s_lavc.cpp 2012-12-10 13:30:58 UTC (rev 532) +++ mplayerxp/libmpstream/s_lavc.cpp 2012-12-10 15:13:31 UTC (rev 533) @@ -16,7 +16,7 @@ Lavs_Stream_Interface(libinput_t* libinput); virtual ~Lavs_Stream_Interface(); - virtual MPXP_Rc open(const char *filename,unsigned flags); + virtual MPXP_Rc open(const std::string& filename,unsigned flags); virtual int read(stream_packet_t * sp); virtual off_t seek(off_t off); virtual off_t tell() const; @@ -67,15 +67,15 @@ void Lavs_Stream_Interface::close() {} -MPXP_Rc Lavs_Stream_Interface::open(const char *filename,unsigned flags) +MPXP_Rc Lavs_Stream_Interface::open(const std::string& filename,unsigned flags) { int64_t _size; UNUSED(flags); av_register_all(); - MSG_V("[lavc] Opening %s\n", filename); + MSG_V("[lavc] Opening %s\n", filename.c_str()); - if (ffurl_open(&ctx, filename, 0, &int_cb, NULL) < 0) return MPXP_False; + if (ffurl_open(&ctx, filename.c_str(), 0, &int_cb, NULL) < 0) return MPXP_False; spos = 0; _size = ffurl_size(ctx); if (_size >= 0) end_pos = _size; Modified: mplayerxp/libmpstream/s_network.cpp =================================================================== --- mplayerxp/libmpstream/s_network.cpp 2012-12-10 13:30:58 UTC (rev 532) +++ mplayerxp/libmpstream/s_network.cpp 2012-12-10 15:13:31 UTC (rev 533) @@ -26,7 +26,7 @@ Network_Stream_Interface(libinput_t* libinput); virtual ~Network_Stream_Interface(); - virtual MPXP_Rc open(const char *filename,unsigned flags); + virtual MPXP_Rc open(const std::string& filename,unsigned flags); virtual int read(stream_packet_t * sp); virtual off_t seek(off_t off); virtual off_t tell() const; @@ -53,14 +53,14 @@ } } -MPXP_Rc Network_Stream_Interface::open(const char *filename,unsigned flags) +MPXP_Rc Network_Stream_Interface::open(const std::string& filename,unsigned flags) { UNUSED(flags); url = url_new(filename); if(url) { networking=new_networking(); if(networking_start(tcp,networking,url)!=MPXP_Ok){ - MSG_ERR(MSGTR_UnableOpenURL, filename); + MSG_ERR(MSGTR_UnableOpenURL, filename.c_str()); url_free(url); url=NULL; free_networking(networking); Modified: mplayerxp/libmpstream/s_null.cpp =================================================================== --- mplayerxp/libmpstream/s_null.cpp 2012-12-10 13:30:58 UTC (rev 532) +++ mplayerxp/libmpstream/s_null.cpp 2012-12-10 15:13:31 UTC (rev 533) @@ -13,7 +13,7 @@ Null_Stream_Interface(libinput_t* libinput); virtual ~Null_Stream_Interface(); - virtual MPXP_Rc open(const char *filename,unsigned flags); + virtual MPXP_Rc open(const std::string& filename,unsigned flags); virtual int read(stream_packet_t * sp); virtual off_t seek(off_t off); virtual off_t tell() const; @@ -28,7 +28,7 @@ Null_Stream_Interface::Null_Stream_Interface(libinput_t*libinput):Stream_Interface(libinput) {} Null_Stream_Interface::~Null_Stream_Interface() {} -MPXP_Rc Null_Stream_Interface::open(const char *filename,unsigned flags) { +MPXP_Rc Null_Stream_Interface::open(const std::string& filename,unsigned flags) { UNUSED(filename); UNUSED(flags); return MPXP_False; Modified: mplayerxp/libmpstream/s_oss.cpp =================================================================== --- mplayerxp/libmpstream/s_oss.cpp 2012-12-10 13:30:58 UTC (rev 532) +++ mplayerxp/libmpstream/s_oss.cpp 2012-12-10 15:13:31 UTC (rev 533) @@ -33,7 +33,7 @@ Oss_Stream_Interface(libinput_t* libinput); virtual ~Oss_Stream_Interface(); - virtual MPXP_Rc open(const char *filename,unsigned flags); + virtual MPXP_Rc open(const std::string& filename,unsigned flags); virtual int read(stream_packet_t * sp); virtual off_t seek(off_t off); virtual off_t tell() const; @@ -56,14 +56,14 @@ :Stream_Interface(libinput) {} Oss_Stream_Interface::~Oss_Stream_Interface() {} -MPXP_Rc Oss_Stream_Interface::open(const char *filename,unsigned flags) +MPXP_Rc Oss_Stream_Interface::open(const std::string& filename,unsigned flags) { char *args; char *oss_device,*comma; unsigned tmp,param; int err; UNUSED(flags); - if(strcmp(filename,"help") == 0) { + if(filename=="help") { MSG_HINT("Usage: oss://<@device>#<channels>,<samplerate>,<sampleformat>\n"); return MPXP_False; } Modified: mplayerxp/libmpstream/s_rtsp.cpp =================================================================== --- mplayerxp/libmpstream/s_rtsp.cpp 2012-12-10 13:30:58 UTC (rev 532) +++ mplayerxp/libmpstream/s_rtsp.cpp 2012-12-10 15:13:31 UTC (rev 533) @@ -32,7 +32,7 @@ Rtsp_Stream_Interface(libinput_t* libinput); virtual ~Rtsp_Stream_Interface(); - virtual MPXP_Rc open(const char *filename,unsigned flags); + virtual MPXP_Rc open(const std::string& filename,unsigned flags); virtual int read(stream_packet_t * sp); virtual off_t seek(off_t off); virtual off_t tell() const; @@ -139,13 +139,13 @@ } extern int index_mode; -MPXP_Rc Rtsp_Stream_Interface::open(const char *filename,unsigned flags) +MPXP_Rc Rtsp_Stream_Interface::open(const std::string& filename,unsigned flags) { URL_t *url; UNUSED(flags); - if(strncmp(filename,"rtsp://",7)!=0) return MPXP_False; + if(filename.substr(0,7)!="rtsp://") return MPXP_False; - MSG_V("STREAM_RTSP, URL: %s\n", filename); + MSG_V("STREAM_RTSP, URL: %s\n", filename.c_str()); networking = new_networking(); if (!networking) return MPXP_False; Modified: mplayerxp/libmpstream/s_tv.cpp =================================================================== --- mplayerxp/libmpstream/s_tv.cpp 2012-12-10 13:30:58 UTC (rev 532) +++ mplayerxp/libmpstream/s_tv.cpp 2012-12-10 15:13:31 UTC (rev 533) @@ -584,7 +584,7 @@ Tv_Stream_Interface(libinput_t* libinput); virtual ~Tv_Stream_Interface(); - virtual MPXP_Rc open(const char *filename,unsigned flags); + virtual MPXP_Rc open(const std::string& filename,unsigned flags); virtual int read(stream_packet_t * sp); virtual off_t seek(off_t off); virtual off_t tell() const; @@ -602,7 +602,7 @@ Tv_Stream_Interface::Tv_Stream_Interface(libinput_t*libinput):Stream_Interface(libinput) {} Tv_Stream_Interface::~Tv_Stream_Interface() { delete priv; } -MPXP_Rc Tv_Stream_Interface::open(const char *filename,unsigned flags) +MPXP_Rc Tv_Stream_Interface::open(const std::string& filename,unsigned flags) { UNUSED(flags); mrl_parse_params(filename,tvopts_conf); Modified: mplayerxp/libmpstream/s_udp.cpp =================================================================== --- mplayerxp/libmpstream/s_udp.cpp 2012-12-10 13:30:58 UTC (rev 532) +++ mplayerxp/libmpstream/s_udp.cpp 2012-12-10 15:13:31 UTC (rev 533) @@ -31,7 +31,7 @@ Udp_Stream_Interface(libinput_t* libinput); virtual ~Udp_Stream_Interface(); - virtual MPXP_Rc open(const char *filename,unsigned flags); + virtual MPXP_Rc open(const std::string& filename,unsigned flags); virtual int read(stream_packet_t * sp); virtual off_t seek(off_t off); virtual off_t tell() const; @@ -92,11 +92,11 @@ return MPXP_Ok; } -MPXP_Rc Udp_Stream_Interface::open(const char *filename,unsigned flags) +MPXP_Rc Udp_Stream_Interface::open(const std::string& filename,unsigned flags) { URL_t *url; UNUSED(flags); - MSG_V("STREAM_UDP, URL: %s\n", filename); + MSG_V("STREAM_UDP, URL: %s\n", filename.c_str()); networking = new_networking(); if (!networking) return MPXP_False; Modified: mplayerxp/libmpstream/s_vcdnav.cpp =================================================================== --- mplayerxp/libmpstream/s_vcdnav.cpp 2012-12-10 13:30:58 UTC (rev 532) +++ mplayerxp/libmpstream/s_vcdnav.cpp 2012-12-10 15:13:31 UTC (rev 533) @@ -34,7 +34,7 @@ VcdNav_Stream_Interface(libinput_t* libinput); virtual ~VcdNav_Stream_Interface(); - virtual MPXP_Rc open(const char *filename,unsigned flags); + virtual MPXP_Rc open(const std::string& filename,unsigned flags); virtual int read(stream_packet_t * sp); virtual off_t seek(off_t off); virtual off_t tell() const; @@ -73,10 +73,10 @@ if(segment) delete segment; } -static void __FASTCALL__ _cdio_detect_media(const char *device) +static void __FASTCALL__ _cdio_detect_media(const std::string& device) { CdIo_t *img; - img=cdio_open(device,DRIVER_UNKNOWN); + img=cdio_open(device.c_str(),DRIVER_UNKNOWN); if(img) { discmode_t mode=cdio_get_discmode(img); @@ -84,7 +84,7 @@ } } -MPXP_Rc VcdNav_Stream_Interface::open(const char *filename,unsigned flags) +MPXP_Rc VcdNav_Stream_Interface::open(const std::string& filename,unsigned flags) { const char *param; char *device,*dev; @@ -92,7 +92,7 @@ int vcd_track=-1; vcdinfo_open_return_t open_rc; UNUSED(flags); - if(strcmp(filename,"help") == 0) { + if(filename=="help") { MSG_HINT("Usage: vcdnav://<@device><#trackno>\n"); return MPXP_False; } Modified: mplayerxp/libmpstream/stream.cpp =================================================================== --- mplayerxp/libmpstream/stream.cpp 2012-12-10 13:30:58 UTC (rev 532) +++ mplayerxp/libmpstream/stream.cpp 2012-12-10 15:13:31 UTC (rev 533) @@ -120,7 +120,7 @@ int Stream::eof() const { return _eof; } void Stream::eof(int e) { if(!e) reset(); _eof = e; } -MPXP_Rc Stream::open(libinput_t*libinput,const char* filename,int* ff) +MPXP_Rc Stream::open(libinput_t*libinput,const std::string& filename,int* ff) { unsigned i,done; unsigned mrl_len; @@ -128,7 +128,7 @@ done=0; for(i=0;sdrivers[i]!=&null_stream;i++) { mrl_len=strlen(sdrivers[i]->mrl); - if(strncmp(filename,sdrivers[i]->mrl,mrl_len)==0||sdrivers[i]->mrl[0]=='*') { + if(filename.substr(0,mrl_len)==sdrivers[i]->mrl||sdrivers[i]->mrl[0]=='*') { MSG_V("Opening %s ... ",sdrivers[i]->mrl); Stream_Interface* drv = sdrivers[i]->query_interface(libinput); if(sdrivers[i]->mrl[0]=='*') mrl_len=0; Modified: mplayerxp/libmpstream/stream.h =================================================================== --- mplayerxp/libmpstream/stream.h 2012-12-10 13:30:58 UTC (rev 532) +++ mplayerxp/libmpstream/stream.h 2012-12-10 15:13:31 UTC (rev 533) @@ -58,7 +58,7 @@ static void print_drivers(); - virtual MPXP_Rc open(libinput_t*libinput,const char* filename,int* file_format); + virtual MPXP_Rc open(libinput_t*libinput,const std::string& filename,int* file_format); virtual int read(any_t* mem,int total); virtual off_t seek(off_t off); virtual int skip(off_t len); Modified: mplayerxp/libmpstream/stream_internal.h =================================================================== --- mplayerxp/libmpstream/stream_internal.h 2012-12-10 13:30:58 UTC (rev 532) +++ mplayerxp/libmpstream/stream_internal.h 2012-12-10 15:13:31 UTC (rev 533) @@ -19,7 +19,7 @@ * @param filename points MRL of stream (vcdnav://, file://, http://, ...) * @param flags currently unused and filled as 0 **/ - virtual MPXP_Rc open(const char *filename,unsigned flags) = 0; + virtual MPXP_Rc open(const std::string& filename,unsigned flags) = 0; /** Reads next packet from stream * @param _this points structure which identifies stream Modified: mplayerxp/libmpstream/url.cpp =================================================================== --- mplayerxp/libmpstream/url.cpp 2012-12-10 13:30:58 UTC (rev 532) +++ mplayerxp/libmpstream/url.cpp 2012-12-10 15:13:31 UTC (rev 533) @@ -45,21 +45,20 @@ return res; } -URL_t* -url_new(const char* url) { +URL_t* url_new(const std::string& url) { int pos1, pos2,v6addr = 0; URL_t* Curl = NULL; char *escfilename=NULL; char *ptr1=NULL, *ptr2=NULL, *ptr3=NULL, *ptr4=NULL; int jumpSize = 3; - if( url==NULL ) return NULL; + if( url.empty()) return NULL; - if (strlen(url) > (std::numeric_limits<size_t>::max() / 3 - 1)) { + if (url.length() > (std::numeric_limits<size_t>::max() / 3 - 1)) { MSG_FATAL("MemAllocFailed\n"); goto err_out; } - escfilename=new char [strlen(url)*3+1]; + escfilename=new char [url.length()*3+1]; if (!escfilename ) { MSG_FATAL("MemAllocFailed\n"); goto err_out; @@ -241,10 +240,10 @@ /* Replace escape sequences in an URL (or a part of an URL) */ /* works like strcpy(), but without return argument */ void -url2string(char *outbuf, const char *inbuf) +url2string(char *outbuf, const std::string& inbuf) { unsigned char c,c1,c2; - int i,len=strlen(inbuf); + int i,len=inbuf.length(); for (i=0;i<len;i++){ c = inbuf[i]; if (c == '%' && i<len-2) { //must have 2 more chars @@ -311,8 +310,8 @@ /* Replace specific characters in the URL string by an escape sequence */ /* works like strcpy(), but without return argument */ void -string2url(char *outbuf, const char *_inbuf) { - char* inbuf=mp_strdup(_inbuf); +string2url(char *outbuf, const std::string& _inbuf) { + char* inbuf=mp_strdup(_inbuf.c_str()); int i = 0,j,len = strlen(inbuf); char* tmp,*in; char *unesc = NULL; Modified: mplayerxp/libmpstream/url.h =================================================================== --- mplayerxp/libmpstream/url.h 2012-12-10 13:30:58 UTC (rev 532) +++ mplayerxp/libmpstream/url.h 2012-12-10 15:13:31 UTC (rev 533) @@ -6,7 +6,7 @@ #ifndef __URL_H #define __URL_H - +#include <string> //#define __URL_DEBUG namespace mpxp { @@ -20,12 +20,12 @@ char *password; } URL_t; - URL_t* url_new(const char* url); + URL_t* url_new(const std::string& url); void url_free(URL_t* url); URL_t *url_redirect(URL_t **url, const char *redir); - void url2string(char *outbuf, const char *inbuf); - void string2url(char *outbuf, const char *inbuf); + void url2string(char *outbuf, const std::string& inbuf); + void string2url(char *outbuf, const std::string& inbuf); #ifdef __URL_DEBUG void url_debug(URL_t* url); Modified: mplayerxp/libvo/video_out.cpp =================================================================== --- mplayerxp/libvo/video_out.cpp 2012-12-10 13:30:58 UTC (rev 532) +++ mplayerxp/libvo/video_out.cpp 2012-12-10 15:13:31 UTC (rev 533) @@ -170,22 +170,23 @@ return priv.video_out; } -MPXP_Rc Video_Output::init(const char *driver_name) const +MPXP_Rc Video_Output::init(const std::string& driver_name) const { - char* drv_name = NULL; - char * subdev = NULL; - if(driver_name) { - drv_name=mp_strdup(driver_name); - subdev = strchr(drv_name,':'); - if(subdev) { *subdev='\0'; subdev++; } + size_t offset; + std::string drv_name; + std::string subdev; + if(!driver_name.empty()) { + drv_name=driver_name; + offset=drv_name.find(':'); + if(offset!=std::string::npos) subdev = drv_name.substr(offset+1); } vo_priv_t& priv=*static_cast<vo_priv_t*>(vo_priv); unsigned i; - if(!drv_name) priv.video_out=vo_infos[0]; + if(drv_name.empty()) priv.video_out=vo_infos[0]; else for (i=0; vo_infos[i] != &null_vo_info; i++){ const vo_info_t *info = vo_infos[i]; - if(strcmp(info->short_name,drv_name) == 0){ + if(info->short_name==drv_name){ priv.video_out = vo_infos[i]; break; } @@ -194,7 +195,6 @@ if(priv.video_out) { priv.vo_iface=priv.video_out->query_interface(subdev); } - if(drv_name) delete drv_name; return priv.vo_iface?MPXP_Ok:MPXP_False; } @@ -312,7 +312,7 @@ } MPXP_Rc Video_Output::configure(vf_stream_t* s,uint32_t width, uint32_t height, uint32_t d_width, - uint32_t d_height, vo_flags_e _fullscreen, const char *title, + uint32_t d_height, vo_flags_e _fullscreen, const std::string& title, uint32_t format) { vo_priv_t& priv=*static_cast<vo_priv_t*>(vo_priv); @@ -338,7 +338,7 @@ priv.dri.d_width = d_w; priv.dri.d_height = d_h; MSG_V("priv.video_out->config(%u,%u,%u,%u,0x%x,'%s',%s)\n" - ,w,h,d_w,d_h,_fullscreen,title,vo_format_name(dest_fourcc)); + ,w,h,d_w,d_h,_fullscreen,title.c_str(),vo_format_name(dest_fourcc)); retval = priv.vo_iface->configure(w,h,d_w,d_h,_fullscreen,title,dest_fourcc); priv.srcFourcc=format; if(retval == MPXP_Ok) { Modified: mplayerxp/libvo/video_out.h =================================================================== --- mplayerxp/libvo/video_out.h 2012-12-10 13:30:58 UTC (rev 532) +++ mplayerxp/libvo/video_out.h 2012-12-10 15:13:31 UTC (rev 533) @@ -13,6 +13,7 @@ #include "osdep/mplib.h" using namespace mpxp; +#include <string> #include <inttypes.h> #include <stdarg.h> @@ -50,7 +51,7 @@ /** Text description of VO-driver */ class VO_Interface; - typedef VO_Interface* (*query_interface_t)(const char* args); + typedef VO_Interface* (*query_interface_t)(const std::string& args); struct vo_info_t { const char* name; /**< driver name ("Matrox Millennium G200/G400") */ const char* short_name; /**< short name (for config strings) ("mga") */ @@ -166,12 +167,14 @@ void FLIP_UNSET() { flags&=~VOFLAG_FLIPPING; } void FLIP_REVERT() { flags^=VOFLAG_FLIPPING; } - virtual MPXP_Rc init(const char *driver_name) const; + virtual MPXP_Rc init(const std::string& driver_name) const; virtual void print_help() const; virtual const vo_info_t* get_info() const; - virtual MPXP_Rc configure(vf_stream_t* parent,uint32_t width, uint32_t height, uint32_t d_width, - uint32_t d_height, vo_flags_e fullscreen,const char *title, - uint32_t format); + virtual MPXP_Rc configure(vf_stream_t* parent,uint32_t width, + uint32_t height, uint32_t d_width, + uint32_t d_height, vo_flags_e fullscreen, + const std::string& title, + uint32_t format); virtual uint32_t query_format(uint32_t* fourcc,unsigned src_w,unsigned src_h) const; virtual MPXP_Rc reset() const; Modified: mplayerxp/libvo/video_out_internal.h =================================================================== --- mplayerxp/libvo/video_out_internal.h 2012-12-10 13:30:58 UTC (rev 532) +++ mplayerxp/libvo/video_out_internal.h 2012-12-10 15:13:31 UTC (rev 533) @@ -23,11 +23,12 @@ #ifndef __VIDEO_OUT_INTERNAL_H #define __VIDEO_OUT_INTERNAL_H 1 #include "dri_vo.h" +#include <string> namespace mpxp { class VO_Interface : public Opaque { public: - VO_Interface(const char *args) { UNUSED(args); }; + VO_Interface(const std::string& args) { UNUSED(args); }; virtual ~VO_Interface() {}; virtual MPXP_Rc configure(uint32_t width, @@ -35,7 +36,7 @@ uint32_t d_width, uint32_t d_height, unsigned flags, - const char *title, + const std::string& title, uint32_t format) = 0; virtual MPXP_Rc select_frame(unsigned idx) = 0; virtual MPXP_Rc flush_page(unsigned idx) { UNUSED(idx); return MPXP_NA; } Modified: mplayerxp/libvo/vo_fbdev.cpp =================================================================== --- mplayerxp/libvo/vo_fbdev.cpp 2012-12-10 13:30:58 UTC (rev 532) +++ mplayerxp/libvo/vo_fbdev.cpp 2012-12-10 15:13:31 UTC (rev 533) @@ -109,7 +109,7 @@ class FBDev_VO_Interface : public VO_Interface { public: - FBDev_VO_Interface(const char* args); + FBDev_VO_Interface(const std::string& args); virtual ~FBDev_VO_Interface(); virtual MPXP_Rc configure(uint32_t width, @@ -117,7 +117,7 @@ uint32_t d_width, uint32_t d_height, unsigned flags, - const char *title, + const std::string& title, uint32_t format); virtual MPXP_Rc select_frame(unsigned idx); virtual MPXP_Rc flush_page(unsigned idx); @@ -130,8 +130,8 @@ virtual MPXP_Rc ctrl(uint32_t request, any_t*data); private: MPXP_Rc fb_preinit(); - const char* parse_sub_device(const char *sd); - int parse_fbmode_cfg(const char *cfgfile); + std::string parse_sub_device(const std::string& sd); + int parse_fbmode_cfg(const std::string& cfgfile); int get_token(int num); void vt_set_textarea(int u, int l); void lots_of_printf() const; @@ -189,11 +189,11 @@ MPXP_Rc fb_works; }; -const char* FBDev_VO_Interface::parse_sub_device(const char *sd) +std::string FBDev_VO_Interface::parse_sub_device(const std::string& sd) { const char *param; #ifdef CONFIG_VIDIX - if(memcmp(sd,"vidix",5) == 0) return &sd[5]; /* vidix_name will be valid within init() */ + if(sd.substr(0,5)=="vidix") return &sd[5]; /* vidix_name will be valid within init() */ else #endif { @@ -292,16 +292,16 @@ #endif } -FBDev_VO_Interface::FBDev_VO_Interface(const char *arg) +FBDev_VO_Interface::FBDev_VO_Interface(const std::string& arg) :VO_Interface(arg), aspect(new(zeromem) Aspect(mp_conf.monitor_pixel_aspect)) { - const char *vidix_name=NULL; - if(arg) vidix_name=parse_sub_device(arg); + std::string vidix_name; + if(!arg.empty()) vidix_name=parse_sub_device(arg); #ifdef CONFIG_VIDIX - if(vidix_name) { + if(!vidix_name.empty()) { if(!(vidix=new(zeromem) Vidix_System(vidix_name))) { - MSG_ERR("Cannot initialze vidix with '%s' argument\n",vidix_name); + MSG_ERR("Cannot initialze vidix with '%s' argument\n",vidix_name.c_str()); exit_player("Vidix error"); } } @@ -361,7 +361,7 @@ static fb_mode_t *fb_modes = NULL; static int nr_modes = 0; -int FBDev_VO_Interface::parse_fbmode_cfg(const char *cfgfile) +int FBDev_VO_Interface::parse_fbmode_cfg(const std::string& cfgfile) { #define CHECK_IN_MODE_DEF\ do {\ @@ -376,14 +376,14 @@ int in_mode_def = 0; int tmp, i; - MSG_DBG2("Reading %s: ", cfgfile); + MSG_DBG2("Reading %s: ", cfgfile.c_str()); - if ((fp = fopen(cfgfile, "r")) == NULL) { - MSG_ERR("can't open '%s': %s\n", cfgfile, strerror(errno)); + if ((fp = fopen(cfgfile.c_str(), "r")) == NULL) { + MSG_ERR("can't open '%s': %s\n", cfgfile.c_str(), strerror(errno)); return -1; } - if ((line = (char *) mp_malloc(MAX_LINE_LEN + 1)) == NULL) { + if ((line = new char[MAX_LINE_LEN + 1]) == NULL) { MSG_ERR("can't get memory for 'line': %s\n", strerror(errno)); return -2; } @@ -894,7 +894,7 @@ } MPXP_Rc FBDev_VO_Interface::configure(uint32_t width, uint32_t height, uint32_t d_width, - uint32_t d_height, unsigned _flags, const char *title, + uint32_t d_height, unsigned _flags, const std::string& title, uint32_t format) { struct fb_cmap *cmap; @@ -1206,7 +1206,7 @@ return MPXP_NA; } -static VO_Interface* query_interface(const char* args) { return new(zeromem) FBDev_VO_Interface(args); } +static VO_Interface* query_interface(const std::string& args) { return new(zeromem) FBDev_VO_Interface(args); } extern const vo_info_t fbdev_vo_info = { "Framebuffer Device" #ifdef CONFIG_VIDIX Modified: mplayerxp/libvo/vo_null.cpp =================================================================== --- mplayerxp/libvo/vo_null.cpp 2012-12-10 13:30:58 UTC (rev 532) +++ mplayerxp/libvo/vo_null.cpp 2012-12-10 15:13:31 UTC (rev 533) @@ -41,7 +41,7 @@ namespace mpxp { class Null_VO_Interface : public VO_Interface { public: - Null_VO_Interface(const char* args); + Null_VO_Interface(const std::string& args); virtual ~Null_VO_Interface(); virtual MPXP_Rc configure(uint32_t width, @@ -49,7 +49,7 @@ uint32_t d_width, uint32_t d_height, unsigned flags, - const char *title, + const std::string& title, uint32_t format); virtual MPXP_Rc select_frame(unsigned idx); virtual void get_surface_caps(dri_surface_cap_t *caps) const; @@ -74,7 +74,7 @@ return MPXP_Ok; } -MPXP_Rc Null_VO_Interface::configure(uint32_t width, uint32_t height, uint32_t d_width, uint32_t d_height,unsigned flags,const char *title, uint32_t format) +MPXP_Rc Null_VO_Interface::configure(uint32_t width, uint32_t height, uint32_t d_width, uint32_t d_height,unsigned flags,const std::string& title, uint32_t format) { unsigned awidth; size_t i; @@ -139,10 +139,10 @@ } } -Null_VO_Interface::Null_VO_Interface(const char *arg) +Null_VO_Interface::Null_VO_Interface(const std::string& arg) :VO_Interface(arg) { - if(arg) MSG_ERR("vo_null: Unknown subdevice: %s\n",arg); + if(!arg.empty()) MSG_ERR("vo_null: Unknown subdevice: %s\n",arg.c_str()); } void Null_VO_Interface::get_surface_caps(dri_surface_cap_t *caps) const @@ -224,10 +224,12 @@ } MPXP_Rc Null_VO_Interface::ctrl(uint32_t request, any_t*data) { + UNUSED(request); + UNUSED(data); return MPXP_NA; } -static VO_Interface* query_interface(const char* args) { return new(zeromem) Null_VO_Interface(args); } +static VO_Interface* query_interface(const std::string& args) { return new(zeromem) Null_VO_Interface(args); } extern const vo_info_t null_vo_info = { "Null video output", "null", Modified: mplayerxp/libvo/vo_opengl.cpp =================================================================== --- mplayerxp/libvo/vo_opengl.cpp 2012-12-10 13:30:58 UTC (rev 532) +++ mplayerxp/libvo/vo_opengl.cpp 2012-12-10 15:13:31 UTC (rev 533) @@ -55,7 +55,7 @@ namespace mpxp { class OpenGL_VO_Interface : public VO_Interface { public: - OpenGL_VO_Interface(const char* args); + OpenGL_VO_Interface(const std::string& args); virtual ~OpenGL_VO_Interface(); virtual MPXP_Rc configure(uint32_t width, @@ -63,7 +63,7 @@ uint32_t d_width, uint32_t d_height, unsigned flags, - const char *title, + const std::string& title, uint32_t format); virtual MPXP_Rc select_frame(unsigned idx); virtual void get_surface_caps(dri_surface_cap_t *caps) const; @@ -94,7 +94,7 @@ LocalPtr<GLX_System> glx; }; -OpenGL_VO_Interface::OpenGL_VO_Interface(const char *arg) +OpenGL_VO_Interface::OpenGL_VO_Interface(const std::string& arg) :VO_Interface(arg), aspect(new(zeromem) Aspect(mp_conf.monitor_pixel_aspect)), glx(new(zeromem) GLX_System(vo_conf.mDisplayName,vo_conf.xinerama_screen)) @@ -158,7 +158,7 @@ /* connect to server, create and map window, * allocate colors and (shared) memory */ -MPXP_Rc OpenGL_VO_Interface::configure(uint32_t width, uint32_t height, uint32_t d_width, uint32_t d_height,unsigned _flags, const char *title, uint32_t format) +MPXP_Rc OpenGL_VO_Interface::configure(uint32_t width, uint32_t height, uint32_t d_width, uint32_t d_height,unsigned _flags, const std::string& title, uint32_t format) { int is_bgr; XSizeHints hint; @@ -289,10 +289,12 @@ } MPXP_Rc OpenGL_VO_Interface::ctrl(uint32_t request, any_t*data) { + UNUSED(request); + UNUSED(data); return MPXP_NA; } -static VO_Interface* query_interface(const char* args) { return new(zeromem) OpenGL_VO_Interface(args); } +static VO_Interface* query_interface(const std::string& args) { return new(zeromem) OpenGL_VO_Interface(args); } extern const vo_info_t opengl_vo_info = { "X11 (OpenGL)", Modified: mplayerxp/libvo/vo_sdl.cpp =================================================================== --- mplayerxp/libvo/vo_sdl.cpp 2012-12-10 13:30:58 UTC (rev 532) +++ mplayerxp/libvo/vo_sdl.cpp 2012-12-10 15:13:31 UTC (rev 533) @@ -167,7 +167,7 @@ class SDL_VO_Interface : public VO_Interface { public: - SDL_VO_Interface(const char* args); + SDL_VO_Interface(const std::string& args); virtual ~SDL_VO_Interface(); virtual MPXP_Rc configure(uint32_t width, @@ -175,7 +175,7 @@ uint32_t d_width, uint32_t d_height, unsigned flags, - const char *title, + const std::string& title, uint32_t format); virtual MPXP_Rc select_frame(unsigned idx); virtual MPXP_Rc flush_page(unsigned idx); @@ -197,7 +197,7 @@ void erase_rectangle(unsigned idx,int x, int y, int w, int h); void lock_surfaces(); void unlock_surfaces(); - const char* parse_sub_device(const char *sd) const; + std::string parse_sub_device(const std::string& sd) const; std::string sdl_subdevice; @@ -243,12 +243,12 @@ } /** Private SDL Data structure **/ -const char* SDL_VO_Interface::parse_sub_device(const char *sd) const +std::string SDL_VO_Interface::parse_sub_device(const std::string& sd) const { #ifdef CONFIG_VIDIX - if(memcmp(sd,"vidix",5) == 0) return &sd[5]; /* vidix_name will be valid within init() */ + if(sd.substr(0,5)=="vidix") return &sd[5]; /* vidix_name will be valid within init() */ #endif - return NULL; + return ""; } SDL_VO_Interface::~SDL_VO_Interface() @@ -263,22 +263,22 @@ #endif } -SDL_VO_Interface::SDL_VO_Interface(const char *arg) +SDL_VO_Interface::SDL_VO_Interface(const std::string& arg) :VO_Interface(arg), aspect(new(zeromem) Aspect(mp_conf.monitor_pixel_aspect)) #ifdef HAVE_X11 ,x11(new(zeromem) X11_System(vo_conf.mDisplayName,vo_conf.xinerama_screen)) #endif { - const char* vidix_name=NULL; + std::string vidix_name; num_buffs = 1; surface = NULL; - if(arg) sdl_subdevice=arg; - if(arg) vidix_name = parse_sub_device(arg); + if(!arg.empty()) sdl_subdevice=arg; + if(!arg.empty()) vidix_name = parse_sub_device(arg); #ifdef CONFIG_VIDIX - if(vidix_name) { + if(!vidix_name.empty()) { if(!(vidix=new(zeromem) Vidix_System(vidix_name))) { - MSG_ERR("Cannot initialze vidix with '%s' argument\n",vidix_name); + MSG_ERR("Cannot initialze vidix with '%s' argument\n",vidix_name.c_str()); exit_player("Vidix error"); } } @@ -543,7 +543,7 @@ * returns : non-zero on success, zero on error. **/ -MPXP_Rc SDL_VO_Interface::configure(uint32_t _width, uint32_t _height, uint32_t d_width, uint32_t d_height,unsigned _flags, const char *title, uint32_t _format) +MPXP_Rc SDL_VO_Interface::configure(uint32_t _width, uint32_t _height, uint32_t d_width, uint32_t d_height,unsigned _flags, const std::string& title, uint32_t _format) //static int sdl_setup (int width, int height) { MPXP_Rc retval; @@ -601,7 +601,7 @@ format = _format; /* Set output window title */ - SDL_WM_SetCaption (".: MPlayerXP : F = Fullscreen/Windowed : C = Cycle Fullscreen Resolutions :.", title); + SDL_WM_SetCaption (".: MPlayerXP : F = Fullscreen/Windowed : C = Cycle Fullscreen Resolutions :.", title.c_str()); if(mode == GL) { switch(_format){ @@ -1247,7 +1247,7 @@ return MPXP_NA; } -static VO_Interface* query_interface(const char* args) { return new(zeromem) SDL_VO_Interface(args); } +static VO_Interface* query_interface(const std::string& args) { return new(zeromem) SDL_VO_Interface(args); } extern const vo_info_t sdl_vo_info = { "SDL YUV/RGB/BGR renderer (SDL v1.1.7+ !)" #ifdef CONFIG_VIDIX Modified: mplayerxp/libvo/vo_vesa.cpp =================================================================== --- mplayerxp/libvo/vo_vesa.cpp 2012-12-10 13:30:58 UTC (rev 532) +++ mplayerxp/libvo/vo_vesa.cpp 2012-12-10 15:13:31 UTC (rev 533) @@ -60,7 +60,7 @@ class VESA_VO_Interface : public VO_Interface { public: - VESA_VO_Interface(const char* args); + VESA_VO_Interface(const std::string& args); virtual ~VESA_VO_Interface(); virtual MPXP_Rc configure(uint32_t width, @@ -68,7 +68,7 @@ uint32_t d_width, uint32_t d_height, unsigned flags, - const char *title, + const std::string& title, uint32_t format); virtual MPXP_Rc select_frame(unsigned idx); virtual MPXP_Rc flush_page(unsigned idx); @@ -80,7 +80,7 @@ virtual uint32_t check_events(const vo_resize_t*); virtual MPXP_Rc ctrl(uint32_t request, any_t*data); private: - const char* parse_sub_device(const char *sd); + std::string parse_sub_device(const std::string& sd); int has_dga() const { return win.idx == -1; } int valid_win_frame(unsigned long offset) const { return offset >= win.low && offset < win.high; } any_t* video_ptr(unsigned long offset) const { return win.ptr + offset - win.low; } @@ -159,21 +159,21 @@ #endif } -VESA_VO_Interface::VESA_VO_Interface(const char *arg) +VESA_VO_Interface::VESA_VO_Interface(const std::string& arg) :VO_Interface(arg), aspect(new(zeromem) Aspect(mp_conf.monitor_pixel_aspect)) { - const char* vidix_name=NULL; + std::string vidix_name; MPXP_Rc pre_init_err = MPXP_Ok; subdev_flags = 0xFFFFFFFEUL; cpy_blk_fnc=NULL; - MSG_DBG2("vo_vesa: preinit(%s) was called\n",arg); - MSG_DBG3("vo_vesa: subdevice %s is being initialized\n",arg); - if(arg) vidix_name = parse_sub_device(arg); + MSG_DBG2("vo_vesa: preinit(%s) was called\n",arg.c_str()); + MSG_DBG3("vo_vesa: subdevice %s is being initialized\n",arg.c_str()); + if(!arg.empty()) vidix_name = parse_sub_device(arg); #ifdef CONFIG_VIDIX - if(vidix_name) { + if(!vidix_name.empty()) { if(!(vidix=new(zeromem) Vidix_System(vidix_name))) { - MSG_ERR("Cannot initialze vidix with '%s' argument\n",vidix_name); + MSG_ERR("Cannot initialze vidix with '%s' argument\n",vidix_name.c_str()); exit_player("Vidix error"); } } @@ -309,18 +309,18 @@ #define SUBDEV_NODGA 0x00000001UL #define SUBDEV_FORCEDGA 0x00000002UL -const char* VESA_VO_Interface::parse_sub_device(const char *sd) +std::string VESA_VO_Interface::parse_sub_device(const std::string& sd) { subdev_flags = 0; - if(strcmp(sd,"nodga") == 0) { subdev_flags |= SUBDEV_NODGA; subdev_flags &= ~(SUBDEV_FORCEDGA); } + if(sd=="nodga") { subdev_flags |= SUBDEV_NODGA; subdev_flags &= ~(SUBDEV_FORCEDGA); } else - if(strcmp(sd,"dga") == 0) { subdev_flags &= ~(SUBDEV_NODGA); subdev_flags |= SUBDEV_FORCEDGA; } + if(sd=="dga") { subdev_flags &= ~(SUBDEV_NODGA); subdev_flags |= SUBDEV_FORCEDGA; } #ifdef CONFIG_VIDIX else - if(memcmp(sd,"vidix",5) == 0) return &sd[5]; /* priv.vidix_name will be valid within init() */ + if(sd.substr(0,5)=="vidix") return &sd[5]; /* priv.vidix_name will be valid within init() */ #endif - else { MSG_ERR("vo_vesa: Unknown subdevice: '%s'\n", sd); subdev_flags = 0xFFFFFFFFUL; } - return NULL; + else { MSG_ERR("vo_vesa: Unknown subdevice: '%s'\n", sd.c_str()); subdev_flags = 0xFFFFFFFFUL; } + return ""; } static int __FASTCALL__ check_depth(unsigned bpp) @@ -427,7 +427,7 @@ * bit 2 (0x04) enables software scaling (-zoom) * bit 3 (0x08) enables flipping (-flip) (NK: and for what?) */ -MPXP_Rc VESA_VO_Interface::configure(uint32_t width, uint32_t height, uint32_t d_width, uint32_t d_height,unsigned flags, const char *title, uint32_t format) +MPXP_Rc VESA_VO_Interface::configure(uint32_t width, uint32_t height, uint32_t d_width, uint32_t d_height,unsigned flags, const std::string& title, uint32_t format) { struct VbeInfoBlock vib; struct VesaModeInfoBlock vmib; @@ -594,8 +594,8 @@ if(use_scaler || fs_mode) { /* software scale */ if(use_scaler > 1) { - aspect.save(width,height,d_width,d_height,vmode_info.XResolution,vmode_info.YResolution); - aspect.calc(dstW,dstH,flags&VOFLAG_FULLSCREEN?Aspect::ZOOM:Aspect::NOZOOM); + aspect->save(width,height,d_width,d_height,vmode_info.XResolution,vmode_info.YResolution); + aspect->calc(dstW,dstH,flags&VOFLAG_FULLSCREEN?Aspect::ZOOM:Aspect::NOZOOM); } else if(fs_mode) { dstW = vmode_info.XResolution; dstH = vmode_info.YResolution; @@ -715,9 +715,9 @@ int x; if(mp_conf.verbose>1) paintBkGnd(); else clear_screen(); - x = (vmode_info.XResolution/vmode_info.XCharSize)/2-strlen(title)/2; + x = (vmode_info.XResolution/vmode_info.XCharSize)/2-title.length()/2; if(x < 0) x = 0; - vbeWriteString(x,0,7,title); + vbeWriteString(x,0,7,title.c_str()); } return MPXP_Ok; } @@ -803,7 +803,7 @@ return MPXP_NA; } -static VO_Interface* query_interface(const char* args) { return new(zeromem) VESA_VO_Interface(args); } +static VO_Interface* query_interface(const std::string& args) { return new(zeromem) VESA_VO_Interface(args); } extern const vo_info_t vesa_vo_info = { "VESA VBE 2.0 video output" Modified: mplayerxp/libvo/vo_x11.cpp =================================================================== --- mplayerxp/libvo/vo_x11.cpp 2012-12-10 13:30:58 UTC (rev 532) +++ mplayerxp/libvo/vo_x11.cpp 2012-12-10 15:13:31 UTC (rev 533) @@ -54,7 +54,7 @@ namespace mpxp { class X11_VO_Interface : public VO_Interface { public: - X11_VO_Interface(const char* args); + X11_VO_Interface(const std::string& args); virtual ~X11_VO_Interface(); virtual MPXP_Rc configure(uint32_t width, @@ -62,7 +62,7 @@ uint32_t d_width, uint32_t d_height, unsigned flags, - const char *title, + const std::string& title, uint32_t format); virtual MPXP_Rc select_frame(unsigned idx); virtual MPXP_Rc flush_page(unsigned idx); @@ -75,7 +75,7 @@ virtual uint32_t check_events(const vo_resize_t*); virtual MPXP_Rc ctrl(uint32_t request, any_t*data); private: - const char* parse_sub_device(const char *sd); + std::string parse_sub_device(const std::string& sd); void resize(int x,int y) const; void display_image(XImage * myximage) const; void lock_surfaces(); @@ -118,32 +118,32 @@ #include <X11/extensions/XShm.h> #endif -const char* X11_VO_Interface::parse_sub_device(const char *sd) +std::string X11_VO_Interface::parse_sub_device(const std::string& sd) { #ifdef CONFIG_VIDIX - if(memcmp(sd,"vidix",5) == 0) return &sd[5]; /* vidix_name will be valid within init() */ + if(sd.substr(0,5)=="vidix") return &sd[5]; /* vidix_name will be valid within init() */ #endif - MSG_ERR("vo_x11: Unknown subdevice: '%s'\n", sd); - return NULL; + MSG_ERR("vo_x11: Unknown subdevice: '%s'\n", sd.c_str()); + return ""; } -X11_VO_Interface::X11_VO_Interface(const char *arg) +X11_VO_Interface::X11_VO_Interface(const std::string& arg) :VO_Interface(arg), aspect(new(zeromem) Aspect(mp_conf.monitor_pixel_aspect)), x11(new(zeromem) X11_System(vo_conf.mDisplayName,vo_conf.xinerama_screen)) { - const char* vidix_name=NULL; + std::string vidix_name; num_buffers=1; pthread_mutexattr_t attr; pthread_mutexattr_init(&attr); pthread_mutex_init(&surfaces_mutex,&attr); - if(arg) vidix_name = parse_sub_device(arg); + if(!arg.empty()) vidix_name = parse_sub_device(arg); #ifdef CONFIG_VIDIX - if(vidix_name) { -MSG_INFO("args=%s vidix-name=%s\n",arg,vidix_name); + if(!vidix_name.empty()) { +MSG_INFO("args=%s vidix-name=%s\n",arg.c_str(),vidix_name.c_str()); if(!(vidix=new(zeromem) Vidix_System(vidix_name))) { - MSG_ERR("Cannot initialze vidix with '%s' argument\n",vidix_name); + MSG_ERR("Cannot initialze vidix with '%s' argument\n",vidix_name.c_str()); exit_player("Vidix error"); } } @@ -214,7 +214,7 @@ return ret; } -MPXP_Rc X11_VO_Interface::configure(uint32_t width,uint32_t height,uint32_t d_width,uint32_t d_height,unsigned _flags,const char *title,uint32_t format) +MPXP_Rc X11_VO_Interface::configure(uint32_t width,uint32_t height,uint32_t d_width,uint32_t d_height,unsigned _flags,const std::string& title,uint32_t format) { XSizeHints hint; unsigned i; @@ -425,7 +425,7 @@ return MPXP_NA; } -static VO_Interface* query_interface(const char* args) { return new(zeromem) X11_VO_Interface(args); } +static VO_Interface* query_interface(const std::string& args) { return new(zeromem) X11_VO_Interface(args); } extern const vo_info_t x11_vo_info = { "X11 ( XImage/Shm )" Modified: mplayerxp/libvo/vo_xv.cpp =================================================================== --- mplayerxp/libvo/vo_xv.cpp 2012-12-10 13:30:58 UTC (rev 532) +++ mplayerxp/libvo/vo_xv.cpp 2012-12-10 15:13:31 UTC (rev 533) @@ -42,7 +42,7 @@ namespace mpxp { class Xv_VO_Interface : public VO_Interface { public: - Xv_VO_Interface(const char* args); + Xv_VO_Interface(const std::string& args); virtual ~Xv_VO_Interface(); virtual MPXP_Rc configure(uint32_t width, @@ -50,7 +50,7 @@ uint32_t d_width, uint32_t d_height, unsigned flags, - const char *title, + const std::string& title, uint32_t format); virtual MPXP_Rc select_frame(unsigned idx); virtual void get_surface_caps(dri_surface_cap_t *caps) const; @@ -83,14 +83,14 @@ int XShmGetEventBase(Display*); // FIXME: dynamically allocate this stuff -Xv_VO_Interface::Xv_VO_Interface(const char *arg) +Xv_VO_Interface::Xv_VO_Interface(const std::string& arg) :VO_Interface(arg), aspect(new(zeromem) Aspect(mp_conf.monitor_pixel_aspect)), xv(new(zeromem) Xv_System(vo_conf.mDisplayName,vo_conf.xinerama_screen)) { num_buffers=1; - if(arg) { - MSG_ERR("vo_xv: Unknown subdevice: %s\n",arg); + if(!arg.empty()) { + MSG_ERR("vo_xv: Unknown subdevice: %s\n",arg.c_str()); exit_player("Xv error"); } } @@ -143,7 +143,7 @@ * connect to server, create and map window, * allocate colors and (shared) memory */ -MPXP_Rc Xv_VO_Interface::configure(uint32_t width, uint32_t height, uint32_t d_width, uint32_t d_height,unsigned _flags,const char *title, uint32_t _format) +MPXP_Rc Xv_VO_Interface::configure(uint32_t width, uint32_t height, u... [truncated message content] |
From: <nic...@us...> - 2012-12-10 16:07:45
|
Revision: 534 http://mplayerxp.svn.sourceforge.net/mplayerxp/?rev=534&view=rev Author: nickols_k Date: 2012-12-10 16:07:37 +0000 (Mon, 10 Dec 2012) Log Message: ----------- cleanus Modified Paths: -------------- mplayerxp/Makefile mplayerxp/configure mplayerxp/libmpstream/mrl.cpp mplayerxp/libmpstream/mrl.h mplayerxp/libmpstream/tcp.cpp mplayerxp/libmpstream/tcp.h Modified: mplayerxp/Makefile =================================================================== --- mplayerxp/Makefile 2012-12-10 15:13:31 UTC (rev 533) +++ mplayerxp/Makefile 2012-12-10 16:07:37 UTC (rev 534) @@ -68,7 +68,7 @@ $(DO_MAKE_ALL) $(CXX) -o $(TARGET_EXE) $(OBJS) $(LDFLAGS) $(LDXXFLAGS) $(LIBS) #-Xlinker --export-dynamic -Xlinker --gc-sections -Xlinker --sort-common -$(SRCS): version.h +$(SRCS): dep install: $(TARGET_EXE) ifeq ($(INSTALL),) @@ -103,11 +103,7 @@ -rm -f mp_config.h mp_config.mak mp_conf_lavc.h version.h -rm -f cpuinfo help_mp.h -version.h: - ./version.sh `$(CC) --version` - $(MAKE) dep - -dep: version.h +dep: $(CXX) -MM $(CXXFLAGS) $(SRCS) 1>.depend $(DO_MAKE) Modified: mplayerxp/configure =================================================================== --- mplayerxp/configure 2012-12-10 15:13:31 UTC (rev 533) +++ mplayerxp/configure 2012-12-10 16:07:37 UTC (rev 534) @@ -884,6 +884,8 @@ fi CXXFLAGS=$CFLAGS + +./version.sh ############################################################################# echo "Creating mp_config.mak" cat >> mp_config.mak << EOF Modified: mplayerxp/libmpstream/mrl.cpp =================================================================== --- mplayerxp/libmpstream/mrl.cpp 2012-12-10 15:13:31 UTC (rev 533) +++ mplayerxp/libmpstream/mrl.cpp 2012-12-10 16:07:37 UTC (rev 534) @@ -13,10 +13,11 @@ #include <stdio.h> #endif namespace mpxp { -const char *mrl_parse_line(const char *line,char **user,char **pass,char **ms,char **port) +const char *mrl_parse_line(const std::string& _line,char **user,char **pass,char **ms,char **port) { unsigned ssize; const char *endp,*endl; + const char* line=_line.c_str(); if(user) *user=NULL; if(pass) *pass=NULL; if(ms) *ms=NULL; @@ -82,13 +83,8 @@ return line; } -const char *mrl_parse_line(const std::string& line,char **user,char **pass,char **ms,char **port) +static void mrl_store_args(const std::string& arg,char *value, const mrl_config_t * args) { - return mrl_parse_line(line.c_str(),user,pass,ms,port); -} - -static void mrl_store_args(const char *arg,char *value, const mrl_config_t * args) -{ #ifdef TEST_MRL printf("arg='%s' value='%s'\n",arg,value); return; @@ -96,13 +92,10 @@ unsigned i; int done=0; i=0; - while(arg!=NULL) - { - if(strcmp(arg,args[i].arg)==0) - { + while(args[i].arg!=NULL) { + if(arg==args[i].arg) { done=1; - switch(args[i].type) - { + switch(args[i].type) { case MRL_TYPE_PRINT: MSG_INFO("%s", (char *)args[i].value); default: @@ -117,8 +110,7 @@ *((int *)args[i].value)=args[i].min; delete value; break; - case MRL_TYPE_INT: - { + case MRL_TYPE_INT: { int result=atoi(value); delete value; if(result < args[i].min) result=args[i].min; @@ -126,8 +118,7 @@ *((int *)args[i].value)=result; } break; - case MRL_TYPE_FLOAT: - { + case MRL_TYPE_FLOAT: { int result=atof(value); delete value; if(result < args[i].min) result=args[i].min; @@ -135,8 +126,7 @@ *((float *)args[i].value)=result; } break; - case MRL_TYPE_STRING: - { + case MRL_TYPE_STRING: { char *p=reinterpret_cast<char*>(args[i].value); p=value; break; @@ -146,22 +136,21 @@ } i++; } - if(!done) MSG_WARN(" Can't handle argument: '%s'",arg); + if(!done) MSG_WARN(" Can't handle argument: '%s'",arg.c_str()); } #define MRL_ARG_SEP ',' -const char * mrl_parse_params(const char *param, const mrl_config_t * args) +const char * mrl_parse_params(const std::string& _param, const mrl_config_t * args) { const char *sep,*endp,*endl; char *arg=NULL,*value=NULL; unsigned ssize; + const char* param=_param.c_str(); endl=param+strlen(param); - while(*param) - { + while(*param) { sep=strchr(param,'='); - if(sep) - { + if(sep) { sep++; endp=strchr(sep,MRL_ARG_SEP); if(!endp) endp=endl; @@ -185,9 +174,5 @@ if(value) delete value; return param; } -const char * mrl_parse_params(const std::string& param, const mrl_config_t * args) -{ - return mrl_parse_params(param.c_str(),args); -} } // namespace mpxp Modified: mplayerxp/libmpstream/mrl.h =================================================================== --- mplayerxp/libmpstream/mrl.h 2012-12-10 15:13:31 UTC (rev 533) +++ mplayerxp/libmpstream/mrl.h 2012-12-10 16:07:37 UTC (rev 534) @@ -23,7 +23,6 @@ * x11://~username:passwd@localhost:8081#bpp=32 * @see mrl_parse_params **/ - extern const char *mrl_parse_line(const char *line,char **user,char **pass,char **ms,char **port); extern const char *mrl_parse_line(const std::string& line,char **user,char **pass,char **ms,char **port); enum { @@ -53,7 +52,6 @@ * may want to use non-standard arguments for plugin. * @see mrl_parse_line **/ - extern const char * mrl_parse_params(const char *param,const mrl_config_t * args); extern const char * mrl_parse_params(const std::string& param,const mrl_config_t * args); } // namespace mpxp #endif Modified: mplayerxp/libmpstream/tcp.cpp =================================================================== --- mplayerxp/libmpstream/tcp.cpp 2012-12-10 15:13:31 UTC (rev 533) +++ mplayerxp/libmpstream/tcp.cpp 2012-12-10 16:07:37 UTC (rev 534) @@ -51,7 +51,7 @@ // return -2 for fatal error, like unable to resolve name, connection timeout... // return -1 is unable to connect to a particular port -void Tcp::open(const char *host, int port, tcp_af_e af) { +void Tcp::open(const std::string& host, int port, tcp_af_e af) { socklen_t err_len; int ret,count = 0; fd_set set; @@ -72,7 +72,7 @@ struct timeval to; #endif - MSG_V("[tcp%s] Trying to resolv host '%s'\n", af2String(af), host); + MSG_V("[tcp%s] Trying to resolv host '%s'\n", af2String(af), host.c_str()); _fd = ::socket(af==Tcp::IP4?AF_INET:AF_INET6, SOCK_STREAM, 0); if( _fd==-1 ) { @@ -103,26 +103,26 @@ memset(&server_address, 0, sizeof(server_address)); - MSG_V("[tcp%s] PreResolving Host '%s'\n",af2String(af), host); + MSG_V("[tcp%s] PreResolving Host '%s'\n",af2String(af), host.c_str()); #ifndef HAVE_WINSOCK2 #ifdef USE_ATON - if (::inet_aton(host, our_s_addr)!=1) + if (::inet_aton(host.c_str(), our_s_addr)!=1) #else - if (::inet_pton(af==Tcp::IP4?AF_INET:AF_INET6, host, our_s_addr)!=1) + if (::inet_pton(af==Tcp::IP4?AF_INET:AF_INET6, host.c_str(), our_s_addr)!=1) #endif #else - if (::inet_addr(host)==INADDR_NONE ) + if (::inet_addr(host.c_str())==INADDR_NONE ) #endif { - MSG_V("[tcp%s] Resolving Host '%s'\n",af2String(af), host); + MSG_V("[tcp%s] Resolving Host '%s'\n",af2String(af), host.c_str()); #ifdef HAVE_GETHOSTBYNAME2 - hp=(struct hostent*)::gethostbyname2( host, af==Tcp::IP4?AF_INET:AF_INET6 ); + hp=(struct hostent*)::gethostbyname2( host.c_str(), af==Tcp::IP4?AF_INET:AF_INET6 ); #else - hp=(struct hostent*)::gethostbyname( host ); + hp=(struct hostent*)::gethostbyname( host.c_str() ); #endif if( hp==NULL ) { - MSG_V("[tcp%s] Can't resolv: %s\n",af2String(af), host); + MSG_V("[tcp%s] Can't resolv: %s\n",af2String(af), host.c_str()); _error=Tcp::Err_Fatal; return; } @@ -131,7 +131,7 @@ } #ifdef HAVE_WINSOCK2 else { - unsigned long addr = inet_addr(host); + unsigned long addr = inet_addr(host.c_str()); memcpy( our_s_addr, (any_t*)&addr, sizeof(addr) ); } #endif @@ -158,7 +158,7 @@ #else ::inet_ntop(af==Tcp::IP4?AF_INET:AF_INET6, our_s_addr, buf, 255); #endif - MSG_INFO("[tcp%s] Connecting to server: %s (%s:%i)\n",af2String(af),host,buf,port); + MSG_INFO("[tcp%s] Connecting to server: %s (%s:%i)\n",af2String(af),host.c_str(),buf,port); // Turn the socket as non blocking so we can timeout on the connection #ifndef HAVE_WINSOCK2 @@ -173,7 +173,7 @@ #else if( (WSAGetLastError() != WSAEINPROGRESS) && (WSAGetLastError() != WSAEWOULDBLOCK) ) { #endif - MSG_V("[tcp%s] Can't connect to server: %s\n",af2String(af),host); + MSG_V("[tcp%s] Can't connect to server: %s\n",af2String(af),host.c_str()); ::closesocket(_fd); _fd=-1; _error=Tcp::Err_Port; @@ -224,7 +224,7 @@ } } -Tcp::Tcp(libinput_t* _libinput,const char *host,int port,tcp_af_e af) +Tcp::Tcp(libinput_t* _libinput,const std::string& host,int port,tcp_af_e af) :_fd(-1), _error(Tcp::Err_None), libinput(_libinput) Modified: mplayerxp/libmpstream/tcp.h =================================================================== --- mplayerxp/libmpstream/tcp.h 2012-12-10 15:13:31 UTC (rev 533) +++ mplayerxp/libmpstream/tcp.h 2012-12-10 16:07:37 UTC (rev 534) @@ -20,6 +20,7 @@ */ #ifndef TCP_H_INCLUDED #define TCP_H_INCLUDED 1 +#include <string> #include <stdint.h> #include "input2/input.h" @@ -39,7 +40,7 @@ Err_None =0 /* no error */ }; Tcp(libinput_t* libinput,net_fd_t fd); - Tcp(libinput_t* libinput,const char *host,int port,tcp_af_e af=Tcp::IP4); + Tcp(libinput_t* libinput,const std::string& host,int port,tcp_af_e af=Tcp::IP4); virtual ~Tcp(); Tcp& operator=(Tcp& other); @@ -50,7 +51,7 @@ virtual tcp_error_e error() const; virtual libinput_t* get_libinput() const; - virtual void open(const char *host,int port,tcp_af_e af=Tcp::IP4); + virtual void open(const std::string& host,int port,tcp_af_e af=Tcp::IP4); virtual int read(uint8_t* buf,unsigned len,int flags=0); virtual int write(const uint8_t* buf,unsigned len,int flags=0) const; virtual void close(); This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <nic...@us...> - 2012-12-10 17:44:23
|
Revision: 535 http://mplayerxp.svn.sourceforge.net/mplayerxp/?rev=535&view=rev Author: nickols_k Date: 2012-12-10 17:44:11 +0000 (Mon, 10 Dec 2012) Log Message: ----------- convert struct HTTP_header_t into class HTTP_Header Modified Paths: -------------- mplayerxp/Makefile mplayerxp/libmpstream/asf_streaming.cpp mplayerxp/libmpstream/cddb.cpp mplayerxp/libmpstream/cookies.cpp mplayerxp/libmpstream/cookies.h mplayerxp/libmpstream/http.cpp mplayerxp/libmpstream/http.h mplayerxp/libmpstream/network.cpp mplayerxp/libmpstream/network.h Modified: mplayerxp/Makefile =================================================================== --- mplayerxp/Makefile 2012-12-10 16:07:37 UTC (rev 534) +++ mplayerxp/Makefile 2012-12-10 17:44:11 UTC (rev 535) @@ -103,7 +103,7 @@ -rm -f mp_config.h mp_config.mak mp_conf_lavc.h version.h -rm -f cpuinfo help_mp.h -dep: +dep: version.h $(CXX) -MM $(CXXFLAGS) $(SRCS) 1>.depend $(DO_MAKE) Modified: mplayerxp/libmpstream/asf_streaming.cpp =================================================================== --- mplayerxp/libmpstream/asf_streaming.cpp 2012-12-10 16:07:37 UTC (rev 534) +++ mplayerxp/libmpstream/asf_streaming.cpp 2012-12-10 17:44:11 UTC (rev 535) @@ -500,18 +500,17 @@ } static int -asf_header_check( HTTP_header_t *http_hdr ) { - ASF_obj_header_t *objh; - if( http_hdr==NULL ) return -1; - if( http_hdr->body==NULL || http_hdr->body_size<sizeof(ASF_obj_header_t) ) return -1; +asf_header_check( HTTP_Header& http_hdr ) { + ASF_obj_header_t *objh; + if( http_hdr.body==NULL || http_hdr.body_size<sizeof(ASF_obj_header_t) ) return -1; - objh = (ASF_obj_header_t*)http_hdr->body; - if( ASF_LOAD_GUID_PREFIX(objh->guid)==0x75B22630 ) return 0; - return -1; + objh = (ASF_obj_header_t*)http_hdr.body; + if( ASF_LOAD_GUID_PREFIX(objh->guid)==0x75B22630 ) return 0; + return -1; } static ASF_StreamType_e -asf_http_networking_type(char *content_type, char *features, HTTP_header_t *http_hdr ) { +asf_http_networking_type(char *content_type, char *features, HTTP_Header& http_hdr ) { if( content_type==NULL ) return ASF_Unknown_e; if( !strcasecmp(content_type, "application/octet-stream") || !strcasecmp(content_type, "application/vnd.ms.wms-hdr.asfv1") || // New in Corona, first request @@ -530,7 +529,7 @@ // so we could used mime type to know the stream type, // but guess what? All of them are not well configured. // So we have to check for an asf header :(, but it works :p - if( http_hdr->body_size>sizeof(ASF_obj_header_t) ) { + if( http_hdr.body_size>sizeof(ASF_obj_header_t) ) { if( asf_header_check( http_hdr )==0 ) { MSG_V("=====> ASF Plain text\n"); return ASF_PlainText_e; @@ -563,9 +562,8 @@ return ASF_Unknown_e; } -static HTTP_header_t * -asf_http_request(networking_t *networking) { - HTTP_header_t *http_hdr; +static HTTP_Header* asf_http_request(networking_t *networking) { + HTTP_Header* http_hdr = new(zeromem) HTTP_Header; URL_t *url = NULL; URL_t *server_url = NULL; asf_http_networking_t *asf_http_ctrl; @@ -583,38 +581,37 @@ if( url==NULL || asf_http_ctrl==NULL ) return NULL; // Common header for all requests. - http_hdr = http_new_header(); - http_set_field( http_hdr, "Accept: */*" ); - http_set_field( http_hdr, "User-Agent: NSPlayer/4.1.0.3856" ); - http_add_basic_authentication( http_hdr, url->username, url->password ); + http_hdr->set_field("Accept: */*" ); + http_hdr->set_field("User-Agent: NSPlayer/4.1.0.3856" ); + http_hdr->add_basic_authentication(url->username, url->password ); // Check if we are using a proxy if( !strcasecmp( url->protocol, "http_proxy" ) ) { server_url = url_new( (url->file)+1 ); if( server_url==NULL ) { MSG_ERR("Invalid proxy URL\n"); - http_free( http_hdr ); + delete http_hdr; return NULL; } - http_set_uri( http_hdr, server_url->url ); + http_hdr->set_uri(server_url->url ); sprintf( str, "Host: %.220s:%d", server_url->hostname, server_url->port ); url_free( server_url ); } else { - http_set_uri( http_hdr, url->file ); + http_hdr->set_uri(url->file ); sprintf( str, "Host: %.220s:%d", url->hostname, url->port ); } - http_set_field( http_hdr, str ); - http_set_field( http_hdr, "Pragma: xClientGUID={c77e7400-738a-11d2-9add-0020af0a3278}" ); + http_hdr->set_field(str ); + http_hdr->set_field("Pragma: xClientGUID={c77e7400-738a-11d2-9add-0020af0a3278}" ); sprintf(str, "Pragma: no-cache,rate=1.000000,stream-time=0,stream-offset=%u:%u,request-context=%d,max-duration=%u", offset_hi, offset_lo, asf_http_ctrl->request, length ); - http_set_field( http_hdr, str ); + http_hdr->set_field( str ); switch( asf_http_ctrl->networking_type ) { case ASF_Live_e: case ASF_Prerecorded_e: - http_set_field( http_hdr, "Pragma: xPlayStrm=1" ); + http_hdr->set_field("Pragma: xPlayStrm=1" ); ptr = str; ptr += sprintf( ptr, "Pragma: stream-switch-entry="); if(asf_http_ctrl->n_audio > 0) { @@ -643,9 +640,9 @@ ptr += sprintf(ptr, "ffff:%d:%d ", stream_id, enable); } } - http_set_field( http_hdr, str ); + http_hdr->set_field(str ); sprintf( str, "Pragma: stream-switch-count=%d", asf_nb_stream ); - http_set_field( http_hdr, str ); + http_hdr->set_field( str ); break; case ASF_Redirector_e: break; @@ -656,34 +653,34 @@ MSG_ERR("Unknown asf stream type\n"); } - http_set_field( http_hdr, "Connection: Close" ); - http_build_request( http_hdr ); + http_hdr->set_field("Connection: Close" ); + http_hdr->build_request( ); return http_hdr; } static int -asf_http_parse_response(asf_http_networking_t *asf_http_ctrl, HTTP_header_t *http_hdr ) { +asf_http_parse_response(asf_http_networking_t *asf_http_ctrl, HTTP_Header& http_hdr ) { char *content_type, *pragma; char features[64] = "\0"; size_t len; - if( http_response_parse(http_hdr)<0 ) { + if( http_hdr.response_parse()<0 ) { MSG_ERR("Failed to parse HTTP response\n"); return -1; } - switch( http_hdr->status_code ) { + switch( http_hdr.status_code ) { case 200: break; case 401: // Authentication required return ASF_Authenticate_e; default: - MSG_ERR("Server return %d:%s\n", http_hdr->status_code, http_hdr->reason_phrase); + MSG_ERR("Server return %d:%s\n", http_hdr.status_code, http_hdr.get_reason_phrase()); return -1; } - content_type = http_get_field( http_hdr, "Content-Type"); + content_type = http_hdr.get_field("Content-Type"); - pragma = http_get_field( http_hdr, "Pragma"); + pragma = http_hdr.get_field("Pragma"); while( pragma!=NULL ) { char *comma_ptr=NULL; char *end; @@ -714,14 +711,14 @@ if( pragma[0]==' ' ) pragma++; } } while( comma_ptr!=NULL ); - pragma = http_get_next_field( http_hdr ); + pragma = http_hdr.get_next_field(); } asf_http_ctrl->networking_type = asf_http_networking_type( content_type, features, http_hdr ); return 0; } static MPXP_Rc asf_http_networking_start(Tcp& tcp, networking_t *networking) { - HTTP_header_t *http_hdr=NULL; + HTTP_Header *http_hdr=NULL; URL_t *url = networking->url; asf_http_networking_t *asf_http_ctrl; char buffer[BUFFER_SIZE]; @@ -762,25 +759,25 @@ } i += r; } - http_free( http_hdr ); - http_hdr = http_new_header(); + delete http_hdr; + http_hdr = new(zeromem) HTTP_Header; do { i = tcp.read((uint8_t*)buffer, BUFFER_SIZE); if( i<=0 ) { perror("read"); - http_free( http_hdr ); + delete http_hdr; return MPXP_False; } - http_response_append( http_hdr, buffer, i ); - } while( !http_is_header_entire( http_hdr ) ); + http_hdr->response_append(buffer,i); + } while( !http_hdr->is_header_entire()); if( mp_conf.verbose>0 ) { http_hdr->buffer[http_hdr->buffer_size]='\0'; MSG_DBG2("Response [%s]\n", http_hdr->buffer ); } - ret = asf_http_parse_response(asf_http_ctrl, http_hdr); + ret = asf_http_parse_response(asf_http_ctrl, *http_hdr); if( ret<0 ) { MSG_ERR("Failed to parse header\n"); - http_free( http_hdr ); + delete http_hdr; return MPXP_False; } switch( asf_http_ctrl->networking_type ) { @@ -789,7 +786,7 @@ case ASF_PlainText_e: if( http_hdr->body_size>0 ) { if( networking_bufferize( networking, http_hdr->body, http_hdr->body_size )<0 ) { - http_free( http_hdr ); + delete http_hdr; return MPXP_False; } } @@ -810,7 +807,7 @@ case ASF_Redirector_e: if( http_hdr->body_size>0 ) { if( networking_bufferize( networking, http_hdr->body, http_hdr->body_size )<0 ) { - http_free( http_hdr ); + delete http_hdr; return MPXP_False; } } @@ -818,7 +815,7 @@ done = 1; break; case ASF_Authenticate_e: - if( http_authenticate( http_hdr, url, &auth_retry)<0 ) return MPXP_False; + if( http_authenticate( *http_hdr, url, &auth_retry)<0 ) return MPXP_False; asf_http_ctrl->networking_type = ASF_Unknown_e; done = 0; break; @@ -826,7 +823,7 @@ default: MSG_ERR("Unknown ASF networking type\n"); tcp.close(); - http_free( http_hdr ); + delete http_hdr; return MPXP_False; } // Check if we got a redirect. @@ -842,7 +839,7 @@ } networking->status = networking_playing_e; - http_free( http_hdr ); + delete http_hdr; return MPXP_Ok; } Modified: mplayerxp/libmpstream/cddb.cpp =================================================================== --- mplayerxp/libmpstream/cddb.cpp 2012-12-10 16:07:37 UTC (rev 534) +++ mplayerxp/libmpstream/cddb.cpp 2012-12-10 17:44:11 UTC (rev 535) @@ -141,53 +141,51 @@ return ((n % 0xff) << 24 | t << 8 | tot_trks); } -static int __FASTCALL__ cddb_http_request(const char *command, int (*reply_parser)(HTTP_header_t*,cddb_data_t*), cddb_data_t *cddb_data) { - char request[4096]; - int ret = 0; - Tcp tcp(cddb_data->libinput,-1); - URL_t *url; - HTTP_header_t *http_hdr; +static int __FASTCALL__ cddb_http_request(const char *command, int (*reply_parser)(HTTP_Header&,cddb_data_t*), cddb_data_t *cddb_data) { + char request[4096]; + int ret = 0; + Tcp tcp(cddb_data->libinput,-1); + URL_t *url; - if( reply_parser==NULL || command==NULL || cddb_data==NULL ) return -1; + if( reply_parser==NULL || command==NULL || cddb_data==NULL ) return -1; - sprintf( request, "http://%s/~cddb/cddb.cgi?cmd=%s%s&proto=%d", cddb_data->freedb_server, command, cddb_data->cddb_hello.c_str(), cddb_data->freedb_proto_level ); - MSG_V("Request[%s]\n", request ); + sprintf( request, "http://%s/~cddb/cddb.cgi?cmd=%s%s&proto=%d", cddb_data->freedb_server, command, cddb_data->cddb_hello.c_str(), cddb_data->freedb_proto_level ); + MSG_V("Request[%s]\n", request ); - url = url_new(request); - if( url==NULL ) { - MSG_ERR("Not a valid URL\n"); - return -1; - } + url = url_new(request); + if( url==NULL ) { + MSG_ERR("Not a valid URL\n"); + return -1; + } - if(http_send_request(tcp,url,0)!=MPXP_Ok) { - MSG_ERR("failed to send the http request\n"); - return -1; - } + if(http_send_request(tcp,url,0)!=MPXP_Ok) { + MSG_ERR("failed to send the http request\n"); + return -1; + } - http_hdr = http_read_response( tcp ); - if( http_hdr==NULL ) { - MSG_ERR("Failed to read the http response\n"); - return -1; - } + HTTP_Header* http_hdr = http_read_response( tcp ); + if( http_hdr==NULL ) { + MSG_ERR("Failed to read the http response\n"); + return -1; + } - http_debug_hdr(http_hdr); - MSG_V("body=[%s]\n", http_hdr->body ); + http_hdr->debug_hdr(); - switch(http_hdr->status_code) { - case 200: - ret = reply_parser(http_hdr, cddb_data); - break; - case 400: - MSG_V("Not Found\n"); - break; - default: - MSG_V("Unknown Error code\n"); - } + switch(http_hdr->status_code) { + case 200: + ret = reply_parser(*http_hdr, cddb_data); + break; + case 400: + MSG_V("Not Found\n"); + break; + default: + MSG_V("Unknown Error code\n"); + } - http_free( http_hdr ); - url_free( url ); + delete http_hdr; + url_free( url ); - return ret; + return ret; } static int __FASTCALL__ cddb_read_cache(cddb_data_t *cddb_data) { @@ -265,60 +263,60 @@ return 0; } -static int cddb_read_parse(HTTP_header_t *http_hdr, cddb_data_t *cddb_data) { - unsigned long disc_id; - char category[100]; - char *ptr=NULL, *ptr2=NULL; - int ret, status; +static int cddb_read_parse(HTTP_Header& http_hdr, cddb_data_t *cddb_data) { + unsigned long disc_id; + char category[100]; + char *ptr=NULL, *ptr2=NULL; + int ret, status; - if( http_hdr==NULL || cddb_data==NULL ) return -1; + if( cddb_data==NULL ) return -1; - ret = sscanf((char*)http_hdr->body, "%d ", &status); - if( ret!=1 ) { + ret = sscanf((char*)http_hdr.body, "%d ", &status); + if( ret!=1 ) { + MSG_ERR("Parse error\n"); + return -1; + } + + switch(status) { + case 210: + ret = sscanf((char*)http_hdr.body, "%d %s %08lx", &status, category, &disc_id); + if( ret!=3 ) { MSG_ERR("Parse error\n"); return -1; - } - - switch(status) { - case 210: - ret = sscanf((char*)http_hdr->body, "%d %s %08lx", &status, category, &disc_id); - if( ret!=3 ) { - MSG_ERR("Parse error\n"); - return -1; - } - // Check if it's a xmcd database file - ptr = strstr((char*)http_hdr->body, "# xmcd"); - if( ptr==NULL ) { - MSG_ERR("Invalid xmcd database file returned\n"); - return -1; - } - // Ok found the beginning of the file - // look for the end - ptr2 = strstr(ptr, "\r\n.\r\n"); - if( ptr2==NULL ) { - ptr2 = strstr(ptr, "\n.\n"); - if( ptr2==NULL ) { - MSG_ERR("Unable to find '.'\n"); - return -1; - } - } - // Ok found the end - // do a sanity check - if( http_hdr->body_size<(unsigned long)(ptr2-ptr) ) { - MSG_ERR("Unexpected fix me\n"); - return -1; - } - cddb_data->xmcd_file = ptr; - cddb_data->xmcd_file_size = ptr2-ptr+2; - cddb_data->xmcd_file[cddb_data->xmcd_file_size] = '\0'; - // Avoid the http_free function to mp_free the xmcd file...save a mempcy... - http_hdr->body = NULL; - http_hdr->body_size = 0; - return cddb_write_cache(cddb_data); - default: - MSG_ERR("Unhandled code\n"); - } - return 0; + } + // Check if it's a xmcd database file + ptr = strstr((char*)http_hdr.body, "# xmcd"); + if( ptr==NULL ) { + MSG_ERR("Invalid xmcd database file returned\n"); + return -1; + } + // Ok found the beginning of the file + // look for the end + ptr2 = strstr(ptr, "\r\n.\r\n"); + if( ptr2==NULL ) { + ptr2 = strstr(ptr, "\n.\n"); + if( ptr2==NULL ) { + MSG_ERR("Unable to find '.'\n"); + return -1; + } + } + // Ok found the end + // do a sanity check + if( http_hdr.body_size<(unsigned long)(ptr2-ptr) ) { + MSG_ERR("Unexpected fix me\n"); + return -1; + } + cddb_data->xmcd_file = ptr; + cddb_data->xmcd_file_size = ptr2-ptr+2; + cddb_data->xmcd_file[cddb_data->xmcd_file_size] = '\0'; + // Avoid the http_free function to mp_free the xmcd file...save a mempcy... + http_hdr.body = NULL; + http_hdr.body_size = 0; + return cddb_write_cache(cddb_data); + default: + MSG_ERR("Unhandled code\n"); + } + return 0; } static int __FASTCALL__ cddb_request_titles(cddb_data_t *cddb_data) { @@ -327,12 +325,12 @@ return cddb_http_request(command, cddb_read_parse, cddb_data); } -static int cddb_query_parse(HTTP_header_t *http_hdr, cddb_data_t *cddb_data) { +static int cddb_query_parse(HTTP_Header& http_hdr, cddb_data_t *cddb_data) { char album_title[100]; char *ptr = NULL; int ret, status; - ret = sscanf((char*)http_hdr->body, "%d ", &status); + ret = sscanf((char*)http_hdr.body, "%d ", &status); if( ret!=1 ) { MSG_ERR("Parse error\n"); return -1; @@ -341,18 +339,18 @@ switch(status) { case 200: // Found exact match - ret = sscanf((char*)http_hdr->body, "%d %s %08lx %s", &status, cddb_data->category.c_str(), &(cddb_data->disc_id), album_title); + ret = sscanf((char*)http_hdr.body, "%d %s %08lx %s", &status, cddb_data->category.c_str(), &(cddb_data->disc_id), album_title); if( ret!=4 ) { MSG_ERR("Parse error\n"); return -1; } - ptr = strstr((char*)http_hdr->body, album_title); + ptr = strstr((char*)http_hdr.body, album_title); if( ptr!=NULL ) { char *ptr2; int len; ptr2 = strstr(ptr, "\n"); if( ptr2==NULL ) { - len = (http_hdr->body_size)-(ptr-(char*)(http_hdr->body)); + len = (http_hdr.body_size)-(ptr-(char*)(http_hdr.body)); } else { len = ptr2-ptr+1; } @@ -367,7 +365,7 @@ break; case 210: // Found exact matches, list follows - ptr = strstr((char*)http_hdr->body, "\n"); + ptr = strstr((char*)http_hdr.body, "\n"); if( ptr==NULL ) { MSG_ERR("Unable to find end of line\n"); return -1; @@ -380,13 +378,13 @@ MSG_ERR("Parse error\n"); return -1; } - ptr = strstr((char*)http_hdr->body, album_title); + ptr = strstr((char*)http_hdr.body, album_title); if( ptr!=NULL ) { char *ptr2; int len; ptr2 = strstr(ptr, "\n"); if( ptr2==NULL ) { - len = (http_hdr->body_size)-(ptr-(char*)(http_hdr->body)); + len = (http_hdr.body_size)-(ptr-(char*)(http_hdr.body)); } else { len = ptr2-ptr+1; } @@ -412,12 +410,12 @@ return -1; } -static int cddb_proto_level_parse(HTTP_header_t *http_hdr, cddb_data_t *cddb_data) { +static int cddb_proto_level_parse(HTTP_Header& http_hdr, cddb_data_t *cddb_data) { int max; int ret, status; char *ptr; - ret = sscanf((char*)http_hdr->body, "%d ", &status); + ret = sscanf((char*)http_hdr.body, "%d ", &status); if( ret!=1 ) { MSG_ERR("Parse error\n"); return -1; @@ -425,7 +423,7 @@ switch(status) { case 210: - ptr = strstr((char*)http_hdr->body, "max proto:"); + ptr = strstr((char*)http_hdr.body, "max proto:"); if( ptr==NULL ) { MSG_ERR("Parse error\n"); return -1; @@ -447,10 +445,10 @@ return cddb_http_request("stat", cddb_proto_level_parse, cddb_data); } -static int cddb_freedb_sites_parse(HTTP_header_t *http_hdr, cddb_data_t *cddb_data) { +static int cddb_freedb_sites_parse(HTTP_Header& http_hdr, cddb_data_t *cddb_data) { int ret, status; UNUSED(cddb_data); - ret = sscanf((char*)http_hdr->body, "%d ", &status); + ret = sscanf((char*)http_hdr.body, "%d ", &status); if( ret!=1 ) { MSG_ERR("Parse error\n"); return -1; Modified: mplayerxp/libmpstream/cookies.cpp =================================================================== --- mplayerxp/libmpstream/cookies.cpp 2012-12-10 16:07:37 UTC (rev 534) +++ mplayerxp/libmpstream/cookies.cpp 2012-12-10 17:44:11 UTC (rev 535) @@ -26,6 +26,7 @@ #define MAX_COOKIES 20 +namespace mpxp { typedef struct cookie_list_type { char *name; char *value; @@ -220,8 +221,7 @@ } /* Take an HTTP_header_t, and insert the correct headers. The cookie files are read if necessary. */ -void -cookies_set(HTTP_header_t * http_hdr, const char *domain, const char *url) +void HTTP_Header::cookies_set(const char *domain, const char *url) { int found_cookies = 0; struct cookie_list_type *cookies[MAX_COOKIES]; @@ -281,7 +281,8 @@ } if (found_cookies) - http_set_field(http_hdr, buf); + set_field(buf); else delete buf; } +} // namespace mpxp Modified: mplayerxp/libmpstream/cookies.h =================================================================== --- mplayerxp/libmpstream/cookies.h 2012-12-10 16:07:37 UTC (rev 534) +++ mplayerxp/libmpstream/cookies.h 2012-12-10 17:44:11 UTC (rev 535) @@ -10,7 +10,4 @@ #include "http.h" -extern void cookies_set(HTTP_header_t * http_hdr, const char *hostname, - const char *url); - #endif Modified: mplayerxp/libmpstream/http.cpp =================================================================== --- mplayerxp/libmpstream/http.cpp 2012-12-10 16:07:37 UTC (rev 534) +++ mplayerxp/libmpstream/http.cpp 2012-12-10 17:44:11 UTC (rev 535) @@ -16,376 +16,323 @@ #include "url.h" #include "stream_msg.h" -HTTP_header_t * -http_new_header() { - HTTP_header_t *http_hdr; - - http_hdr = (HTTP_header_t*)mp_mallocz(sizeof(HTTP_header_t)); - if( http_hdr==NULL ) return NULL; - - return http_hdr; +namespace mpxp { +HTTP_Header::HTTP_Header() {} +HTTP_Header::~HTTP_Header() { + HTTP_field_t *field, *field2free; + if( protocol!=NULL ) delete protocol ; + if( uri!=NULL ) delete uri ; + if( reason_phrase!=NULL ) delete reason_phrase ; + if( field_search!=NULL ) delete field_search ; + if( method!=NULL ) delete method ; + if( buffer!=NULL ) delete buffer ; + field = first_field; + while( field!=NULL ) { + field2free = field; + if (field->field_name) delete field->field_name; + field = field->next; + delete field2free; + } } -void -http_free( HTTP_header_t *http_hdr ) { - HTTP_field_t *field, *field2free; - if( http_hdr==NULL ) return; - if( http_hdr->protocol!=NULL ) delete http_hdr->protocol ; - if( http_hdr->uri!=NULL ) delete http_hdr->uri ; - if( http_hdr->reason_phrase!=NULL ) delete http_hdr->reason_phrase ; - if( http_hdr->field_search!=NULL ) delete http_hdr->field_search ; - if( http_hdr->method!=NULL ) delete http_hdr->method ; - if( http_hdr->buffer!=NULL ) delete http_hdr->buffer ; - field = http_hdr->first_field; - while( field!=NULL ) { - field2free = field; - if (field->field_name) - delete field->field_name; - field = field->next; - delete field2free ; - } - delete http_hdr ; - http_hdr = NULL; -} +int HTTP_Header::response_append(const char *response, int length ) { + if( response==NULL || length<0 ) return -1; -int -http_response_append( HTTP_header_t *http_hdr, char *response, int length ) { - if( http_hdr==NULL || response==NULL || length<0 ) return -1; - - if( (unsigned)length > std::numeric_limits<size_t>::max() - http_hdr->buffer_size - 1) { - MSG_FATAL("Bad size in memory (re)allocation\n"); - return -1; - } - http_hdr->buffer = (char*)mp_realloc( http_hdr->buffer, http_hdr->buffer_size+length+1 ); - if(http_hdr->buffer ==NULL ) { - MSG_FATAL("Memory allocation failed\n"); - return -1; - } - memcpy( http_hdr->buffer+http_hdr->buffer_size, response, length ); - http_hdr->buffer_size += length; - http_hdr->buffer[http_hdr->buffer_size]=0; // close the string! - return http_hdr->buffer_size; + if( (unsigned)length > std::numeric_limits<size_t>::max() - buffer_size - 1) { + MSG_FATAL("Bad size in memory (re)allocation\n"); + return -1; + } + buffer = (char*)mp_realloc( buffer, buffer_size+length+1 ); + if(buffer ==NULL ) { + MSG_FATAL("Memory allocation failed\n"); + return -1; + } + memcpy( buffer+buffer_size, response, length ); + buffer_size += length; + buffer[buffer_size]=0; // close the string! + return buffer_size; } -int -http_is_header_entire( HTTP_header_t *http_hdr ) { - if( http_hdr==NULL ) return -1; - if( http_hdr->buffer==NULL ) return 0; // empty +int HTTP_Header::is_header_entire() const { + if( buffer==NULL ) return 0; // empty - if( strstr(http_hdr->buffer, "\r\n\r\n")==NULL && - strstr(http_hdr->buffer, "\n\n")==NULL ) return 0; - return 1; + if( strstr(buffer, "\r\n\r\n")==NULL && + strstr(buffer, "\n\n")==NULL ) return 0; + return 1; } -int -http_response_parse( HTTP_header_t *http_hdr ) { - char *hdr_ptr, *ptr; - char *field=NULL; - int pos_hdr_sep, hdr_sep_len; - size_t len; - if( http_hdr==NULL ) return -1; - if( http_hdr->is_parsed ) return 0; +int HTTP_Header::response_parse( ) { + char *hdr_ptr, *ptr; + char *field=NULL; + int pos_hdr_sep, hdr_sep_len; + size_t len; + if( is_parsed ) return 0; - // Get the protocol - hdr_ptr = strstr( http_hdr->buffer, " " ); - if( hdr_ptr==NULL ) { - MSG_FATAL("Malformed answer. No space separator found.\n"); - return -1; + // Get the protocol + hdr_ptr = strstr( buffer, " " ); + if( hdr_ptr==NULL ) { + MSG_FATAL("Malformed answer. No space separator found.\n"); + return -1; + } + len = hdr_ptr-buffer; + protocol = new char [len+1]; + if( protocol==NULL ) { + MSG_FATAL("Memory allocation failed\n"); + return -1; + } + strncpy( protocol, buffer, len ); + protocol[len]='\0'; + if( !strncasecmp( protocol, "HTTP", 4) ) { + if( sscanf( protocol+5,"1.%d", &(http_minor_version) )!=1 ) { + MSG_FATAL("Malformed answer. Unable to get HTTP minor version.\n"); + return -1; } - len = hdr_ptr-http_hdr->buffer; - http_hdr->protocol = (char*)mp_malloc(len+1); - if( http_hdr->protocol==NULL ) { - MSG_FATAL("Memory allocation failed\n"); - return -1; - } - strncpy( http_hdr->protocol, http_hdr->buffer, len ); - http_hdr->protocol[len]='\0'; - if( !strncasecmp( http_hdr->protocol, "HTTP", 4) ) { - if( sscanf( http_hdr->protocol+5,"1.%d", &(http_hdr->http_minor_version) )!=1 ) { - MSG_FATAL("Malformed answer. Unable to get HTTP minor version.\n"); - return -1; - } - } + } - // Get the status code - if( sscanf( ++hdr_ptr, "%d", &(http_hdr->status_code) )!=1 ) { - MSG_FATAL("Malformed answer. Unable to get status code.\n"); - return -1; - } - hdr_ptr += 4; + // Get the status code + if( sscanf( ++hdr_ptr, "%d", &status_code )!=1 ) { + MSG_FATAL("Malformed answer. Unable to get status code.\n"); + return -1; + } + hdr_ptr += 4; - // Get the reason phrase - ptr = strstr( hdr_ptr, "\n" ); - if( hdr_ptr==NULL ) { - MSG_FATAL("Malformed answer. Unable to get the reason phrase.\n"); - return -1; - } - len = ptr-hdr_ptr; - http_hdr->reason_phrase = (char*)mp_malloc(len+1); - if( http_hdr->reason_phrase==NULL ) { - MSG_FATAL("Memory allocation failed\n"); - return -1; - } - strncpy( http_hdr->reason_phrase, hdr_ptr, len ); - if( http_hdr->reason_phrase[len-1]=='\r' ) { - len--; - } - http_hdr->reason_phrase[len]='\0'; + // Get the reason phrase + ptr = strstr( hdr_ptr, "\n" ); + if( hdr_ptr==NULL ) { + MSG_FATAL("Malformed answer. Unable to get the reason phrase.\n"); + return -1; + } + len = ptr-hdr_ptr; + reason_phrase = new char[len+1]; + if( reason_phrase==NULL ) { + MSG_FATAL("Memory allocation failed\n"); + return -1; + } + strncpy( reason_phrase, hdr_ptr, len ); + if( reason_phrase[len-1]=='\r' ) { + len--; + } + reason_phrase[len]='\0'; - // Set the position of the header separator: \r\n\r\n - hdr_sep_len = 4; - ptr = strstr( http_hdr->buffer, "\r\n\r\n" ); + // Set the position of the header separator: \r\n\r\n + hdr_sep_len = 4; + ptr = strstr( buffer, "\r\n\r\n" ); + if( ptr==NULL ) { + ptr = strstr( buffer, "\n\n" ); if( ptr==NULL ) { - ptr = strstr( http_hdr->buffer, "\n\n" ); - if( ptr==NULL ) { - MSG_ERR("Header may be incomplete. No CRLF CRLF found.\n"); - return -1; - } - hdr_sep_len = 2; + MSG_ERR("Header may be incomplete. No CRLF CRLF found.\n"); + return -1; } - pos_hdr_sep = ptr-http_hdr->buffer; + hdr_sep_len = 2; + } + pos_hdr_sep = ptr-buffer; - // Point to the first line after the method line. - hdr_ptr = strstr( http_hdr->buffer, "\n" )+1; - do { - ptr = hdr_ptr; - while( *ptr!='\r' && *ptr!='\n' ) ptr++; - len = ptr-hdr_ptr; - if( len==0 ) break; - field = (char*)mp_realloc(field, len+1); - if( field==NULL ) { - MSG_FATAL("Memory allocation failed\n"); - return -1; - } - strncpy( field, hdr_ptr, len ); - field[len]='\0'; - http_set_field( http_hdr, field ); - hdr_ptr = ptr+((*ptr=='\r')?2:1); - } while( hdr_ptr<(http_hdr->buffer+pos_hdr_sep) ); + // Point to the first line after the method line. + hdr_ptr = strstr( buffer, "\n" )+1; + do { + ptr = hdr_ptr; + while( *ptr!='\r' && *ptr!='\n' ) ptr++; + len = ptr-hdr_ptr; + if( len==0 ) break; + field = (char*)mp_realloc(field, len+1); + if( field==NULL ) { + MSG_FATAL("Memory allocation failed\n"); + return -1; + } + strncpy( field, hdr_ptr, len ); + field[len]='\0'; + set_field( field ); + hdr_ptr = ptr+((*ptr=='\r')?2:1); + } while( hdr_ptr<(buffer+pos_hdr_sep) ); - if( field!=NULL ) delete field ; + if( field!=NULL ) delete field ; - if( pos_hdr_sep+hdr_sep_len<http_hdr->buffer_size ) { - // Response has data! - http_hdr->body = (unsigned char*)http_hdr->buffer+pos_hdr_sep+hdr_sep_len; - http_hdr->body_size = http_hdr->buffer_size-(pos_hdr_sep+hdr_sep_len); - } + if( pos_hdr_sep+hdr_sep_len<buffer_size ) { + // Response has data! + body = (unsigned char*)buffer+pos_hdr_sep+hdr_sep_len; + body_size = buffer_size-(pos_hdr_sep+hdr_sep_len); + } - http_hdr->is_parsed = 1; - return 0; + is_parsed = 1; + return 0; } -char * -http_build_request( HTTP_header_t *http_hdr ) { - char *ptr, *uri=NULL; - int len; - HTTP_field_t *field; - if( http_hdr==NULL ) return NULL; +char* HTTP_Header::build_request() { + char *ptr; + int len; + HTTP_field_t *field; - if( http_hdr->method==NULL ) http_set_method( http_hdr, "GET"); - if( http_hdr->uri==NULL ) http_set_uri( http_hdr, "/"); - else { - uri = (char*)mp_malloc(strlen(http_hdr->uri) + 1); - if( uri==NULL ) { - MSG_FATAL("Memory allocation failed\n"); - return NULL; - } - strcpy(uri,http_hdr->uri); - } + if( method==NULL ) set_method( "GET"); + if( uri==NULL ) set_uri( "/"); - //**** Compute the request length - // Add the Method line - len = strlen(http_hdr->method)+strlen(uri)+12; - // Add the fields - field = http_hdr->first_field; - while( field!=NULL ) { - len += strlen(field->field_name)+2; - field = field->next; - } - // Add the CRLF - len += 2; - // Add the body - if( http_hdr->body!=NULL ) { - len += http_hdr->body_size; - } - // Free the buffer if it was previously used - if( http_hdr->buffer!=NULL ) { - delete http_hdr->buffer ; - http_hdr->buffer = NULL; - } - http_hdr->buffer = (char*)mp_malloc(len+1); - if( http_hdr->buffer==NULL ) { - MSG_FATAL("Memory allocation failed\n"); - return NULL; - } - http_hdr->buffer_size = len; + //**** Compute the request length + // Add the Method line + len = strlen(method)+strlen(uri)+12; + // Add the fields + field = first_field; + while( field!=NULL ) { + len += strlen(field->field_name)+2; + field = field->next; + } + // Add the CRLF + len += 2; + // Add the body + if( body!=NULL ) { + len += body_size; + } + // Free the buffer if it was previously used + if( buffer!=NULL ) { + delete buffer ; + buffer = NULL; + } + buffer = new char [len+1]; + if( buffer==NULL ) { + MSG_FATAL("Memory allocation failed\n"); + return NULL; + } + buffer_size = len; - //*** Building the request - ptr = http_hdr->buffer; - // Add the method line - ptr += sprintf( ptr, "%s %s HTTP/1.%d\r\n", http_hdr->method, uri, http_hdr->http_minor_version ); - field = http_hdr->first_field; - // Add the field - while( field!=NULL ) { - ptr += sprintf( ptr, "%s\r\n", field->field_name ); - field = field->next; - } - ptr += sprintf( ptr, "\r\n" ); - // Add the body - if( http_hdr->body!=NULL ) { - memcpy( ptr, http_hdr->body, http_hdr->body_size ); - } + //*** Building the request + ptr = buffer; + // Add the method line + ptr += sprintf( ptr, "%s %s HTTP/1.%d\r\n", method,uri, http_minor_version ); + field = first_field; + // Add the field + while( field!=NULL ) { + ptr += sprintf( ptr, "%s\r\n", field->field_name ); + field = field->next; + } + ptr += sprintf( ptr, "\r\n" ); + // Add the body + if( body!=NULL ) { + memcpy( ptr, body, body_size ); + } - if( uri ) delete uri ; - return http_hdr->buffer; + return buffer; } -char * -http_get_field( HTTP_header_t *http_hdr, const char *field_name ) { - if( http_hdr==NULL || field_name==NULL ) return NULL; - http_hdr->field_search_pos = http_hdr->first_field; - http_hdr->field_search = (char*)mp_realloc( http_hdr->field_search, strlen(field_name)+1 ); - if( http_hdr->field_search==NULL ) { - MSG_FATAL("Memory allocation failed\n"); - return NULL; - } - strcpy( http_hdr->field_search, field_name ); - return http_get_next_field( http_hdr ); +char* HTTP_Header::get_field(const char *field_name ) { + if( field_name==NULL ) return NULL; + field_search_pos = first_field; + field_search = (char*)mp_realloc( field_search, strlen(field_name)+1 ); + if( field_search==NULL ) { + MSG_FATAL("Memory allocation failed\n"); + return NULL; + } + strcpy( field_search, field_name ); + return get_next_field(); } -char * -http_get_next_field( HTTP_header_t *http_hdr ) { - char *ptr; - HTTP_field_t *field; - if( http_hdr==NULL ) return NULL; +char* HTTP_Header::get_next_field() { + char *ptr; + HTTP_field_t *field; - field = http_hdr->field_search_pos; - while( field!=NULL ) { - ptr = strstr( field->field_name, ":" ); - if( ptr==NULL ) return NULL; - if( !strncasecmp( field->field_name, http_hdr->field_search, ptr-(field->field_name) ) ) { - ptr++; // Skip the column - while( ptr[0]==' ' ) ptr++; // Skip the spaces if there is some - http_hdr->field_search_pos = field->next; - return ptr; // return the value without the field name - } - field = field->next; + field = field_search_pos; + while( field!=NULL ) { + ptr = strstr( field->field_name, ":" ); + if( ptr==NULL ) return NULL; + if( !strncasecmp( field->field_name, field_search, ptr-(field->field_name) ) ) { + ptr++; // Skip the column + while( ptr[0]==' ' ) ptr++; // Skip the spaces if there is some + field_search_pos = field->next; + return ptr; // return the value without the field name } - return NULL; + field = field->next; + } + return NULL; } -void -http_set_field( HTTP_header_t *http_hdr, const char *field_name ) { - HTTP_field_t *new_field; - if( http_hdr==NULL || field_name==NULL ) return; +void HTTP_Header::set_field(const char *field_name ) { + HTTP_field_t *new_field; + if( field_name==NULL ) return; - new_field = (HTTP_field_t*)mp_malloc(sizeof(HTTP_field_t)); - if( new_field==NULL ) { - MSG_FATAL("Memory allocation failed\n"); - return; - } - new_field->next = NULL; - new_field->field_name = (char*)mp_malloc(strlen(field_name)+1); - if( new_field->field_name==NULL ) { - MSG_FATAL("Memory allocation failed\n"); - delete new_field; - return; - } - strcpy( new_field->field_name, field_name ); + new_field = new(zeromem) HTTP_field_t; + if( new_field==NULL ) { + MSG_FATAL("Memory allocation failed\n"); + return; + } + new_field->next = NULL; + new_field->field_name = new char [strlen(field_name)+1]; + if( new_field->field_name==NULL ) { + MSG_FATAL("Memory allocation failed\n"); + delete new_field; + return; + } + strcpy( new_field->field_name, field_name ); - if( http_hdr->last_field==NULL ) { - http_hdr->first_field = new_field; - } else { - http_hdr->last_field->next = new_field; - } - http_hdr->last_field = new_field; - http_hdr->field_nb++; + if( last_field==NULL ) { + first_field = new_field; + } else { + last_field->next = new_field; + } + last_field = new_field; + field_nb++; } -void -http_set_method( HTTP_header_t *http_hdr, const char *method ) { - if( http_hdr==NULL || method==NULL ) return; - - http_hdr->method = (char*)mp_malloc(strlen(method)+1); - if( http_hdr->method==NULL ) { - MSG_FATAL("Memory allocation failed\n"); - return; - } - strcpy( http_hdr->method, method ); +void HTTP_Header::set_method( const char *_method ) { + if( _method==NULL ) return; + method=mp_strdup(_method); } -void -http_set_uri( HTTP_header_t *http_hdr, const char *uri ) { - if( http_hdr==NULL || uri==NULL ) return; - - http_hdr->uri = (char*)mp_malloc(strlen(uri)+1); - if( http_hdr->uri==NULL ) { - MSG_FATAL("Memory allocation failed\n"); - return; - } - strcpy( http_hdr->uri, uri ); +void HTTP_Header::set_uri(const char *_uri ) { + if(_uri==NULL ) return; + uri=mp_strdup(_uri); } -int -http_add_basic_authentication( HTTP_header_t *http_hdr, const char *username, const char *password ) { - char *auth=NULL, *usr_pass=NULL, *b64_usr_pass=NULL; - int encoded_len, pass_len=0, out_len; - int res = -1; - if( http_hdr==NULL || username==NULL ) return -1; +int HTTP_Header::add_basic_authentication( const char *username, const char *password ) { + char *auth=NULL, *usr_pass=NULL, *b64_usr_pass=NULL; + int encoded_len, pass_len=0, out_len; + int res = -1; + if( username==NULL ) return -1; - if( password!=NULL ) { - pass_len = strlen(password); - } + if( password!=NULL ) pass_len = strlen(password); - usr_pass = (char*)mp_malloc(strlen(username)+pass_len+2); - if( usr_pass==NULL ) { - MSG_FATAL("Memory allocation failed\n"); - goto out; - } + usr_pass = new char [strlen(username)+pass_len+2]; + if( usr_pass==NULL ) { + MSG_FATAL("Memory allocation failed\n"); + goto out; + } - sprintf( usr_pass, "%s:%s", username, (password==NULL)?"":password ); + sprintf( usr_pass, "%s:%s", username, (password==NULL)?"":password ); - // Base 64 encode with at least 33% more data than the original size - encoded_len = strlen(usr_pass)*2; - b64_usr_pass = (char*)mp_malloc(encoded_len); - if( b64_usr_pass==NULL ) { - MSG_FATAL("Memory allocation failed\n"); - goto out; - } + // Base 64 encode with at least 33% more data than the original size + encoded_len = strlen(usr_pass)*2; + b64_usr_pass = new char [encoded_len]; + if( b64_usr_pass==NULL ) { + MSG_FATAL("Memory allocation failed\n"); + goto out; + } - out_len = base64_encode( usr_pass, strlen(usr_pass), b64_usr_pass, encoded_len); - if( out_len<0 ) { - MSG_FATAL("Base64 out overflow\n"); - goto out; - } + out_len = base64_encode( usr_pass, strlen(usr_pass), b64_usr_pass, encoded_len); + if( out_len<0 ) { + MSG_FATAL("Base64 out overflow\n"); + goto out; + } - b64_usr_pass[out_len]='\0'; + b64_usr_pass[out_len]='\0'; - auth = (char*)mp_malloc(encoded_len+22); - if( auth==NULL ) { - MSG_FATAL("Memory allocation failed\n"); - goto out; - } + auth = new char [encoded_len+22]; + if( auth==NULL ) { + MSG_FATAL("Memory allocation failed\n"); + goto out; + } - sprintf( auth, "Authorization: Basic %s", b64_usr_pass); - http_set_field( http_hdr, auth ); - res = 0; - + sprintf( auth, "Authorization: Basic %s", b64_usr_pass); + set_field( auth ); + res = 0; out: - delete usr_pass ; - delete b64_usr_pass ; - delete auth ; + delete usr_pass ; + delete b64_usr_pass ; + delete auth ; - return res; + return res; } -void -http_debug_hdr( HTTP_header_t *http_hdr ) { - HTTP_field_t *field; - int i = 0; - if( http_hdr==NULL ) return; +void HTTP_Header::debug_hdr( ) { + HTTP_field_t *field; + int i = 0; - MSG_V( "--- HTTP DEBUG HEADER --- START ---\n" + MSG_V( "--- HTTP DEBUG HEADER --- START ---\n" "protocol: [%s]\n" "http minor version: [%d]\n" "uri: [%s]\n" @@ -393,21 +340,21 @@ "status code: [%d]\n" "reason phrase: [%s]\n" "body size: [%d]\n" - , http_hdr->protocol - , http_hdr->http_minor_version - , http_hdr->uri - , http_hdr->method - , http_hdr->status_code - , http_hdr->reason_phrase - , http_hdr->body_size ); + ,protocol + ,http_minor_version + ,uri + ,method + ,status_code + ,reason_phrase + ,body_size ); - MSG_V("Fields:\n"); - field = http_hdr->first_field; - while( field!=NULL ) { - MSG_V(" %d - %s\n", i++, field->field_name ); - field = field->next; - } - MSG_V("--- HTTP DEBUG HEADER --- END ---\n"); + MSG_V("Fields:\n"); + field = first_field; + while( field!=NULL ) { + MSG_V(" %d - %s\n", i++, field->field_name ); + field = field->next; + } + MSG_V("--- HTTP DEBUG HEADER --- END ---\n"); } int @@ -463,5 +410,4 @@ // Output overflow return -1; } - - +}// namespace mpxp Modified: mplayerxp/libmpstream/http.h =================================================================== --- mplayerxp/libmpstream/http.h 2012-12-10 16:07:37 UTC (rev 534) +++ mplayerxp/libmpstream/http.h 2012-12-10 17:44:11 UTC (rev 535) @@ -4,51 +4,59 @@ * (C) 2001, MPlayer team. */ -#ifndef __HTTP_H -#define __HTTP_H +#ifndef __HTTP_H_INCLUDED +#define __HTTP_H_INCLUDED 1 #include "mp_config.h" -typedef struct HTTP_field_type { +namespace mpxp { + struct HTTP_field_t { char *field_name; - struct HTTP_field_type *next; -} HTTP_field_t; + HTTP_field_t *next; + }; -typedef struct { - char *protocol; - char *method; - char *uri; - unsigned int status_code; - char *reason_phrase; - unsigned int http_minor_version; - // Field variables - HTTP_field_t *first_field; - HTTP_field_t *last_field; - unsigned int field_nb; - char *field_search; - HTTP_field_t *field_search_pos; - // Body variables - unsigned char *body; - size_t body_size; - char *buffer; - size_t buffer_size; - unsigned int is_parsed; -} HTTP_header_t; + class HTTP_Header : public Opaque { + public: + HTTP_Header(); + virtual ~HTTP_Header(); -HTTP_header_t* http_new_header(); -void http_free( HTTP_header_t *http_hdr ); -int http_response_append( HTTP_header_t *http_hdr, char *data, int length ); -int http_response_parse( HTTP_header_t *http_hdr ); -int http_is_header_entire( HTTP_header_t *http_hdr ); -char* http_build_request( HTTP_header_t *http_hdr ); -char* http_get_field( HTTP_header_t *http_hdr, const char *field_name ); -char* http_get_next_field( HTTP_header_t *http_hdr ); -void http_set_field( HTTP_header_t *http_hdr, const char *field_name ); -void http_set_method( HTTP_header_t *http_hdr, const char *method ); -void http_set_uri( HTTP_header_t *http_hdr, const char *uri ); -int http_add_basic_authentication( HTTP_header_t *http_hdr, const char *username, const char *password ); + virtual int response_append(const char *data, int length ); + virtual int response_parse(); + virtual int is_header_entire() const; + virtual char* build_request(); + virtual char* get_field(const char *field_name ); + virtual char* get_next_field(); + virtual void set_field(const char *field_name ); + virtual void set_method(const char *method ); + virtual void set_uri(const char *uri ); + virtual int add_basic_authentication(const char *username, const char *password ); -void http_debug_hdr( HTTP_header_t *http_hdr ); + virtual void debug_hdr(); + virtual void cookies_set(const char *hostname, const char *url); -int base64_encode(const any_t*enc, int encLen, char *out, int outMax); + char* buffer; + size_t buffer_size; + unsigned int status_code; + unsigned char* body; + size_t body_size; + const char* get_reason_phrase() const { return reason_phrase; } + const char* get_protocol() const { return protocol; } + private: + char* protocol; + char* method; + char* uri; + char* reason_phrase; + unsigned int http_minor_version; + // Field variables + HTTP_field_t* first_field; + HTTP_field_t* last_field; + unsigned int field_nb; + char* field_search; + HTTP_field_t* field_search_pos; + // Body variables + unsigned int is_parsed; + }; + + extern int base64_encode(const any_t*enc, int encLen, char *out, int outMax); +} // namespace mpxp #endif // __HTTP_H Modified: mplayerxp/libmpstream/network.cpp =================================================================== --- mplayerxp/libmpstream/network.cpp 2012-12-10 16:07:37 UTC (rev 534) +++ mplayerxp/libmpstream/network.cpp 2012-12-10 17:44:11 UTC (rev 535) @@ -172,48 +172,46 @@ } MPXP_Rc http_send_request(Tcp& tcp, URL_t *url, off_t pos ) { - HTTP_header_t *http_hdr; + HTTP_Header* http_hdr = new(zeromem) HTTP_Header; URL_t *server_url; char str[256]; int ret; int proxy = 0; // Boolean - http_hdr = http_new_header(); - if( !strcasecmp(url->protocol, "http_proxy") ) { proxy = 1; server_url = url_new( (url->file)+1 ); - http_set_uri( http_hdr, server_url->url ); + http_hdr->set_uri(server_url->url ); } else { server_url = url; - http_set_uri( http_hdr, server_url->file ); + http_hdr->set_uri( server_url->file ); } if (server_url->port && server_url->port != 80) snprintf(str, 256, "Host: %s:%d", server_url->hostname, server_url->port ); else snprintf(str, 256, "Host: %s", server_url->hostname ); - http_set_field( http_hdr, str); + http_hdr->set_field(str); if (net_conf.useragent) { snprintf(str, 256, "User-Agent: %s", net_conf.useragent); - http_set_field(http_hdr, str); + http_hdr->set_field(str); } else - http_set_field( http_hdr, "User-Agent: MPlayerXP/"VERSION); + http_hdr->set_field("User-Agent: MPlayerXP/"VERSION); - http_set_field(http_hdr, "Icy-MetaData: 1"); + http_hdr->set_field("Icy-MetaData: 1"); if(pos>0) { // Extend http_send_request with possibility to do partial content retrieval snprintf(str, 256, "Range: bytes=%d-", (int)pos); - http_set_field(http_hdr, str); + http_hdr->set_field(str); } - if (net_conf.cookies_enabled) cookies_set( http_hdr, server_url->hostname, server_url->url ); + if (net_conf.cookies_enabled) http_hdr->cookies_set( server_url->hostname, server_url->url ); - http_set_field( http_hdr, "Connection: closed"); - http_add_basic_authentication( http_hdr, url->username, url->password ); - if( http_build_request( http_hdr )==NULL ) { + http_hdr->set_field( "Connection: closed"); + http_hdr->add_basic_authentication( url->username, url->password ); + if( http_hdr->build_request( )==NULL ) { goto err_out; } @@ -237,46 +235,43 @@ goto err_out; } - http_free( http_hdr ); + delete http_hdr; return MPXP_Ok; err_out: - http_free(http_hdr); + delete http_hdr; if (proxy && server_url) url_free(server_url); return MPXP_False; } -HTTP_header_t* http_read_response( Tcp& tcp ) { - HTTP_header_t *http_hdr; +HTTP_Header* http_read_response( Tcp& tcp ) { + HTTP_Header* http_hdr = new(zeromem) HTTP_Header; char response[BUFFER_SIZE]; int i; - http_hdr = http_new_header(); - if( http_hdr==NULL ) { - return NULL; - } + if( http_hdr==NULL ) return NULL; do { i = tcp.read((uint8_t*)response, BUFFER_SIZE); if( i<0 ) { MSG_ERR("Read failed\n"); - http_free( http_hdr ); + delete http_hdr; return NULL; } if( i==0 ) { MSG_ERR("http_read_response read 0 -ie- EOF\n"); - http_free( http_hdr ); + delete http_hdr; return NULL; } - http_response_append( http_hdr, response, i ); - } while( !http_is_header_entire( http_hdr ) ); - http_response_parse( http_hdr ); + http_hdr->response_append(response, i ); + } while( !http_hdr->is_header_entire() ); + http_hdr->response_parse(); return http_hdr; } int -http_authenticate(HTTP_header_t *http_hdr, URL_t *url, int *auth_retry) { +http_authenticate(HTTP_Header& http_hdr, URL_t *url, int *auth_retry) { char *aut; if( *auth_retry==1 ) { @@ -294,7 +289,7 @@ } } - aut = http_get_field(http_hdr, "WWW-Authenticate"); + aut = http_hdr.get_field("WWW-Authenticate"); if( aut!=NULL ) { char *aut_space; aut_space = strstr(aut, "realm="); @@ -327,7 +322,7 @@ } off_t http_seek(Tcp& tcp, networking_t *networking, off_t pos ) { - HTTP_header_t *http_hdr = NULL; + HTTP_Header* http_hdr = NULL; tcp.close(); if(http_send_request(tcp,networking->url, pos)==MPXP_Ok) return 0; @@ -339,22 +334,22 @@ switch( http_hdr->status_code ) { case 200: case 206: // OK - MSG_V("Content-Type: [%s]\n", http_get_field(http_hdr, "Content-Type") ); - MSG_V("Content-Length: [%s]\n", http_get_field(http_hdr, "Content-Length") ); + MSG_V("Content-Type: [%s]\n", http_hdr->get_field("Content-Type") ); + MSG_V("Content-Length: [%s]\n", http_hdr->get_field("Content-Length") ); if( http_hdr->body_size>0 ) { if( networking_bufferize( networking, http_hdr->body, http_hdr->body_size )<0 ) { - http_free( http_hdr ); + delete http_hdr; return 0; } } break; default: - MSG_ERR("Server return %d: %s\n", http_hdr->status_code, http_hdr->reason_phrase ); + MSG_ERR("Server return %d: %s\n", http_hdr->status_code, http_hdr->get_reason_phrase()); tcp.close(); } if( http_hdr ) { - http_free( http_hdr ); + delete http_hdr; networking->data = NULL; } @@ -364,7 +359,7 @@ // By using the protocol, the extension of the file or the content-type // we might be able to guess the networking type. static MPXP_Rc autodetectProtocol(networking_t *networking, Tcp& tcp) { - HTTP_header_t *http_hdr=NULL; + HTTP_Header *http_hdr=NULL; unsigned int i; int redirect; int auth_retry=0; @@ -404,34 +399,34 @@ http_hdr = http_read_response(tcp); if( http_hdr==NULL ) goto err_out; - if( mp_conf.verbose ) http_debug_hdr( http_hdr ); + if( mp_conf.verbose ) http_hdr->debug_hdr(); networking->data = (any_t*)http_hdr; // Check if we can make partial content requests and thus seek in http-streams - if( http_hdr!=NULL && http_hdr->status_code==200 ) { + if( http_hdr->status_code==200 ) { char *accept_ranges; - if( (accept_ranges = http_get_field(http_hdr,"Accept-Ranges")) != NULL ) + if( (accept_ranges = http_hdr->get_field("Accept-Ranges")) != NULL ) seekable = strncmp(accept_ranges,"bytes",5)==0?MPXP_Ok:MPXP_False; } // Check if the response is an ICY status_code reason_phrase - if( !strcasecmp(http_hdr->protocol, "ICY") ) { + if( !strcasecmp(http_hdr->get_protocol(), "ICY") ) { switch( http_hdr->status_code ) { case 200: { // OK char *field_data = NULL; // note: I skip icy-notice1 and 2, as they contain html <BR> // and are IMHO useless info ::atmos - if( (field_data = http_get_field(http_hdr, "icy-name")) != NULL ) + if( (field_data = http_hdr->get_field("icy-name")) != NULL ) MSG_INFO("Name : %s\n", field_data); field_data = NULL; - if( (field_data = http_get_field(http_hdr, "icy-genre")) != NULL ) + if( (field_data = http_hdr->get_field("icy-genre")) != NULL ) MSG_INFO("Genre : %s\n", field_data); field_data = NULL; - if( (field_data = http_get_field(http_hdr, "icy-url")) != NULL ) + if( (field_data = http_hdr->get_field("icy-url")) != NULL ) MSG_INFO("Website: %s\n", field_data); field_data = NULL; // XXX: does this really mean public server? ::atmos - if( (field_data = http_get_field(http_hdr, "icy-pub")) != NULL ) + if( (field_data = http_hdr->get_field("icy-pub")) != NULL ) MSG_INFO("Public : %s\n", atoi(field_data)?"yes":"no"); field_data = NULL; - if( (field_data = http_get_field(http_hdr, "icy-br")) != NULL ) + if( (field_data = http_hdr->get_field("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 ) + if ( (field_data = http_hdr->get_field("content-type")) != NULL ) networking->mime = field_data; return MPXP_Ok; } @@ -457,12 +452,12 @@ switch( http_hdr->status_code ) { case 200: // OK // Look if we can use the Content-Type - content_type = http_get_field( http_hdr, "Content-Type" ); + content_type = http_hdr->get_field("Content-Type" ); if( content_type!=NULL ) { const char *content_length = NULL; MSG_V("Content-Type: [%s]\n", content_type ); - if( (content_length = http_get_field(http_hdr, "Content-Length")) != NULL) - MSG_V("Content-Length: [%s]\n", http_get_field(http_hdr, "Content-Length")); + if( (content_length = http_hdr->get_field("Content-Length")) != NULL) + MSG_V("Content-Length: [%s]\n", http_hdr->get_field("Content-Length")); // Check in the mime type table for a demuxer type for( i=0 ; i<(sizeof(mime_type_table)/sizeof(mime_type_table[0])) ; i++ ) { if( !strcasecmp( content_type, mime_type_table[i].mime_type ) ) { @@ -477,7 +472,7 @@ case 301: // Permanently case 302: // Temporarily // TODO: RFC 2616, recommand to detect infinite redirection loops - next_url = http_get_field( http_hdr, "Location" ); + next_url = http_hdr->get_field("Location" ); if( next_url!=NULL ) { networking->url = url = url_redirect( &url, next_url ); if (!strcasecmp(url->protocol, "mms")) goto err_out; @@ -489,11 +484,11 @@ } break; case 401: // Authentication required - if( http_authenticate(http_hdr, url, &auth_retry)<0 ) goto err_out; + if( http_authenticate(*http_hdr,url, &auth_retry)<0 ) goto err_out; redirect = 1; break; default: - MSG_ERR("Server returned %d: %s\n", http_hdr->status_code, http_hdr->reason_phrase ); + MSG_ERR("Server returned %d: %s\n", http_hdr->status_code, http_hdr->get_reason_phrase()); goto err_out; } } else { @@ -502,8 +497,7 @@ } } while( redirect ); err_out: - http_free( http_hdr ); - http_hdr = NULL; + delete http_hdr; return MPXP_False; } @@ -562,7 +556,7 @@ } MPXP_Rc nop_networking_start(Tcp& tcp,networking_t* networking ) { - HTTP_header_t *http_hdr = NULL; + HTTP_Header *http_hdr = NULL; char *next_url=NULL; URL_t *rd_url=NULL; MPXP_Rc ret; @@ -575,11 +569,11 @@ switch( http_hdr->status_code ) { case 200: // OK - MSG_V("Content-Type: [%s]\n", http_get_field(http_hdr, "Content-Type") ); - MSG_V("Content-Length: [%s]\n", http_get_field(http_hdr, "Content-Length") ); + MSG_V("Content-Type: [%s]\n", http_hdr->get_field("Content-Type") ); + MSG_V("Content-Length: [%s]\n", http_hdr->get_field("Content-Length") ); if( http_hdr->body_size>0 ) { if( networking_bufferize( networking, http_hdr->body, http_hdr->body_size )<0 ) { - http_free( http_hdr ); + delete http_hdr; return MPXP_False; } } @@ -588,7 +582,7 @@ case 301: // Permanently case 302: // Temporarily ret=MPXP_False; - next_url = http_get_field( http_hdr, "Location" ); + next_url = http_hdr->get_field("Location" ); if (next_url != NULL) rd_url=url_new(next_url); @@ -608,16 +602,16 @@ case 404: //Not found case 500: //Server Error default: - MSG_ERR("Server return %d: %s\n", http_hdr->status_code, http_hdr->reason_phrase ); + MSG_ERR("Server return %d: %s\n", http_hdr->status_code, http_hdr->get_reason_phrase()); tcp.close(); return MPXP_False; break; } } else { - http_hdr = (HTTP_header_t*)networking->data; + http_hdr = (HTTP_Header*)networking->data; if( http_hdr->body_size>0 ) { if( networking_bufferize( networking, http_hdr->body, http_hdr->body_size )<0 ) { - http_free( http_hdr ); + delete http_hdr; networking->data = NULL; return MPXP_False; } @@ -625,7 +619,7 @@ } if( http_hdr ) { - http_free( http_hdr ); + delete http_hdr; networking->data = NULL; } Modified: mplayerxp/libmpstream/network.h =================================================================== --- mplayerxp/libmpstream/network.h 2012-12-10 16:07:37 UTC (rev 534) +++ mplayerxp/libmpstream/network.h 2012-12-10 17:44:11 UTC (rev 535) @@ -3,9 +3,11 @@ * by Bertrand BAUDET <ber...@ya...> * (C) 2001, MPlayer team. */ - #ifndef __NETWORK_H #define __NETWORK_H +#include "mp_config.h" +#include "osdep/mplib.h" +using namespace mpxp; #include <string> @@ -81,9 +83,9 @@ int nop_networking_seek(Tcp& fd, off_t pos, networking_t *stream_ctrl ); MPXP_Rc http_send_request(Tcp& tcp,URL_t *url, off_t pos); -HTTP_header_t *http_read_response(Tcp& fd); +HTTP_Header* http_read_response(Tcp& fd); -int http_authenticate(HTTP_header_t *http_hdr, URL_t *url, int *auth_retry); +int http_authenticate(HTTP_Header& http_hdr, URL_t *url, int *auth_retry); /* * Joey Parrish <jo...@yu...>: This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <nic...@us...> - 2012-12-11 14:15:18
|
Revision: 538 http://mplayerxp.svn.sourceforge.net/mplayerxp/?rev=538&view=rev Author: nickols_k Date: 2012-12-11 14:15:08 +0000 (Tue, 11 Dec 2012) Log Message: ----------- convert dec_ahead_engine_t::sh into Opaque* Modified Paths: -------------- mplayerxp/Makefile mplayerxp/input2/Makefile mplayerxp/libao2/Makefile mplayerxp/libmpcodecs/Makefile mplayerxp/libmpcodecs/liba52/Makefile mplayerxp/libmpcodecs/libdca/Makefile mplayerxp/libmpcodecs/libnuppelvideo/Makefile mplayerxp/libmpconf/Makefile mplayerxp/libmpdemux/Makefile mplayerxp/libmpstream/Makefile mplayerxp/libmpstream/freesdp/Makefile mplayerxp/libmpstream/librtsp/Makefile mplayerxp/libmpstream/realrtsp/Makefile mplayerxp/libmpstream/tvi/Makefile mplayerxp/libmpsub/Makefile mplayerxp/libplaytree/Makefile mplayerxp/libvo/Makefile mplayerxp/loader/Makefile mplayerxp/nls/Makefile mplayerxp/osdep/Makefile mplayerxp/postproc/Makefile mplayerxp/postproc/libmenu/Makefile mplayerxp/xmpcore/Makefile mplayerxp/xmpcore/mp_image.cpp mplayerxp/xmpcore/xmp_adecoder.cpp mplayerxp/xmpcore/xmp_aplayer.cpp mplayerxp/xmpcore/xmp_core.cpp mplayerxp/xmpcore/xmp_core.h mplayerxp/xmpcore/xmp_vdecoder.cpp mplayerxp/xmpcore/xmp_vplayer.cpp Modified: mplayerxp/Makefile =================================================================== --- mplayerxp/Makefile 2012-12-11 13:30:51 UTC (rev 537) +++ mplayerxp/Makefile 2012-12-11 14:15:08 UTC (rev 538) @@ -56,7 +56,7 @@ # .PHONY: all clean -all: $(TARGET_EXE) $(SUBDIRS) +all: dep $(TARGET_EXE) $(SUBDIRS) .cpp.o: $(CXX) -c $(CXXFLAGS) -o $@ $< @@ -68,7 +68,7 @@ $(DO_MAKE_ALL) $(CXX) -o $(TARGET_EXE) $(OBJS) $(LDFLAGS) $(LDXXFLAGS) $(LIBS) #-Xlinker --export-dynamic -Xlinker --gc-sections -Xlinker --sort-common -$(SRCS): .depend +$(SRCS): install: $(TARGET_EXE) ifeq ($(INSTALL),) @@ -103,7 +103,9 @@ -rm -f mp_config.h mp_config.mak mp_conf_lavc.h version.h -rm -f cpuinfo help_mp.h -.depend: +dep: .depend + +.depend: $(SRCS) $(CXX) -MM $(CXXFLAGS) $(SRCS) 1>.depend $(DO_MAKE) Modified: mplayerxp/input2/Makefile =================================================================== --- mplayerxp/input2/Makefile 2012-12-11 13:30:51 UTC (rev 537) +++ mplayerxp/input2/Makefile 2012-12-11 14:15:08 UTC (rev 538) @@ -16,7 +16,7 @@ $(LIBNAME): $(OBJS) $(AR) r $(LIBNAME) $(OBJS) -all: $(LIBNAME) +all: dep $(LIBNAME) clean: rm -f *.o *.a *~ @@ -24,9 +24,9 @@ distclean: rm -f Makefile.bak *.o *.a *~ .depend -dep: depend +dep: .depend -depend: +.depend: $(SRCS) $(CXX) -MM $(CXXFLAGS) $(SRCS) 1>.depend # Modified: mplayerxp/libao2/Makefile =================================================================== --- mplayerxp/libao2/Makefile 2012-12-11 13:30:51 UTC (rev 537) +++ mplayerxp/libao2/Makefile 2012-12-11 14:15:08 UTC (rev 538) @@ -49,7 +49,7 @@ $(LIBNAME): $(OBJS) $(CXXOBJS) $(AR) r $(LIBNAME) $(OBJS) $(CXXOBJS) -all: $(LIBNAME) +all: dep $(LIBNAME) clean: rm -f *.o *.a *~ @@ -57,9 +57,9 @@ distclean: rm -f Makefile.bak *.o *.a *~ .depend -dep: depend +dep: .depend -depend: +.depend: $(SRCS) $(CXXSRCS) $(CXX) -MM $(CXXFLAGS) $(SRCS) $(CXXSRCS) 1>.depend # Modified: mplayerxp/libmpcodecs/Makefile =================================================================== --- mplayerxp/libmpcodecs/Makefile 2012-12-11 13:30:51 UTC (rev 537) +++ mplayerxp/libmpcodecs/Makefile 2012-12-11 14:15:08 UTC (rev 538) @@ -64,7 +64,7 @@ .PHONY: $(SUBDIRS) -all: $(LIBNAME) +all: dep $(LIBNAME) $(SUBDIRS): $(DO_ALL) @@ -89,9 +89,9 @@ $(DO_MAKE) rm -f Makefile.bak *.o *.a *~ .depend -dep: depend +dep: .depend -depend: +.depend: $(SRCS) $(CXXSRCS) $(DO_MAKE) $(CXX) -MM $(CXXFLAGS) $(SRCS) $(CXXSRCS) 1>.depend Modified: mplayerxp/libmpcodecs/liba52/Makefile =================================================================== --- mplayerxp/libmpcodecs/liba52/Makefile 2012-12-11 13:30:51 UTC (rev 537) +++ mplayerxp/libmpcodecs/liba52/Makefile 2012-12-11 14:15:08 UTC (rev 538) @@ -1,7 +1,7 @@ include ../../mp_config.mak CXXSRCS = parse.cpp bitstream.cpp imdct.cpp downmix.cpp bit_allocate.cpp crc.cpp resample.cpp -SRCS = +SRCS = OBJS = $(SRCS:.c=.o) CXXOBJS = $(CXXSRCS:.cpp=.o) @@ -17,7 +17,7 @@ .cpp.o: $(CC) -c $(CXXFLAGS) -o $@ $< -all: $(OBJS) $(CXXOBJS) +all: dep $(OBJS) $(CXXOBJS) clean: rm -f *.o *.a *~ @@ -25,9 +25,9 @@ distclean: rm -f test *.o $(LIBNAME) *~ .depend -dep: depend +dep: .depend -depend: +.depend: $(SRCS) $(CXXSRCS) $(CC) -MM $(CFLAGS) $(SRCS) $(CXXSRCS) 1>.depend # Modified: mplayerxp/libmpcodecs/libdca/Makefile =================================================================== --- mplayerxp/libmpcodecs/libdca/Makefile 2012-12-11 13:30:51 UTC (rev 537) +++ mplayerxp/libmpcodecs/libdca/Makefile 2012-12-11 14:15:08 UTC (rev 538) @@ -12,7 +12,7 @@ .cpp.o: $(CXX) -c $(CXXFLAGS) -o $@ $< -all: $(CXXOBJS) +all: dep $(CXXOBJS) clean: rm -f *.o *.a *~ @@ -20,9 +20,9 @@ distclean: rm -f test *.o $(LIBNAME) *~ .depend -dep: depend +dep: .depend -depend: +.depend: $(CXXSRCS) $(CXX) -MM $(CXXFLAGS) $(CXXSRCS) 1>.depend # Modified: mplayerxp/libmpcodecs/libnuppelvideo/Makefile =================================================================== --- mplayerxp/libmpcodecs/libnuppelvideo/Makefile 2012-12-11 13:30:51 UTC (rev 537) +++ mplayerxp/libmpcodecs/libnuppelvideo/Makefile 2012-12-11 14:15:08 UTC (rev 538) @@ -8,7 +8,7 @@ .SUFFIXES: .cpp .o -all: $(CXXOBJS) +all: dep $(CXXOBJS) .cpp.o: $(CXX) -c $(CXXFLAGS) -o $@ $< @@ -19,9 +19,9 @@ distclean: rm -f Makefile.bak *.o *.a *~ .depend -dep: depend +dep: .depend -depend: +.depend: $(CXXSRCS) $(CXX) -MM $(CXXFLAGS) $(CXXSRCS) 1>.depend # Modified: mplayerxp/libmpconf/Makefile =================================================================== --- mplayerxp/libmpconf/Makefile 2012-12-11 13:30:51 UTC (rev 537) +++ mplayerxp/libmpconf/Makefile 2012-12-11 14:15:08 UTC (rev 538) @@ -22,7 +22,7 @@ .PHONY: $(SUBDIRS) -all: $(LIBNAME) +all: dep $(LIBNAME) $(SUBDIRS): $(DO_ALL) @@ -43,9 +43,9 @@ $(DO_MAKE) rm -f test Makefile.bak *.o *.a *~ .depend -dep: depend +dep: .depend -depend: +.depend: $(SRCS) $(CXXSRCS) $(DO_MAKE) $(CC) -MM $(CFLAGS) $(SRCS) $(CXXSRCS) 1>.depend Modified: mplayerxp/libmpdemux/Makefile =================================================================== --- mplayerxp/libmpdemux/Makefile 2012-12-11 13:30:51 UTC (rev 537) +++ mplayerxp/libmpdemux/Makefile 2012-12-11 14:15:08 UTC (rev 538) @@ -69,7 +69,7 @@ .PHONY: $(SUBDIRS) -all: $(LIBNAME) +all: dep $(LIBNAME) $(SUBDIRS): $(DO_ALL) @@ -96,9 +96,9 @@ $(DO_MAKE) rm -f test Makefile.bak *.o *.a *~ .depend -dep: depend +dep: .depend -depend: +.depend: $(SRCS) $(CXXSRCS) $(DO_MAKE) $(CXX) -MM $(CXXFLAGS) $(SRCS) $(CXXSRCS) 1>.depend Modified: mplayerxp/libmpstream/Makefile =================================================================== --- mplayerxp/libmpstream/Makefile 2012-12-11 13:30:51 UTC (rev 537) +++ mplayerxp/libmpstream/Makefile 2012-12-11 14:15:08 UTC (rev 538) @@ -56,7 +56,7 @@ .PHONY: $(SUBDIRS) -all: $(LIBNAME) +all: dep $(LIBNAME) $(SUBDIRS): $(DO_ALL) @@ -85,9 +85,9 @@ $(DO_MAKE) rm -f test Makefile.bak *.o *.a *~ .depend -dep: depend +dep: .depend -depend: +.depend: $(SRCS) $(CXXSRCS) $(DO_MAKE) $(CC) -MM $(CFLAGS) $(SRCS) $(CXXSRCS) 1>.depend Modified: mplayerxp/libmpstream/freesdp/Makefile =================================================================== --- mplayerxp/libmpstream/freesdp/Makefile 2012-12-11 13:30:51 UTC (rev 537) +++ mplayerxp/libmpstream/freesdp/Makefile 2012-12-11 14:15:08 UTC (rev 538) @@ -11,7 +11,7 @@ .SUFFIXES: .c .o -all: $(OBJS) $(CXXOBJS) +all: dep $(OBJS) $(CXXOBJS) .c.o: $(CC) -c $(CFLAGS) -o $@ $< @@ -24,9 +24,9 @@ distclean: rm -f Makefile.bak *.o *.a *~ .depend -dep: depend +dep: .depend -depend: +.depend: $(SRCS) $(CXXSRCS) $(CXX) -MM $(CXXFLAGS) $(SRCS) $(CXXSRCS) 1>.depend # Modified: mplayerxp/libmpstream/librtsp/Makefile =================================================================== --- mplayerxp/libmpstream/librtsp/Makefile 2012-12-11 13:30:51 UTC (rev 537) +++ mplayerxp/libmpstream/librtsp/Makefile 2012-12-11 14:15:08 UTC (rev 538) @@ -10,7 +10,7 @@ .SUFFIXES: .c .o -all: $(OBJS) $(CXXOBJS) +all: dep $(OBJS) $(CXXOBJS) .c.o: $(CC) -c $(CFLAGS) -o $@ $< @@ -23,9 +23,9 @@ distclean: rm -f Makefile.bak *.o *.a *~ .depend -dep: depend +dep: .depend -depend: +.depend: $(SRCS) $(CXXSRCS) $(CXX) -MM $(CXXFLAGS) $(SRCS) $(CXXSRCS) 1>.depend # Modified: mplayerxp/libmpstream/realrtsp/Makefile =================================================================== --- mplayerxp/libmpstream/realrtsp/Makefile 2012-12-11 13:30:51 UTC (rev 537) +++ mplayerxp/libmpstream/realrtsp/Makefile 2012-12-11 14:15:08 UTC (rev 538) @@ -12,7 +12,7 @@ .SUFFIXES: .c .o -all: $(OBJS) $(CXXOBJS) +all: dep $(OBJS) $(CXXOBJS) .c.o: $(CC) -c $(CFLAGS) -o $@ $< @@ -25,9 +25,9 @@ distclean: rm -f Makefile.bak *.o *.a *~ .depend -dep: depend +dep: .depend -depend: +.depend: $(SRCS) $(CXXSRCS) $(CXX) -MM $(CXXFLAGS) $(SRCS) $(CXXSRCS) 1>.depend # Modified: mplayerxp/libmpstream/tvi/Makefile =================================================================== --- mplayerxp/libmpstream/tvi/Makefile 2012-12-11 13:30:51 UTC (rev 537) +++ mplayerxp/libmpstream/tvi/Makefile 2012-12-11 14:15:08 UTC (rev 538) @@ -10,7 +10,7 @@ .SUFFIXES: .c .o -all: $(OBJS) $(CXXOBJS) +all: dep $(OBJS) $(CXXOBJS) .c.o: $(CC) -c $(CFLAGS) -o $@ $< @@ -23,9 +23,9 @@ distclean: rm -f Makefile.bak *.o *.a *~ .depend -dep: depend +dep: .depend -depend: +.depend: $(SRCS) $(CXXSRCS) $(CXX) -MM $(CFLAGS) $(SRCS) $(CXXSRCS) 1>.depend # Modified: mplayerxp/libmpsub/Makefile =================================================================== --- mplayerxp/libmpsub/Makefile 2012-12-11 13:30:51 UTC (rev 537) +++ mplayerxp/libmpsub/Makefile 2012-12-11 14:15:08 UTC (rev 538) @@ -19,7 +19,7 @@ .PHONY: $(SUBDIRS) -all: $(LIBNAME) +all: dep $(LIBNAME) $(SUBDIRS): $(DO_ALL) @@ -40,9 +40,9 @@ $(DO_MAKE) rm -f test Makefile.bak *.o *.a *~ .depend -dep: depend +dep: .depend -depend: +.depend: $(SRCS) $(CXXSRCS) $(DO_MAKE) $(CC) -MM $(CFLAGS) $(SRCS) $(CXXSRCS) 1>.depend Modified: mplayerxp/libplaytree/Makefile =================================================================== --- mplayerxp/libplaytree/Makefile 2012-12-11 13:30:51 UTC (rev 537) +++ mplayerxp/libplaytree/Makefile 2012-12-11 14:15:08 UTC (rev 538) @@ -19,7 +19,7 @@ .PHONY: $(SUBDIRS) -all: $(LIBNAME) +all: dep $(LIBNAME) $(SUBDIRS): $(DO_ALL) @@ -40,9 +40,9 @@ $(DO_MAKE) rm -f test Makefile.bak *.o *.a *~ .depend -dep: depend +dep: .depend -depend: +.depend: $(SRCS) $(CXXSRCS) $(DO_MAKE) $(CC) -MM $(CFLAGS) $(SRCS) $(CXXSRCS) 1>.depend Modified: mplayerxp/libvo/Makefile =================================================================== --- mplayerxp/libvo/Makefile 2012-12-11 13:30:51 UTC (rev 537) +++ mplayerxp/libvo/Makefile 2012-12-11 14:15:08 UTC (rev 538) @@ -49,7 +49,7 @@ $(LIBNAME): $(OBJS) $(CXXOBJS) $(AR) r $(LIBNAME) $(OBJS) $(CXXOBJS) -all: $(LIBNAME) +all: dep $(LIBNAME) clean: rm -f *.o *.a *~ @@ -57,9 +57,9 @@ distclean: rm -f Makefile.bak *.o *.a *~ .depend -dep: depend +dep: .depend -depend: +.depend: $(SRCS) $(CXXSRCS) $(CXX) -MM $(CXXFLAGS) $(SRCS) $(CXXSRCS) 1>.depend # Modified: mplayerxp/loader/Makefile =================================================================== --- mplayerxp/loader/Makefile 2012-12-11 13:30:51 UTC (rev 537) +++ mplayerxp/loader/Makefile 2012-12-11 14:15:08 UTC (rev 538) @@ -47,7 +47,7 @@ .PHONY: $(SUBDIRS) -all: $(LIBNAME) +all: dep $(LIBNAME) $(SUBDIRS): $(DO_ALL) @@ -73,9 +73,9 @@ $(wildcard dshow/*.o) \ $(wildcard dmo/*.o) -dep: depend +dep: .depend -depend: +.depend: $(SRCS) $(CXXSRCS) $(DO_MAKE) $(CC) -MM $(CFLAGS) $(SRCS) 1>.depend Modified: mplayerxp/nls/Makefile =================================================================== --- mplayerxp/nls/Makefile 2012-12-11 13:30:51 UTC (rev 537) +++ mplayerxp/nls/Makefile 2012-12-11 14:15:08 UTC (rev 538) @@ -18,7 +18,7 @@ $(LIBNAME): $(OBJS) $(AR) r $(LIBNAME) $(OBJS) -all: $(LIBNAME) +all: dep $(LIBNAME) clean: rm -f *.o *.a *~ @@ -26,9 +26,9 @@ distclean: rm -f Makefile.bak *.o *.a *~ .depend -dep: depend +dep: .depend -depend: +.depend: $(SRCS) $(CXXSRCS) $(CXX) -MM $(CXXFLAGS) $(SRCS) 1>.depend # Modified: mplayerxp/osdep/Makefile =================================================================== --- mplayerxp/osdep/Makefile 2012-12-11 13:30:51 UTC (rev 537) +++ mplayerxp/osdep/Makefile 2012-12-11 14:15:08 UTC (rev 538) @@ -33,7 +33,7 @@ $(LIBNAME): $(CXXOBJS) $(OBJS) $(AR) r $(LIBNAME) $(CXXOBJS) $(OBJS) -all: $(LIBNAME) +all: dep $(LIBNAME) clean: rm -f *.o *.a *~ @@ -41,9 +41,9 @@ distclean: rm -f Makefile.bak *.o *.a *~ .depend -dep: depend +dep: .depend -depend: +.depend: $(SRCS) $(CXXSRCS) $(CXX) -MM $(CXXFLAGS) $(CXXSRCS) $(SRCS) 1>.depend # Modified: mplayerxp/postproc/Makefile =================================================================== --- mplayerxp/postproc/Makefile 2012-12-11 13:30:51 UTC (rev 537) +++ mplayerxp/postproc/Makefile 2012-12-11 14:15:08 UTC (rev 538) @@ -80,7 +80,7 @@ .PHONY: $(SUBDIRS) -all: $(LIBNAME) +all: dep $(LIBNAME) $(SUBDIRS): $(DO_ALL) @@ -103,9 +103,9 @@ $(DO_MAKE) rm -f Makefile.bak *.o *.a *~ .depend -dep: depend +dep: .depend -depend: +.depend: $(SRCS) $(CXXSRCS) $(DO_MAKE) $(CC) -MM $(CFLAGS) $(SRCS) $(CXXSRCS) 1>.depend Modified: mplayerxp/postproc/libmenu/Makefile =================================================================== --- mplayerxp/postproc/libmenu/Makefile 2012-12-11 13:30:51 UTC (rev 537) +++ mplayerxp/postproc/libmenu/Makefile 2012-12-11 14:15:08 UTC (rev 538) @@ -17,7 +17,7 @@ .SUFFIXES: .c .o -all: $(OBJS) $(CXXOBJS) +all: dep $(OBJS) $(CXXOBJS) .c.o: $(CC) -c $(CFLAGS) -o $@ $< @@ -30,9 +30,9 @@ distclean: rm -f Makefile.bak *.o *.a *~ .depend -dep: depend +dep: .depend -depend: +.depend: $(SRCS) $(CXXSRCS) $(CC) -MM $(CFLAGS) $(SRCS) $(CXXSRCS) 1>.depend # Modified: mplayerxp/xmpcore/Makefile =================================================================== --- mplayerxp/xmpcore/Makefile 2012-12-11 13:30:51 UTC (rev 537) +++ mplayerxp/xmpcore/Makefile 2012-12-11 14:15:08 UTC (rev 538) @@ -19,7 +19,7 @@ $(LIBNAME): $(OBJS) $(AR) r $(LIBNAME) $(OBJS) -all: $(LIBNAME) +all: dep $(LIBNAME) clean: rm -f *.o *.a *~ @@ -27,9 +27,9 @@ distclean: rm -f Makefile.bak *.o *.a *~ .depend -dep: depend +dep: .depend -depend: +.depend: $(SRCS) $(CXXSRCS) $(CXX) -MM $(CXXFLAGS) $(SRCS) 1>.depend # Modified: mplayerxp/xmpcore/mp_image.cpp =================================================================== --- mplayerxp/xmpcore/mp_image.cpp 2012-12-11 13:30:51 UTC (rev 537) +++ mplayerxp/xmpcore/mp_image.cpp 2012-12-11 14:15:08 UTC (rev 538) @@ -143,7 +143,7 @@ } mp_image_t* new_mp_image(unsigned w,unsigned h,unsigned xp_idx){ - mp_image_t* mpi=(mp_image_t*)mp_mallocz(sizeof(mp_image_t)); + mp_image_t* mpi=new(zeromem) mp_image_t; if(!mpi) return NULL; // error! mpi->xp_idx = xp_idx; mpi->width=mpi->w=w; Modified: mplayerxp/xmpcore/xmp_adecoder.cpp =================================================================== --- mplayerxp/xmpcore/xmp_adecoder.cpp 2012-12-11 13:30:51 UTC (rev 537) +++ mplayerxp/xmpcore/xmp_adecoder.cpp 2012-12-11 14:15:08 UTC (rev 538) @@ -66,9 +66,9 @@ int init_audio_buffer( int size, int min_reserv, int indices, sh_audio_t *sha ) { MSG_V("Using audio buffer %i bytes (min reserve = %i, indices %i)\n",size,min_reserv, indices); - if( !(audio_buffer.buffer = (unsigned char*)mp_malloc(size)) ) + if( !(audio_buffer.buffer = new unsigned char[size]) ) return ENOMEM; - if( !(audio_buffer.indices = (audio_buffer_index_t*)mp_malloc(indices*sizeof(audio_buffer_index_t))) ) { + if( !(audio_buffer.indices = new audio_buffer_index_t[indices])) { delete audio_buffer.buffer; audio_buffer.buffer=NULL; return ENOMEM; @@ -384,9 +384,9 @@ int xp_thread_decode_audio(Demuxer_Stream *d_audio) { - sh_audio_t* sh_audio=reinterpret_cast<sh_audio_t*>(mpxp_context().engine().xp_core->audio->sh); + sh_audio_t* sh_audio=static_cast<sh_audio_t*>(mpxp_context().engine().xp_core->audio->sh); sh_video_t* sh_video=NULL; - if(mpxp_context().engine().xp_core->video) sh_video=reinterpret_cast<sh_video_t*>(mpxp_context().engine().xp_core->video->sh); + if(mpxp_context().engine().xp_core->video) sh_video=static_cast<sh_video_t*>(mpxp_context().engine().xp_core->video->sh); int free_buf, vbuf_size, pref_buf; unsigned len=0; @@ -426,7 +426,7 @@ any_t* a_dec_ahead_routine( any_t* arg ) { mpxp_thread_t* priv=reinterpret_cast<mpxp_thread_t*>(arg); - sh_audio_t* sh_audio=reinterpret_cast<sh_audio_t*>(priv->dae->sh); + sh_audio_t* sh_audio=static_cast<sh_audio_t*>(priv->dae->sh); Demuxer_Stream *d_audio=sh_audio->ds; int ret; Modified: mplayerxp/xmpcore/xmp_aplayer.cpp =================================================================== --- mplayerxp/xmpcore/xmp_aplayer.cpp 2012-12-11 13:30:51 UTC (rev 537) +++ mplayerxp/xmpcore/xmp_aplayer.cpp 2012-12-11 14:15:08 UTC (rev 538) @@ -134,10 +134,10 @@ any_t* audio_play_routine( any_t* arg ) { mpxp_thread_t* priv=reinterpret_cast<mpxp_thread_t*>(arg); - sh_audio_t* sh_audio=reinterpret_cast<sh_audio_t*>(priv->dae->sh); + sh_audio_t* sh_audio=static_cast<sh_audio_t*>(priv->dae->sh); Demuxer_Stream *d_audio=sh_audio->ds; Demuxer *demuxer=d_audio->demuxer; - sh_video_t* sh_video=reinterpret_cast<sh_video_t*>(demuxer->video->sh); + sh_video_t* sh_video=static_cast<sh_video_t*>(demuxer->video->sh); int eof = 0; struct timeval now; Modified: mplayerxp/xmpcore/xmp_core.cpp =================================================================== --- mplayerxp/xmpcore/xmp_core.cpp 2012-12-11 13:30:51 UTC (rev 537) +++ mplayerxp/xmpcore/xmp_core.cpp 2012-12-11 14:15:08 UTC (rev 538) @@ -71,7 +71,7 @@ unsigned xmp_register_main(sig_handler_t sigfunc) { unsigned idx=0; - mpxp_context().engine().xp_core->mpxp_threads[idx]=(mpxp_thread_t*)mp_mallocz(sizeof(mpxp_thread_t)); + mpxp_context().engine().xp_core->mpxp_threads[idx]=new(zeromem) mpxp_thread_t; mpxp_context().engine().xp_core->mpxp_threads[idx]->p_idx=idx; mpxp_context().engine().xp_core->mpxp_threads[idx]->pid=getpid(); mpxp_context().engine().xp_core->main_pth_id=mpxp_context().engine().xp_core->mpxp_threads[idx]->pth_id=pthread_self(); @@ -110,10 +110,10 @@ it->num_decoded_frames=0; } -void dae_init(dec_ahead_engine_t* it,unsigned nframes,any_t* sh) +void dae_init(dec_ahead_engine_t* it,unsigned nframes,Opaque* sh) { it->nframes=nframes; - it->frame = (xmp_frame_t*)mp_malloc(sizeof(xmp_frame_t)*nframes); + it->frame = new(zeromem) xmp_frame_t[nframes]; it->sh=sh; dae_reset(it); } @@ -243,7 +243,7 @@ { mpxp_context().engine().xp_core->flags=xmp_engine_compute_model(shv,sha); if(shv) { - mpxp_context().engine().xp_core->video=(dec_ahead_engine_t*)mp_mallocz(sizeof(dec_ahead_engine_t)); + mpxp_context().engine().xp_core->video=new(zeromem) dec_ahead_engine_t; dae_init(mpxp_context().engine().xp_core->video,mpxp_context().engine().xp_core->num_v_buffs,shv); } if(sha) { @@ -262,7 +262,7 @@ min_reserv = (float)min_reserv * (float)o_bps / (float)sha->o_bps; init_audio_buffer(asize+min_reserv,min_reserv+MIN_BUFFER_RESERV,asize/(sha->audio_out_minsize<10000?sha->audio_out_minsize:4000)+100,sha); } - mpxp_context().engine().xp_core->audio=(dec_ahead_engine_t*)mp_mallocz(sizeof(dec_ahead_engine_t)); + mpxp_context().engine().xp_core->audio=new(zeromem) dec_ahead_engine_t; dae_init(mpxp_context().engine().xp_core->audio,mpxp_context().engine().xp_core->num_a_buffs,sha); } return 0; @@ -302,7 +302,7 @@ /* requires root privelegies */ pthread_attr_setschedpolicy(&attr,SCHED_FIFO); #endif - mpxp_context().engine().xp_core->mpxp_threads[idx]=(mpxp_thread_t*)mp_mallocz(sizeof(mpxp_thread_t)); + mpxp_context().engine().xp_core->mpxp_threads[idx]=new(zeromem) mpxp_thread_t; mpxp_context().engine().xp_core->mpxp_threads[idx]->p_idx=idx; mpxp_context().engine().xp_core->mpxp_threads[idx]->name=name; Modified: mplayerxp/xmpcore/xmp_core.h =================================================================== --- mplayerxp/xmpcore/xmp_core.h 2012-12-11 13:30:51 UTC (rev 537) +++ mplayerxp/xmpcore/xmp_core.h 2012-12-11 14:15:08 UTC (rev 538) @@ -10,6 +10,7 @@ #include <inttypes.h> #include <pthread.h> +#include "mp_config.h" #include "osdep/mplib.h" using namespace mpxp; @@ -38,7 +39,7 @@ volatile unsigned decoder_idx; /* index of frame which is currently decoded */ unsigned nframes; /* number of frames in buffer */ xmp_frame_t* frame; /* frame related attributes */ - any_t* sh; /* corresponded sh_audio_t or sh_video_t */ + Opaque* sh; /* corresponded sh_audio_t or sh_video_t */ int eof; /* EOF for stream */ /* methods */ func_new_frame_priv_t new_priv; @@ -132,7 +133,7 @@ int xmp_run_players( void ); void xmp_reset_sh_video(sh_video_t* shv); - void dae_init(dec_ahead_engine_t* it,unsigned nframes,any_t* sh); + void dae_init(dec_ahead_engine_t* it,unsigned nframes,Opaque* sh); void dae_uninit(dec_ahead_engine_t* it); void dae_reset(dec_ahead_engine_t* it); /* after mpxp_seek */ Modified: mplayerxp/xmpcore/xmp_vdecoder.cpp =================================================================== --- mplayerxp/xmpcore/xmp_vdecoder.cpp 2012-12-11 13:30:51 UTC (rev 537) +++ mplayerxp/xmpcore/xmp_vdecoder.cpp 2012-12-11 14:15:08 UTC (rev 538) @@ -116,7 +116,7 @@ any_t* xmp_video_decoder( any_t* arg ) { mpxp_thread_t* priv=reinterpret_cast<mpxp_thread_t*>(arg); - sh_video_t* sh_video=reinterpret_cast<sh_video_t*>(priv->dae->sh); + sh_video_t* sh_video=static_cast<sh_video_t*>(priv->dae->sh); Demuxer_Stream *d_video=sh_video->ds; Demuxer* demuxer=d_video->demuxer; Demuxer_Stream* d_audio=demuxer->audio; Modified: mplayerxp/xmpcore/xmp_vplayer.cpp =================================================================== --- mplayerxp/xmpcore/xmp_vplayer.cpp 2012-12-11 13:30:51 UTC (rev 537) +++ mplayerxp/xmpcore/xmp_vplayer.cpp 2012-12-11 14:15:08 UTC (rev 538) @@ -273,10 +273,10 @@ any_t* xmp_video_player( any_t* arg ) { mpxp_thread_t* priv=reinterpret_cast<mpxp_thread_t*>(arg); - sh_video_t* sh_video=reinterpret_cast<sh_video_t*>(priv->dae->sh); + sh_video_t* sh_video=static_cast<sh_video_t*>(priv->dae->sh); Demuxer_Stream *d_video=sh_video->ds; Demuxer *demuxer=d_video->demuxer; - sh_audio_t* sh_audio=reinterpret_cast<sh_audio_t*>(demuxer->audio->sh); + sh_audio_t* sh_audio=static_cast<sh_audio_t*>(demuxer->audio->sh); priv->state=Pth_Run; priv->dae->eof = 0; This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <nic...@us...> - 2012-12-11 16:00:52
|
Revision: 540 http://mplayerxp.svn.sourceforge.net/mplayerxp/?rev=540&view=rev Author: nickols_k Date: 2012-12-11 16:00:46 +0000 (Tue, 11 Dec 2012) Log Message: ----------- rename libmpstream -> libmpstream2 (TRANSACTION BEGIN) Added Paths: ----------- mplayerxp/libmpstream2/ Removed Paths: ------------- mplayerxp/libmpstream/ This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <nic...@us...> - 2012-12-11 16:06:17
|
Revision: 541 http://mplayerxp.svn.sourceforge.net/mplayerxp/?rev=541&view=rev Author: nickols_k Date: 2012-12-11 16:06:04 +0000 (Tue, 11 Dec 2012) Log Message: ----------- rename libmpstream -> libmpstream2 (TRANSACTION END) Modified Paths: -------------- mplayerxp/Makefile mplayerxp/dump.cpp mplayerxp/libao2/ao_alsa9.cpp mplayerxp/libao2/ao_null.cpp mplayerxp/libmpcodecs/ad.cpp mplayerxp/libmpcodecs/ad_libdv.cpp mplayerxp/libmpcodecs/dec_audio.cpp mplayerxp/libmpcodecs/dec_video.cpp mplayerxp/libmpcodecs/vd.cpp mplayerxp/libmpcodecs/vd_libdv.cpp mplayerxp/libmpconf/m_option.cpp mplayerxp/libmpdemux/aviprint.cpp mplayerxp/libmpdemux/demux_ac3.cpp mplayerxp/libmpdemux/demux_aiff.cpp mplayerxp/libmpdemux/demux_asf.cpp mplayerxp/libmpdemux/demux_avi.cpp mplayerxp/libmpdemux/demux_bmp.cpp mplayerxp/libmpdemux/demux_dca.cpp mplayerxp/libmpdemux/demux_demuxers.cpp mplayerxp/libmpdemux/demux_dv.cpp mplayerxp/libmpdemux/demux_film.cpp mplayerxp/libmpdemux/demux_flac.cpp mplayerxp/libmpdemux/demux_fli.cpp mplayerxp/libmpdemux/demux_lavf.cpp mplayerxp/libmpdemux/demux_mkv.cpp mplayerxp/libmpdemux/demux_mov.cpp mplayerxp/libmpdemux/demux_mp3.cpp mplayerxp/libmpdemux/demux_mpg.cpp mplayerxp/libmpdemux/demux_mpxp64.cpp mplayerxp/libmpdemux/demux_musepack.cpp mplayerxp/libmpdemux/demux_nsv.cpp mplayerxp/libmpdemux/demux_null.cpp mplayerxp/libmpdemux/demux_nuv.cpp mplayerxp/libmpdemux/demux_ogg.cpp mplayerxp/libmpdemux/demux_pva.cpp mplayerxp/libmpdemux/demux_rawaudio.cpp mplayerxp/libmpdemux/demux_rawvideo.cpp mplayerxp/libmpdemux/demux_real.cpp mplayerxp/libmpdemux/demux_realaud.cpp mplayerxp/libmpdemux/demux_roq.cpp mplayerxp/libmpdemux/demux_smjpeg.cpp mplayerxp/libmpdemux/demux_snd_au.cpp mplayerxp/libmpdemux/demux_ts.cpp mplayerxp/libmpdemux/demux_ty.cpp mplayerxp/libmpdemux/demux_viv.cpp mplayerxp/libmpdemux/demux_voc.cpp mplayerxp/libmpdemux/demux_vqf.cpp mplayerxp/libmpdemux/demux_wav.cpp mplayerxp/libmpdemux/demux_y4m.cpp mplayerxp/libmpdemux/demuxer.cpp mplayerxp/libmpdemux/demuxer_r.cpp mplayerxp/libmpdemux/demuxer_stream.cpp mplayerxp/libmpdemux/mux_lavf.cpp mplayerxp/libmpdemux/mux_mpxp64.cpp mplayerxp/libmpdemux/parse_es.cpp mplayerxp/libmpdemux/parse_mp4.cpp mplayerxp/libmpdemux/stheader.cpp mplayerxp/libmpdemux/yuv4mpeg.cpp mplayerxp/libmpstream2/Makefile mplayerxp/libmpstream2/librtsp/rtsp.h mplayerxp/libmpsub/vobsub.cpp mplayerxp/libplaytree/asxparser.cpp mplayerxp/libplaytree/playtree.cpp mplayerxp/libplaytree/playtreeparser.cpp mplayerxp/libvo/sub.cpp mplayerxp/libvo/vo_fbdev.cpp mplayerxp/mp-opt-reg.cpp mplayerxp/mplayerxp.cpp Modified: mplayerxp/Makefile =================================================================== --- mplayerxp/Makefile 2012-12-11 16:00:46 UTC (rev 540) +++ mplayerxp/Makefile 2012-12-11 16:06:04 UTC (rev 541) @@ -11,7 +11,7 @@ TARGET_EXE = $(PROGNAME) # these subdirectories required installation due binaries within them -SUBDIRS = libmpdemux libmpstream libmpsub libplaytree libmpcodecs libmpconf libao2 osdep postproc input2 nls libvo xmpcore +SUBDIRS = libmpdemux libmpstream2 libmpsub libplaytree libmpcodecs libmpconf libao2 osdep postproc input2 nls libvo xmpcore ifeq ($(ENABLE_WIN32LOADER),yes) SUBDIRS+=loader endif @@ -32,7 +32,7 @@ ../lavc/libavformat/libavformat$(LAVC_SUFFIX).a \ ../lavc/libavutil/libavutil$(LAVC_SUFFIX).a -MP_LIBS = libmpstream/libmpstream.a \ +MP_LIBS = libmpstream2/libmpstream2.a \ libmpdemux/libmpdemux.a \ libmpcodecs/libmpcodecs.a \ libmpsub/libmpsub.a \ Modified: mplayerxp/dump.cpp =================================================================== --- mplayerxp/dump.cpp 2012-12-11 16:00:46 UTC (rev 540) +++ mplayerxp/dump.cpp 2012-12-11 16:06:04 UTC (rev 541) @@ -15,8 +15,8 @@ #include "input2/input.h" #include "mplayerxp.h" #include "libmpdemux/muxer.h" -#include "libmpstream/stream.h" -#include "libmpstream/mrl.h" +#include "libmpstream2/stream.h" +#include "libmpstream2/mrl.h" #define MSGT_CLASS MSGT_GLOBAL #include "mp_msg.h" #include "dump.h" Modified: mplayerxp/libao2/ao_alsa9.cpp =================================================================== --- mplayerxp/libao2/ao_alsa9.cpp 2012-12-11 16:00:46 UTC (rev 540) +++ mplayerxp/libao2/ao_alsa9.cpp 2012-12-11 16:06:04 UTC (rev 541) @@ -29,7 +29,7 @@ #include "audio_out_internal.h" #include "afmt.h" #include "ao_msg.h" -#include "libmpstream/mrl.h" +#include "libmpstream2/mrl.h" static ao_info_t info = { Modified: mplayerxp/libao2/ao_null.cpp =================================================================== --- mplayerxp/libao2/ao_null.cpp 2012-12-11 16:00:46 UTC (rev 540) +++ mplayerxp/libao2/ao_null.cpp 2012-12-11 16:06:04 UTC (rev 541) @@ -10,7 +10,7 @@ #include "osdep/bswap.h" -#include "libmpstream/mrl.h" +#include "libmpstream2/mrl.h" #include "afmt.h" #include "audio_out.h" #include "audio_out_internal.h" Modified: mplayerxp/libmpcodecs/ad.cpp =================================================================== --- mplayerxp/libmpcodecs/ad.cpp 2012-12-11 16:00:46 UTC (rev 540) +++ mplayerxp/libmpcodecs/ad.cpp 2012-12-11 16:06:04 UTC (rev 541) @@ -9,7 +9,7 @@ #include <stdlib.h> #include <string.h> -#include "libmpstream/stream.h" +#include "libmpstream2/stream.h" #include "libmpdemux/demuxer.h" #include "libmpdemux/stheader.h" #include "ad.h" Modified: mplayerxp/libmpcodecs/ad_libdv.cpp =================================================================== --- mplayerxp/libmpcodecs/ad_libdv.cpp 2012-12-11 16:00:46 UTC (rev 540) +++ mplayerxp/libmpcodecs/ad_libdv.cpp 2012-12-11 16:06:04 UTC (rev 541) @@ -13,7 +13,7 @@ #include <libdv/dv.h> #include <libdv/dv_types.h> -#include "libmpstream/stream.h" +#include "libmpstream2/stream.h" #include "libmpdemux/demuxer.h" #include "libmpdemux/stheader.h" #include "libao2/afmt.h" Modified: mplayerxp/libmpcodecs/dec_audio.cpp =================================================================== --- mplayerxp/libmpcodecs/dec_audio.cpp 2012-12-11 16:00:46 UTC (rev 540) +++ mplayerxp/libmpcodecs/dec_audio.cpp 2012-12-11 16:06:04 UTC (rev 541) @@ -12,7 +12,7 @@ #include "mplayerxp.h" #include "xmpcore/xmp_core.h" -#include "libmpstream/stream.h" +#include "libmpstream2/stream.h" #include "libmpdemux/demuxer.h" #include "libmpdemux/stheader.h" #include "libmpconf/codec-cfg.h" Modified: mplayerxp/libmpcodecs/dec_video.cpp =================================================================== --- mplayerxp/libmpcodecs/dec_video.cpp 2012-12-11 16:00:46 UTC (rev 540) +++ mplayerxp/libmpcodecs/dec_video.cpp 2012-12-11 16:06:04 UTC (rev 541) @@ -16,7 +16,7 @@ #include "osdep/timer.h" #include "osdep/shmem.h" -#include "libmpstream/stream.h" +#include "libmpstream2/stream.h" #include "libmpdemux/demuxer.h" #include "libmpdemux/parse_es.h" #include "libmpdemux/stheader.h" Modified: mplayerxp/libmpcodecs/vd.cpp =================================================================== --- mplayerxp/libmpcodecs/vd.cpp 2012-12-11 16:00:46 UTC (rev 540) +++ mplayerxp/libmpcodecs/vd.cpp 2012-12-11 16:06:04 UTC (rev 541) @@ -12,7 +12,7 @@ #include "libvo/img_format.h" -#include "libmpstream/stream.h" +#include "libmpstream2/stream.h" #include "libmpdemux/demuxer.h" #include "libmpdemux/stheader.h" #include "vd.h" Modified: mplayerxp/libmpcodecs/vd_libdv.cpp =================================================================== --- mplayerxp/libmpcodecs/vd_libdv.cpp 2012-12-11 16:00:46 UTC (rev 540) +++ mplayerxp/libmpcodecs/vd_libdv.cpp 2012-12-11 16:06:04 UTC (rev 541) @@ -14,7 +14,7 @@ #include <libdv/dv.h> #include <libdv/dv_types.h> -#include "libmpstream/stream.h" +#include "libmpstream2/stream.h" #include "libmpdemux/demuxer.h" #include "libmpdemux/stheader.h" Modified: mplayerxp/libmpconf/m_option.cpp =================================================================== --- mplayerxp/libmpconf/m_option.cpp 2012-12-11 16:00:46 UTC (rev 540) +++ mplayerxp/libmpconf/m_option.cpp 2012-12-11 16:06:04 UTC (rev 541) @@ -15,7 +15,7 @@ #include "cfgparser.h" #include "m_option.h" -#include "libmpstream/url.h" +#include "libmpstream2/url.h" #define MSGT_CLASS MSGT_CPLAYER #include "mp_msg.h" Modified: mplayerxp/libmpdemux/aviprint.cpp =================================================================== --- mplayerxp/libmpdemux/aviprint.cpp 2012-12-11 16:00:46 UTC (rev 540) +++ mplayerxp/libmpdemux/aviprint.cpp 2012-12-11 16:06:04 UTC (rev 541) @@ -6,7 +6,7 @@ #include <stdlib.h> #include <unistd.h> -#include "libmpstream/stream.h" +#include "libmpstream2/stream.h" #include "demuxer.h" #include "aviprint.h" #include "demux_msg.h" Modified: mplayerxp/libmpdemux/demux_ac3.cpp =================================================================== --- mplayerxp/libmpdemux/demux_ac3.cpp 2012-12-11 16:00:46 UTC (rev 540) +++ mplayerxp/libmpdemux/demux_ac3.cpp 2012-12-11 16:06:04 UTC (rev 541) @@ -11,7 +11,7 @@ #include <assert.h> #endif -#include "libmpstream/stream.h" +#include "libmpstream2/stream.h" #include "demuxer.h" #include "demuxer_internal.h" #include "stheader.h" Modified: mplayerxp/libmpdemux/demux_aiff.cpp =================================================================== --- mplayerxp/libmpdemux/demux_aiff.cpp 2012-12-11 16:00:46 UTC (rev 540) +++ mplayerxp/libmpdemux/demux_aiff.cpp 2012-12-11 16:06:04 UTC (rev 541) @@ -5,7 +5,7 @@ #include <stdio.h> #include "osdep/bswap.h" -#include "libmpstream/stream.h" +#include "libmpstream2/stream.h" #include "demuxer.h" #include "demuxer_internal.h" #include "stheader.h" Modified: mplayerxp/libmpdemux/demux_asf.cpp =================================================================== --- mplayerxp/libmpdemux/demux_asf.cpp 2012-12-11 16:00:46 UTC (rev 540) +++ mplayerxp/libmpdemux/demux_asf.cpp 2012-12-11 16:06:04 UTC (rev 541) @@ -10,7 +10,7 @@ #include "help_mp.h" #include "osdep/bswap.h" -#include "libmpstream/stream.h" +#include "libmpstream2/stream.h" #include "asf.h" #include "demuxer.h" #include "demuxer_internal.h" Modified: mplayerxp/libmpdemux/demux_avi.cpp =================================================================== --- mplayerxp/libmpdemux/demux_avi.cpp 2012-12-11 16:00:46 UTC (rev 540) +++ mplayerxp/libmpdemux/demux_avi.cpp 2012-12-11 16:06:04 UTC (rev 541) @@ -11,7 +11,7 @@ #include "help_mp.h" -#include "libmpstream/stream.h" +#include "libmpstream2/stream.h" #include "demuxer.h" #include "demuxer_internal.h" #include "stheader.h" Modified: mplayerxp/libmpdemux/demux_bmp.cpp =================================================================== --- mplayerxp/libmpdemux/demux_bmp.cpp 2012-12-11 16:00:46 UTC (rev 540) +++ mplayerxp/libmpdemux/demux_bmp.cpp 2012-12-11 16:06:04 UTC (rev 541) @@ -13,7 +13,7 @@ #include "help_mp.h" -#include "libmpstream/stream.h" +#include "libmpstream2/stream.h" #include "demuxer.h" #include "demuxer_internal.h" #include "stheader.h" Modified: mplayerxp/libmpdemux/demux_dca.cpp =================================================================== --- mplayerxp/libmpdemux/demux_dca.cpp 2012-12-11 16:00:46 UTC (rev 540) +++ mplayerxp/libmpdemux/demux_dca.cpp 2012-12-11 16:06:04 UTC (rev 541) @@ -11,7 +11,7 @@ #include <assert.h> #endif -#include "libmpstream/stream.h" +#include "libmpstream2/stream.h" #include "demuxer.h" #include "demuxer_internal.h" #include "stheader.h" Modified: mplayerxp/libmpdemux/demux_demuxers.cpp =================================================================== --- mplayerxp/libmpdemux/demux_demuxers.cpp 2012-12-11 16:00:46 UTC (rev 540) +++ mplayerxp/libmpdemux/demux_demuxers.cpp 2012-12-11 16:06:04 UTC (rev 541) @@ -4,7 +4,7 @@ #include <stdlib.h> #include <stdio.h> -#include "libmpstream/stream.h" +#include "libmpstream2/stream.h" #include "demuxer.h" #include "stheader.h" #include "demux_msg.h" Modified: mplayerxp/libmpdemux/demux_dv.cpp =================================================================== --- mplayerxp/libmpdemux/demux_dv.cpp 2012-12-11 16:00:46 UTC (rev 540) +++ mplayerxp/libmpdemux/demux_dv.cpp 2012-12-11 16:06:04 UTC (rev 541) @@ -32,7 +32,7 @@ #include <libdv/dv_types.h> #include "demux_msg.h" -#include "libmpstream/stream.h" +#include "libmpstream2/stream.h" #include "demuxer.h" #include "demuxer_internal.h" #include "stheader.h" Modified: mplayerxp/libmpdemux/demux_film.cpp =================================================================== --- mplayerxp/libmpdemux/demux_film.cpp 2012-12-11 16:00:46 UTC (rev 540) +++ mplayerxp/libmpdemux/demux_film.cpp 2012-12-11 16:06:04 UTC (rev 541) @@ -21,7 +21,7 @@ #include "help_mp.h" #include "osdep/bswap.h" -#include "libmpstream/stream.h" +#include "libmpstream2/stream.h" #include "demuxer.h" #include "demuxer_internal.h" #include "stheader.h" Modified: mplayerxp/libmpdemux/demux_flac.cpp =================================================================== --- mplayerxp/libmpdemux/demux_flac.cpp 2012-12-11 16:00:46 UTC (rev 540) +++ mplayerxp/libmpdemux/demux_flac.cpp 2012-12-11 16:06:04 UTC (rev 541) @@ -11,7 +11,7 @@ #include <assert.h> #endif -#include "libmpstream/stream.h" +#include "libmpstream2/stream.h" #include "demuxer.h" #include "demuxer_internal.h" #include "stheader.h" Modified: mplayerxp/libmpdemux/demux_fli.cpp =================================================================== --- mplayerxp/libmpdemux/demux_fli.cpp 2012-12-11 16:00:46 UTC (rev 540) +++ mplayerxp/libmpdemux/demux_fli.cpp 2012-12-11 16:06:04 UTC (rev 541) @@ -15,7 +15,7 @@ #include "help_mp.h" -#include "libmpstream/stream.h" +#include "libmpstream2/stream.h" #include "demuxer.h" #include "demuxer_internal.h" #include "stheader.h" Modified: mplayerxp/libmpdemux/demux_lavf.cpp =================================================================== --- mplayerxp/libmpdemux/demux_lavf.cpp 2012-12-11 16:00:46 UTC (rev 540) +++ mplayerxp/libmpdemux/demux_lavf.cpp 2012-12-11 16:06:04 UTC (rev 541) @@ -22,7 +22,7 @@ #include <dlfcn.h> /* GLIBC specific. Exists under cygwin too! */ #include <stdlib.h> -#include "libmpstream/stream.h" +#include "libmpstream2/stream.h" #include "demuxer.h" #include "demuxer_internal.h" #include "stheader.h" Modified: mplayerxp/libmpdemux/demux_mkv.cpp =================================================================== --- mplayerxp/libmpdemux/demux_mkv.cpp 2012-12-11 16:00:46 UTC (rev 540) +++ mplayerxp/libmpdemux/demux_mkv.cpp 2012-12-11 16:06:04 UTC (rev 541) @@ -24,7 +24,7 @@ #include "mplayerxp.h" -#include "libmpstream/stream.h" +#include "libmpstream2/stream.h" #include "demuxer.h" #include "demuxer_internal.h" #include "stheader.h" Modified: mplayerxp/libmpdemux/demux_mov.cpp =================================================================== --- mplayerxp/libmpdemux/demux_mov.cpp 2012-12-11 16:00:46 UTC (rev 540) +++ mplayerxp/libmpdemux/demux_mov.cpp 2012-12-11 16:06:04 UTC (rev 541) @@ -29,7 +29,7 @@ #include "help_mp.h" -#include "libmpstream/stream.h" +#include "libmpstream2/stream.h" #include "demuxer.h" #include "demuxer_internal.h" #include "stheader.h" Modified: mplayerxp/libmpdemux/demux_mp3.cpp =================================================================== --- mplayerxp/libmpdemux/demux_mp3.cpp 2012-12-11 16:00:46 UTC (rev 540) +++ mplayerxp/libmpdemux/demux_mp3.cpp 2012-12-11 16:06:04 UTC (rev 541) @@ -11,7 +11,7 @@ #include <assert.h> #endif -#include "libmpstream/stream.h" +#include "libmpstream2/stream.h" #include "demuxer.h" #include "demuxer_internal.h" #include "stheader.h" Modified: mplayerxp/libmpdemux/demux_mpg.cpp =================================================================== --- mplayerxp/libmpdemux/demux_mpg.cpp 2012-12-11 16:00:46 UTC (rev 540) +++ mplayerxp/libmpdemux/demux_mpg.cpp 2012-12-11 16:06:04 UTC (rev 541) @@ -17,7 +17,7 @@ #include "help_mp.h" #include "osdep/bswap.h" -#include "libmpstream/stream.h" +#include "libmpstream2/stream.h" #include "demuxer.h" #include "demuxer_internal.h" #include "parse_es.h" Modified: mplayerxp/libmpdemux/demux_mpxp64.cpp =================================================================== --- mplayerxp/libmpdemux/demux_mpxp64.cpp 2012-12-11 16:00:46 UTC (rev 540) +++ mplayerxp/libmpdemux/demux_mpxp64.cpp 2012-12-11 16:06:04 UTC (rev 541) @@ -13,7 +13,7 @@ #include "help_mp.h" -#include "libmpstream/stream.h" +#include "libmpstream2/stream.h" #include "demuxer.h" #include "demuxer_internal.h" #include "stheader.h" Modified: mplayerxp/libmpdemux/demux_musepack.cpp =================================================================== --- mplayerxp/libmpdemux/demux_musepack.cpp 2012-12-11 16:00:46 UTC (rev 540) +++ mplayerxp/libmpdemux/demux_musepack.cpp 2012-12-11 16:06:04 UTC (rev 541) @@ -11,7 +11,7 @@ #include <assert.h> #endif -#include "libmpstream/stream.h" +#include "libmpstream2/stream.h" #include "demuxer.h" #include "demuxer_internal.h" #include "stheader.h" Modified: mplayerxp/libmpdemux/demux_nsv.cpp =================================================================== --- mplayerxp/libmpdemux/demux_nsv.cpp 2012-12-11 16:00:46 UTC (rev 540) +++ mplayerxp/libmpdemux/demux_nsv.cpp 2012-12-11 16:06:04 UTC (rev 541) @@ -19,7 +19,7 @@ #include <unistd.h> #include "help_mp.h" -#include "libmpstream/stream.h" +#include "libmpstream2/stream.h" #include "demuxer.h" #include "demuxer_internal.h" #include "stheader.h" Modified: mplayerxp/libmpdemux/demux_null.cpp =================================================================== --- mplayerxp/libmpdemux/demux_null.cpp 2012-12-11 16:00:46 UTC (rev 540) +++ mplayerxp/libmpdemux/demux_null.cpp 2012-12-11 16:06:04 UTC (rev 541) @@ -4,7 +4,7 @@ #include <stdlib.h> #include <stdio.h> -#include "libmpstream/stream.h" +#include "libmpstream2/stream.h" #include "demuxer.h" #include "demuxer_internal.h" #include "stheader.h" Modified: mplayerxp/libmpdemux/demux_nuv.cpp =================================================================== --- mplayerxp/libmpdemux/demux_nuv.cpp 2012-12-11 16:00:46 UTC (rev 540) +++ mplayerxp/libmpdemux/demux_nuv.cpp 2012-12-11 16:06:04 UTC (rev 541) @@ -18,7 +18,7 @@ #include <unistd.h> #include "help_mp.h" -#include "libmpstream/stream.h" +#include "libmpstream2/stream.h" #include "demuxer.h" #include "demuxer_internal.h" #include "stheader.h" Modified: mplayerxp/libmpdemux/demux_ogg.cpp =================================================================== --- mplayerxp/libmpdemux/demux_ogg.cpp 2012-12-11 16:00:46 UTC (rev 540) +++ mplayerxp/libmpdemux/demux_ogg.cpp 2012-12-11 16:06:04 UTC (rev 541) @@ -18,7 +18,7 @@ #include "mplayerxp.h" #include "osdep/bswap.h" #include "help_mp.h" -#include "libmpstream/stream.h" +#include "libmpstream2/stream.h" #include "demuxer.h" #include "demuxer_internal.h" #include "stheader.h" Modified: mplayerxp/libmpdemux/demux_pva.cpp =================================================================== --- mplayerxp/libmpdemux/demux_pva.cpp 2012-12-11 16:00:46 UTC (rev 540) +++ mplayerxp/libmpdemux/demux_pva.cpp 2012-12-11 16:06:04 UTC (rev 541) @@ -31,7 +31,7 @@ #include "help_mp.h" -#include "libmpstream/stream.h" +#include "libmpstream2/stream.h" #include "demuxer.h" #include "demuxer_internal.h" #include "stheader.h" Modified: mplayerxp/libmpdemux/demux_rawaudio.cpp =================================================================== --- mplayerxp/libmpdemux/demux_rawaudio.cpp 2012-12-11 16:00:46 UTC (rev 540) +++ mplayerxp/libmpdemux/demux_rawaudio.cpp 2012-12-11 16:06:04 UTC (rev 541) @@ -5,7 +5,7 @@ #include <stdio.h> #include "mplayerxp.h" -#include "libmpstream/stream.h" +#include "libmpstream2/stream.h" #include "demuxer.h" #include "demuxer_internal.h" #include "stheader.h" Modified: mplayerxp/libmpdemux/demux_rawvideo.cpp =================================================================== --- mplayerxp/libmpdemux/demux_rawvideo.cpp 2012-12-11 16:00:46 UTC (rev 540) +++ mplayerxp/libmpdemux/demux_rawvideo.cpp 2012-12-11 16:06:04 UTC (rev 541) @@ -6,7 +6,7 @@ #include <unistd.h> #include <string.h> -#include "libmpstream/stream.h" +#include "libmpstream2/stream.h" #include "demuxer.h" #include "demuxer_internal.h" #include "stheader.h" Modified: mplayerxp/libmpdemux/demux_real.cpp =================================================================== --- mplayerxp/libmpdemux/demux_real.cpp 2012-12-11 16:00:46 UTC (rev 540) +++ mplayerxp/libmpdemux/demux_real.cpp 2012-12-11 16:06:04 UTC (rev 541) @@ -28,7 +28,7 @@ #include "help_mp.h" -#include "libmpstream/stream.h" +#include "libmpstream2/stream.h" #include "demuxer.h" #include "demuxer_internal.h" #include "stheader.h" Modified: mplayerxp/libmpdemux/demux_realaud.cpp =================================================================== --- mplayerxp/libmpdemux/demux_realaud.cpp 2012-12-11 16:00:46 UTC (rev 540) +++ mplayerxp/libmpdemux/demux_realaud.cpp 2012-12-11 16:06:04 UTC (rev 541) @@ -13,7 +13,7 @@ #include "help_mp.h" -#include "libmpstream/stream.h" +#include "libmpstream2/stream.h" #include "demuxer.h" #include "demuxer_internal.h" #include "stheader.h" Modified: mplayerxp/libmpdemux/demux_roq.cpp =================================================================== --- mplayerxp/libmpdemux/demux_roq.cpp 2012-12-11 16:00:46 UTC (rev 540) +++ mplayerxp/libmpdemux/demux_roq.cpp 2012-12-11 16:06:04 UTC (rev 541) @@ -17,7 +17,7 @@ #include "help_mp.h" -#include "libmpstream/stream.h" +#include "libmpstream2/stream.h" #include "demuxer.h" #include "demuxer_internal.h" #include "stheader.h" Modified: mplayerxp/libmpdemux/demux_smjpeg.cpp =================================================================== --- mplayerxp/libmpdemux/demux_smjpeg.cpp 2012-12-11 16:00:46 UTC (rev 540) +++ mplayerxp/libmpdemux/demux_smjpeg.cpp 2012-12-11 16:06:04 UTC (rev 541) @@ -21,7 +21,7 @@ #include "help_mp.h" -#include "libmpstream/stream.h" +#include "libmpstream2/stream.h" #include "demuxer.h" #include "demuxer_internal.h" #include "stheader.h" Modified: mplayerxp/libmpdemux/demux_snd_au.cpp =================================================================== --- mplayerxp/libmpdemux/demux_snd_au.cpp 2012-12-11 16:00:46 UTC (rev 540) +++ mplayerxp/libmpdemux/demux_snd_au.cpp 2012-12-11 16:06:04 UTC (rev 541) @@ -11,7 +11,7 @@ #include <assert.h> #endif -#include "libmpstream/stream.h" +#include "libmpstream2/stream.h" #include "demuxer.h" #include "demuxer_internal.h" #include "stheader.h" Modified: mplayerxp/libmpdemux/demux_ts.cpp =================================================================== --- mplayerxp/libmpdemux/demux_ts.cpp 2012-12-11 16:00:46 UTC (rev 540) +++ mplayerxp/libmpdemux/demux_ts.cpp 2012-12-11 16:06:04 UTC (rev 541) @@ -32,7 +32,7 @@ #include "mplayerxp.h" #include "help_mp.h" -#include "libmpstream/stream.h" +#include "libmpstream2/stream.h" #include "demuxer.h" #include "demuxer_internal.h" #include "parse_es.h" Modified: mplayerxp/libmpdemux/demux_ty.cpp =================================================================== --- mplayerxp/libmpdemux/demux_ty.cpp 2012-12-11 16:00:46 UTC (rev 540) +++ mplayerxp/libmpdemux/demux_ty.cpp 2012-12-11 16:06:04 UTC (rev 541) @@ -42,7 +42,7 @@ #include "osdep/bswap.h" #include "help_mp.h" -#include "libmpstream/stream.h" +#include "libmpstream2/stream.h" #include "demuxer.h" #include "demuxer_internal.h" #include "parse_es.h" Modified: mplayerxp/libmpdemux/demux_viv.cpp =================================================================== --- mplayerxp/libmpdemux/demux_viv.cpp 2012-12-11 16:00:46 UTC (rev 540) +++ mplayerxp/libmpdemux/demux_viv.cpp 2012-12-11 16:06:04 UTC (rev 541) @@ -14,7 +14,7 @@ #include <string.h> /* strtok */ #include "help_mp.h" -#include "libmpstream/stream.h" +#include "libmpstream2/stream.h" #include "demuxer.h" #include "demuxer_internal.h" #include "stheader.h" Modified: mplayerxp/libmpdemux/demux_voc.cpp =================================================================== --- mplayerxp/libmpdemux/demux_voc.cpp 2012-12-11 16:00:46 UTC (rev 540) +++ mplayerxp/libmpdemux/demux_voc.cpp 2012-12-11 16:06:04 UTC (rev 541) @@ -11,7 +11,7 @@ #include <assert.h> #endif -#include "libmpstream/stream.h" +#include "libmpstream2/stream.h" #include "demuxer.h" #include "demuxer_internal.h" #include "stheader.h" Modified: mplayerxp/libmpdemux/demux_vqf.cpp =================================================================== --- mplayerxp/libmpdemux/demux_vqf.cpp 2012-12-11 16:00:46 UTC (rev 540) +++ mplayerxp/libmpdemux/demux_vqf.cpp 2012-12-11 16:06:04 UTC (rev 541) @@ -7,7 +7,7 @@ #include <stdio.h> #include "osdep/bswap.h" -#include "libmpstream/stream.h" +#include "libmpstream2/stream.h" #include "demuxer.h" #include "demuxer_internal.h" #include "stheader.h" Modified: mplayerxp/libmpdemux/demux_wav.cpp =================================================================== --- mplayerxp/libmpdemux/demux_wav.cpp 2012-12-11 16:00:46 UTC (rev 540) +++ mplayerxp/libmpdemux/demux_wav.cpp 2012-12-11 16:06:04 UTC (rev 541) @@ -11,7 +11,7 @@ #include <assert.h> #endif -#include "libmpstream/stream.h" +#include "libmpstream2/stream.h" #include "demuxer.h" #include "demuxer_internal.h" #include "stheader.h" Modified: mplayerxp/libmpdemux/demux_y4m.cpp =================================================================== --- mplayerxp/libmpdemux/demux_y4m.cpp 2012-12-11 16:00:46 UTC (rev 540) +++ mplayerxp/libmpdemux/demux_y4m.cpp 2012-12-11 16:06:04 UTC (rev 541) @@ -17,7 +17,7 @@ #include "yuv4mpeg.h" //#include "stream.h" -#include "libmpstream/stream.h" +#include "libmpstream2/stream.h" #include "demuxer.h" #include "demuxer_internal.h" #include "stheader.h" Modified: mplayerxp/libmpdemux/demuxer.cpp =================================================================== --- mplayerxp/libmpdemux/demuxer.cpp 2012-12-11 16:00:46 UTC (rev 540) +++ mplayerxp/libmpdemux/demuxer.cpp 2012-12-11 16:06:04 UTC (rev 541) @@ -23,7 +23,7 @@ #include "demux_msg.h" #include "demuxer.h" #include "demuxer_internal.h" -#include "libmpstream/stream.h" +#include "libmpstream2/stream.h" #include "stheader.h" #include "mplayerxp.h" Modified: mplayerxp/libmpdemux/demuxer_r.cpp =================================================================== --- mplayerxp/libmpdemux/demuxer_r.cpp 2012-12-11 16:00:46 UTC (rev 540) +++ mplayerxp/libmpdemux/demuxer_r.cpp 2012-12-11 16:06:04 UTC (rev 541) @@ -6,7 +6,7 @@ #define __USE_ISOC99 1 /* for lrint */ #include <math.h> -#include "libmpstream/stream.h" +#include "libmpstream2/stream.h" #include "demuxer.h" #include "stheader.h" #include "demuxer_r.h" Modified: mplayerxp/libmpdemux/demuxer_stream.cpp =================================================================== --- mplayerxp/libmpdemux/demuxer_stream.cpp 2012-12-11 16:00:46 UTC (rev 540) +++ mplayerxp/libmpdemux/demuxer_stream.cpp 2012-12-11 16:06:04 UTC (rev 541) @@ -2,7 +2,7 @@ #include "osdep/mplib.h" using namespace mpxp; -#include "libmpstream/stream.h" +#include "libmpstream2/stream.h" #include "demuxer_stream.h" #include "demuxer.h" #include "demuxer_internal.h" Modified: mplayerxp/libmpdemux/mux_lavf.cpp =================================================================== --- mplayerxp/libmpdemux/mux_lavf.cpp 2012-12-11 16:00:46 UTC (rev 540) +++ mplayerxp/libmpdemux/mux_lavf.cpp 2012-12-11 16:06:04 UTC (rev 541) @@ -14,7 +14,7 @@ #include "aviheader.h" #include "muxer.h" -#include "libmpstream/stream.h" +#include "libmpstream2/stream.h" #include "demuxer.h" #include "stheader.h" #include "libavformat/avformat.h" Modified: mplayerxp/libmpdemux/mux_mpxp64.cpp =================================================================== --- mplayerxp/libmpdemux/mux_mpxp64.cpp 2012-12-11 16:00:46 UTC (rev 540) +++ mplayerxp/libmpdemux/mux_mpxp64.cpp 2012-12-11 16:06:04 UTC (rev 541) @@ -24,7 +24,7 @@ #include "loader/qtx/qtxsdk/components.h" #include "osdep/bswap.h" -#include "libmpstream/stream.h" +#include "libmpstream2/stream.h" #include "demuxer.h" #include "stheader.h" Modified: mplayerxp/libmpdemux/parse_es.cpp =================================================================== --- mplayerxp/libmpdemux/parse_es.cpp 2012-12-11 16:00:46 UTC (rev 540) +++ mplayerxp/libmpdemux/parse_es.cpp 2012-12-11 16:06:04 UTC (rev 541) @@ -8,7 +8,7 @@ #include <unistd.h> #include "help_mp.h" -#include "libmpstream/stream.h" +#include "libmpstream2/stream.h" #include "demuxer.h" #include "parse_es.h" #include "demux_msg.h" Modified: mplayerxp/libmpdemux/parse_mp4.cpp =================================================================== --- mplayerxp/libmpdemux/parse_mp4.cpp 2012-12-11 16:00:46 UTC (rev 540) +++ mplayerxp/libmpdemux/parse_mp4.cpp 2012-12-11 16:06:04 UTC (rev 541) @@ -13,7 +13,7 @@ #include <stdlib.h> #include "parse_mp4.h" -#include "libmpstream/stream.h" +#include "libmpstream2/stream.h" #include "demux_msg.h" int mp4_read_descr_len(Memory_Stream& s) { Modified: mplayerxp/libmpdemux/stheader.cpp =================================================================== --- mplayerxp/libmpdemux/stheader.cpp 2012-12-11 16:00:46 UTC (rev 540) +++ mplayerxp/libmpdemux/stheader.cpp 2012-12-11 16:06:04 UTC (rev 541) @@ -11,7 +11,7 @@ #include "help_mp.h" #include "sub_cc.h" -#include "libmpstream/stream.h" +#include "libmpstream2/stream.h" #include "demuxer.h" #include "stheader.h" #include "parse_es.h" Modified: mplayerxp/libmpdemux/yuv4mpeg.cpp =================================================================== --- mplayerxp/libmpdemux/yuv4mpeg.cpp 2012-12-11 16:00:46 UTC (rev 540) +++ mplayerxp/libmpdemux/yuv4mpeg.cpp 2012-12-11 16:06:04 UTC (rev 541) @@ -32,7 +32,7 @@ #include "yuv4mpeg.h" #include "demux_msg.h" #include "yuv4mpeg_intern.h" -#include "libmpstream/stream.h" +#include "libmpstream2/stream.h" /* quick test of two ratios for equality (i.e. identical components) */ #define Y4M_RATIO_EQL(a,b) ( ((a).n == (b).n) && ((a).d == (b).d) ) Modified: mplayerxp/libmpstream2/Makefile =================================================================== --- mplayerxp/libmpstream2/Makefile 2012-12-11 16:00:46 UTC (rev 540) +++ mplayerxp/libmpstream2/Makefile 2012-12-11 16:06:04 UTC (rev 541) @@ -1,5 +1,5 @@ -LIBNAME = libmpstream.a +LIBNAME = libmpstream2.a include ../mp_config.mak Modified: mplayerxp/libmpstream2/librtsp/rtsp.h =================================================================== --- mplayerxp/libmpstream2/librtsp/rtsp.h 2012-12-11 16:00:46 UTC (rev 540) +++ mplayerxp/libmpstream2/librtsp/rtsp.h 2012-12-11 16:06:04 UTC (rev 541) @@ -31,7 +31,7 @@ #ifndef HAVE_RTSP_H #define HAVE_RTSP_H -#include "libmpstream/tcp.h" +#include "libmpstream2/tcp.h" /* some codes returned by rtsp_request_* functions */ enum { Modified: mplayerxp/libmpsub/vobsub.cpp =================================================================== --- mplayerxp/libmpsub/vobsub.cpp 2012-12-11 16:00:46 UTC (rev 540) +++ mplayerxp/libmpsub/vobsub.cpp 2012-12-11 16:06:04 UTC (rev 541) @@ -18,7 +18,7 @@ #include <sys/types.h> #include "mplayerxp.h" -#include "libmpstream/stream.h" +#include "libmpstream2/stream.h" #include "vobsub.h" #include "spudec.h" #define MSGT_CLASS MSGT_VOBSUB Modified: mplayerxp/libplaytree/asxparser.cpp =================================================================== --- mplayerxp/libplaytree/asxparser.cpp 2012-12-11 16:00:46 UTC (rev 540) +++ mplayerxp/libplaytree/asxparser.cpp 2012-12-11 16:06:04 UTC (rev 541) @@ -8,7 +8,7 @@ #include <string.h> #include <unistd.h> -#include "libmpstream/stream.h" +#include "libmpstream2/stream.h" #include "playtreeparser.h" #include "asxparser.h" #include "libmpconf/cfgparser.h" Modified: mplayerxp/libplaytree/playtree.cpp =================================================================== --- mplayerxp/libplaytree/playtree.cpp 2012-12-11 16:00:46 UTC (rev 540) +++ mplayerxp/libplaytree/playtree.cpp 2012-12-11 16:06:04 UTC (rev 541) @@ -11,7 +11,7 @@ #ifdef MP_DEBUG #include <assert.h> #endif -#include "libmpstream/stream.h" +#include "libmpstream2/stream.h" #include "playtree.h" #define MSGT_CLASS MSGT_PLAYTREE #include "mp_msg.h" Modified: mplayerxp/libplaytree/playtreeparser.cpp =================================================================== --- mplayerxp/libplaytree/playtreeparser.cpp 2012-12-11 16:00:46 UTC (rev 540) +++ mplayerxp/libplaytree/playtreeparser.cpp 2012-12-11 16:06:04 UTC (rev 541) @@ -13,7 +13,7 @@ #include <sys/stat.h> #include <fcntl.h> #include <unistd.h> -#include "libmpstream/stream.h" +#include "libmpstream2/stream.h" #include "asxparser.h" #include "playtree.h" #include "playtreeparser.h" Modified: mplayerxp/libvo/sub.cpp =================================================================== --- mplayerxp/libvo/sub.cpp 2012-12-11 16:00:46 UTC (rev 540) +++ mplayerxp/libvo/sub.cpp 2012-12-11 16:06:04 UTC (rev 541) @@ -7,7 +7,7 @@ #include <string.h> #include "mplayerxp.h" -#include "libmpstream/stream.h" // for nav_hl +#include "libmpstream2/stream.h" // for nav_hl #include "xmpcore/xmp_core.h" #include "video_out.h" #include "font_load.h" Modified: mplayerxp/libvo/vo_fbdev.cpp =================================================================== --- mplayerxp/libvo/vo_fbdev.cpp 2012-12-11 16:00:46 UTC (rev 540) +++ mplayerxp/libvo/vo_fbdev.cpp 2012-12-11 16:06:04 UTC (rev 541) @@ -35,7 +35,7 @@ #endif #include "aspect.h" #include "dri_vo.h" -#include "libmpstream/mrl.h" +#include "libmpstream2/mrl.h" #include "vo_msg.h" namespace mpxp { Modified: mplayerxp/mp-opt-reg.cpp =================================================================== --- mplayerxp/mp-opt-reg.cpp 2012-12-11 16:00:46 UTC (rev 540) +++ mplayerxp/mp-opt-reg.cpp 2012-12-11 16:06:04 UTC (rev 541) @@ -4,7 +4,7 @@ #include <stdlib.h> #include <stdio.h> -#include "libmpstream/stream.h" +#include "libmpstream2/stream.h" #include "libmpconf/cfgparser.h" Modified: mplayerxp/mplayerxp.cpp =================================================================== --- mplayerxp/mplayerxp.cpp 2012-12-11 16:00:46 UTC (rev 540) +++ mplayerxp/mplayerxp.cpp 2012-12-11 16:06:04 UTC (rev 541) @@ -35,7 +35,7 @@ #define HELP_MP_DEFINE_STATIC #include "help_mp.h" -#include "libmpstream/stream.h" +#include "libmpstream2/stream.h" #include "libmpdemux/demuxer.h" #include "libmpdemux/stheader.h" #include "libmpdemux/parse_es.h" This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <nic...@us...> - 2012-12-11 16:18:36
|
Revision: 542 http://mplayerxp.svn.sourceforge.net/mplayerxp/?rev=542&view=rev Author: nickols_k Date: 2012-12-11 16:18:22 +0000 (Tue, 11 Dec 2012) Log Message: ----------- rename libvo -> libvo2 (TRANSACTION BEGIN) Added Paths: ----------- mplayerxp/libvo2/ mplayerxp/libvo2/sub.cpp mplayerxp/libvo2/vo_fbdev.cpp Removed Paths: ------------- mplayerxp/libvo/Makefile mplayerxp/libvo/aspect.cpp mplayerxp/libvo/aspect.h mplayerxp/libvo/dri_vo.h mplayerxp/libvo/font_load.cpp mplayerxp/libvo/font_load.h mplayerxp/libvo/img_format.cpp mplayerxp/libvo/img_format.h mplayerxp/libvo/jpeg_enc.cpp mplayerxp/libvo/jpeg_enc.h mplayerxp/libvo/osd_render.cpp mplayerxp/libvo/osd_render.h mplayerxp/libvo/osd_render_template.h mplayerxp/libvo/screenshot.cpp mplayerxp/libvo/screenshot.h mplayerxp/libvo/sub.cpp mplayerxp/libvo/sub.h mplayerxp/libvo/video_out.cpp mplayerxp/libvo/video_out.h mplayerxp/libvo/video_out_internal.h mplayerxp/libvo/videodev_mjpeg.h mplayerxp/libvo/vidix_system.cpp mplayerxp/libvo/vidix_system.h mplayerxp/libvo/vo_fbdev.cpp mplayerxp/libvo/vo_msg.h mplayerxp/libvo/vo_null.cpp mplayerxp/libvo/vo_opengl.cpp mplayerxp/libvo/vo_sdl.cpp mplayerxp/libvo/vo_vesa.cpp mplayerxp/libvo/vo_x11.cpp mplayerxp/libvo/vo_xv.cpp mplayerxp/libvo/wskeys.h mplayerxp/libvo/x11_system.cpp mplayerxp/libvo/x11_system.h mplayerxp/libvo2/sub.cpp mplayerxp/libvo2/vo_fbdev.cpp Deleted: mplayerxp/libvo/Makefile =================================================================== --- mplayerxp/libvo/Makefile 2012-12-11 16:06:04 UTC (rev 541) +++ mplayerxp/libvo/Makefile 2012-12-11 16:18:22 UTC (rev 542) @@ -1,70 +0,0 @@ -include ../mp_config.mak - -LIBNAME = libvo.a - -CXXSRCS=video_out.cpp font_load.cpp img_format.cpp screenshot.cpp sub.cpp -CXXSRCS+=osd_render.cpp aspect.cpp vo_null.cpp -ifeq ($(HAVE_SDL),yes) -CXXSRCS+=vo_sdl.cpp -endif -ifeq ($(HAVE_OPENGL),yes) -CXXSRCS+=vo_opengl.cpp -endif -ifeq ($(HAVE_X11),yes) -CXXSRCS+=vo_x11.cpp x11_system.cpp -endif -ifeq ($(HAVE_XV),yes) -CXXSRCS+=vo_xv.cpp -endif -ifeq ($(HAVE_FBDEV),yes) -CXXSRCS+=vo_fbdev.cpp -endif -ifeq ($(HAVE_VESA),yes) -CXXSRCS += vo_vesa.cpp -endif -ifeq ($(CONFIG_VIDIX),yes) -CXXSRCS += vidix_system.cpp -endif - -CFLAGS = $(OPTFLAGS) -I. -I.. -DMPG12PLAY -Wall -W -CXXFLAGS = $(OPTXXFLAGS) -I. -I.. -DMPG12PLAY -Wall -W - -ifeq ($(CONFIG_VIDIX),yes) -CFLAGS += -DVIDIX_PATH='"$(LIBDIR)/vidix/"' -CXXFLAGS += -DVIDIX_PATH='"$(LIBDIR)/vidix/"' -endif - -OBJS=$(SRCS:.c=.o) -CXXOBJS=$(CXXSRCS:.cpp=.o) - -.SUFFIXES: .c .o - -# .PHONY: all clean - -.c.o: - $(CC) -c $(CFLAGS) -o $@ $< -.cpp.o: - $(CXX) -c $(CXXFLAGS) -o $@ $< - -$(LIBNAME): $(OBJS) $(CXXOBJS) - $(AR) r $(LIBNAME) $(OBJS) $(CXXOBJS) - -all: dep $(LIBNAME) - -clean: - rm -f *.o *.a *~ - -distclean: - rm -f Makefile.bak *.o *.a *~ .depend - -dep: .depend - -.depend: $(SRCS) $(CXXSRCS) - $(CXX) -MM $(CXXFLAGS) $(SRCS) $(CXXSRCS) 1>.depend - -# -# include dependency files if they exist -# -ifneq ($(wildcard .depend),) -include .depend -endif Deleted: mplayerxp/libvo/aspect.cpp =================================================================== --- mplayerxp/libvo/aspect.cpp 2012-12-11 16:06:04 UTC (rev 541) +++ mplayerxp/libvo/aspect.cpp 2012-12-11 16:18:22 UTC (rev 542) @@ -1,93 +0,0 @@ -#include "mp_config.h" -#include "osdep/mplib.h" -using namespace mpxp; -/* Stuff for correct aspect scaling. */ -#include "aspect.h" - -//#define ASPECT_DEBUG - -#ifdef ASPECT_DEBUG -#include <stdio.h> -#endif -#include "vo_msg.h" - -namespace mpxp { - -Aspect::Aspect(float mon_pix_aspect) { monitor_pixel_aspect = mon_pix_aspect; } -Aspect::~Aspect() { } - -void Aspect::save(uint32_t _orgw, uint32_t _orgh, - uint32_t _prew, uint32_t _preh, - uint32_t _scrw, uint32_t _scrh) { - orgw = _orgw; - orgh = _orgh; - prew = _prew; - preh = _preh; - screenw = _scrw; - screenh = _scrh; - monitor_aspect = monitor_pixel_aspect * screenw / screenh; -} - -void Aspect::save_image(uint32_t _orgw, uint32_t _orgh, - uint32_t _prew, uint32_t _preh) { - orgw = _orgw; - orgh = _orgh; - prew = _prew; - preh = _preh; -} - -void Aspect::save_screen(uint32_t _scrw, uint32_t _scrh) { - screenw = _scrw; - screenh = _scrh; - monitor_aspect = monitor_pixel_aspect * screenw / screenh; -} - -/* aspect is called with the source resolution and the - * resolution, that the scaled image should fit into - */ -void Aspect::calc(uint32_t& srcw, uint32_t& srch, zoom_e zoom) { - uint32_t tmpw; - -#ifdef ASPECT_DEBUG - MSG_DBG2("aspect(0) fitin: %dx%d zoom: %d \n",screenw,screenh,zoom); - MSG_DBG2("aspect(1) wh: %dx%d (org: %dx%d)\n",srcw,srch,prew,preh); -#endif - if(zoom){ - if(prew >= preh) { - /* Landscape mode */ - srcw = screenw; - srch = (uint32_t)(((float)screenw / (float)prew * (float)preh) * - ((float)screenh / ((float)screenw / monitor_aspect))); - } else { - /* Portrait mode */ - srch = screenh; - srcw = (uint32_t)(((float)screenh / (float)preh * (float)prew) * - ((float)screenw / ((float)screenh * monitor_aspect))); - } - } else { - srcw = prew; - srch = (uint32_t)((float)preh * - ((float)screenh / ((float)screenw / monitor_aspect))); - } - srch+= srch%2; // round -#ifdef ASPECT_DEBUG - MSG_DBG2("aspect(2) wh: %dx%d (org: %dx%d)\n",srcw,srch,prew,preh); -#endif - if(srch>screenh || srch<orgh){ - if(zoom) - tmpw = (uint32_t)(((float)screenh / (float)preh * (float)prew) * - ((float)screenw / ((float)screenh / (1.0/monitor_aspect)))); - else - tmpw = (uint32_t)((float)prew * - ((float)screenw / ((float)screenh / (1.0/monitor_aspect)))); - if(tmpw<=screenw && tmpw>=orgw) { - srch = zoom?screenh:preh; - srcw = tmpw; - srcw+= srcw%2; // round - } - } -#ifdef ASPECT_DEBUG - MSG_DBG2("aspect(3) wh: %dx%d (org: %dx%d)\n",srcw,srch,prew,preh); -#endif -} -} // namesapce mpxp Deleted: mplayerxp/libvo/aspect.h =================================================================== --- mplayerxp/libvo/aspect.h 2012-12-11 16:06:04 UTC (rev 541) +++ mplayerxp/libvo/aspect.h 2012-12-11 16:18:22 UTC (rev 542) @@ -1,37 +0,0 @@ -#ifndef __ASPECT_H -#define __ASPECT_H -/* Stuff for correct aspect scaling. */ -#include <stdint.h> -#include "mp_config.h" - -namespace mpxp { - class Aspect : public Opaque { - public: - Aspect(float moitor_pixel_aspect); - virtual ~Aspect(); - - void __FASTCALL__ save(uint32_t orgw, uint32_t orgh, - uint32_t prew, uint32_t preh, - uint32_t scrw, uint32_t scrh); - void __FASTCALL__ save_image(uint32_t orgw, uint32_t orgh, - uint32_t prew, uint32_t preh); - void __FASTCALL__ save_screen(uint32_t scrw, uint32_t scrh); - enum zoom_e { - NOZOOM=0, - ZOOM - }; - void __FASTCALL__ calc(uint32_t& srcw, uint32_t& srch, zoom_e zoom); - private: - uint32_t orgw; // real width - uint32_t orgh; // real height - uint32_t prew; // prescaled width - uint32_t preh; // prescaled height - uint32_t screenw; // horizontal resolution - uint32_t screenh; // vertical resolution - float monitor_aspect; - float monitor_pixel_aspect; - }; -} // namespace mpxp - -#endif - Deleted: mplayerxp/libvo/dri_vo.h =================================================================== --- mplayerxp/libvo/dri_vo.h 2012-12-11 16:06:04 UTC (rev 541) +++ mplayerxp/libvo/dri_vo.h 2012-12-11 16:18:22 UTC (rev 542) @@ -1,43 +0,0 @@ -/* - This interface provides new DRI (Direct rendering interface) - for video output library. - This interface still stays in initial state. - Will be expanded in the future -*/ -#ifndef __DRI_VO_INCLUDED -#define __DRI_VO_INCLUDED 1 - -/*---------- LIB_DRI ----------------*/ -/* - Note: Each dri voctl call has following format: - voctl(call_num,any_t*); -*/ -enum { - DRI_CAP_TEMP_VIDEO =0x00000000UL,/**< Means: video buffer was allocated in RAM */ - DRI_CAP_VIDEO_MMAPED=0x00000001UL,/**< Means: surface provides DGA */ - DRI_CAP_UPSCALER =0x00000010UL,/**< Driver supports upscaling */ - DRI_CAP_DOWNSCALER =0x00000020UL,/**< Driver supports downscaling */ - DRI_CAP_HORZSCALER =0x00000040UL,/**< Driver supports horizontal scaling */ - DRI_CAP_VERTSCALER =0x00000080UL,/**< Driver supports vertical scaling */ - DRI_CAP_HWOSD =0x00000100UL,/**< Driver supports OSD painting */ - DRI_CAP_BUSMASTERING=0x80000000UL /**< Means: final video buffer but allocated in RAM */ -}; -typedef struct dri_surface_cap_s -{ - unsigned caps; /**< Capabilities of surface (see DRI_CAP_* for detail) */ - unsigned fourcc; /**< real fourcc of vo2 surface */ - unsigned width,height; /**< specify total dimension of surface */ - unsigned x,y,w,h; /**< specify movie position within surface */ - unsigned strides[4]; /**< drv->app:specify strides of each plane */ -}dri_surface_cap_t; - -enum { - MAX_DRI_BUFFERS=1024 /**< Maximal number of surfaces */ -}; -/** Contains surface address */ -typedef struct dri_surface_s -{ - unsigned idx; /**< app->drv:specify number of surface (0 default for single buffering) */ - uint8_t* planes[4]; /**< drv->app:specify planes (include alpha channel) */ -}dri_surface_t; -#endif Deleted: mplayerxp/libvo/font_load.cpp =================================================================== --- mplayerxp/libvo/font_load.cpp 2012-12-11 16:06:04 UTC (rev 541) +++ mplayerxp/libvo/font_load.cpp 2012-12-11 16:18:22 UTC (rev 542) @@ -1,291 +0,0 @@ -#include "mp_config.h" -#include "osdep/mplib.h" -using namespace mpxp; - -#include <stdio.h> -#include <stdlib.h> -#include <string.h> -#include <sys/types.h> -#include <sys/stat.h> -#include <unistd.h> -#include "font_load.h" -#include "sub.h" -#include "osdep/get_path.h" -#include "vo_msg.h" - -raw_file* load_raw(const char *name,int verbose){ - int bpp; - raw_file* raw=new raw_file; - unsigned char head[32]; - FILE *f=fopen(name,"rb"); - if(!f) { delete raw; return NULL; } // can't open - if(fread(head,32,1,f)<1) { delete raw; fclose(f); return NULL; } // too small - if(memcmp(head,"mhwanh",6)) { delete raw; fclose(f); return NULL; } // not raw file - raw->w=head[8]*256+head[9]; - raw->h=head[10]*256+head[11]; - raw->c=head[12]*256+head[13]; - if(raw->w == 0) /* 2 bytes were not enough for the width... read 4 bytes from the end of the header */ - raw->w = ((head[28]*0x100 + head[29])*0x100 + head[30])*0x100 + head[31]; - if(raw->c>256) { delete raw; fclose(f); return NULL; } // too many colors!? - MSG_V("RAW: %s %d x %d, %d colors\n",name,raw->w,raw->h,raw->c); - if(raw->c){ - raw->pal=new unsigned char [raw->c*3]; - fread(raw->pal,3,raw->c,f); - bpp=1; - } else { - raw->pal=NULL; - bpp=3; - } - raw->bmp=new unsigned char [raw->h*raw->w*bpp]; - fread(raw->bmp,raw->h*raw->w*bpp,1,f); - fclose(f); - return raw; -} - -font_desc_t* read_font_desc(const char* fname,float factor,int verbose){ - char sor[1024]; - unsigned char sor2[1024]; - font_desc_t *desc; - FILE *f; - char *dn; - char section[64]; - int i,j; - int chardb=0; - int fontdb=-1; - int version=0; - - desc=new(zeromem) font_desc_t; - if(!desc) return NULL; - - f=fopen(fname,"rt"); - if(!f) { - MSG_ERR("font: can't open file: %s\n",fname); - delete desc; - return NULL; - } - - i = strlen (fname) - 9; - if ((dn = new char [i+1])){ - strncpy (dn, fname, i); - dn[i]='\0'; - } - - desc->fpath = dn; // search in the same dir as fonts.desc - - // desc->fpath=get_path("font/"); - // if (stat(desc->fpath, &fstate)!=0) desc->fpath=DATADIR"/font"; - // set up some defaults, and erase table - desc->charspace=2; - desc->spacewidth=12; - desc->height=0; - for(i=0;i<512;i++) desc->start[i]=desc->width[i]=desc->font[i]=-1; - - section[0]=0; - - while(fgets(sor,1020,f)){ - char* p[8]; - int pdb=0; - unsigned char *s=(unsigned char *)sor; - unsigned char *d=sor2; - int ec=' '; - int id=0; - sor[1020]=0; - p[0]=(char *)d;++pdb; - while(1){ - int c=*s++; - if(c==0 || c==13 || c==10) break; - if(!id){ - if(c==39 || c==34){ id=c;continue;} // idezojel - if(c==';' || c=='#') break; - if(c==9) c=' '; - if(c==' '){ - if(ec==' ') continue; - *d=0; ++d; - p[pdb]=(char *)d;++pdb; - if(pdb>=8) break; - continue; - } - } else { - if(id==c){ id=0; continue; } // idezojel - } - *d=c;d++; - ec=c; - } - if(d==sor2) continue; // skip empty lines - *d=0; - - if(pdb==1 && p[0][0]=='['){ - int len=strlen(p[0]); - if(len && len<63 && p[0][len-1]==']'){ - strcpy(section,p[0]); - MSG_V("font: Reading section: %s\n",section); - if(strcmp(section,"[files]")==0){ - ++fontdb; - if(fontdb>=16) { - MSG_ERR("font: Too many bitmaps defined!\n"); - delete desc; - return NULL; - } - } - continue; - } - } - - if(strcmp(section,"[fpath]")==0){ - if(pdb==1){ - if (desc->fpath) - delete desc->fpath; // release previously allocated memory - desc->fpath=mp_strdup(p[0]); - continue; - } - } else if(strcmp(section,"[files]")==0){ - char *default_dir=DATADIR"/font"; - if(pdb==2 && strcmp(p[0],"alpha")==0){ - char *cp; - if (!(cp=new char [strlen(desc->fpath)+strlen(p[1])+2])) { - delete desc; - return NULL; - } - snprintf(cp,strlen(desc->fpath)+strlen(p[1])+2,"%s/%s", - desc->fpath,p[1]); - if(!((desc->pic_a[fontdb]=load_raw(cp,verbose)))){ - delete cp; - if (!(cp=new char [strlen(default_dir)+strlen(p[1])+2])) { - delete desc; - return NULL; - } - snprintf(cp,strlen(default_dir)+strlen(p[1])+2,"%s/%s", - default_dir,p[1]); - if (!((desc->pic_a[fontdb]=load_raw(cp,verbose)))){ - MSG_ERR("Can't load font bitmap: %s\n",p[1]); - delete cp; - delete desc; - return NULL; - } - } - delete cp; - continue; - } - if(pdb==2 && strcmp(p[0],"bitmap")==0){ - char *cp; - if (!(cp=new char [strlen(desc->fpath)+strlen(p[1])+2])) { - delete desc; - return NULL; - } - snprintf(cp,strlen(desc->fpath)+strlen(p[1])+2,"%s/%s", - desc->fpath,p[1]); - if(!((desc->pic_b[fontdb]=load_raw(cp,verbose)))){ - delete cp; - if (!(cp=new char [strlen(default_dir)+strlen(p[1])+2])) { - delete desc; - return NULL; - } - snprintf(cp,strlen(default_dir)+strlen(p[1])+2,"%s/%s", - default_dir,p[1]); - if (!((desc->pic_b[fontdb]=load_raw(cp,verbose)))){ - MSG_ERR("Can't load font bitmap: %s\n",p[1]); - delete cp; - delete desc; - return NULL; - } - } - delete cp; - continue; - } - } else if(strcmp(section,"[info]")==0){ - if(pdb==2 && strcmp(p[0],"name")==0){ - desc->name=mp_strdup(p[1]); - continue; - } - if(pdb==2 && strcmp(p[0],"descversion")==0){ - version=atoi(p[1]); - continue; - } - if(pdb==2 && strcmp(p[0],"spacewidth")==0){ - desc->spacewidth=atoi(p[1]); - continue; - } - if(pdb==2 && strcmp(p[0],"charspace")==0){ - desc->charspace=atoi(p[1]); - continue; - } - if(pdb==2 && strcmp(p[0],"height")==0){ - desc->height=atoi(p[1]); - continue; - } - } else if(strcmp(section,"[characters]")==0){ - if(pdb==3){ - int chr=p[0][0]; - int start=atoi(p[1]); - int end=atoi(p[2]); - if(sub_data.unicode && (chr>=0x80)) chr=(chr<<8)+p[0][1]; - else if(strlen(p[0])!=1) chr=strtol(p[0],NULL,0); - if(end<start) MSG_ERR("error in font desc: end<start for char '%c'\n",chr); - else { - desc->start[chr]=start; - desc->width[chr]=end-start+1; - desc->font[chr]=fontdb; - ++chardb; - } - continue; - } - } - MSG_ERR("Syntax error in font desc: %s\n",sor); - } - fclose(f); - for(i=0;i<=fontdb;i++){ - if(!desc->pic_a[i] || !desc->pic_b[i]){ - MSG_ERR("font: Missing bitmap(s) for sub-font #%d\n",i); - delete desc; - return NULL; - } - // re-sample alpha - int f=factor*256.0f; - int size=desc->pic_a[i]->w*desc->pic_a[i]->h; - int j; - MSG_V("font: resampling alpha by factor %5.3f (%d) ",factor,f);fflush(stdout); - for(j=0;j<size;j++){ - int x=desc->pic_a[i]->bmp[j]; // alpha - int y=desc->pic_b[i]->bmp[j]; // bitmap - -#ifdef FAST_OSD - x=(x<(255-f))?0:1; -#else - - x=255-((x*f)>>8); // scale - - if(x+y>255) x=255-y; // to avoid overflows - - if(x<1) x=1; else - if(x>=252) x=0; -#endif - - desc->pic_a[i]->bmp[j]=x; -// desc->pic_b[i]->bmp[j]=0; // hack - } - MSG_V("DONE!\n"); - if(!desc->height) desc->height=desc->pic_a[i]->h; - } - - j='_'; - if(desc->font[j]<0) j='?'; - for(i=0;i<512;i++) - if(desc->font[i]<0){ - desc->start[i]=desc->start[j]; - desc->width[i]=desc->width[j]; - desc->font[i]=desc->font[j]; - } - desc->font[' ']=-1; - desc->width[' ']=desc->spacewidth; - - MSG_OK("Font %s loaded successfully! (%d chars)\n",fname,chardb); - return desc; -} - -#if 0 -int main(){ - -read_font_desc("high_arpi.desc",1); - -} -#endif Deleted: mplayerxp/libvo/font_load.h =================================================================== --- mplayerxp/libvo/font_load.h 2012-12-11 16:06:04 UTC (rev 541) +++ mplayerxp/libvo/font_load.h 2012-12-11 16:18:22 UTC (rev 542) @@ -1,28 +0,0 @@ -#ifndef __FONT_LOAD_H -#define __FONT_LOAD_H 1 - -typedef struct { - unsigned char *bmp; - unsigned char *pal; - int w,h,c; -} raw_file; - -typedef struct { - char *name; - char *fpath; - int spacewidth; - int charspace; - int height; -// char *fname_a; -// char *fname_b; - raw_file* pic_a[16]; - raw_file* pic_b[16]; - short font[65536]; - int start[65536]; - short width[65536]; -} font_desc_t; - -raw_file* load_raw(const char *name,int verbose); -font_desc_t* read_font_desc(const char* fname,float factor,int verbose); - -#endif Deleted: mplayerxp/libvo/img_format.cpp =================================================================== --- mplayerxp/libvo/img_format.cpp 2012-12-11 16:06:04 UTC (rev 541) +++ mplayerxp/libvo/img_format.cpp 2012-12-11 16:18:22 UTC (rev 542) @@ -1,204 +0,0 @@ -#include "mp_config.h" -#include "osdep/mplib.h" -using namespace mpxp; -#include <ctype.h> -#include <stdio.h> -#include <limits.h> -#include "img_format.h" - -const char * __FASTCALL__ vo_format_name(int format) -{ - static char unknow_format[20]; - switch(format) - { - case IMGFMT_RGB1: return("RGB 1-bit"); - case IMGFMT_RGB4: return("RGB 4-bit"); - case IMGFMT_RG4B: return("RGB 4-bit per byte"); - case IMGFMT_RGB8: return("RGB 8-bit"); - case IMGFMT_RGB15: return("RGB 15-bit"); - case IMGFMT_RGB16: return("RGB 16-bit"); - case IMGFMT_RGB24: return("RGB 24-bit"); - case IMGFMT_RGB48NE: return("RGB 48-bit"); -// case IMGFMT_RGB32: return("RGB 32-bit"); - case IMGFMT_BGR1: return("BGR 1-bit"); - case IMGFMT_BGR4: return("BGR 4-bit"); - case IMGFMT_BG4B: return("BGR 4-bit per byte"); - case IMGFMT_BGR8: return("BGR 8-bit"); - case IMGFMT_BGR15: return("BGR 15-bit"); - case IMGFMT_BGR16: return("BGR 16-bit"); - case IMGFMT_BGR24: return("BGR 24-bit"); - case IMGFMT_BGR48NE: return("BGR 48-bit"); -// case IMGFMT_BGR32: return("BGR 32-bit"); - case IMGFMT_ABGR: return("ABGR"); - case IMGFMT_BGRA: return("BGRA"); - case IMGFMT_ARGB: return("ARGB"); - case IMGFMT_RGBA: return("RGBA"); - case IMGFMT_YVU9: return("Planar YVU9"); - case IMGFMT_IF09: return("Planar IF09"); - case IMGFMT_YV12: return("Planar YV12"); - case IMGFMT_I420: return("Planar I420"); - case IMGFMT_IYUV: return("Planar IYUV"); - case IMGFMT_CLPL: return("Planar CLPL"); - case IMGFMT_Y800: return("Planar Y800"); - case IMGFMT_Y8: return("Planar Y8"); - case IMGFMT_444P: return("Planar 444P"); - case IMGFMT_422P: return("Planar 422P"); - case IMGFMT_411P: return("Planar 411P"); - case IMGFMT_NV12: return("Planar NV12"); - case IMGFMT_NV21: return("Planar NV21"); - case IMGFMT_HM12: return("Planar NV12 Macroblock"); - case IMGFMT_IUYV: return("Packed IUYV"); - case IMGFMT_IY41: return("Packed IY41"); - case IMGFMT_IYU1: return("Packed IYU1"); - case IMGFMT_IYU2: return("Packed IYU2"); - case IMGFMT_UYVY: return("Packed UYVY"); - case IMGFMT_UYNV: return("Packed UYNV"); - case IMGFMT_cyuv: return("Packed CYUV"); - case IMGFMT_Y422: return("Packed Y422"); - case IMGFMT_YUY2: return("Packed YUY2"); - case IMGFMT_YUNV: return("Packed YUNV"); - case IMGFMT_YVYU: return("Packed YVYU"); - case IMGFMT_Y41P: return("Packed Y41P"); - case IMGFMT_Y211: return("Packed Y211"); - case IMGFMT_Y41T: return("Packed Y41T"); - case IMGFMT_Y42T: return("Packed Y42T"); - case IMGFMT_V422: return("Packed V422"); - case IMGFMT_V655: return("Packed V655"); - case IMGFMT_CLJR: return("Packed CLJR"); - case IMGFMT_YUVP: return("Packed YUVP"); - case IMGFMT_UYVP: return("Packed UYVP"); - case IMGFMT_420A: return "Planar YV12 with alpha"; - case IMGFMT_420P16_LE: return "Planar 420P 16-bit little-endian"; - case IMGFMT_420P16_BE: return "Planar 420P 16-bit big-endian"; - case IMGFMT_422P16_LE: return "Planar 422P 16-bit little-endian"; - case IMGFMT_422P16_BE: return "Planar 422P 16-bit big-endian"; - case IMGFMT_444P16_LE: return "Planar 444P 16-bit little-endian"; - case IMGFMT_444P16_BE: return "Planar 444P 16-bit big-endian"; - case IMGFMT_MPEGPES: return("Mpeg PES"); - case IMGFMT_ZRMJPEGNI: return("Zoran MJPEG non-interlaced"); - case IMGFMT_ZRMJPEGIT: return("Zoran MJPEG top field first"); - case IMGFMT_ZRMJPEGIB: return("Zoran MJPEG bottom field first"); - case IMGFMT_XVMC_MOCO_MPEG2: return("MPEG1/2 Motion Compensation"); - case IMGFMT_XVMC_IDCT_MPEG2: return("MPEG1/2 Motion Compensation and IDCT"); - } - char *p=reinterpret_cast<char *>(&format); - if(isprint(p[0])&&isprint(p[1])&&isprint(p[2])&&isprint(p[4])) - snprintf(unknow_format,20,"Unknown %c%c%c%c",p[0],p[1],p[2],p[3]); - else - snprintf(unknow_format,20,"Unknown 0x%04x",format); - return unknow_format; -} - -typedef struct s_pix_fourcc{ - PixelFormat pix_fmt; - uint32_t fourcc; -}pix_fourcc; -static pix_fourcc pfcc[] = -{ - { PIX_FMT_YUV420P, IMGFMT_YV12 }, ///< Planar YUV 4:2:0, 12bpp, (1 Cr & Cb sample per 2x2 Y samples) - { PIX_FMT_YUYV422, IMGFMT_YUY2 }, ///< Packed YUV 4:2:2, 16bpp, Y0 Cb Y1 Cr - { PIX_FMT_RGB24, IMGFMT_RGB24}, ///< Packed RGB 8:8:8, 24bpp, RGBRGB... - { PIX_FMT_BGR24, IMGFMT_BGR24}, ///< Packed RGB 8:8:8, 24bpp, BGRBGR... - { PIX_FMT_YUV422P, IMGFMT_422P }, ///< Planar YUV 4:2:2, 16bpp, (1 Cr & Cb sample per 2x1 Y samples) - { PIX_FMT_YUV444P, IMGFMT_444P }, ///< Planar YUV 4:4:4, 24bpp, (1 Cr & Cb sample per 1x1 Y samples) - { PIX_FMT_RGB32, IMGFMT_RGB32}, ///< Packed RGB 8:8:8, 32bpp, (msb)8A 8R 8G 8B(lsb), in cpu endianness - { PIX_FMT_YUV410P, IMGFMT_YVU9 }, ///< Planar YUV 4:1:0, 9bpp, (1 Cr & Cb sample per 4x4 Y samples) - { PIX_FMT_YUV410P, IMGFMT_IF09 }, ///< rough alias - { PIX_FMT_YUV411P, IMGFMT_411P }, ///< Planar YUV 4:1:1, 12bpp, (1 Cr & Cb sample per 4x1 Y samples) - { PIX_FMT_RGB48BE, IMGFMT_RGB48BE }, ///< packed RGB 16:16:16, 48bpp, 16R, 16G, 16B, big-endian - { PIX_FMT_RGB48LE, IMGFMT_RGB48LE }, ///< packed RGB 16:16:16, 48bpp, 16R, 16G, 16B, little-endian - { PIX_FMT_RGB565, IMGFMT_RGB16}, ///< Packed RGB 5:6:5, 16bpp, (msb) 5R 6G 5B(lsb), in cpu endianness - { PIX_FMT_RGB555, IMGFMT_RGB15}, ///< Packed RGB 5:5:5, 16bpp, (msb)1A 5R 5G 5B(lsb), in cpu endianness most significant bit to 1 - { PIX_FMT_GRAY8, IMGFMT_Y800 }, ///< Y , 8bpp - { PIX_FMT_GRAY8, IMGFMT_Y8 }, ///< alias - { PIX_FMT_MONOWHITE, IMGFMT_RGB1}, ///< Y , 1bpp, 1 is white - { PIX_FMT_MONOBLACK, IMGFMT_RGB1}, ///< Y , 1bpp, 0 is black - { PIX_FMT_PAL8, IMGFMT_RGB8 }, ///< 8 bit with PIX_FMT_RGB32 palette - { PIX_FMT_YUVJ420P,IMGFMT_YV12 }, ///< Planar YUV 4:2:0, 12bpp, full scale (jpeg) - { PIX_FMT_YUVJ420P,IMGFMT_I420 }, ///< alias - { PIX_FMT_YUVJ422P,IMGFMT_422P }, ///< Planar YUV 4:2:2, 16bpp, full scale (jpeg) - { PIX_FMT_YUVJ444P,IMGFMT_444P }, ///< Planar YUV 4:4:4, 24bpp, full scale (jpeg) - { PIX_FMT_XVMC_MPEG2_MC, IMGFMT_XVMC},///< XVideo Motion Acceleration via common packet passing(xvmc_render.h) - { PIX_FMT_XVMC_MPEG2_IDCT, IMGFMT_XVMC_IDCT_MPEG2}, - { PIX_FMT_UYVY422, IMGFMT_UYVY }, ///< Packed YUV 4:2:2, 16bpp, Cb Y0 Cr Y1 - { PIX_FMT_UYYVYY411, IMGFMT_Y41P },///< Packed YUV 4:1:1, 12bpp, Cb Y0 Y1 Cr Y2 Y3 - { PIX_FMT_BGR32, IMGFMT_BGR32 }, ///< Packed RGB 8:8:8, 32bpp, (msb)8A 8B 8G 8R(lsb), in cpu endianness - { PIX_FMT_BGR565, IMGFMT_BGR16 }, ///< Packed RGB 5:6:5, 16bpp, (msb) 5B 6G 5R(lsb), in cpu endianness - { PIX_FMT_BGR555, IMGFMT_BGR15 }, ///< Packed RGB 5:5:5, 16bpp, (msb)1A 5B 5G 5R(lsb), in cpu endianness most significant bit to 1 - { PIX_FMT_BGR8, IMGFMT_BGR8 }, ///< Packed RGB 3:3:2, 8bpp, (msb)2B 3G 3R(lsb) - { PIX_FMT_BGR4, IMGFMT_BGR4 }, ///< Packed RGB 1:2:1, 4bpp, (msb)1B 2G 1R(lsb) - { PIX_FMT_BGR4_BYTE,IMGFMT_BGR4_CHAR}, ///< Packed RGB 1:2:1, 8bpp, (msb)1B 2G 1R(lsb) - { PIX_FMT_RGB8, IMGFMT_RGB8 }, ///< Packed RGB 3:3:2, 8bpp, (msb)2R 3G 3B(lsb) - { PIX_FMT_RGB4, IMGFMT_RGB4 }, ///< Packed RGB 1:2:1, 4bpp, (msb)2R 3G 3B(lsb) - { PIX_FMT_RGB4_BYTE,IMGFMT_RGB4_CHAR }, ///< Packed RGB 1:2:1, 8bpp, (msb)2R 3G 3B(lsb) - { PIX_FMT_NV12, IMGFMT_NV12 }, ///< Planar YUV 4:2:0, 12bpp, 1 plane for Y and 1 for UV - { PIX_FMT_NV21, IMGFMT_NV21 }, ///< as above, but U and V bytes are swapped - - { PIX_FMT_YUVA420P, IMGFMT_420A },///< planar YUV 4:2:0, 20bpp, (1 Cr & Cb sample per 2x2 Y & A samples) - { PIX_FMT_YUV420P16LE, IMGFMT_420P16_LE }, ///< planar YUV 4:2:0, 24bpp, (1 Cr & Cb sample per 2x2 Y samples), little-endian - { PIX_FMT_YUV420P16BE, IMGFMT_420P16_BE },///< planar YUV 4:2:0, 24bpp, (1 Cr & Cb sample per 2x2 Y samples), big-endian - { PIX_FMT_YUV422P16LE, IMGFMT_422P16_LE },///< planar YUV 4:2:2, 32bpp, (1 Cr & Cb sample per 2x1 Y samples), little-endian - { PIX_FMT_YUV422P16BE, IMGFMT_422P16_BE },///< planar YUV 4:2:2, 32bpp, (1 Cr & Cb sample per 2x1 Y samples), big-endian - { PIX_FMT_YUV444P16LE, IMGFMT_444P16_LE },///< planar YUV 4:4:4, 48bpp, (1 Cr & Cb sample per 1x1 Y samples), little-endian - { PIX_FMT_YUV444P16BE, IMGFMT_444P16_BE },///< planar YUV 4:4:4, 48bpp, (1 Cr & Cb sample per 1x1 Y samples), big-endian - - { PIX_FMT_RGB32_1, IMGFMT_RGBA }, ///< Packed RGB 8:8:8, 32bpp, (msb)8R 8G 8B 8A(lsb), in cpu endianness - { PIX_FMT_BGR32_1, IMGFMT_BGRA } ///< Packed RGB 8:8:8, 32bpp, (msb)8B 8G 8R 8A(lsb), in cpu endianness -}; - -PixelFormat pixfmt_from_fourcc(uint32_t fourcc) -{ - unsigned i; - for(i=0;i<sizeof(pfcc)/sizeof(pix_fourcc);i++) { - if(fourcc==pfcc[i].fourcc) return pfcc[i].pix_fmt; - } - return PIX_FMT_NONE; -} - -uint32_t fourcc_from_pixfmt(enum PixelFormat pixfmt) -{ - unsigned i; - for(i=0;i<sizeof(pfcc)/sizeof(pix_fourcc);i++) { - if(pixfmt==pfcc[i].pix_fmt) return pfcc[i].fourcc; - } - return UINT_MAX; -} - -unsigned rgbfmt_depth(unsigned fmt) -{ - switch(pixfmt_from_fourcc(fmt)) { - case PIX_FMT_RGB48BE: - case PIX_FMT_RGB48LE: -// case PIX_FMT_BGR48BE: -// case PIX_FMT_BGR48LE: - return 48; - case PIX_FMT_BGRA: - case PIX_FMT_ABGR: - case PIX_FMT_RGBA: - case PIX_FMT_ARGB: - return 32; - case PIX_FMT_BGR24: - case PIX_FMT_RGB24: - return 24; - case PIX_FMT_BGR565: - case PIX_FMT_RGB565: - case PIX_FMT_GRAY16BE: - case PIX_FMT_GRAY16LE: - return 16; - case PIX_FMT_BGR555: - case PIX_FMT_RGB555: - return 15; - case PIX_FMT_BGR8: - case PIX_FMT_RGB8: - return 8; - case PIX_FMT_BGR4: - case PIX_FMT_RGB4: - case PIX_FMT_BGR4_BYTE: - case PIX_FMT_RGB4_BYTE: - return 4; - case PIX_FMT_MONOBLACK: - return 1; - default: - return 256; - } -} Deleted: mplayerxp/libvo/img_format.h =================================================================== --- mplayerxp/libvo/img_format.h 2012-12-11 16:06:04 UTC (rev 541) +++ mplayerxp/libvo/img_format.h 2012-12-11 16:18:22 UTC (rev 542) @@ -1,161 +0,0 @@ - -#ifndef __IMG_FORMAT_H -#define __IMG_FORMAT_H -#include <inttypes.h> -#include <stdint.h> -#include "mp_config.h" -#include "mp_conf_lavc.h" - -/* RGB/BGR Formats */ -enum { - IMGFMT_RGB_MASK =0xFFFFFF00, - IMGFMT_RGB =(('R'<<24)|('G'<<16)|('B'<<8)), - IMGFMT_RGB1 =(IMGFMT_RGB|1), - IMGFMT_RGB4 =(IMGFMT_RGB|4), - IMGFMT_RGB4_CHAR =(IMGFMT_RGB|4|128), // RGB4 with 1 pixel per byte - IMGFMT_RGB8 =(IMGFMT_RGB|8), - IMGFMT_RGB15 =(IMGFMT_RGB|15), - IMGFMT_RGB16 =(IMGFMT_RGB|16), - IMGFMT_RGB24 =(IMGFMT_RGB|24), - IMGFMT_RGB32 =(IMGFMT_RGB|32), - IMGFMT_RGB48LE =(IMGFMT_RGB|48), - IMGFMT_RGB48BE =(IMGFMT_RGB|48|128), - - IMGFMT_BGR_MASK =0xFFFFFF00, - IMGFMT_BGR =(('B'<<24)|('G'<<16)|('R'<<8)), - IMGFMT_BGR1 =(IMGFMT_BGR|1), - IMGFMT_BGR4 =(IMGFMT_BGR|4), - IMGFMT_BGR4_CHAR =(IMGFMT_BGR|4|128), // BGR4 with 1 pixel per byte - IMGFMT_BGR8 =(IMGFMT_BGR|8), - IMGFMT_BGR15 =(IMGFMT_BGR|15), - IMGFMT_BGR16 =(IMGFMT_BGR|16), - IMGFMT_BGR24 =(IMGFMT_BGR|24), - IMGFMT_BGR32 =(IMGFMT_BGR|32), - IMGFMT_BGR48LE =(IMGFMT_BGR|48), - IMGFMT_BGR48BE =(IMGFMT_BGR|48|128), - -#ifdef WORDS_BIGENDIAN - IMGFMT_ABGR =IMGFMT_RGB32, - IMGFMT_BGRA =(IMGFMT_RGB32|64), - IMGFMT_ARGB =IMGFMT_BGR32, - IMGFMT_RGBA =(IMGFMT_BGR32|64), - IMGFMT_RGB48NE =IMGFMT_RGB48BE, - IMGFMT_BGR48NE =IMGFMT_RGB48LE, -#else - IMGFMT_ABGR =(IMGFMT_BGR32|64), - IMGFMT_BGRA =IMGFMT_BGR32, - IMGFMT_ARGB =(IMGFMT_RGB32|64), - IMGFMT_RGBA =IMGFMT_RGB32, - IMGFMT_RGB48NE =IMGFMT_RGB48LE, - IMGFMT_BGR48NE =IMGFMT_RGB48BE, -#endif -/* old names for compatibility */ - IMGFMT_RG4B =IMGFMT_RGB4_CHAR, - IMGFMT_BG4B =IMGFMT_BGR4_CHAR, -/* Planar YUV Formats */ - IMGFMT_YVU9 =0x39555659, - IMGFMT_IF09 =0x39304649, - IMGFMT_YV12 =0x32315659, - IMGFMT_I420 =0x30323449, - IMGFMT_IYUV =0x56555949, - IMGFMT_CLPL =0x4C504C43, - IMGFMT_Y800 =0x30303859, - IMGFMT_Y8 =0x20203859, - IMGFMT_NV12 =0x3231564E, - IMGFMT_NV21 =0x3132564E, -/* unofficial Planar Formats, FIXME if official 4CC exists */ - IMGFMT_444P =0x50343434, - IMGFMT_422P =0x50323234, - IMGFMT_411P =0x50313134, - IMGFMT_HM12 =0x32314D48, -/* Packed YUV Formats */ - IMGFMT_IUYV =0x56595549, - IMGFMT_IY41 =0x31435949, - IMGFMT_IYU1 =0x31555949, - IMGFMT_IYU2 =0x32555949, - IMGFMT_UYVY =0x59565955, - IMGFMT_UYNV =0x564E5955, - IMGFMT_cyuv =0x76757963, - IMGFMT_Y422 =0x32323459, - IMGFMT_YUY2 =0x32595559, - IMGFMT_YUNV =0x564E5559, - IMGFMT_YVYU =0x55595659, - IMGFMT_Y41P =0x50313459, - IMGFMT_Y211 =0x31313259, - IMGFMT_Y41T =0x54313459, - IMGFMT_Y42T =0x54323459, - IMGFMT_V422 =0x32323456, - IMGFMT_V655 =0x35353656, - IMGFMT_CLJR =0x524A4C43, - IMGFMT_YUVP =0x50565559, - IMGFMT_UYVP =0x50565955, -// 4:2:0 planar with alpha - IMGFMT_420A =0x41303234, - - IMGFMT_444P16_LE =0x51343434, - IMGFMT_444P16_BE =0x34343451, - IMGFMT_422P16_LE =0x51323234, - IMGFMT_422P16_BE =0x34323251, - IMGFMT_420P16_LE =0x51303234, - IMGFMT_420P16_BE =0x34323051, -#if HAVE_BIGENDIAN - IMGFMT_444P16 =IMGFMT_444P16_BE, - IMGFMT_422P16 =IMGFMT_422P16_BE, - IMGFMT_420P16 =IMGFMT_420P16_BE, -#else - IMGFMT_444P16 =IMGFMT_444P16_LE, - IMGFMT_422P16 =IMGFMT_422P16_LE, - IMGFMT_420P16 =IMGFMT_420P16_LE, -#endif -/* Compressed Formats */ - IMGFMT_MPEGPES =(('M'<<24)|('P'<<16)|('E'<<8)|('S')), -/* Formats that are understood by zoran chips, we include - * non-interlaced, interlaced top-first, interlaced bottom-first */ - IMGFMT_ZRMJPEGNI =(('Z'<<24)|('R'<<16)|('N'<<8)|('I')), - IMGFMT_ZRMJPEGIT =(('Z'<<24)|('R'<<16)|('I'<<8)|('T')), - IMGFMT_ZRMJPEGIB =(('Z'<<24)|('R'<<16)|('I'<<8)|('B')), -// I think that this code could not be used by any other codec/format - IMGFMT_XVMC =0x1DC70000, - IMGFMT_XVMC_MASK =0xFFFF0000, -//these are chroma420 - IMGFMT_XVMC_MOCO_MPEG2=(IMGFMT_XVMC|0x02), - IMGFMT_XVMC_IDCT_MPEG2=(IMGFMT_XVMC|0x82), -// VDPAU specific format. - IMGFMT_VDPAU =0x1DC80000, - IMGFMT_VDPAU_MASK =0xFFFF0000, - IMGFMT_VDPAU_MPEG1 =(IMGFMT_VDPAU|0x01), - IMGFMT_VDPAU_MPEG2 =(IMGFMT_VDPAU|0x02), - IMGFMT_VDPAU_H264 =(IMGFMT_VDPAU|0x03), - IMGFMT_VDPAU_WMV3 =(IMGFMT_VDPAU|0x04), - IMGFMT_VDPAU_VC1 =(IMGFMT_VDPAU|0x05), - IMGFMT_VDPAU_MPEG4 =(IMGFMT_VDPAU|0x06) -}; - -static inline int IMGFMT_IS_RGB(uint32_t fmt) { return (fmt&IMGFMT_RGB_MASK)==IMGFMT_RGB; } -static inline int IMGFMT_IS_BGR(uint32_t fmt) { return (fmt&IMGFMT_BGR_MASK)==IMGFMT_BGR; } -static inline int IMGFMT_RGB_DEPTH(uint32_t fmt) { return (fmt&0x3F); } -static inline int IMGFMT_BGR_DEPTH(uint32_t fmt) { return (fmt&0x3F); } -static inline int IMGFMT_IS_YUVP16_LE(uint32_t fmt) { return ((fmt^IMGFMT_420P16_LE) & 0xff0000ff) == 0; } -static inline int IMGFMT_IS_YUVP16_BE(uint32_t fmt) { return ((fmt^IMGFMT_420P16_BE) & 0xff0000ff) == 0; } -static inline int IMGFMT_IS_YUVP16_NE(uint32_t fmt) { return ((fmt^IMGFMT_420P16 ) & 0xff0000ff) == 0; } -static inline int IMGFMT_IS_YUVP16(uint32_t fmt) { return (IMGFMT_IS_YUVP16_LE(fmt)||IMGFMT_IS_YUVP16_BE(fmt)); } -static inline int IMGFMT_IS_XVMC(uint32_t fmt) { return ((fmt)&IMGFMT_XVMC_MASK)==IMGFMT_XVMC; } -static inline int IMGFMT_IS_VDPAU(uint32_t fmt) { return ((fmt)&IMGFMT_VDPAU_MASK)==IMGFMT_VDPAU; } - -typedef struct { - any_t* data; - int size; - int id; // stream id. usually 0x1E0 - int timestamp; // pts, 90000 Hz counter based -} vo_mpegpes_t; - -/** Returns human-readable fourcc description - * @param format fourcc of image - * @return string of format name -**/ -const char * __FASTCALL__ vo_format_name(int format); -enum PixelFormat pixfmt_from_fourcc(uint32_t fourcc); -uint32_t fourcc_from_pixfmt(enum PixelFormat pixfmt); -extern unsigned rgbfmt_depth(unsigned fmt); - -#endif Deleted: mplayerxp/libvo/jpeg_enc.cpp =================================================================== --- mplayerxp/libvo/jpeg_enc.cpp 2012-12-11 16:06:04 UTC (rev 541) +++ mplayerxp/libvo/jpeg_enc.cpp 2012-12-11 16:18:22 UTC (rev 542) @@ -1,451 +0,0 @@ -#include "mp_config.h" -#include "osdep/mplib.h" -using namespace mpxp; -/* Straightforward (to be) optimized JPEG encoder for the YUV422 format - * based on mjpeg code from ffmpeg. - * - * Copyright (c) 2002, Rik Snel - * Parts from ffmpeg Copyright (c) 2000, 2001 Gerard Lantau - * - * This program is mp_free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 2 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program; if not, write to the Free Software - * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. - * - * For an excellent introduction to the JPEG format, see: - * http://www.ece.purdue.edu/~bouman/grad-labs/lab8/pdf/lab.pdf - */ - -#include <sys/types.h> -#include <stdio.h> -#include <stdlib.h> -#ifdef USE_FASTMEMCPY -#include "fastmemcpy.h" -#endif -/* We need this #define because we need ../libavcodec/common.h to #define - * be2me_32, otherwise the linker will complain that it doesn't exist */ -#include "mp_conf_lavc.h" - -#include "jpeg_enc.h" -#include "vo_msg.h" - -/* zr_mjpeg_encode_mb needs access to these tables for the black & white - * option */ -typedef struct MJpegContext { - UINT8 huff_size_dc_luminance[12]; - UINT16 huff_code_dc_luminance[12]; - UINT8 huff_size_dc_chrominance[12]; - UINT16 huff_code_dc_chrominance[12]; - - UINT8 huff_size_ac_luminance[256]; - UINT16 huff_code_ac_luminance[256]; - UINT8 huff_size_ac_chrominance[256]; - UINT16 huff_code_ac_chrominance[256]; -} MJpegContext; - - -/* A very important function pointer */ -extern int (*dct_quantize)(MpegEncContext *s, - DCTELEM *block, int n, int qscale); - - -/* Begin excessive code duplication ************************************/ -/* Code coming from mpegvideo.c and mjpeg.c in ../libavcodec ***********/ - -static const unsigned short aanscales[64] = { - /* precomputed values scaled up by 14 bits */ - 16384, 22725, 21407, 19266, 16384, 12873, 8867, 4520, - 22725, 31521, 29692, 26722, 22725, 17855, 12299, 6270, - 21407, 29692, 27969, 25172, 21407, 16819, 11585, 5906, - 19266, 26722, 25172, 22654, 19266, 15137, 10426, 5315, - 16384, 22725, 21407, 19266, 16384, 12873, 8867, 4520, - 12873, 17855, 16819, 15137, 12873, 10114, 6967, 3552, - 8867, 12299, 11585, 10426, 8867, 6967, 4799, 2446, - 4520, 6270, 5906, 5315, 4520, 3552, 2446, 1247 -}; - -static void convert_matrix(int *qmat, UINT16 *qmat16, const UINT16 *quant_matrix, int qscale) -{ - int i; - - if (av_fdct == jpeg_fdct_ifast) { - for(i=0;i<64;i++) { - /* 16 <= qscale * quant_matrix[i] <= 7905 */ - /* 19952 <= aanscales[i] * qscale * quant_matrix[i] <= 249205026 */ - /* (1<<36)/19952 >= (1<<36)/(aanscales[i] * qscale * quant_matrix[i]) >= (1<<36)/249205026 */ - /* 3444240 >= (1<<36)/(aanscales[i] * qscale * quant_matrix[i]) >= 275 */ - - qmat[block_permute_op(i)] = (int)((UINT64_C(1) << (QMAT_SHIFT + 11)) / - (aanscales[i] * qscale * quant_matrix[block_permute_op(i)])); - } - } else { - for(i=0;i<64;i++) { - /* We can safely suppose that 16 <= quant_matrix[i] <= 255 - So 16 <= qscale * quant_matrix[i] <= 7905 - so (1<<19) / 16 >= (1<<19) / (qscale * quant_matrix[i]) >= (1<<19) / 7905 - so 32768 >= (1<<19) / (qscale * quant_matrix[i]) >= 67 - */ - qmat[i] = (1 << QMAT_SHIFT_MMX) / (qscale * quant_matrix[i]); - qmat16[i] = (1 << QMAT_SHIFT_MMX) / (qscale * quant_matrix[block_permute_op(i)]); - } - } -} - -static inline void encode_dc(MpegEncContext *s, int val, - UINT8 *huff_size, UINT16 *huff_code) -{ - int mant, nbits; - - if (val == 0) { - jput_bits(&s->pb, huff_size[0], huff_code[0]); - } else { - mant = val; - if (val < 0) { - val = -val; - mant--; - } - - /* compute the log (XXX: optimize) */ - nbits = 0; - while (val != 0) { - val = val >> 1; - nbits++; - } - - jput_bits(&s->pb, huff_size[nbits], huff_code[nbits]); - - jput_bits(&s->pb, nbits, mant & ((1 << nbits) - 1)); - } -} - -static void encode_block(MpegEncContext *s, DCTELEM *block, int n) -{ - int mant, nbits, code, i, j; - int component, dc, run, last_index, val; - MJpegContext *m = s->mjpeg_ctx; - UINT8 *huff_size_ac; - UINT16 *huff_code_ac; - - /* DC coef */ - component = (n <= 3 ? 0 : n - 4 + 1); - dc = block[0]; /* overflow is impossible */ - val = dc - s->last_dc[component]; - if (n < 4) { - encode_dc(s, val, m->huff_size_dc_luminance, m->huff_code_dc_luminance); - huff_size_ac = m->huff_size_ac_luminance; - huff_code_ac = m->huff_code_ac_luminance; - } else { - encode_dc(s, val, m->huff_size_dc_chrominance, m->huff_code_dc_chrominance); - huff_size_ac = m->huff_size_ac_chrominance; - huff_code_ac = m->huff_code_ac_chrominance; - } - s->last_dc[component] = dc; - - /* AC coefs */ - - run = 0; - last_index = s->block_last_index[n]; - for(i=1;i<=last_index;i++) { - j = zigzag_direct[i]; - val = block[j]; - if (val == 0) { - run++; - } else { - while (run >= 16) { - jput_bits(&s->pb, huff_size_ac[0xf0], huff_code_ac[0xf0]); - run -= 16; - } - mant = val; - if (val < 0) { - val = -val; - mant--; - } - - /* compute the log (XXX: optimize) */ - nbits = 0; - while (val != 0) { - val = val >> 1; - nbits++; - } - code = (run << 4) | nbits; - - jput_bits(&s->pb, huff_size_ac[code], huff_code_ac[code]); - - jput_bits(&s->pb, nbits, mant & ((1 << nbits) - 1)); - run = 0; - } - } - - /* output EOB only if not already 64 values */ - if (last_index < 63 || run != 0) - jput_bits(&s->pb, huff_size_ac[0], huff_code_ac[0]); -} - -/* End excessive code duplication **************************************/ - -/* this function is a reproduction of the one in mjpeg, it includes two - * changes, it allows for black&white encoding (it skips the U and V - * macroblocks and it outputs the huffman code for 'no change' (dc) and - * 'all zero' (ac)) and it takes 4 macroblocks (422) instead of 6 (420) */ -static void zr_mjpeg_encode_mb(jpeg_enc_t *j) { - - MJpegContext *m = j->s->mjpeg_ctx; - - encode_block(j->s, j->s->block[0], 0); - encode_block(j->s, j->s->block[1], 1); - if (j->bw) { - /* U */ - jput_bits(&j->s->pb, m->huff_size_dc_chrominance[0], - m->huff_code_dc_chrominance[0]); - jput_bits(&j->s->pb, m->huff_size_ac_chrominance[0], - m->huff_code_ac_chrominance[0]); - /* V */ - jput_bits(&j->s->pb, m->huff_size_dc_chrominance[0], - m->huff_code_dc_chrominance[0]); - jput_bits(&j->s->pb, m->huff_size_ac_chrominance[0], - m->huff_code_ac_chrominance[0]); - } else { - /* we trick encode_block here so that it uses - * chrominance huffman tables instead of luminance ones - * (see the effect of second argument of encode_block) */ - encode_block(j->s, j->s->block[2], 4); - encode_block(j->s, j->s->block[3], 5); - } -} - -/* this function can take all kinds of YUV colorspaces - * YV12, YVYU, UYVY. The necesary parameters must be set up by the caller - * y_ps means "y pixel size", y_rs means "y row size". - * For YUYV, for example, is u_buf = y_buf + 1, v_buf = y_buf + 3, - * y_ps = 2, u_ps = 4, v_ps = 4, y_rs = u_rs = v_rs. - * - * The actual buffers must be passed with mjpeg_encode_frame, this is - * to make it possible to call encode on the buffer provided by the - * codec in draw_frame. - * - * The data is straightened out at the moment it is put in DCT - * blocks, there are therefore no spurious memcopies involved */ -/* Notice that w must be a multiple of 16 and h must be a multiple of 8 */ -/* We produce YUV422 jpegs, the colors must be subsampled horizontally, - * if the colors are also subsampled vertically, then this function - * performs cheap upsampling (better solution will be: a DCT that is - * optimized in the case that every two rows are the same) */ -/* cu = 0 means 'No cheap upsampling' - * cu = 1 means 'perform cheap upsampling' */ -/* The encoder doesn't know anything about interlacing, the halve height - * needs to be passed and the double rowstride. Which field gets encoded - * is decided by what buffers are passed to mjpeg_encode_frame */ -jpeg_enc_t *jpeg_enc_init(int w, int h, int y_psize, int y_rsize, - int u_psize, int u_rsize, int v_psize, int v_rsize, - int cu, int q, int b) { - jpeg_enc_t *j; - int i = 0; - MSGL_V( "JPEnc init: %dx%d %d %d %d %d %d %d\n", - w, h, y_psize, y_rsize, u_psize, - u_rsize, v_psize, v_rsize); - - j = mp_malloc(sizeof(jpeg_enc_t)); - if (j == NULL) return NULL; - - j->s = mp_malloc(sizeof(MpegEncContext)); - if (j->s == NULL) { - delete j; - return NULL; - } - - /* info on how to access the pixels */ - j->y_ps = y_psize; - j->u_ps = u_psize; - j->v_ps = v_psize; - j->y_rs = y_rsize; - j->u_rs = u_rsize; - j->v_rs = v_rsize; - - j->s->width = w; - j->s->height = h; - j->s->qscale = q; - - j->s->out_format = FMT_MJPEG; - j->s->intra_only = 1; - j->s->encoding = 1; - j->s->pict_type = I_TYPE; - j->s->y_dc_scale = 8; - j->s->c_dc_scale = 8; - - j->s->mjpeg_write_tables = 1; - j->s->mjpeg_vsample[0] = 1; - j->s->mjpeg_vsample[1] = 1; - j->s->mjpeg_vsample[2] = 1; - j->s->mjpeg_hsample[0] = 2; - j->s->mjpeg_hsample[1] = 1; - j->s->mjpeg_hsample[2] = 1; - - j->cheap_upsample = cu; - j->bw = b; - - /* if libavcodec is used by the decoder then we must not - * initialize again, but if it is not initialized then we must - * initialize it here. There must be a better way to find out - * if it is initialized */ - if (av_fdct != jpeg_fdct_ifast -#ifdef CAN_COMPILE_MMX - && av_fdct != fdct_mmx -#endif - ) { - /* we need to initialize libavcodec */ - avcodec_init(); - } - - if (mjpeg_init(j->s) < 0) { - delete j->s; - delete j; - return NULL; - } - - if (MPV_common_init(j->s) < 0) { - delete j->s; - delete j; - return NULL; - } - - /* correct the value for sc->mb_height */ - j->s->mb_height = j->s->height/8; - j->s->mb_intra = 1; - - j->s->intra_matrix[0] = default_intra_matrix[0]; - for (i = 1; i < 64; i++) - j->s->intra_matrix[i] = - (default_intra_matrix[i]*j->s->qscale) >> 3; - convert_matrix(j->s->q_intra_matrix, j->s->q_intra_matrix16, - j->s->intra_matrix, 8); - return j; -} - -int jpeg_enc_frame(jpeg_enc_t *j, unsigned char *y_data, - unsigned char *u_data, unsigned char *v_data, char *bufr) { - int i, k, mb_x, mb_y; - short int *dest; - unsigned char *source; - /* initialize the buffer */ - - init_put_bits(&j->s->pb, bufr, 1024*256, NULL, NULL); - - mjpeg_picture_header(j->s); - - j->s->last_dc[0] = 128; - j->s->last_dc[1] = 128; - j->s->last_dc[2] = 128; - - for (mb_y = 0; mb_y < j->s->mb_height; mb_y++) { - for (mb_x = 0; mb_x < j->s->mb_width; mb_x++) { - /* conversion 8 to 16 bit and filling of blocks - * must be mmx optimized */ - /* fill 2 Y macroblocks and one U and one V */ - source = mb_y * 8 * j->y_rs + - 16 * j->y_ps * mb_x + y_data; - dest = j->s->block[0]; - for (i = 0; i < 8; i++) { - for (k = 0; k < 8; k++) { - dest[k] = source[k*j->y_ps]; - } - dest += 8; - source += j->y_rs; - } - source = mb_y * 8 * j->y_rs + - (16*mb_x + 8)*j->y_ps + y_data; - dest = j->s->block[1]; - for (i = 0; i < 8; i++) { - for (k = 0; k < 8; k++) { - dest[k] = source[k*j->y_ps]; - } - dest += 8; - source += j->y_rs; - } - if (!j->bw && j->cheap_upsample) { - source = mb_y*4*j->u_rs + - 8*mb_x*j->u_ps + u_data; - dest = j->s->block[2]; - for (i = 0; i < 4; i++) { - for (k = 0; k < 8; k++) { - dest[k] = source[k*j->u_ps]; - dest[k+8] = source[k*j->u_ps]; - } - dest += 16; - source += j->u_rs; - } - source = mb_y*4*j->v_rs + - 8*mb_x*j->v_ps + v_data; - dest = j->s->block[3]; - for (i = 0; i < 4; i++) { - for (k = 0; k < 8; k++) { - dest[k] = source[k*j->v_ps]; - dest[k+8] = source[k*j->v_ps]; - } - dest += 16; - source += j->u_rs; - } - } else if (!j->bw && !j->cheap_upsample) { - source = mb_y*8*j->u_rs + - 8*mb_x*j->u_ps + u_data; - dest = j->s->block[2]; - for (i = 0; i < 8; i++) { - for (k = 0; k < 8; k++) - dest[k] = source[k*j->u_ps]; - dest += 8; - source += j->u_rs; - } - source = mb_y*8*j->v_rs + - 8*mb_x*j->v_ps + v_data; - dest = j->s->block[3]; - for (i = 0; i < 8; i++) { - for (k = 0; k < 8; k++) - dest[k] = source[k*j->v_ps]; - dest += 8; - source += j->u_rs; - } - } - emms_c(); /* is this really needed? */ - - j->s->block_last_index[0] = - dct_quantize(j->s, j->s->block[0], - 0, j->s->qscale); - j->s->block_last_index[1] = - dct_quantize(j->s, j->s->block[1], - 1, j->s->qscale); - - if (!j->bw) { - j->s->block_last_index[4] = - dct_quantize(j->s, j->s->block[2], - 4, j->s->qscale); - j->s->block_last_index[5] = - dct_quantize(j->s, j->s->block[3], - 5, j->s->qscale); - } - zr_mjpeg_encode_mb(j); - } - } - emms_c(); - mjpeg_picture_trailer(j->s); - flush_put_bits(&j->s->pb); - - if (j->s->mjpeg_write_tables == 1) - j->s->mjpeg_write_tables = 0; - - return pbBufPtr(&(j->s->pb)) - j->s->pb.buf; -} - -void jpeg_enc_uninit(jpeg_enc_t *j) { - mjpeg_close(j->s); - delete j->s; - delete j; -} - Deleted: mplayerxp/libvo/jpeg_enc.h =================================================================== --- mplayerxp/libvo/jpeg_enc.h 2012-12-11 16:06:04 UTC (rev 541) +++ mplayerxp/libvo/jpeg_enc.h 2012-12-11 16:18:22 UTC (rev 542) @@ -1,45 +0,0 @@ -/* Straightforward (to be) optimized JPEG encoder for the YUV422 format - * based on mjpeg code from ffmpeg. - * - * Copyright (c) 2002, Rik Snel - * Parts from ffmpeg Copyright (c) 2000, 2001 Gerard Lantau - * - * This program is mp_free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 2 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program; if not, write to the Free Software - * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. - * - * For an excellent introduction to the JPEG format, see: - * http://www.ece.purdue.edu/~bourman/grad-labs/lab8/pdf/lab.pdf - */ - - -typedef struct { - struct MpegEncContext *s; - int cheap_upsample; - int bw; - int y_ps; - int u_ps; - int v_ps; - int y_rs; - int u_rs; - int v_rs; -} jpeg_enc_t; - -jpeg_enc_t *jpeg_enc_init(int w, int h, int y_psize, int y_rsize, - int u_psize, int u_rsize, int v_psize, int v_rsize, - int cu, int q, int b); - -int jpeg_enc_frame(jpeg_enc_t *j, unsigned char *y_data, - unsigned char *u_data, unsigned char *v_data, char *bufr); - -void jpeg_enc_uninit(jpeg_enc_t *j); Deleted: mplayerxp/libvo/osd_render.cpp =================================================================== --- mplayerxp/libvo/osd_render.cpp 2012-12-11 16:06:04 UTC (rev 541) +++ mplayerxp/libvo/osd_render.cpp 2012-12-11 16:18:22 UTC (rev 542) @@ -1,263 +0,0 @@ -#include "mp_config.h" -#include "osdep/mplib.h" -using namespace mpxp; -/* - Generic alpha renderers for all YUV modes and RGB depths. - These are "reference implementations", should be optimized later (MMX, etc) - Templating Code from Michael Niedermayer (mic...@gm...) is under GPL -*/ - -#include <stdio.h> -#include <pthread.h> - -#include <inttypes.h> -#include "osdep/cpudetect.h" -#include "osdep/mangle.h" -#include "mplayerxp.h" -#include "osd_render.h" -#include "vo_msg.h" - -#if defined(__MMX__) -static const uint64_t bFF __attribute__((used)) __attribute__((aligned(8))) = 0xFFFFFFFFFFFFFFFFULL; -static const unsigned long long mask24lh __attribute__((used)) __attribute__((aligned(8))) = 0xFFFF000000000000ULL; -static const unsigned long long mask24hl __attribute__((used)) __attribute__((aligned(8))) = 0x0000FFFFFFFFFFFFULL; -#endif - -#define PVECTOR_ACCEL_H "osd_render_template.h" -#include "pvector/pvector_inc.h" - -namespace mpxp { -#ifdef FAST_OSD_TABLE -static unsigned short fast_osd_15bpp_table[256]; -static unsigned short fast_osd_16bpp_table[256]; -#endif - -static void __FASTCALL__ vo_draw_alpha_rgb15_c(int w,int h, const unsigned char* src, const unsigned char *srca, int srcstride, unsigned char* dstbase,int dststride,int finalize){ - int y; - for(y=0;y<h;y++){ - register unsigned short *dst = (unsigned short*) dstbase; - register int x; - for(x=0;x<w;x++){ - if(srca[x]){ -#ifdef FAST_OSD -#ifdef FAST_OSD_TABLE - dst[x]=fast_osd_15bpp_table[src[x]]; -#else - register unsigned int a=src[x]>>3; - dst[x]=(a<<10)|(a<<5)|a; -#endif -#else - unsigned char r=dst[x]&0x1F; - unsigned char g=(dst[x]>>5)&0x1F; - unsigned char b=(dst[x]>>10)&0x1F; - r=(((r*srca[x])>>5)+src[x])>>3; - g=(((g*srca[x])>>5)+src[x])>>3; - b=(((b*srca[x])>>5)+src[x])>>3; - dst[x]=(b<<10)|(g<<5)|r; -#endif - } - } - src+=srcstride; - srca+=srcstride; - dstbase+=dststride; - } - return; -} - -static void __FASTCALL__ vo_draw_alpha_rgb16_c(int w,int h, const unsigned char* src, const unsigned char *srca, int srcstride, unsigned char* dstbase,int dststride,int finalize){ - int y; - for(y=0;y<h;y++){ - register unsigned short *dst = (unsigned short*) dstbase; - register int x; - for(x=0;x<w;x++){ - if(srca[x]){ -#ifdef FAST_OSD -#ifdef FAST_OSD_TABLE - dst[x]=fast_osd_16bpp_table[src[x]]; -#else - dst[x]=((src[x]>>3)<<11)|((src[x]>>2)<<5)|(src[x]>>3); -#endif -#else - unsigned char r=dst[x]&0x1F; - unsigned char g=(dst[x]>>5)&0x3F; - unsigned char b=(dst[x]>>11)&0x1F; - r=(((r*srca[x])>>5)+src[x])>>3; - g=(((g*srca[x])>>6)+src[x])>>2; - b=(((b*srca[x])>>5)+src[x])>>3; - dst[x]=(b<<11)|(g<<5)|r; -#endif - } - } - src+=srcstride; - srca+=srcstride; - dstbase+=dststride; - } - return; -} - -static void __FASTCALL__ vo_draw_alpha_uyvy_c(int w,int h, const unsigned char* src, const unsigned char *srca, int srcstride, unsigned char* dstbase,int dststride,int finalize){ - vo_draw_alpha_yuy2_c(w,h,src,srca,srcstride,dstbase+1,dststride,finalize); -} - -static void __FASTCALL__ vo_draw_alpha_null(int w,int h, const unsigned char* src, const unsigned char *srca, int srcstride, unsigned char* dstbase,int dststride,int finalize){ - UNUSED(w); - UNUSED(h); - UNUSED(src); - UNUSED(srca); - UNUSED(srcstride); - UNUSED(dstbase); - UNUSED(dststride); - UNUSED(finalize); -} - -void OSD_Render::render(int w,int h, const unsigned char* src, const unsigned char *srca, int srcstride, unsigned char* dstbase,int dststride,int finalize) const -{ - (*draw_alpha_ptr)(w,h,src,srca,srcstride,dstbase,dststride,finalize); -} - -void OSD_Render::get_draw_alpha(unsigned fmt) { - MSG_DBG2("get_draw_alpha(%s)\n",vo_format_name(fmt)); - switch(fmt) { - case IMGFMT_BGR15: - case IMGFMT_RGB15: - draw_alpha_ptr=draw_alpha_rgb15_ptr; - break; - case IMGFMT_BGR16: - case IMGFMT_RGB16: - draw_alpha_ptr=draw_alpha_rgb16_ptr; - break; - case IMGFMT_BGR24: - case IMGFMT_RGB24: - draw_alpha_ptr=draw_alpha_rgb24_ptr; - break; - case IMGFMT_BGR32: - case IMGFMT_RGB32: - draw_alpha_ptr=draw_alpha_rgb32_ptr; - break; - case IMGFMT_YV12: - case IMGFMT_I420: - case IMGFMT_IYUV: - case IMGFMT_YVU9: - case IMGFMT_IF09: - case IMGFMT_Y800: - case IMGFMT_Y8: - draw_alpha_ptr=draw_alpha_yv12_ptr; - break; - case IMGFMT_YUY2: - draw_alpha_ptr=draw_alpha_yuy2_ptr; - break; - case IMGFMT_UYVY: - draw_alpha_ptr=draw_alpha_uyvy_ptr; - break; - default: - MSG_ERR("draw alpha for %s fourcc not implemented yet!",vo_format_name(fmt)); - draw_alpha_ptr=vo_draw_alpha_null; - break; - } -} - -OSD_Render::OSD_Render(unsigned fourcc) -{ -#ifdef FAST_OSD_TABLE - int i; - for(i=0;i<256;i++){ - fast_osd_15bpp_table[i]=((i>>3)<<10)|((i>>3)<<5)|(i>>3); - fast_osd_16bpp_table[i]=((i>>3)<<11)|((i>>2)<<5)|(i>>3); - } -#endif -/*FIXME the optimized stuff is a lie for 15/16bpp as they arent optimized yet*/ -// ordered per speed fasterst first -#ifdef __AVX__ -if(gCpuCaps.hasSSE41) -{ - MSG_V("Using SSE4 Optimized OnScreenDisplay\n"); - draw_alpha_yv12_ptr=vo_draw_alpha_yv12_AVX; - draw_alpha_yuy2_ptr=vo_draw_alpha_yuy2_AVX; - draw_alpha_rgb24_ptr=vo_draw_alpha_rgb24_AVX; - draw_alpha_rgb32_ptr=vo_draw_alpha_rgb32_AVX; -} -else -#endif -#ifdef __SSE4_1__ -if(gCpuCaps.hasSSE41) -{ - MSG_V("Using SSE4 Optimized OnScreenDisplay\n"); - draw_alpha_yv12_ptr=vo_draw_alpha_yv12_SSE4; - draw_alpha_yuy2_ptr=vo_draw_alpha_yuy2_SSE4; - draw_alpha_rgb24_ptr=vo_draw_alpha_rgb24_SSE4; - draw_alpha_rgb32_ptr=vo_draw_alpha_rgb32_SSE4; -} -else -#endif -#ifdef __SSSE3__ -if(gCpuCaps.hasSSSE3) -{ - MSG_V("Using SSSE3 Optimized OnScreenDisplay\n"); - draw_alpha_yv12_ptr=vo_draw_alpha_yv12_SSSE3; - draw_alpha_yuy2_ptr=vo_draw_alpha_yuy2_SSSE3; - draw_alpha_rgb24_ptr=vo_draw_alpha_rgb24_SSSE3; - draw_alpha_rgb32_ptr=vo_draw_alpha_rgb32_SSSE3; -} -else -#endif -#ifdef __SSE3__ -if(gCpuCaps.hasSSE3) -{ - MSG_V("Using SSE3 Optimized OnScreenDisplay\n"); - draw_alpha_yv12_ptr=vo_draw_alpha_yv12_SSE3; - draw_alpha_yuy2_ptr=vo_draw_alpha_yuy2_SSE3; - draw_alpha_rgb24_ptr=vo_draw_alpha_rgb24_SSE3; - draw_alpha_rgb32_ptr=vo_draw_alpha_rgb32_SSE3; -} -else -#endif -#ifdef __SSE2__ -if(gCpuCaps.hasSSE2) -{ - MSG_V("Using SSE2 Optimized OnScreenDisplay\n"); - draw_alpha_yv12_ptr=vo_draw_alpha_yv12_SSE2; - draw_alpha_yuy2_ptr=vo_draw_alpha_yuy2_SSE2; - draw_alpha_rgb24_ptr=vo_draw_alpha_rgb24_SSE2; - draw_alpha_rgb32_ptr=vo_draw_alpha_rgb32_SSE2; -} -else -#endif -#ifndef __x86_64__ -#ifdef __SSE__ -if(gCpuCaps.hasMMX2) -{ - MSG_V("Using MMX (with tiny bit MMX2) Optimized OnScreenDisplay\n"); - draw_alpha_yv12_ptr=vo_draw_alpha_yv12_SSE; - draw_alpha_yuy2_ptr=vo_draw_alpha_yuy2_SSE; - draw_alpha_rgb24_ptr=vo_draw_alpha_rgb24_SSE; - draw_alpha_rgb32_ptr=vo_draw_alpha_rgb32_SSE; -} -else -#endif -//#ifdef __MMX__ -//if(gCpuCaps.hasMMX) -//{ -// MSG_V("Using MMX (with tiny bit MMX2) Optimized OnScreenDisplay\n"); -// draw_alpha_yv12_ptr=vo_draw_alpha_yv12_MMX; -// draw_alpha_yuy2_ptr=vo_draw_alpha_yuy2_MMX; -// draw_alpha_rgb24_ptr=vo_draw_alpha_rgb24_MMX; -// draw_alpha_rgb32_ptr=vo_draw_alpha_rgb32_MMX; -//} -//else -//#endif -#endif -{ - MSG_V("Using generic OnScreenDisplay\n"); - draw_alpha_yv12_ptr=vo_draw_alpha_yv12_c; - draw_alpha_yuy2_ptr=vo_draw_alpha_yuy2_c; - draw_alpha_rgb24_ptr=vo_draw_alpha_rgb24_c; - draw_alpha_rgb32_ptr=vo_draw_alpha_rgb32_c; -} - draw_alpha_uyvy_ptr=vo_draw_alpha_uyvy_c; - draw_alpha_rgb15_ptr=vo_draw_alpha_rgb15_c; - draw_alpha_rgb16_ptr=vo_draw_alpha_rgb16_c; - get_draw_alpha(fourcc); -} - -OSD_Render::~OSD_Render(){} -} // namesapce mpxp Deleted: mplayerxp/libvo/osd_render.h =================================================================== --- mplayerxp/libvo/osd_render.h 2012-12-11 16:06:04 UTC (rev 541) +++ mplayerxp/libvo/osd_render.h 2012-12-11 16:18:22 UTC (rev 542) @@ -1,27 +0,0 @@ -#ifndef __MPLAYER_OSD_RENDER_H_INCLUDED -#define __MPLAYER_OSD_RENDER_H_INCLUDED 1 - -/* Generic alpha renderers for all YUV modes and RGB depths. */ -/* These are "reference implementations", should be optimized later (MMX, etc) */ -namespace mpxp { - class OSD_Render : public Opaque { - public: - OSD_Render(unsigned fourcc); - virtual ~OSD_Render(); - - void render(int w,int h, const unsigned char* src, const unsigned char *srca, int srcstride, unsigned char* dstbase,int dststride,int finalize) const; - private: - void get_draw_alpha(unsigned fmt); - typedef void (* __FASTCALL__ draw_alpha_f)(int w,int h, const unsigned char* src, const unsigned char *srca, int srcstride, unsigned char* dstbase,int dststride,int finalize); - draw_alpha_f draw_alpha_ptr; - draw_alpha_f draw_alpha_yv12_ptr; - draw_alpha_f draw_alpha_yuy2_ptr; - draw_alpha_f draw_alpha_uyvy_ptr; - draw_alpha_f draw_alpha_rgb24_ptr; - draw_alpha_f draw_alpha_rgb32_ptr; - draw_alpha_f draw_alpha_rgb15_ptr; - draw_alpha_f draw_alpha_rgb16_ptr; - }; -} // namespace mpxp - -#endif Deleted: mplayerxp/libvo/osd_render_template.h =================================================================== --- mplayerxp/libvo/osd_render_template.h 2012-12-11 16:06:04 UTC (rev 541) +++ mplayerxp/libvo/osd_render_template.h 2012-12-11 16:18:22 UTC (rev 542) @@ -1,318 +0,0 @@ -// Generic alpha renderers for all YUV modes and RGB depths. -// Optimized by Nick and Michael -// Code from Michael Niedermayer (mic...@gm...) is under GPL -#include "pvector/pvector.h" - -#ifdef HAVE_INT_PVECTOR -static __inline __m64 __attribute__((__gnu_inline__, __always_inline__)) -PVECTOR_RENAME(_m_load)(const any_t*__P) -{ - return *(const __m64 *)__P; -} -#undef _m_load -#define _m_load PVECTOR_RENAME(_m_load) - -static __inline __m64 __attribute__((__gnu_inline__, __always_inline__)) -PVECTOR_RENAME(_m_load_half)(const any_t*__P) -{ - return _mm_cvtsi32_si64 (*(const int *)__P); -} -#undef _m_load_half -#define _m_load_half PVECTOR_RENAME(_m_load_half) - -static __inline void __attribute__((__gnu_inline__, __always_inline__)) -PVECTOR_RENAME(_m_store)(any_t*__P, __m64 src) -{ - *(__m64 *)__P = src; -} -#undef _m_store -#define _m_store PVECTOR_RENAME(_m_store) - -static __inline void __attribute__((__gnu_inline__, __always_inline__)) -PVECTOR_RENAME(_m_store_half)(any_t*__P, __m64 src) -{ - *(int *)__P = _mm_cvtsi64_si32(src); -} -#undef _m_store_half -#define _m_store_half PVECTOR_RENAME(_m_store_half) - -stat... [truncated message content] |
From: <nic...@us...> - 2012-12-11 17:07:11
|
Revision: 546 http://mplayerxp.svn.sourceforge.net/mplayerxp/?rev=546&view=rev Author: nickols_k Date: 2012-12-11 17:07:00 +0000 (Tue, 11 Dec 2012) Log Message: ----------- cleanups Modified Paths: -------------- mplayerxp/libmpcodecs/dec_video.cpp mplayerxp/libmpcodecs/vd_lavc.cpp mplayerxp/postproc/vf.cpp mplayerxp/postproc/vf_vo2.cpp Modified: mplayerxp/libmpcodecs/dec_video.cpp =================================================================== --- mplayerxp/libmpcodecs/dec_video.cpp 2012-12-11 17:04:33 UTC (rev 545) +++ mplayerxp/libmpcodecs/dec_video.cpp 2012-12-11 17:07:00 UTC (rev 546) @@ -527,7 +527,7 @@ vf_prepend_filter(s,"palette",&conf); goto csp_again; } else { - // sws failed, if the last filter (vf_vo) support MPEGPES try to append vf_lavc + // sws failed, if the last filter (vf_vo2) support MPEGPES try to append vf_lavc // Remove the scale filter if we added it ourself if(strcmp(vf_get_first_name(s),"fmtcvt")==0) vf_remove_first(s); } Modified: mplayerxp/libmpcodecs/vd_lavc.cpp =================================================================== --- mplayerxp/libmpcodecs/vd_lavc.cpp 2012-12-11 17:04:33 UTC (rev 545) +++ mplayerxp/libmpcodecs/vd_lavc.cpp 2012-12-11 17:07:00 UTC (rev 546) @@ -674,7 +674,7 @@ else priv->use_slices=0; /* if codec is capable DR1 - if sh->vfilter==vf_vo (DR1 is meaningless into temp buffer) + if sh->vfilter==vf_vo2 (DR1 is meaningless into temp buffer) It always happens with (vidix+bus mastering), (if (src_w%16==0)) with xv */ has_b_frames=priv->ctx->has_b_frames|| Modified: mplayerxp/postproc/vf.cpp =================================================================== --- mplayerxp/postproc/vf.cpp 2012-12-11 17:04:33 UTC (rev 545) +++ mplayerxp/postproc/vf.cpp 2012-12-11 17:07:00 UTC (rev 546) @@ -54,7 +54,7 @@ extern const vf_info_t vf_info_swapuv; extern const vf_info_t vf_info_test; extern const vf_info_t vf_info_unsharp; -extern const vf_info_t vf_info_vo; +extern const vf_info_t vf_info_vo2; extern const vf_info_t vf_info_yuvcsp; extern const vf_info_t vf_info_yuy2; extern const vf_info_t vf_info_yvu9; @@ -96,7 +96,7 @@ &vf_info_swapuv, &vf_info_test, &vf_info_unsharp, - &vf_info_vo, + &vf_info_vo2, &vf_info_yuvcsp, &vf_info_yuy2, &vf_info_yvu9, Modified: mplayerxp/postproc/vf_vo2.cpp =================================================================== --- mplayerxp/postproc/vf_vo2.cpp 2012-12-11 17:04:33 UTC (rev 545) +++ mplayerxp/postproc/vf_vo2.cpp 2012-12-11 17:07:00 UTC (rev 546) @@ -97,7 +97,7 @@ dri_surface_cap_t dcaps; int rflags; uint32_t flags=mpxp_context().video().output->query_format(&fmt,w,h); - MSG_DBG2("[vf_vo] %i=query_format(%s)\n",flags,vo_format_name(fmt)); + MSG_DBG2("[vf_vo2] %i=query_format(%s)\n",flags,vo_format_name(fmt)); rflags=0; UNUSED(vf); if(flags) { @@ -156,7 +156,7 @@ return MPXP_Ok; } -extern const vf_info_t vf_info_vo = { +extern const vf_info_t vf_info_vo2 = { "libvo2 wrapper", "vo", "A'rpi", This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <nic...@us...> - 2012-12-12 09:07:54
|
Revision: 547 http://mplayerxp.svn.sourceforge.net/mplayerxp/?rev=547&view=rev Author: nickols_k Date: 2012-12-12 09:07:39 +0000 (Wed, 12 Dec 2012) Log Message: ----------- convert struct ASX_Parser_t into class ASX_Parser + accuracies Modified Paths: -------------- mplayerxp/libplaytree/asxparser.cpp mplayerxp/libplaytree/asxparser.h mplayerxp/libplaytree/playtreeparser.cpp mplayerxp/mplayerxp.cpp mplayerxp/mplayerxp.h mplayerxp/osdep/aclib.cpp mplayerxp/osdep/aclib_template.h mplayerxp/osdep/fastmemcpy.h mplayerxp/osdep/mp_malloc.cpp mplayerxp/osdep/mplib.h mplayerxp/postproc/libmenu/menu.cpp mplayerxp/postproc/libmenu/menu_cmdlist.cpp mplayerxp/postproc/libmenu/menu_param.cpp Modified: mplayerxp/libplaytree/asxparser.cpp =================================================================== --- mplayerxp/libplaytree/asxparser.cpp 2012-12-11 17:07:00 UTC (rev 546) +++ mplayerxp/libplaytree/asxparser.cpp 2012-12-12 09:07:39 UTC (rev 547) @@ -17,7 +17,7 @@ #include "mp_msg.h" ////// List utils - +namespace mpxp { static void __FASTCALL__ asx_list_add(any_t* list_ptr,any_t* entry){ any_t** list = *(any_t***)list_ptr; int c = 0; @@ -77,90 +77,78 @@ /////// Attribs utils char* __FASTCALL__ asx_get_attrib(const char* attrib,char** attribs) { - char** ptr; + char** ptr; - if(attrib == NULL || attribs == NULL) return NULL; - for(ptr = attribs; ptr[0] != NULL; ptr += 2){ - if(strcasecmp(ptr[0],attrib) == 0) - return mp_strdup(ptr[1]); - } - return NULL; + if(attrib == NULL || attribs == NULL) return NULL; + for(ptr = attribs; ptr[0] != NULL; ptr += 2){ + if(strcasecmp(ptr[0],attrib) == 0) return mp_strdup(ptr[1]); + } + return NULL; } int __FASTCALL__ asx_attrib_to_enum(const char* val,const char** valid_vals) { - const char** ptr; - int r = 0; + const char** ptr; + int r = 0; - if(valid_vals == NULL || val == NULL) return -2; - for(ptr = valid_vals ; ptr[0] != NULL ; ptr++) { - if(strcasecmp(val,ptr[0]) == 0) return r; - r++; - } - - return -1; + if(valid_vals == NULL || val == NULL) return -2; + for(ptr = valid_vals ; ptr[0] != NULL ; ptr++) { + if(strcasecmp(val,ptr[0]) == 0) return r; + r++; + } + return -1; } -static void __FASTCALL__ asx_warning_attrib_invalid(ASX_Parser_t* parser, char* elem, char* attrib, - const char** valid_vals,char* val) { - char *str,*vals; - const char **ptr; - int len; +void ASX_Parser::warning_attrib_invalid(char* elem, char* attrib, + const char** valid_vals,char* val) +{ + char *str,*vals; + const char **ptr; + int len; - if(valid_vals == NULL || valid_vals[0] == NULL) return; + if(valid_vals == NULL || valid_vals[0] == NULL) return; - len = strlen(valid_vals[0]) + 1; - for(ptr = valid_vals+1 ; ptr[0] != NULL; ptr++) { - len += strlen(ptr[0]); - len += ((ptr[1] == NULL) ? 4 : 2); - } - str = vals = new char[len]; - vals += sprintf(vals,"%s",valid_vals[0]); - for(ptr = valid_vals + 1 ; ptr[0] != NULL ; ptr++) { - if(ptr[1] == NULL) - vals += sprintf(vals," or %s",ptr[0]); - else - vals += sprintf(vals,", %s",ptr[0]); - } - MSG_ERR("at line %d : attribute %s of element %s is invalid (%s). Valid values are %s", - parser->line,attrib,elem,val,str); - delete str; + len = strlen(valid_vals[0]) + 1; + for(ptr = valid_vals+1 ; ptr[0] != NULL; ptr++) { + len += strlen(ptr[0]); + len += ((ptr[1] == NULL) ? 4 : 2); + } + str = vals = new char[len]; + vals += sprintf(vals,"%s",valid_vals[0]); + for(ptr = valid_vals + 1 ; ptr[0] != NULL ; ptr++) { + if(ptr[1] == NULL) vals += sprintf(vals," or %s",ptr[0]); + else vals += sprintf(vals,", %s",ptr[0]); + } + MSG_ERR("at line %d : attribute %s of element %s is invalid (%s). Valid values are %s", + line,attrib,elem,val,str); + delete str; } -static int __FASTCALL__ asx_get_yes_no_attrib(ASX_Parser_t* parser, char* element, char* attrib,char** attribs,int def) { - char* val = asx_get_attrib(attrib,attribs); - const char* valids[] = { "NO", "YES", NULL }; - int r; +int ASX_Parser::get_yes_no_attrib(char* element, char* attrib,char** cattribs,int def) { + char* val = asx_get_attrib(attrib,cattribs); + const char* valids[] = { "NO", "YES", NULL }; + int r; - if(val == NULL) return def; - r = asx_attrib_to_enum(val,valids); + if(val == NULL) return def; + r = asx_attrib_to_enum(val,valids); - if(r < 0) { - asx_warning_attrib_invalid(parser,element,attrib,valids,val); - r = def; - } - - delete val; - return r; + if(r < 0) { + warning_attrib_invalid(element,attrib,valids,val); + r = def; + } + delete val; + return r; } -#define asx_warning_attrib_required(p,e,a) MSG_WARN("At line %d : element %s don't have the required attribute %s",p->line,e,a) -#define asx_warning_body_parse_error(p,e) MSG_WARN("At line %d : error while parsing %s body",p->line,e) +void ASX_Parser::warning_attrib_required(const char *e, const char *a) { MSG_WARN("At line %d : element %s don't have the required attribute %s",line,e,a); } +void ASX_Parser::warning_body_parse_error(const char *e) { MSG_WARN("At line %d : error while parsing %s body",line,e); } -ASX_Parser_t* asx_parser_new(void) { - ASX_Parser_t* parser = new(zeromem) ASX_Parser_t; - return parser; -} +ASX_Parser::ASX_Parser() {} +ASX_Parser::~ASX_Parser() { if(ret_stack) delete ret_stack; } -void __FASTCALL__ asx_parser_free(ASX_Parser_t* parser) { - if(!parser) return; - if(parser->ret_stack) delete parser->ret_stack; - delete parser; -} - -int __FASTCALL__ asx_parse_attribs(ASX_Parser_t* parser,char* buffer,char*** _attribs) { +int ASX_Parser::parse_attribs(char* buffer,char*** _attribs) { char *ptr1, *ptr2, *ptr3; int n_attrib = 0; - char **attribs = NULL; + char **cattribs = NULL; char *attrib, *val; ptr1 = buffer; @@ -172,7 +160,7 @@ if(ptr3 == NULL) break; for(ptr2 = ptr3-1; isspace(*ptr2); ptr2--) { if (ptr2 <= ptr1) { - MSG_ERR("At line %d : this should never append, back to attribute begin while skipping end space",parser->line); + MSG_ERR("At line %d : this should never append, back to attribute begin while skipping end space",line); goto pa_end; } } @@ -182,14 +170,14 @@ ptr1 = strchr(ptr3,'"'); if(ptr1 == NULL || ptr1[1] == '\0') { - MSG_WARN("At line %d : can't find attribute %s value",parser->line,attrib); + MSG_WARN("At line %d : can't find attribute %s value",line,attrib); delete attrib; break; } ptr1++; ptr2 = strchr(ptr1,'"'); if (ptr2 == NULL) { - MSG_WARN("At line %d : value of attribute %s isn't finished",parser->line,attrib); + MSG_WARN("At line %d : value of attribute %s isn't finished",line,attrib); delete attrib; break; } @@ -198,521 +186,483 @@ val[ptr2-ptr1] = '\0'; n_attrib++; - attribs = (char**)mp_realloc(attribs,(2*n_attrib+1)*sizeof(char*)); - attribs[n_attrib*2-2] = attrib; - attribs[n_attrib*2-1] = val; + cattribs = (char**)mp_realloc(cattribs,(2*n_attrib+1)*sizeof(char*)); + cattribs[n_attrib*2-2] = attrib; + cattribs[n_attrib*2-1] = val; ptr1 = ptr2+1; } pa_end: if(n_attrib > 0) - attribs[n_attrib*2-0] = NULL; - *_attribs = attribs; + cattribs[n_attrib*2-0] = NULL; + *_attribs = cattribs; return n_attrib; } /* * Return -1 on error, 0 when nothing is found, 1 on sucess */ -int __FASTCALL__ asx_get_element(ASX_Parser_t* parser,const char** _buffer, - char** _element,char** _body,char*** _attribs) { - const char *ptr1,*ptr2, *ptr3, *ptr4; - char *attribs = NULL; - char *element = NULL, *body = NULL; - const char *ret = NULL; - const char *buffer; - int n_attrib = 0; - int body_line = 0,attrib_line,ret_line,in = 0; +int ASX_Parser::get_element(const char** _buffer, char** _element, + char** _body,char*** _attribs) { + const char *ptr1,*ptr2, *ptr3, *ptr4; + char *cattribs = NULL; + char *element = NULL, *body = NULL; + const char *ret = NULL; + const char *buffer; + int n_attrib = 0; + int body_line = 0,attrib_line,ret_line,in = 0; - if(_buffer == NULL || _element == NULL || _body == NULL || _attribs == NULL) { - MSG_ERR("At line %d : asx_get_element called with invalid value",parser->line); - return -1; - } + if(_buffer == NULL || _element == NULL || _body == NULL || _attribs == NULL) { + MSG_ERR("At line %d : asx_get_element called with invalid value",line); + return -1; + } - *_body = *_element = NULL; - *_attribs = NULL; - buffer = *_buffer; + *_body = *_element = NULL; + *_attribs = NULL; + buffer = *_buffer; - if(buffer == NULL) return 0; + if(buffer == NULL) return 0; - if(parser->ret_stack && /*parser->last_body && */buffer != parser->last_body) { - ASX_LineSave_t* ls = parser->ret_stack; - int i; - for(i = 0 ; i < parser->ret_stack_size ; i++) { - if(buffer == ls[i].buffer) { - parser->line = ls[i].line; - break; - } - + if(ret_stack && /*last_body && */buffer != last_body) { + ASX_LineSave_t* ls = ret_stack; + int i; + for(i = 0 ; i < ret_stack_size ; i++) { + if(buffer == ls[i].buffer) { + line = ls[i].line; + break; + } + } + if( i < ret_stack_size) { + i++; + if( i < ret_stack_size) memmove(ret_stack,ret_stack+i, (ret_stack_size - i)*sizeof(ASX_LineSave_t)); + ret_stack_size -= i; + if(ret_stack_size > 0) ret_stack = (ASX_LineSave_t*)mp_realloc(ret_stack,ret_stack_size*sizeof(ASX_LineSave_t)); + else { + delete ret_stack; + ret_stack = NULL; + } + } } - if( i < parser->ret_stack_size) { - i++; - if( i < parser->ret_stack_size) - memmove(parser->ret_stack,parser->ret_stack+i, (parser->ret_stack_size - i)*sizeof(ASX_LineSave_t)); - parser->ret_stack_size -= i; - if(parser->ret_stack_size > 0) - parser->ret_stack = (ASX_LineSave_t*)mp_realloc(parser->ret_stack,parser->ret_stack_size*sizeof(ASX_LineSave_t)); - else { - delete parser->ret_stack; - parser->ret_stack = NULL; - } - } - } + ptr1 = buffer; + while(1) { + for( ; ptr1[0] != '<' ; ptr1++) { + if(ptr1[0] == '\0') { + ptr1 = NULL; + break; + } + if(ptr1[0] == '\n') line++; + } + //ptr1 = strchr(ptr1,'<'); + if(!ptr1 || ptr1[1] == '\0') return 0; // Nothing found - ptr1 = buffer; - while(1) { - for( ; ptr1[0] != '<' ; ptr1++) { - if(ptr1[0] == '\0') { - ptr1 = NULL; - break; - } - if(ptr1[0] == '\n') parser->line++; + if(strncmp(ptr1,"<!--",4) == 0) { // Comments + for( ; strncmp(ptr1,"-->",3) != 0 ; ptr1++) { + if(ptr1[0] == '\0') { + ptr1 = NULL; + break; + } + if(ptr1[0] == '\n') line++; + } + //ptr1 = strstr(ptr1,"-->"); + if(!ptr1) { + MSG_ERR("At line %d : unfinished comment",line); + return -1; + } + } else break; } - //ptr1 = strchr(ptr1,'<'); - if(!ptr1 || ptr1[1] == '\0') return 0; // Nothing found - if(strncmp(ptr1,"<!--",4) == 0) { // Comments - for( ; strncmp(ptr1,"-->",3) != 0 ; ptr1++) { + // Is this space skip very useful ?? + for(ptr1++; isspace(ptr1[0]); ptr1++) { // Skip space if(ptr1[0] == '\0') { - ptr1 = NULL; - break; + MSG_ERR("At line %d : EOB reached while parsing element start",line); + return -1; } - if(ptr1[0] == '\n') parser->line++; - } - //ptr1 = strstr(ptr1,"-->"); - if(!ptr1) { - MSG_ERR("At line %d : unfinished comment",parser->line); - return -1; - } - } else { - break; + if(ptr1[0] == '\n') line++; } - } - // Is this space skip very useful ?? - for(ptr1++; isspace(ptr1[0]); ptr1++) { // Skip space - if(ptr1[0] == '\0') { - MSG_ERR("At line %d : EOB reached while parsing element start",parser->line); - return -1; + for(ptr2 = ptr1; isalpha(*ptr2); ptr2++) { // Go to end of name + if(*ptr2 == '\0'){ + MSG_ERR("At line %d : EOB reached while parsing element start",line); + return -1; + } + if(ptr2[0] == '\n') line++; } - if(ptr1[0] == '\n') parser->line++; - } - for(ptr2 = ptr1; isalpha(*ptr2); ptr2++) { // Go to end of name - if(*ptr2 == '\0'){ - MSG_ERR("At line %d : EOB reached while parsing element start",parser->line); - return -1; - } - if(ptr2[0] == '\n') parser->line++; - } + element = new char[ptr2-ptr1+1]; + strncpy(element,ptr1,ptr2-ptr1); + element[ptr2-ptr1] = '\0'; - element = new char[ptr2-ptr1+1]; - strncpy(element,ptr1,ptr2-ptr1); - element[ptr2-ptr1] = '\0'; - - for( ; isspace(*ptr2); ptr2++) { // Skip space - if(ptr2[0] == '\0') { - MSG_ERR("At line %d : EOB reached while parsing element start",parser->line); - delete element; - return -1; + for( ; isspace(*ptr2); ptr2++) { // Skip space + if(ptr2[0] == '\0') { + MSG_ERR("At line %d : EOB reached while parsing element start",line); + delete element; + return -1; + } + if(ptr2[0] == '\n') line++; } - if(ptr2[0] == '\n') parser->line++; - } - attrib_line = parser->line; + attrib_line = line; - for(ptr3 = ptr2; ptr3[0] != '\0'; ptr3++) { // Go to element end - if(ptr3[0] == '>' || strncmp(ptr3,"/>",2) == 0) - break; - if(ptr3[0] == '\n') parser->line++; - } - if(ptr3[0] == '\0' || ptr3[1] == '\0') { // End of file - MSG_ERR("At line %d : EOB reached while parsing element start",parser->line); - delete element; - return -1; - } - - // Save attribs string - if(ptr3-ptr2 > 0) { - attribs = new char[ptr3-ptr2+1]; - strncpy(attribs,ptr2,ptr3-ptr2); - attribs[ptr3-ptr2] = '\0'; - } - //bs_line = parser->line; - if(ptr3[0] != '/') { // Not Self closed element - ptr3++; - for( ; isspace(*ptr3); ptr3++) { // Skip space on body begin - if(*ptr3 == '\0') { - MSG_ERR("At line %d : EOB reached while parsing %s element body",parser->line,element); + for(ptr3 = ptr2; ptr3[0] != '\0'; ptr3++) { // Go to element end + if(ptr3[0] == '>' || strncmp(ptr3,"/>",2) == 0) break; + if(ptr3[0] == '\n') line++; + } + if(ptr3[0] == '\0' || ptr3[1] == '\0') { // End of file + MSG_ERR("At line %d : EOB reached while parsing element start",line); delete element; - if(attribs) delete attribs; return -1; - } - if(ptr3[0] == '\n') parser->line++; } - ptr4 = ptr3; - body_line = parser->line; - while(1) { // Find closing element - for( ; ptr4[0] != '<' ; ptr4++) { - if(ptr4[0] == '\0') { - ptr4 = NULL; - break; + + // Save attribs string + if(ptr3-ptr2 > 0) { + cattribs = new char[ptr3-ptr2+1]; + strncpy(cattribs,ptr2,ptr3-ptr2); + cattribs[ptr3-ptr2] = '\0'; + } + //bs_line = line; + if(ptr3[0] != '/') { // Not Self closed element + ptr3++; + for( ; isspace(*ptr3); ptr3++) { // Skip space on body begin + if(*ptr3 == '\0') { + MSG_ERR("At line %d : EOB reached while parsing %s element body",line,element); + delete element; + if(cattribs) delete cattribs; + return -1; + } + if(ptr3[0] == '\n') line++; } - if(ptr4[0] == '\n') parser->line++; - } - if(strncmp(ptr4,"<!--",4) == 0) { // Comments - for( ; strncmp(ptr4,"-->",3) != 0 ; ptr4++) { - if(ptr4[0] == '\0') { - ptr4 = NULL; - break; + ptr4 = ptr3; + body_line = line; + while(1) { // Find closing element + for( ; ptr4[0] != '<' ; ptr4++) { + if(ptr4[0] == '\0') { + ptr4 = NULL; + break; + } + if(ptr4[0] == '\n') line++; + } + if(strncmp(ptr4,"<!--",4) == 0) { // Comments + for( ; strncmp(ptr4,"-->",3) != 0 ; ptr4++) { + if(ptr4[0] == '\0') { + ptr4 = NULL; + break; + } + if(ptr1[0] == '\n') line++; + } + continue; + } + if(ptr4 == NULL || ptr4[1] == '\0') { + MSG_ERR("At line %d : EOB reached while parsing %s element body",line,element); + delete element; + if(cattribs) delete cattribs; + return -1; + } + if(ptr4[1] != '/' && strncasecmp(element,ptr4+1,strlen(element)) == 0) { + in++; + ptr4+=2; + continue; + } else if(strncasecmp(element,ptr4+2,strlen(element)) == 0) { // Extract body + if(in > 0) { + in--; + ptr4 += 2+strlen(element); + continue; + } + ret = ptr4+strlen(element)+3; + if(ptr4 != ptr3) { + ptr4--; + for( ; ptr4 != ptr3 && isspace(*ptr4); ptr4--) ;// Skip space on body end + // if(ptr4[0] == '\0') line--; + //} + ptr4++; + body = new char[ptr4-ptr3+1]; + strncpy(body,ptr3,ptr4-ptr3); + body[ptr4-ptr3] = '\0'; + } + break; + } else { + ptr4 += 2; + } } - if(ptr1[0] == '\n') parser->line++; - } - continue; - } - if(ptr4 == NULL || ptr4[1] == '\0') { - MSG_ERR("At line %d : EOB reached while parsing %s element body",parser->line,element); - delete element; - if(attribs) delete attribs; - return -1; - } - if(ptr4[1] != '/' && strncasecmp(element,ptr4+1,strlen(element)) == 0) { - in++; - ptr4+=2; - continue; - } else if(strncasecmp(element,ptr4+2,strlen(element)) == 0) { // Extract body - if(in > 0) { - in--; - ptr4 += 2+strlen(element); - continue; - } - ret = ptr4+strlen(element)+3; - if(ptr4 != ptr3) { - ptr4--; - for( ; ptr4 != ptr3 && isspace(*ptr4); ptr4--) ;// Skip space on body end - // if(ptr4[0] == '\0') parser->line--; - //} - ptr4++; - body = new char[ptr4-ptr3+1]; - strncpy(body,ptr3,ptr4-ptr3); - body[ptr4-ptr3] = '\0'; - } - break; - } else { - ptr4 += 2; - } + } else { + ret = ptr3 + 2; // 2 is for /> } - } else { - ret = ptr3 + 2; // 2 is for /> - } - for( ; ret[0] != '\0' && isspace(ret[0]); ret++) { // Skip space - if(ret[0] == '\n') parser->line++; - } + for( ; ret[0] != '\0' && isspace(ret[0]); ret++) { // Skip space + if(ret[0] == '\n') line++; + } - ret_line = parser->line; + ret_line = line; - if(attribs) { - parser->line = attrib_line; - n_attrib = asx_parse_attribs(parser,attribs,_attribs); - delete attribs; - if(n_attrib < 0) { - MSG_WARN("At line %d : error while parsing element %s attributes",parser->line,element); - delete element; - delete body; - return -1; - } - } else + if(cattribs) { + line = attrib_line; + n_attrib = parse_attribs(cattribs,_attribs); + delete cattribs; + if(n_attrib < 0) { + MSG_WARN("At line %d : error while parsing element %s attributes",line,element); + delete element; + delete body; + return -1; + } + } else *_attribs = NULL; - *_element = element; - *_body = body; + *_element = element; + *_body = body; - parser->last_body = body; - parser->ret_stack_size++; - parser->ret_stack = (ASX_LineSave_t*)mp_realloc(parser->ret_stack,parser->ret_stack_size*sizeof(ASX_LineSave_t)); - if(parser->ret_stack_size > 1) - memmove(parser->ret_stack+1,parser->ret_stack,(parser->ret_stack_size-1)*sizeof(ASX_LineSave_t)); - parser->ret_stack[0].buffer = const_cast<char*>(ret); - parser->ret_stack[0].line = ret_line; - parser->line = body ? body_line : ret_line; + last_body = body; + ret_stack_size++; + ret_stack = (ASX_LineSave_t*)mp_realloc(ret_stack,ret_stack_size*sizeof(ASX_LineSave_t)); + if(ret_stack_size > 1) memmove(ret_stack+1,ret_stack,(ret_stack_size-1)*sizeof(ASX_LineSave_t)); + ret_stack[0].buffer = const_cast<char*>(ret); + ret_stack[0].line = ret_line; + line = body ? body_line : ret_line; - *_buffer = ret; - return 1; - + *_buffer = ret; + return 1; } -static void __FASTCALL__ asx_parse_param(ASX_Parser_t* parser, char** attribs, play_tree_t* pt) { - const char *name,*val; +void ASX_Parser::param(char** cattribs, play_tree_t* pt) { + const char *name,*val; - name = asx_get_attrib("NAME",attribs); - if(!name) { - asx_warning_attrib_required(parser,"PARAM" ,"NAME" ); - return; - } - val = asx_get_attrib("VALUE",attribs); - if(m_config_get_option(mpxp_context().mconfig,name) == NULL) { - MSG_WARN("Found unknow param in asx: %s",name); - if(val) - MSG_WARN("=%s\n",val); - else - MSG_WARN("\n"); - return; - } - play_tree_set_param(pt,name,val); + name = asx_get_attrib("NAME",cattribs); + if(!name) { + warning_attrib_required("PARAM" ,"NAME" ); + return; + } + val = asx_get_attrib("VALUE",cattribs); + if(m_config_get_option(mpxp_context().mconfig,name) == NULL) { + MSG_WARN("Found unknow param in asx: %s",name); + if(val) MSG_WARN("=%s\n",val); + else MSG_WARN("\n"); + return; + } + play_tree_set_param(pt,name,val); } -static void __FASTCALL__ asx_parse_ref(ASX_Parser_t* parser, char** attribs, play_tree_t* pt) { - char *href; +void ASX_Parser::ref(char** cattribs, play_tree_t* pt) { + char *href; - href = asx_get_attrib("HREF",attribs); - if(href == NULL) { - asx_warning_attrib_required(parser,"REF" ,"HREF" ); - return; - } - // replace http my mmshttp to avoid infinite loops - if (strncmp(href, "http://", 7) == 0) { - char *newref = new char [3 + strlen(href) + 1]; - strcpy(newref, "mms"); - strcpy(newref + 3, href); + href = asx_get_attrib("HREF",cattribs); + if(href == NULL) { + warning_attrib_required("REF" ,"HREF" ); + return; + } + // replace http my mmshttp to avoid infinite loops + if (strncmp(href, "http://", 7) == 0) { + char *newref = new char [3 + strlen(href) + 1]; + strcpy(newref, "mms"); + strcpy(newref + 3, href); + delete href; + href = newref; + } + play_tree_add_file(pt,href); + MSG_V("Adding file %s to element entry\n",href); delete href; - href = newref; - } - - play_tree_add_file(pt,href); - - MSG_V("Adding file %s to element entry\n",href); - - delete href; - } -static play_tree_t* __FASTCALL__ asx_parse_entryref(libinput_t* libinput,ASX_Parser_t* parser,char* buffer,char** _attribs) { - play_tree_t* pt; - char *href; - Stream* stream; - play_tree_parser_t* ptp; - int f; - UNUSED(buffer); +play_tree_t* ASX_Parser::entryref(libinput_t* libinput,char* buffer,char** _attribs) { + play_tree_t* pt; + char *href; + Stream* stream; + play_tree_parser_t* ptp; + int f; + UNUSED(buffer); - if(parser->deep > 0) - return NULL; + if(deep > 0) return NULL; - href = asx_get_attrib("HREF",_attribs); - if(href == NULL) { - asx_warning_attrib_required(parser,"ENTRYREF" ,"HREF" ); - return NULL; - } - stream=new(zeromem) Stream; - if(stream->open(libinput,href,&f)!=MPXP_Ok) { - MSG_WARN("Can't open playlist %s\n",href); + href = asx_get_attrib("HREF",_attribs); + if(href == NULL) { + warning_attrib_required("ENTRYREF" ,"HREF" ); + return NULL; + } + stream=new(zeromem) Stream; + if(stream->open(libinput,href,&f)!=MPXP_Ok) { + MSG_WARN("Can't open playlist %s\n",href); + delete stream; + return NULL; + } + if(!(stream->type() & Stream::Type_Text)) { + MSG_WARN("URL %s dont point to a playlist\n",href); + delete stream; + return NULL; + } + MSG_V("Adding playlist %s to element entryref\n",href); + ptp = play_tree_parser_new(stream,deep+1); + pt = play_tree_parser_get_play_tree(libinput,ptp); + play_tree_parser_free(ptp); delete stream; - return NULL; - } - if(!(stream->type() & Stream::Type_Text)) { - MSG_WARN("URL %s dont point to a playlist\n",href); - delete stream; - return NULL; - } +//MSG_INFO("Need to implement entryref\n"); + return pt; +} - MSG_V("Adding playlist %s to element entryref\n",href); +play_tree_t* ASX_Parser::entry(const char* buffer,char** _attribs) { + char *celement,*body,**cattribs; + int r,nref=0; + play_tree_t *pt_ref; + UNUSED(_attribs); - ptp = play_tree_parser_new(stream,parser->deep+1); + pt_ref = play_tree_new(); - pt = play_tree_parser_get_play_tree(libinput,ptp); - - play_tree_parser_free(ptp); - delete stream; - - //MSG_INFO("Need to implement entryref\n"); - - return pt; + while(buffer && buffer[0] != '\0') { + r = get_element(&buffer,&celement,&body,&cattribs); + if(r < 0) { + warning_body_parse_error("ENTRY"); + return NULL; + } else if (r == 0) break; // No more element + if(strcasecmp(celement,"REF") == 0) { + ref(cattribs,pt_ref); + MSG_DBG2("Adding element %s to entry\n",celement); + nref++; + } else MSG_DBG2("Ignoring element %s\n",celement); + if(body) delete body; + asx_free_attribs(cattribs); + } + if(nref <= 0) { + play_tree_free(pt_ref,1); + return NULL; + } + return pt_ref; } -static play_tree_t* __FASTCALL__ asx_parse_entry(ASX_Parser_t* parser,const char* buffer,char** _attribs) { - char *element,*body,**attribs; - int r,nref=0; - play_tree_t *ref; - UNUSED(_attribs); +play_tree_t* ASX_Parser::repeat(libinput_t*libinput,const char* buffer,char** _attribs) { + char *element,*body,**cattribs; + play_tree_t *pt_repeat, *list=NULL, *pt_entry; + char* count; + int r; - ref = play_tree_new(); + pt_repeat = play_tree_new(); - while(buffer && buffer[0] != '\0') { - r = asx_get_element(parser,&buffer,&element,&body,&attribs); - if(r < 0) { - asx_warning_body_parse_error(parser,"ENTRY"); - return NULL; - } else if (r == 0) { // No more element - break; + count = asx_get_attrib("COUNT",_attribs); + if(count == NULL) { + MSG_DBG2("Setting element repeat loop to infinit\n"); + pt_repeat->loop = -1; // Infinit + } else { + pt_repeat->loop = atoi(count); + delete count; + if(pt_repeat->loop == 0) pt_repeat->loop = 1; + MSG_DBG2("Setting element repeat loop to %d\n",pt_repeat->loop); } - if(strcasecmp(element,"REF") == 0) { - asx_parse_ref(parser,attribs,ref); - MSG_DBG2("Adding element %s to entry\n",element); - nref++; - } else - MSG_DBG2("Ignoring element %s\n",element); - if(body) delete body; - asx_free_attribs(attribs); - } - if(nref <= 0) { - play_tree_free(ref,1); - return NULL; - } - return ref; + while(buffer && buffer[0] != '\0') { + r = get_element(&buffer,&element,&body,&cattribs); + if(r < 0) { + warning_body_parse_error("REPEAT"); + return NULL; + } else if (r == 0) break; // No more element + if(strcasecmp(element,"ENTRY") == 0) { + pt_entry = entry(body,cattribs); + if(pt_entry) { + if(!list) list = pt_entry; + else play_tree_append_entry(list,pt_entry); + MSG_DBG2("Adding element %s to repeat\n",element); + } + } else if(strcasecmp(element,"ENTRYREF") == 0) { + pt_entry = entryref(libinput,body,cattribs); + if(pt_entry) { + if(!list) list = pt_entry; + else play_tree_append_entry(list,pt_entry); + MSG_DBG2("Adding element %s to repeat\n",element); + } + } else if(strcasecmp(element,"REPEAT") == 0) { + pt_entry = repeat(libinput,body,cattribs); + if(pt_entry) { + if(!list) list = pt_entry; + else play_tree_append_entry(list,pt_entry); + MSG_DBG2("Adding element %s to repeat\n",element); + } + } else if(strcasecmp(element,"PARAM") == 0) { + param(cattribs,pt_repeat); + } else MSG_DBG2("Ignoring element %s\n",element); + if(body) delete body; + asx_free_attribs(cattribs); + } + if(!list) { + play_tree_free(pt_repeat,1); + return NULL; + } + play_tree_set_child(pt_repeat,list); + return pt_repeat; } -static play_tree_t* __FASTCALL__ asx_parse_repeat(libinput_t*libinput,ASX_Parser_t* parser,const char* buffer,char** _attribs) { - char *element,*body,**attribs; - play_tree_t *repeat, *list=NULL, *entry; - char* count; - int r; +play_tree_t* ASX_Parser::build_tree(libinput_t*libinput,const char* buffer,int deep) { + char *element,*asx_body,**asx_attribs,*body, **attribs; + int r; + play_tree_t *asx,*pt_entry,*list = NULL; + ASX_Parser& parser = *new(zeromem) ASX_Parser; - repeat = play_tree_new(); + parser.line = 1; + parser.deep = deep; - count = asx_get_attrib("COUNT",_attribs); - if(count == NULL) { - MSG_DBG2("Setting element repeat loop to infinit\n"); - repeat->loop = -1; // Infinit - } else { - repeat->loop = atoi(count); - delete count; - if(repeat->loop == 0) repeat->loop = 1; - MSG_DBG2("Setting element repeat loop to %d\n",repeat->loop); - } - - while(buffer && buffer[0] != '\0') { - r = asx_get_element(parser,&buffer,&element,&body,&attribs); + r = parser.get_element(&buffer,&element,&asx_body,&asx_attribs); if(r < 0) { - asx_warning_body_parse_error(parser,"REPEAT"); - return NULL; - } else if (r == 0) { // No more element - break; + MSG_ERR("At line %d : Syntax error ???",parser.line); + delete &parser; + return NULL; + } else if(r == 0) { // No contents + MSG_ERR("empty asx element"); + delete &parser; + return NULL; } - if(strcasecmp(element,"ENTRY") == 0) { - entry = asx_parse_entry(parser,body,attribs); - if(entry) { - if(!list) list = entry; - else play_tree_append_entry(list,entry); - MSG_DBG2("Adding element %s to repeat\n",element); - } - } else if(strcasecmp(element,"ENTRYREF") == 0) { - entry = asx_parse_entryref(libinput,parser,body,attribs); - if(entry) { - if(!list) list = entry; - else play_tree_append_entry(list,entry); - MSG_DBG2("Adding element %s to repeat\n",element); - } - } else if(strcasecmp(element,"REPEAT") == 0) { - entry = asx_parse_repeat(libinput,parser,body,attribs); - if(entry) { - if(!list) list = entry; - else play_tree_append_entry(list,entry); - MSG_DBG2("Adding element %s to repeat\n",element); - } - } else if(strcasecmp(element,"PARAM") == 0) { - asx_parse_param(parser,attribs,repeat); - } else - MSG_DBG2("Ignoring element %s\n",element); - if(body) delete body; - asx_free_attribs(attribs); - } - if(!list) { - play_tree_free(repeat,1); - return NULL; - } - play_tree_set_child(repeat,list); + if(strcasecmp(element,"ASX") != 0) { + MSG_ERR("first element isn't ASX, it's %s\n",element); + asx_free_attribs(asx_attribs); + if(body) delete body; + delete &parser; + return NULL; + } - return repeat; + if(!asx_body) { + MSG_ERR("ASX element is empty"); + asx_free_attribs(asx_attribs); + delete &parser; + return NULL; + } -} + asx = play_tree_new(); + buffer = asx_body; + while(buffer && buffer[0] != '\0') { + r = parser.get_element(&buffer,&element,&body,&attribs); + if(r < 0) { + parser.warning_body_parse_error("ASX"); + delete &parser; + return NULL; + } else if (r == 0) break; // No more element + if(strcasecmp(element,"ENTRY") == 0) { + pt_entry = parser.entry(body,attribs); + if(pt_entry) { + if(!list) list = pt_entry; + else play_tree_append_entry(list,pt_entry); + MSG_DBG2("Adding element %s to asx\n",element); + } + } else if(strcasecmp(element,"ENTRYREF") == 0) { + pt_entry = parser.entryref(libinput,body,attribs); + if(pt_entry) { + if(!list) list = pt_entry; + else play_tree_append_entry(list,pt_entry); + MSG_DBG2("Adding element %s to asx\n",element); + } + } else if(strcasecmp(element,"REPEAT") == 0) { + pt_entry = parser.repeat(libinput,body,attribs); + if(pt_entry) { + if(!list) list = pt_entry; + else play_tree_append_entry(list,pt_entry); + MSG_DBG2("Adding element %s to asx\n",element); + } + } else MSG_DBG2("Ignoring element %s\n",element); + if(body) delete body; + asx_free_attribs(attribs); + } -play_tree_t* __FASTCALL__ asx_parser_build_tree(libinput_t*libinput,const char* buffer,int deep) { - char *element,*asx_body,**asx_attribs,*body, **attribs; - int r; - play_tree_t *asx,*entry,*list = NULL; - ASX_Parser_t* parser = asx_parser_new(); - - parser->line = 1; - parser->deep = deep; - - r = asx_get_element(parser,&buffer,&element,&asx_body,&asx_attribs); - if(r < 0) { - MSG_ERR("At line %d : Syntax error ???",parser->line); - asx_parser_free(parser); - return NULL; - } else if(r == 0) { // No contents - MSG_ERR("empty asx element"); - asx_parser_free(parser); - return NULL; - } - - if(strcasecmp(element,"ASX") != 0) { - MSG_ERR("first element isn't ASX, it's %s\n",element); + delete asx_body; asx_free_attribs(asx_attribs); - if(body) delete body; - asx_parser_free(parser); - return NULL; - } + delete &parser; - if(!asx_body) { - MSG_ERR("ASX element is empty"); - asx_free_attribs(asx_attribs); - asx_parser_free(parser); - return NULL; - } - - asx = play_tree_new(); - buffer = asx_body; - while(buffer && buffer[0] != '\0') { - r = asx_get_element(parser,&buffer,&element,&body,&attribs); - if(r < 0) { - asx_warning_body_parse_error(parser,"ASX"); - asx_parser_free(parser); - return NULL; - } else if (r == 0) { // No more element - break; - } - if(strcasecmp(element,"ENTRY") == 0) { - entry = asx_parse_entry(parser,body,attribs); - if(entry) { - if(!list) list = entry; - else play_tree_append_entry(list,entry); - MSG_DBG2("Adding element %s to asx\n",element); - } - } else if(strcasecmp(element,"ENTRYREF") == 0) { - entry = asx_parse_entryref(libinput,parser,body,attribs); - if(entry) { - if(!list) list = entry; - else play_tree_append_entry(list,entry); - MSG_DBG2("Adding element %s to asx\n",element); - } - } else if(strcasecmp(element,"REPEAT") == 0) { - entry = asx_parse_repeat(libinput,parser,body,attribs); - if(entry) { - if(!list) list = entry; - else play_tree_append_entry(list,entry); - MSG_DBG2("Adding element %s to asx\n",element); - } - } else - MSG_DBG2("Ignoring element %s\n",element); - if(body) delete body; - asx_free_attribs(attribs); - } - - delete asx_body; - asx_free_attribs(asx_attribs); - asx_parser_free(parser); - - - if(!list) { - play_tree_free(asx,1); - - return NULL; - } - - play_tree_set_child(asx,list); - - return asx; + if(!list) { + play_tree_free(asx,1); + return NULL; + } + play_tree_set_child(asx,list); + return asx; } +} // namespace mpxp Modified: mplayerxp/libplaytree/asxparser.h =================================================================== --- mplayerxp/libplaytree/asxparser.h 2012-12-11 17:07:00 UTC (rev 546) +++ mplayerxp/libplaytree/asxparser.h 2012-12-12 09:07:39 UTC (rev 547) @@ -6,35 +6,43 @@ using namespace mpxp; -typedef struct _ASX_Parser_t ASX_Parser_t; +namespace mpxp { + struct ASX_LineSave_t { + const char* buffer; + int line; + }; -typedef struct { - const char* buffer; - int line; -} ASX_LineSave_t; + class ASX_Parser : public Opaque { + public: + ASX_Parser(); + virtual ~ASX_Parser(); -struct _ASX_Parser_t { - int line; // Curent line - ASX_LineSave_t *ret_stack; - int ret_stack_size; - char* last_body; - int deep; -}; + static play_tree_t* build_tree(libinput_t* libinput,const char* buffer, int ref); -extern play_tree_t* __FASTCALL__ asx_parser_build_tree(libinput_t* libinput,const char* buffer, int ref); + virtual int parse_attribs(char* buffer,char*** _attribs); + /* + * Return -1 on error, 0 when nothing is found, 1 on sucess + */ + virtual int get_element(const char** _buffer,char** _element,char** _body,char*** _attribs); + int get_line() const { return line; } + private: + play_tree_t* repeat(libinput_t*libinput,const char* buffer,char** _attribs); + void warning_attrib_invalid(char* elem, char* attrib,const char** valid_vals,char* val); + void warning_attrib_required(const char *e, const char *a); + void warning_body_parse_error(const char *e); + int get_yes_no_attrib(char* element, char* attrib,char** attribs,int def); + void param(char** attribs, play_tree_t* pt); + void ref(char** attribs, play_tree_t* pt); + play_tree_t* entryref(libinput_t* libinput,char* buffer,char** _attribs); + play_tree_t* entry(const char* buffer,char** _attribs); -extern ASX_Parser_t* asx_parser_new(void); + int line; // Curent line + ASX_LineSave_t* ret_stack; + int ret_stack_size; + char* last_body; + int deep; +}; -extern void __FASTCALL__ asx_parser_free(ASX_Parser_t* parser); - -/* - * Return -1 on error, 0 when nothing is found, 1 on sucess - */ -extern int __FASTCALL__ asx_get_element(ASX_Parser_t* parser,const char** _buffer, - char** _element,char** _body,char*** _attribs); - -extern int __FASTCALL__ asx_parse_attribs(ASX_Parser_t* parser,char* buffer,char*** _attribs); - /////// Attribs utils extern char* __FASTCALL__ asx_get_attrib(const char* attrib,char** attribs); @@ -48,5 +56,5 @@ extern void __FASTCALL__ asx_list_free(any_t* list_ptr,ASX_FreeFunc free_func); static inline void asx_free_attribs(any_t*a) { asx_list_free(&a,mp_free); } - +} // namespace mpxp #endif Modified: mplayerxp/libplaytree/playtreeparser.cpp =================================================================== --- mplayerxp/libplaytree/playtreeparser.cpp 2012-12-11 17:07:00 UTC (rev 546) +++ mplayerxp/libplaytree/playtreeparser.cpp 2012-12-12 09:07:39 UTC (rev 547) @@ -179,7 +179,7 @@ /* NOTHING */; MSG_DBG3("Parsing asx file : [%s]\n",p->buffer); - return asx_parser_build_tree(libinput,p->buffer,p->deep); + return ASX_Parser::build_tree(libinput,p->buffer,p->deep); } static char* __FASTCALL__ pls_entry_get_value(char* line) { Modified: mplayerxp/mplayerxp.cpp =================================================================== --- mplayerxp/mplayerxp.cpp 2012-12-11 17:07:00 UTC (rev 546) +++ mplayerxp/mplayerxp.cpp 2012-12-12 09:07:39 UTC (rev 547) @@ -420,7 +420,7 @@ MP_UNIT(NULL); } -void exit_player(const char* why){ +void exit_player(const std::string& why){ fflush(stdout); fflush(stderr); @@ -428,11 +428,11 @@ MP_UNIT("exit_player"); - if(why) MSG_HINT(MSGTR_Exiting,why); + if(!why.empty()) MSG_HINT(MSGTR_Exiting,why.c_str()); if(mpxp_context().mconfig) m_config_free(mpxp_context().mconfig); mpxp_print_uninit(); mpxp_uninit_structs(); - if(why) exit(0); + if(!why.empty()) exit(0); return; /* Still try coredump!!!*/ } @@ -447,7 +447,7 @@ kill(getpid(),SIGKILL); return; } - exit_player(NULL); + exit_player(""); } Modified: mplayerxp/mplayerxp.h =================================================================== --- mplayerxp/mplayerxp.h 2012-12-11 17:07:00 UTC (rev 546) +++ mplayerxp/mplayerxp.h 2012-12-12 09:07:39 UTC (rev 547) @@ -1,6 +1,8 @@ #ifndef __MPLAYERXP_MAIN #define __MPLAYERXP_MAIN 1 +#include <string> + #include <pthread.h> #include <stdint.h> #include <string.h> @@ -177,21 +179,20 @@ extern pthread_mutex_t audio_timer_mutex; - void exit_player(const char* why); + void exit_player(const std::string& why); /* 10 ms or 10'000 microsecs is optimal time for thread sleeping */ - inline int yield_timeslice() { return usleep(10000); } + inline int yield_timeslice() { return ::usleep(10000); } - inline void escape_player(const char* why,unsigned num_calls) { + inline void escape_player(const std::string& why,unsigned num_calls) { show_backtrace(why,num_calls); exit_player(why); } - inline MPXP_Rc check_pin(const char* module,unsigned pin1,unsigned pin2) { + inline MPXP_Rc check_pin(const std::string& module,unsigned pin1,unsigned pin2) { if(pin1!=pin2) { - char msg[4096]; - strcpy(msg,"Found incorrect PIN in module: "); - strcat(msg,module); + std::string msg; + msg=std::string("Found incorrect PIN in module: ")+module; escape_player(msg,mp_conf.max_trace); } return MPXP_Ok; Modified: mplayerxp/osdep/aclib.cpp =================================================================== --- mplayerxp/osdep/aclib.cpp 2012-12-11 17:07:00 UTC (rev 546) +++ mplayerxp/osdep/aclib.cpp 2012-12-12 09:07:39 UTC (rev 547) @@ -24,7 +24,7 @@ see aclib_template.c ... this file only contains runtime cpu detection and config options stuff runtime cpu detection by michael niedermayer (mic...@gm...) is under GPL */ - +namespace mpxp { static any_t* init_fast_memcpy(any_t* to, const any_t* from, size_t len) { #ifdef __SSE2__ @@ -89,13 +89,13 @@ #endif { MSG_V("Using generic optimized agpcpy\n"); - fast_stream_copy_ptr = memcpy; /* prior to mmx we use the standart memcpy */ + fast_stream_copy_ptr = ::memcpy; /* prior to mmx we use the standart memcpy */ } return (*fast_stream_copy_ptr)(to,from,len); } any_t*(*fast_memcpy_ptr)(any_t* to, const any_t* from, size_t len) = init_fast_memcpy; any_t*(*fast_stream_copy_ptr)(any_t* to, const any_t* from, size_t len) = init_stream_copy; - +} // namespace mpxp #endif /* use fastmemcpy */ Modified: mplayerxp/osdep/aclib_template.h =================================================================== --- mplayerxp/osdep/aclib_template.h 2012-12-11 17:07:00 UTC (rev 546) +++ mplayerxp/osdep/aclib_template.h 2012-12-12 09:07:39 UTC (rev 547) @@ -157,6 +157,7 @@ return retval;\ } +namespace mpxp { #undef MEM_STORE #undef MEM_SFENCE #define MEM_STORE _ivec_stream @@ -176,4 +177,5 @@ MSG_DBG3("fast_memcpy(%p, %p, %u) [cl_size=%u]\n",to,from,len,gCpuCaps.cl_size); FAST_MEMORY_COPY(to,from,len); } +} // namesapce mpxp #endif Modified: mplayerxp/osdep/fastmemcpy.h =================================================================== --- mplayerxp/osdep/fastmemcpy.h 2012-12-11 17:07:00 UTC (rev 546) +++ mplayerxp/osdep/fastmemcpy.h 2012-12-12 09:07:39 UTC (rev 547) @@ -1,55 +1,51 @@ #ifndef __MPLAYER_MEMCPY #define __MPLAYER_MEMCPY 1 +#include "mp_config.h" +using namespace mpxp; -#include "../mp_config.h" - #ifdef USE_FASTMEMCPY #include <stddef.h> #include <string.h> /* memcpy prototypes */ -extern any_t* (*fast_memcpy_ptr)(any_t* to, const any_t* from, size_t len); -extern any_t* (*fast_stream_copy_ptr)(any_t* to, const any_t* from, size_t len); +namespace mpxp { + extern any_t* (*fast_memcpy_ptr)(any_t* to, const any_t* from, size_t len); + extern any_t* (*fast_stream_copy_ptr)(any_t* to, const any_t* from, size_t len); #define memcpy(a,b,c) (*fast_memcpy_ptr)(a,b,c) #define stream_copy(a,b,c) (*fast_stream_copy_ptr)(a,b,c) #else -#define stream_copy(a,b,c) memcpy(a,b,c) +#define stream_copy(a,b,c) ::memcpy(a,b,c) #endif -static inline any_t* stream_copy_pic(any_t* dst, const any_t* src, int bytesPerLine, int height, int dstStride, int srcStride) -{ + inline any_t* stream_copy_pic(any_t* dst, const any_t* src, int bytesPerLine, int height, int dstStride, int srcStride) + { int i; any_t*retval=dst; if(dstStride == srcStride) stream_copy(dst, src, srcStride*height); - else - { - for(i=0; i<height; i++) - { - stream_copy(dst, src, bytesPerLine); - src=(char *)src+ srcStride; - dst=(char *)dst+ dstStride; - } + else { + for(i=0; i<height; i++) { + stream_copy(dst, src, bytesPerLine); + src=(char *)src+ srcStride; + dst=(char *)dst+ dstStride; + } } return retval; -} + } -static inline any_t* memcpy_pic(any_t* dst, const any_t* src, int bytesPerLine, int height, int dstStride, int srcStride) -{ + inline any_t* memcpy_pic(any_t* dst, const any_t* src, int bytesPerLine, int height, int dstStride, int srcStride) + { int i; any_t*retval=dst; if(dstStride == srcStride) memcpy(dst, src, srcStride*height); - else - { - for(i=0; i<height; i++) - { - memcpy(dst, src, bytesPerLine); - src=(char *)src+ srcStride; - dst=(char *)dst+ dstStride; - } + else { + for(i=0; i<height; i++) { + memcpy(dst, src, bytesPerLine); + src=(char *)src+ srcStride; + dst=(char *)dst+ dstStride; + } } - return retval; -} - + } +} // namespace mpxp #endif Modified: mplayerxp/osdep/mp_malloc.cpp =================================================================== --- mplayerxp/osdep/mp_malloc.cpp 2012-12-11 17:07:00 UTC (rev 546) +++ mplayerxp/osdep/mp_malloc.cpp 2012-12-12 09:07:39 UTC (rev 547) @@ -211,10 +211,10 @@ uninit_bt_cache(cache); } -void print_backtrace(const char *why,any_t** stack,unsigned num) { +void print_backtrace(const std::string& why,any_t** stack,unsigned num) { char result[4096]; unsigned i; - MSG_INFO(why?why:"*** Backtrace for suspect call ***\n"); + MSG_INFO(!why.empty()?why.c_str():"*** Backtrace for suspect call ***\n"); for(i=0;i<num;i++) { MSG_INFO(" %p -> %s\n",stack[i],exec_addr2line(stack[i],result,sizeof(result))); } Modified: mplayerxp/osdep/mplib.h =================================================================== --- mplayerxp/osdep/mplib.h 2012-12-11 17:07:00 UTC (rev 546) +++ mplayerxp/osdep/mplib.h 2012-12-12 09:07:39 UTC (rev 547) @@ -8,6 +8,9 @@ */ #ifndef __MPLIB_H_INCLUDED__ #define __MPLIB_H_INCLUDED__ 1 + +#include <string> + #include <execinfo.h> #include <stddef.h> #include <sys/mman.h> @@ -62,9 +65,9 @@ MP_DENY_ALL =0x0, /* Page can not be accessed. */ }; int __FASTCALL__ mp_mprotect(any_t* addr,size_t len,enum mp_prot_e flags); - void print_backtrace(const char *why,any_t** stack,unsigned num); + void print_backtrace(const std::string& why,any_t** stack,unsigned num); - inline void show_backtrace(const char *why,unsigned num_calls) { + inline void show_backtrace(const std::string& why,unsigned num_calls) { any_t* stack[num_calls]; unsigned ncalls; ncalls=backtrace(stack,num_calls); Modified: mplayerxp/postproc/libmenu/menu.cpp =================================================================== --- mplayerxp/postproc/libmenu/menu.cpp 2012-12-11 17:07:00 UTC (rev 546) +++ mplayerxp/postproc/libmenu/menu.cpp 2012-12-12 09:07:39 UTC (rev 547) @@ -62,22 +62,22 @@ char *element,*body, **attribs, *name; menu_info_t* minfo = NULL; int r,i; - ASX_Parser_t* parser = asx_parser_new(); + ASX_Parser& parser = *new(zeromem) ASX_Parser; while(1) { - r = asx_get_element(parser,&buffer,&element,&body,&attribs); + r = parser.get_element(&buffer,&element,&body,&attribs); if(r < 0) { - MSG_WARN("[libmenu] Syntax error at line: %i\n",parser->line); - asx_parser_free(parser); + MSG_WARN("[libmenu] Syntax error at line: %i\n",parser.get_line()); + delete &parser; return 0; } else if(r == 0) { - asx_parser_free(parser); + delete &parser; return 1; } // Has it a name ? name = asx_get_attrib("name",attribs); if(!name) { - MSG_WARN("[libmenu] Menu definitions need a name attrib: %i\n",parser->line); + MSG_WARN("[libmenu] Menu definitions need a name attrib: %i\n",parser.get_line()); delete element; if(body) delete body; asx_free_attribs(attribs); @@ -103,12 +103,12 @@ if(strcasecmp(attribs[2*i],"name") == 0) continue; if(!m_struct_set(&minfo->priv_st,menu_list[menu_count].cfg,attribs[2*i], attribs[2*i+1])) MSG_WARN("[libmenu] Bad attrib: %s %s %s %i\n",attribs[2*i],attribs[2*i+1], - name,parser->line); + name,parser.get_line()); } menu_count++; memset(&menu_list[menu_count],0,sizeof(menu_def_t)); } else { - MSG_WARN("[libmenu] Unknown menu type: %s %i\n",element,parser->line); + MSG_WARN("[libmenu] Unknown menu type: %s %i\n",element,parser.get_line()); delete name; if(body) delete body; } @@ -116,7 +116,8 @@ delete element; asx_free_attribs(attribs); } - + delete &parser; + return 0; } /// This will build the menu_defs list from the cfg file Modified: mplayerxp/postproc/libmenu/menu_cmdlist.cpp =================================================================== --- mplayerxp/postproc/libmenu/menu_cmdlist.cpp 2012-12-11 17:07:00 UTC (rev 546) +++ mplayerxp/postproc/libmenu/menu_cmdlist.cpp 2012-12-12 09:07:39 UTC (rev 547) @@ -112,16 +112,16 @@ char *element,*body, **attribs, *name; list_entry_t* m = NULL; int r; - ASX_Parser_t* parser = asx_parser_new(); + ASX_Parser& parser = *new(zeromem) ASX_Parser; while(1) { - r = asx_get_element(parser,&args,&element,&body,&attribs); + r = parser.get_element(&args,&element,&body,&attribs); if(r < 0) { - MSG_WARN("[libmenu] Syntax error at line: %i\n",parser->line); - asx_parser_free(parser); + MSG_WARN("[libmenu] Syntax error at line: %i\n",parser.get_line()); + delete &parser; return -1; } else if(r == 0) { - asx_parser_free(parser); + delete &parser; if(!m) MSG_WARN("[libmenu] No entry found in the menu definition\n"); return m ? 1 : 0; @@ -129,7 +129,7 @@ // Has it a name ? name = asx_get_attrib("name",attribs); if(!name) { - MSG_WARN("[libmenu] ListMenu entry definitions need a name: %i\n",parser->line); + MSG_WARN("[libmenu] ListMenu entry definitions need a name: %i\n",parser.get_line()); delete element; if(body) delete body; asx_free_attribs(attribs); @@ -147,6 +147,8 @@ if(body) delete body; asx_free_attribs(attribs); } + delete &parser; + return -1; } static int open_cmdlist(menu_t* menu, const char* args) { Modified: mplayerxp/postproc/libmenu/menu_param.cpp =================================================================== --- mplayerxp/postproc/libmenu/menu_param.cpp 2012-12-11 17:07:00 UTC (rev 546) +++ mplayerxp/postproc/libmenu/menu_param.cpp 2012-12-12 09:07:39 UTC (rev 547) @@ -96,17 +96,16 @@ list_entry_t* m = NULL; int r; m_option_t* opt; - ASX_Parser_t* parser = asx_parser_new(); + ASX_Parser& parser = *new(zeromem) ASX_Parser; - while(1) { - r = asx_get_element(parser,&args,&element,&body,&attribs); + r = parser.get_element(&args,&element,&body,&attribs); if(r < 0) { - MSG_ERR("[libmenu] Syntax error at line: %s\n",parser->line); - asx_parser_free(parser); + MSG_ERR("[libmenu] Syntax error at line: %s\n",parser.get_line()); + delete &parser; return -1; } else if(r == 0) { - asx_parser_free(parser); + delete &parser; if(!m) MSG_WARN("[libmenu] No entry found in the menu definition\n"); m = new(zeromem) struct list_entry_s; @@ -133,12 +132,12 @@ opt = NULL; if(name && mp_property_do(name,M_PROPERTY_GET_TYPE,&opt,menu->ctx) <= 0) { MSG_WARN("[libmenu] Invalid property: %s %i\n", - name,parser->line); + name,parser.get_line()); goto next_element; } txt = asx_get_attrib("txt",attribs); if(!(name || txt)) { - MSG_WARN("[libmenu] PrefMenu entry definitions need: %i\n",parser->line); + MSG_WARN("[libmenu] PrefMenu entry definitions need: %i\n",parser.get_line()); if(txt) { delete txt; txt = NULL; } goto next_element; } @@ -157,6 +156,8 @@ if(name) delete name; asx_free_attribs(attribs); } + delete &parser; + return -1; } static void read_key(menu_t* menu,int c) { This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <nic...@us...> - 2012-12-12 15:33:23
|
Revision: 551 http://mplayerxp.svn.sourceforge.net/mplayerxp/?rev=551&view=rev Author: nickols_k Date: 2012-12-12 15:33:11 +0000 (Wed, 12 Dec 2012) Log Message: ----------- use const std::string& in mp_msg Modified Paths: -------------- mplayerxp/mp_msg.cpp mplayerxp/mp_msg.h Modified: mplayerxp/mp_msg.cpp =================================================================== --- mplayerxp/mp_msg.cpp 2012-12-12 15:25:16 UTC (rev 550) +++ mplayerxp/mp_msg.cpp 2012-12-12 15:33:11 UTC (rev 551) @@ -83,7 +83,7 @@ "POSTPR" }; -int mpxp_printf( unsigned x, const char *format, ... ){ +int mpxp_printf( unsigned x, const std::string& format, ... ){ /* TODO: more useful usage of module_id */ int rc=0; char* sbuf=new char[0xFFFFF]; @@ -112,7 +112,7 @@ } va_list va; va_start(va, format); - ssize=vsprintf(sbuf,format, va); + ssize=vsprintf(sbuf,format.c_str(), va); va_end(va); if(strcmp(nls_get_screen_cp(),"UTF-8")!=0) { char *obuf; @@ -121,7 +121,7 @@ delete obuf; } else rc=fputs(sbuf,stderr); - if(format[strlen(format)-1]=='\n') was_eol=1; + if(format[format.length()-1]=='\n') was_eol=1; else was_eol=0; fflush(stderr); // if(priv) pthread_mutex_unlock(&priv->mp_msg_mutex); Modified: mplayerxp/mp_msg.h =================================================================== --- mplayerxp/mp_msg.h 2012-12-12 15:25:16 UTC (rev 550) +++ mplayerxp/mp_msg.h 2012-12-12 15:33:11 UTC (rev 551) @@ -2,6 +2,8 @@ #define __MP_MSG_H 1 #include "mplayerxp.h" +#include <string> + /* TODO: more highlighted levels */ #ifndef MSGT_CLASS #define MSGT_CLASS MSGT_CPLAYER @@ -55,51 +57,51 @@ void mpxp_print_init(int verbose); void mpxp_print_uninit(void); void mpxp_print_flush(void); - int mpxp_printf( unsigned x, const char *format, ... ); + int mpxp_printf( unsigned x, const std::string& format, ... ); - inline int mpxp_print_dummy(const char* args,...) { + inline int mpxp_print_dummy(const std::string& args,...) { UNUSED(args); return 0; } #ifdef __va_arg_pack /* requires gcc-4.3.x */ -__always_inline int MSG_INFO(const char* args,...) { +__always_inline int MSG_INFO(const std::string& args,...) { return mpxp_printf((MSGL_INFO<<28)|(MSGT_CLASS&0x0FFFFFFF),args,__va_arg_pack ()); } -__always_inline int MSG_FATAL(const char* args,...) { +__always_inline int MSG_FATAL(const std::string& args,...) { return mpxp_printf((MSGL_FATAL<<28)|(MSGT_CLASS&0x0FFFFFFF),args,__va_arg_pack ()); } -__always_inline int MSG_WARN(const char* args,...) { +__always_inline int MSG_WARN(const std::string& args,...) { return mpxp_printf((MSGL_WARN<<28)|(MSGT_CLASS&0x0FFFFFFF),args,__va_arg_pack ()); } -__always_inline int MSG_ERR(const char* args,...) { +__always_inline int MSG_ERR(const std::string& args,...) { return mpxp_printf((MSGL_ERR<<28)|(MSGT_CLASS&0x0FFFFFFF),args,__va_arg_pack ()); } -__always_inline int MSG_OK(const char* args,...) { +__always_inline int MSG_OK(const std::string& args,...) { return mpxp_printf((MSGL_OK<<28)|(MSGT_CLASS&0x0FFFFFFF),args,__va_arg_pack ()); } -__always_inline int MSG_HINT(const char* args,...) { +__always_inline int MSG_HINT(const std::string& args,...) { return mpxp_printf((MSGL_HINT<<28)|(MSGT_CLASS&0x0FFFFFFF),args,__va_arg_pack ()); } -__always_inline int MSG_STATUS(const char* args,...) { +__always_inline int MSG_STATUS(const std::string& args,...) { return mpxp_printf((MSGL_STATUS<<28)|(MSGT_CLASS&0x0FFFFFFF),args,__va_arg_pack ()); } -__always_inline int MSG_V(const char* args,...) { +__always_inline int MSG_V(const std::string& args,...) { return mp_conf.verbose ? mpxp_printf((MSGL_V<<28)|(MSGT_CLASS&0x0FFFFFFF),args,__va_arg_pack ()): 0; } -__always_inline int MSG_DBG2(const char* args,...) { +__always_inline int MSG_DBG2(const std::string& args,...) { return mp_conf.verbose>1 ? mpxp_printf((MSGL_DBG2<<28)|(MSGT_CLASS&0x0FFFFFFF),args,__va_arg_pack ()): 0; } -__always_inline int MSG_DBG3(const char* args,...) { +__always_inline int MSG_DBG3(const std::string& args,...) { return mp_conf.verbose>2 ? mpxp_printf((MSGL_DBG3<<28)|(MSGT_CLASS&0x0FFFFFFF),args,__va_arg_pack ()): 0; } -__always_inline int MSG_DBG4(const char* args,...) { +__always_inline int MSG_DBG4(const std::string& args,...) { return mp_conf.verbose>3 ? mpxp_printf((MSGL_DBG4<<28)|(MSGT_CLASS&0x0FFFFFFF),args,__va_arg_pack ()): 0; This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <nic...@us...> - 2012-12-12 16:21:14
|
Revision: 552 http://mplayerxp.svn.sourceforge.net/mplayerxp/?rev=552&view=rev Author: nickols_k Date: 2012-12-12 16:21:04 +0000 (Wed, 12 Dec 2012) Log Message: ----------- new: class ASX_Element + minor redesign & segault-- Modified Paths: -------------- mplayerxp/libplaytree/asxparser.cpp mplayerxp/libplaytree/asxparser.h mplayerxp/postproc/libmenu/menu.cpp mplayerxp/postproc/libmenu/menu_cmdlist.cpp mplayerxp/postproc/libmenu/menu_param.cpp Modified: mplayerxp/libplaytree/asxparser.cpp =================================================================== --- mplayerxp/libplaytree/asxparser.cpp 2012-12-12 15:33:11 UTC (rev 551) +++ mplayerxp/libplaytree/asxparser.cpp 2012-12-12 16:21:04 UTC (rev 552) @@ -24,8 +24,8 @@ ASX_Parser::ASX_Parser() {} ASX_Parser::~ASX_Parser() { if(ret_stack) delete ret_stack; } -int ASX_Parser::parse_attribs(char* buffer,ASX_Attrib& _attribs) const { - char *ptr1, *ptr2, *ptr3; +int ASX_Parser::parse_attribs(const char* buffer,ASX_Attrib& _attribs) const { + const char *ptr1, *ptr2, *ptr3; int n_attrib = 0; char *attrib, *val; @@ -75,8 +75,7 @@ /* * Return -1 on error, 0 when nothing is found, 1 on sucess */ -int ASX_Parser::get_element(const char** _buffer, char** _element, - char** _body,ASX_Attrib& _attribs) { +int ASX_Parser::get_element(const char** _buffer, ASX_Element& _element) { const char *ptr1,*ptr2, *ptr3, *ptr4; char *cattribs = NULL; char *element = NULL, *body = NULL; @@ -85,13 +84,12 @@ int n_attrib = 0; int body_line = 0,attrib_line,ret_line,in = 0; - if(_buffer == NULL || _element == NULL || _body == NULL) { + if(_buffer == NULL) { MSG_ERR("At line %d : asx_get_element called with invalid value",line); return -1; } - _attribs.clear(); - *_body = *_element = NULL; + _element.clear(); buffer = *_buffer; if(buffer == NULL) return 0; @@ -267,7 +265,7 @@ if(cattribs) { line = attrib_line; - n_attrib = parse_attribs(cattribs,_attribs); + n_attrib = parse_attribs(cattribs,_element.attribs()); delete cattribs; if(n_attrib < 0) { MSG_WARN("At line %d : error while parsing element %s attributes",line,element); @@ -275,10 +273,10 @@ delete body; return -1; } - } else _attribs.clear(); + } else _element.attribs().clear(); - *_element = element; - *_body = body; + _element.name(element?element:""); + _element.body(body?body:""); last_body = body; ret_stack_size++; @@ -326,7 +324,7 @@ MSG_V("Adding file %s to element entry\n",href.c_str()); } -play_tree_t* ASX_Parser::entryref(libinput_t* libinput,char* buffer,ASX_Attrib& _attribs) const { +play_tree_t* ASX_Parser::entryref(libinput_t* libinput,const char* buffer,ASX_Attrib& _attribs) const { play_tree_t* pt; std::string href; Stream* stream; @@ -362,8 +360,7 @@ } play_tree_t* ASX_Parser::entry(const char* buffer,ASX_Attrib& _attribs) { - char *celement,*body; - ASX_Attrib cattribs; + ASX_Element element; int r,nref=0; play_tree_t *pt_ref; UNUSED(_attribs); @@ -371,17 +368,16 @@ pt_ref = play_tree_new(); while(buffer && buffer[0] != '\0') { - r = get_element(&buffer,&celement,&body,cattribs); + r = get_element(&buffer,element); if(r < 0) { warning_body_parse_error("ENTRY"); return NULL; } else if (r == 0) break; // No more element - if(strcasecmp(celement,"REF") == 0) { - ref(cattribs,pt_ref); - MSG_DBG2("Adding element %s to entry\n",celement); + if(strcasecmp(element.name().c_str(),"REF") == 0) { + ref(element.attribs(),pt_ref); + MSG_DBG2("Adding element %s to entry\n",element.name().c_str()); nref++; - } else MSG_DBG2("Ignoring element %s\n",celement); - if(body) delete body; + } else MSG_DBG2("Ignoring element %s\n",element.name().c_str()); } if(nref <= 0) { play_tree_free(pt_ref,1); @@ -391,8 +387,7 @@ } play_tree_t* ASX_Parser::repeat(libinput_t*libinput,const char* buffer,ASX_Attrib& _attribs) { - char *element,*body; - ASX_Attrib cattribs; + ASX_Element element; play_tree_t *pt_repeat, *list=NULL, *pt_entry; std::string count; int r; @@ -410,36 +405,35 @@ } while(buffer && buffer[0] != '\0') { - r = get_element(&buffer,&element,&body,cattribs); + r = get_element(&buffer,element); if(r < 0) { warning_body_parse_error("REPEAT"); return NULL; } else if (r == 0) break; // No more element - if(strcasecmp(element,"ENTRY") == 0) { - pt_entry = entry(body,cattribs); + if(strcasecmp(element.name().c_str(),"ENTRY") == 0) { + pt_entry = entry(element.body().c_str(),element.attribs()); if(pt_entry) { if(!list) list = pt_entry; else play_tree_append_entry(list,pt_entry); - MSG_DBG2("Adding element %s to repeat\n",element); + MSG_DBG2("Adding element %s to repeat\n",element.name().c_str()); } - } else if(strcasecmp(element,"ENTRYREF") == 0) { - pt_entry = entryref(libinput,body,cattribs); + } else if(strcasecmp(element.name().c_str(),"ENTRYREF") == 0) { + pt_entry = entryref(libinput,element.body().c_str(),element.attribs()); if(pt_entry) { if(!list) list = pt_entry; else play_tree_append_entry(list,pt_entry); - MSG_DBG2("Adding element %s to repeat\n",element); + MSG_DBG2("Adding element %s to repeat\n",element.name().c_str()); } - } else if(strcasecmp(element,"REPEAT") == 0) { - pt_entry = repeat(libinput,body,cattribs); + } else if(strcasecmp(element.name().c_str(),"REPEAT") == 0) { + pt_entry = repeat(libinput,element.body().c_str(),element.attribs()); if(pt_entry) { if(!list) list = pt_entry; else play_tree_append_entry(list,pt_entry); - MSG_DBG2("Adding element %s to repeat\n",element); + MSG_DBG2("Adding element %s to repeat\n",element.name().c_str()); } - } else if(strcasecmp(element,"PARAM") == 0) { - param(cattribs,pt_repeat); - } else MSG_DBG2("Ignoring element %s\n",element); - if(body) delete body; + } else if(strcasecmp(element.name().c_str(),"PARAM") == 0) { + param(element.attribs(),pt_repeat); + } else MSG_DBG2("Ignoring element %s\n",element.name().c_str()); } if(!list) { @@ -451,8 +445,7 @@ } play_tree_t* ASX_Parser::build_tree(libinput_t*libinput,const char* buffer,int deep) { - char *element,*asx_body,*body; - ASX_Attrib asx_attribs,attribs; + ASX_Element asx_element,element; int r; play_tree_t *asx,*pt_entry,*list = NULL; ASX_Parser& parser = *new(zeromem) ASX_Parser; @@ -460,7 +453,7 @@ parser.line = 1; parser.deep = deep; - r = parser.get_element(&buffer,&element,&asx_body,asx_attribs); + r = parser.get_element(&buffer,asx_element); if(r < 0) { MSG_ERR("At line %d : Syntax error ???",parser.line); delete &parser; @@ -471,54 +464,51 @@ return NULL; } - if(strcasecmp(element,"ASX") != 0) { - MSG_ERR("first element isn't ASX, it's %s\n",element); - if(body) delete body; + if(strcasecmp(element.name().c_str(),"ASX") != 0) { + MSG_ERR("first element isn't ASX, it's %s\n",element.name().c_str()); delete &parser; return NULL; } - if(!asx_body) { + if(asx_element.body().empty()) { MSG_ERR("ASX element is empty"); delete &parser; return NULL; } asx = play_tree_new(); - buffer = asx_body; + buffer = asx_element.body().c_str(); while(buffer && buffer[0] != '\0') { - r = parser.get_element(&buffer,&element,&body,attribs); + r = parser.get_element(&buffer,element); if(r < 0) { parser.warning_body_parse_error("ASX"); delete &parser; return NULL; } else if (r == 0) break; // No more element - if(strcasecmp(element,"ENTRY") == 0) { - pt_entry = parser.entry(body,attribs); + if(strcasecmp(element.name().c_str(),"ENTRY") == 0) { + pt_entry = parser.entry(element.body().c_str(),element.attribs()); if(pt_entry) { if(!list) list = pt_entry; else play_tree_append_entry(list,pt_entry); - MSG_DBG2("Adding element %s to asx\n",element); + MSG_DBG2("Adding element %s to asx\n",element.name().c_str()); } - } else if(strcasecmp(element,"ENTRYREF") == 0) { - pt_entry = parser.entryref(libinput,body,attribs); + } else if(strcasecmp(element.name().c_str(),"ENTRYREF") == 0) { + pt_entry = parser.entryref(libinput,element.body().c_str(),element.attribs()); if(pt_entry) { if(!list) list = pt_entry; else play_tree_append_entry(list,pt_entry); - MSG_DBG2("Adding element %s to asx\n",element); + MSG_DBG2("Adding element %s to asx\n",element.name().c_str()); } - } else if(strcasecmp(element,"REPEAT") == 0) { - pt_entry = parser.repeat(libinput,body,attribs); + } else if(strcasecmp(element.name().c_str(),"REPEAT") == 0) { + pt_entry = parser.repeat(libinput,element.body().c_str(),element.attribs()); if(pt_entry) { if(!list) list = pt_entry; else play_tree_append_entry(list,pt_entry); - MSG_DBG2("Adding element %s to asx\n",element); + MSG_DBG2("Adding element %s to asx\n",element.name().c_str()); } - } else MSG_DBG2("Ignoring element %s\n",element); - if(body) delete body; + } else MSG_DBG2("Ignoring element %s\n",element.name().c_str()); } - delete asx_body; delete &parser; if(!list) { Modified: mplayerxp/libplaytree/asxparser.h =================================================================== --- mplayerxp/libplaytree/asxparser.h 2012-12-12 15:33:11 UTC (rev 551) +++ mplayerxp/libplaytree/asxparser.h 2012-12-12 16:21:04 UTC (rev 552) @@ -28,6 +28,24 @@ std::map<std::string,std::string,ASX_Attrib::stricomp> _attrib; }; + class ASX_Element { + public: + ASX_Element() {} + ~ASX_Element() {} + + const std::string& name(const std::string& s) { return _name=s; } + const std::string& body(const std::string& s) { return _body=s; } + ASX_Attrib& attribs(ASX_Attrib& a) { return _attribs=a; } + const std::string& name() const { return _name; } + const std::string& body() const { return _body; } + ASX_Attrib& attribs() { return _attribs; } + void clear() { name(""); body(""); attribs().clear(); } + private: + std::string _name; + std::string _body; + ASX_Attrib _attribs; + }; + class ASX_Parser : public Opaque { public: ASX_Parser(); @@ -35,19 +53,19 @@ static play_tree_t* build_tree(libinput_t* libinput,const char* buffer, int ref); - virtual int parse_attribs(char* buffer,ASX_Attrib& _attribs) const; + virtual int parse_attribs(const char* buffer,ASX_Attrib& _attribs) const; /* * Return -1 on error, 0 when nothing is found, 1 on sucess */ - virtual int get_element(const char** _buffer,char** _element,char** _body,ASX_Attrib& _attribs); + virtual int get_element(const char** _buffer,ASX_Element& _attribs); int get_line() const { return line; } private: play_tree_t* repeat(libinput_t*libinput,const char* buffer,ASX_Attrib& _attribs); - void warning_attrib_required(const char *e, const char *a) const; - void warning_body_parse_error(const char *e) const; + void warning_attrib_required(const char *elem, const char *attr) const; + void warning_body_parse_error(const char *elem) const; void param(ASX_Attrib& attribs, play_tree_t* pt) const; void ref(ASX_Attrib& attribs, play_tree_t* pt) const; - play_tree_t* entryref(libinput_t* libinput,char* buffer,ASX_Attrib& _attribs) const; + play_tree_t* entryref(libinput_t* libinput,const char* buffer,ASX_Attrib& _attribs) const; play_tree_t* entry(const char* buffer,ASX_Attrib& _attribs); int line; // Curent line Modified: mplayerxp/postproc/libmenu/menu.cpp =================================================================== --- mplayerxp/postproc/libmenu/menu.cpp 2012-12-12 15:33:11 UTC (rev 551) +++ mplayerxp/postproc/libmenu/menu.cpp 2012-12-12 16:21:04 UTC (rev 552) @@ -59,15 +59,14 @@ static int menu_parse_config(const char* buffer) { - char *element,*body; std::string name; - ASX_Attrib attribs; + ASX_Element element; menu_info_t* minfo = NULL; int r,i; ASX_Parser& parser = *new(zeromem) ASX_Parser; while(1) { - r = parser.get_element(&buffer,&element,&body,attribs); + r = parser.get_element(&buffer,element); if(r < 0) { MSG_WARN("[libmenu] Syntax error at line: %i\n",parser.get_line()); delete &parser; @@ -77,17 +76,15 @@ return 1; } // Has it a name ? - name = attribs.get("name"); + name = element.attribs().get("name"); if(name.empty()) { MSG_WARN("[libmenu] Menu definitions need a name attrib: %i\n",parser.get_line()); - delete element; - if(body) delete body; continue; } // Try to find this menu type in our list for(i = 0, minfo = NULL ; menu_info_list[i] ; i++) { - if(strcasecmp(element,menu_info_list[i]->name) == 0) { + if(strcasecmp(element.name().c_str(),menu_info_list[i]->name) == 0) { minfo = menu_info_list[i]; break; } @@ -98,9 +95,9 @@ menu_list[menu_count].name = mp_strdup(name.c_str()); menu_list[menu_count].type = minfo; menu_list[menu_count].cfg = m_struct_alloc(&minfo->priv_st); - menu_list[menu_count].args = body; + menu_list[menu_count].args = mp_strdup(element.body().c_str()); std::map<std::string,std::string,ASX_Attrib::stricomp>::iterator it; - std::map<std::string,std::string,ASX_Attrib::stricomp>& _map = attribs.map(); + std::map<std::string,std::string,ASX_Attrib::stricomp>& _map = element.attribs().map(); for(it=_map.begin();it!=_map.end();it++) { std::string sfirst,ssecond; sfirst=(*it).first; @@ -114,11 +111,8 @@ menu_count++; memset(&menu_list[menu_count],0,sizeof(menu_def_t)); } else { - MSG_WARN("[libmenu] Unknown menu type: %s %i\n",element,parser.get_line()); - if(body) delete body; + MSG_WARN("[libmenu] Unknown menu type: %s %i\n",element.name().c_str(),parser.get_line()); } - - delete element; } delete &parser; return 0; @@ -212,6 +206,10 @@ menu_t* m; int i; + if(menu_list == NULL) { + MSG_WARN("[libmenu] Menu was not initialized\n"); + return NULL; + } if(name == NULL) { MSG_WARN("[libmenu] Name of menu was not specified\n"); return NULL; @@ -286,6 +284,8 @@ int c = utf8_get_char((const char**)&txt); render_one_glyph(mpxp_context().video().output->font, c); } +#else + UNUSED(txt); #endif } Modified: mplayerxp/postproc/libmenu/menu_cmdlist.cpp =================================================================== --- mplayerxp/postproc/libmenu/menu_cmdlist.cpp 2012-12-12 15:33:11 UTC (rev 551) +++ mplayerxp/postproc/libmenu/menu_cmdlist.cpp 2012-12-12 16:21:04 UTC (rev 552) @@ -109,15 +109,14 @@ } static int parse_args(menu_t* menu,const char* args) { - char *element,*body; - ASX_Attrib attribs; + ASX_Element element; std::string name; list_entry_t* m = NULL; int r; ASX_Parser& parser = *new(zeromem) ASX_Parser; while(1) { - r = parser.get_element(&args,&element,&body,attribs); + r = parser.get_element(&args,element); if(r < 0) { MSG_WARN("[libmenu] Syntax error at line: %i\n",parser.get_line()); delete &parser; @@ -129,23 +128,18 @@ return m ? 1 : 0; } // Has it a name ? - name = attribs.get("name"); + name = element.attribs().get("name"); if(name.empty()) { MSG_WARN("[libmenu] ListMenu entry definitions need a name: %i\n",parser.get_line()); - delete element; - if(body) delete body; continue; } m = new(zeromem) struct list_entry_s; m->p.txt = mp_strdup(name.c_str()); - m->ok = mp_strdup(attribs.get("ok").c_str()); - m->cancel = mp_strdup(attribs.get("cancel").c_str()); - m->left = mp_strdup(attribs.get("left").c_str()); - m->right = mp_strdup(attribs.get("right").c_str()); + m->ok = mp_strdup(element.attribs().get("ok").c_str()); + m->cancel = mp_strdup(element.attribs().get("cancel").c_str()); + m->left = mp_strdup(element.attribs().get("left").c_str()); + m->right = mp_strdup(element.attribs().get("right").c_str()); menu_list_add_entry(menu,m); - - delete element; - if(body) delete body; } delete &parser; return -1; Modified: mplayerxp/postproc/libmenu/menu_param.cpp =================================================================== --- mplayerxp/postproc/libmenu/menu_param.cpp 2012-12-12 15:33:11 UTC (rev 551) +++ mplayerxp/postproc/libmenu/menu_param.cpp 2012-12-12 16:21:04 UTC (rev 552) @@ -92,8 +92,7 @@ } static int parse_args(menu_t* menu,const char* args) { - char *element,*body; - ASX_Attrib attribs; + ASX_Element element; std::string name,txt; list_entry_t* m = NULL; int r; @@ -101,7 +100,7 @@ ASX_Parser& parser = *new(zeromem) ASX_Parser; while(1) { - r = parser.get_element(&args,&element,&body,attribs); + r = parser.get_element(&args,element); if(r < 0) { MSG_ERR("[libmenu] Syntax error at line: %s\n",parser.get_line()); delete &parser; @@ -115,44 +114,40 @@ menu_list_add_entry(menu,m); return 1; } - if(!strcmp(element,"menu")) { - name = attribs.get("menu"); + if(!strcasecmp(element.name().c_str(),"menu")) { + name = element.attribs().get("menu"); if(name.empty()) { MSG_WARN("[libmenu] Submenu definition need a menu attribut\n"); - goto next_element; + continue; } m = new(zeromem) struct list_entry_s; m->menu = mp_strdup(name.c_str()); - m->p.txt = mp_strdup(attribs.get("name").c_str()); + m->p.txt = mp_strdup(element.attribs().get("name").c_str()); if(!m->p.txt) m->p.txt = mp_strdup(m->menu); menu_list_add_entry(menu,m); - goto next_element; + continue; } - name = attribs.get("property"); + name = element.attribs().get("property"); opt = NULL; if(!name.empty() && mp_property_do(name.c_str(),M_PROPERTY_GET_TYPE,&opt,menu->ctx) <= 0) { MSG_WARN("[libmenu] Invalid property: %s %i\n", name.c_str(),parser.get_line()); - goto next_element; + continue; } - txt = attribs.get("txt"); + txt = element.attribs().get("txt"); if(name.empty() || txt.empty()) { MSG_WARN("[libmenu] PrefMenu entry definitions need: %i\n",parser.get_line()); - goto next_element; + continue; } m = new(zeromem) struct list_entry_s; m->opt = opt; m->txt = mp_strdup(txt.c_str()); m->prop = mp_strdup(name.c_str()); - m->name = mp_strdup(attribs.get("name").c_str()); + m->name = mp_strdup(element.attribs().get("name").c_str()); if(!m->name) m->name = mp_strdup(opt ? opt->name : "-"); entry_set_text(menu,m); menu_list_add_entry(menu,m); - - next_element: - delete element; - if(body) delete body; } delete &parser; return -1; This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <nic...@us...> - 2012-12-12 17:37:06
|
Revision: 553 http://mplayerxp.svn.sourceforge.net/mplayerxp/?rev=553&view=rev Author: nickols_k Date: 2012-12-12 17:36:49 +0000 (Wed, 12 Dec 2012) Log Message: ----------- replace libinput_t* -> libinput_t& Modified Paths: -------------- mplayerxp/dump.cpp mplayerxp/dump.h mplayerxp/input2/input.cpp mplayerxp/input2/input.h mplayerxp/libmpcodecs/dec_video.cpp mplayerxp/libmpcodecs/dec_video.h mplayerxp/libmpconf/cfgparser.cpp mplayerxp/libmpconf/cfgparser.h mplayerxp/libmpdemux/demuxer.cpp mplayerxp/libmpdemux/demuxer.h mplayerxp/libmpdemux/mpdemux.cpp mplayerxp/libmpdemux/mpdemux.h mplayerxp/libmpstream2/cache2.cpp mplayerxp/libmpstream2/cdd.h mplayerxp/libmpstream2/cddb.cpp mplayerxp/libmpstream2/s_cdd.cpp mplayerxp/libmpstream2/s_dvdnav.cpp mplayerxp/libmpstream2/s_dvdread.cpp mplayerxp/libmpstream2/s_file.cpp mplayerxp/libmpstream2/s_ftp.cpp mplayerxp/libmpstream2/s_lavc.cpp mplayerxp/libmpstream2/s_network.cpp mplayerxp/libmpstream2/s_null.cpp mplayerxp/libmpstream2/s_oss.cpp mplayerxp/libmpstream2/s_rtsp.cpp mplayerxp/libmpstream2/s_tv.cpp mplayerxp/libmpstream2/s_udp.cpp mplayerxp/libmpstream2/s_vcdnav.cpp mplayerxp/libmpstream2/stream.cpp mplayerxp/libmpstream2/stream.h mplayerxp/libmpstream2/stream_internal.h mplayerxp/libmpstream2/tcp.cpp mplayerxp/libmpstream2/tcp.h mplayerxp/libplaytree/asxparser.cpp mplayerxp/libplaytree/asxparser.h mplayerxp/libplaytree/playtree.h mplayerxp/libplaytree/playtreeparser.cpp mplayerxp/libplaytree/playtreeparser.h mplayerxp/mplayerxp.cpp mplayerxp/postproc/libmenu/menu.cpp mplayerxp/postproc/libmenu/menu.h mplayerxp/postproc/vf.cpp mplayerxp/postproc/vf.h mplayerxp/postproc/vf_internal.h mplayerxp/postproc/vf_menu.cpp Modified: mplayerxp/dump.cpp =================================================================== --- mplayerxp/dump.cpp 2012-12-12 16:21:04 UTC (rev 552) +++ mplayerxp/dump.cpp 2012-12-12 17:36:49 UTC (rev 553) @@ -77,7 +77,7 @@ #define MUX_HAVE_SUBS 0x04 struct dump_priv_t : public Opaque { public: - dump_priv_t() {} + dump_priv_t(libinput_t& l):libinput(l) {} virtual ~dump_priv_t() {} int my_use_pts; @@ -90,7 +90,7 @@ uint64_t vsize,asize,ssize; float timer_corr; /* use common time-base */ float vtimer; - libinput_t* libinput; + libinput_t& libinput; }; /* @@ -116,16 +116,15 @@ return retval; } -void dump_mux_init(Demuxer *demuxer,libinput_t* libinput) +void dump_mux_init(Demuxer *demuxer,libinput_t& libinput) { sh_audio_t* sha=reinterpret_cast<sh_audio_t*>(demuxer->audio->sh); sh_video_t* shv=reinterpret_cast<sh_video_t*>(demuxer->video->sh); char stream_dump_name[1024]; /* TODO copy it from demuxer */ if(demuxer->priv) return; - dump_priv_t*priv=new(zeromem) dump_priv_t; + dump_priv_t*priv=new(zeromem) dump_priv_t(libinput); demuxer->priv=priv; - priv->libinput=libinput; /* describe other useless dumps */ priv->mux_type=MUX_HAVE_AUDIO|MUX_HAVE_VIDEO|MUX_HAVE_SUBS; if(port) { Modified: mplayerxp/dump.h =================================================================== --- mplayerxp/dump.h 2012-12-12 16:21:04 UTC (rev 552) +++ mplayerxp/dump.h 2012-12-12 17:36:49 UTC (rev 553) @@ -7,7 +7,7 @@ namespace mpxp { int dump_parse(const char *param); void dump_stream(Stream *stream); - void dump_mux_init(Demuxer *demuxer,libinput_t*libinput); + void dump_mux_init(Demuxer *demuxer,libinput_t&libinput); void dump_mux(Demuxer *demuxer,int use_pts,const char *seek_to_sec,unsigned play_n_frames); void dump_mux_close(Demuxer *demuxer); } //namespace Modified: mplayerxp/input2/input.cpp =================================================================== --- mplayerxp/input2/input.cpp 2012-12-12 16:21:04 UTC (rev 552) +++ mplayerxp/input2/input.cpp 2012-12-12 17:36:49 UTC (rev 553) @@ -422,8 +422,8 @@ void (*mp_input_key_cb)(int code) = NULL; static mp_cmd_t* mp_cmd_clone(mp_cmd_t* cmd); // This create a copy of a command (used by the auto repeat stuff) -static int mp_input_print_key_list(libinput_t*); -static int mp_input_print_cmd_list(libinput_t*); +static int mp_input_print_key_list(libinput_t&); +static int mp_input_print_cmd_list(libinput_t&); static const config_t joystick_conf[] = { { "on", &libinput_conf.use_joystick, CONF_TYPE_FLAG, CONF_GLOBAL, 0, 1, "enables using of joystick" }, @@ -459,10 +459,9 @@ static int mp_input_default_key_func(any_t* fd); static int mp_input_default_cmd_func(any_t* fd,char* buf, int l); -static const char* mp_input_get_key_name(libinput_t*,int key); +static const char* mp_input_get_key_name(libinput_t&,int key); -static MPXP_Rc mp_input_add_cmd_fd(libinput_t* handle,any_t* opaque, int sel, mp_cmd_func_t read_func, mp_close_func_t close_func) { - libinput_t& priv = *handle; +static MPXP_Rc mp_input_add_cmd_fd(libinput_t& priv,any_t* opaque, int sel, mp_cmd_func_t read_func, mp_close_func_t close_func) { if(priv.num_cmd_fd == MP_MAX_CMD_FD) { MSG_ERR("Too much command fd, unable to register fd\n"); return MPXP_False; @@ -478,8 +477,7 @@ return MPXP_Ok; } -static void mp_input_rm_cmd_fd(libinput_t* handle,any_t* fd) { - libinput_t& priv = *handle; +static void mp_input_rm_cmd_fd(libinput_t& priv,any_t* fd) { unsigned int i; for(i = 0; i < priv.num_cmd_fd; i++) { @@ -492,8 +490,7 @@ priv.num_cmd_fd--; } -static void mp_input_rm_key_fd(libinput_t* handle,any_t* fd) { - libinput_t& priv = *handle; +static void mp_input_rm_key_fd(libinput_t& priv,any_t* fd) { unsigned int i; for(i = 0; i < priv.num_key_fd; i++) { @@ -505,8 +502,7 @@ priv.num_key_fd--; } -static MPXP_Rc mp_input_add_key_fd(libinput_t* handle,any_t* opaque, int sel, mp_key_func_t read_func, mp_close_func_t close_func) { - libinput_t& priv = *handle; +static MPXP_Rc mp_input_add_key_fd(libinput_t& priv,any_t* opaque, int sel, mp_key_func_t read_func, mp_close_func_t close_func) { if(priv.num_key_fd == MP_MAX_KEY_FD) { MSG_ERR("Too much key fd, unable to register fd\n"); return MPXP_False; @@ -740,8 +736,7 @@ } } -void mp_input_add_cmd_filter(libinput_t* handle,mp_input_cmd_filter func,any_t* ctx) { - libinput_t& priv = *handle; +void mp_input_add_cmd_filter(libinput_t& priv,mp_input_cmd_filter func,any_t* ctx) { mp_cmd_filter_t* filter = new(zeromem) mp_cmd_filter_t; filter->filter = func; @@ -772,36 +767,34 @@ return binds[j].cmd; } -mp_cmd_t* mp_input_get_cmd_from_keys(libinput_t* handle,int n,int* keys) { - libinput_t& priv = *handle; +mp_cmd_t* mp_input_get_cmd_from_keys(libinput_t& priv,int n,int* keys) { const char* cmd = NULL; mp_cmd_t* ret; if(priv.cmd_binds) cmd = mp_input_find_bind_for_key(priv.cmd_binds,n,keys); if(cmd == NULL) cmd = mp_input_find_bind_for_key(def_cmd_binds,n,keys); if(cmd == NULL) { - MSG_WARN("No bind found for key %s",mp_input_get_key_name(&priv,keys[0])); + MSG_WARN("No bind found for key %s",mp_input_get_key_name(priv,keys[0])); if(n > 1) { int s; - for(s=1; s < n; s++) MSG_WARN("-%s",mp_input_get_key_name(&priv,keys[s])); + for(s=1; s < n; s++) MSG_WARN("-%s",mp_input_get_key_name(priv,keys[s])); } MSG_WARN(" \n"); return NULL; } ret = mp_input_parse_cmd(cmd); if(!ret) { - MSG_ERR("Invalid command for binded key %s",mp_input_get_key_name(&priv,priv.key_down[0])); + MSG_ERR("Invalid command for binded key %s",mp_input_get_key_name(priv,priv.key_down[0])); if(priv.num_key_down > 1) { unsigned int s; - for(s=1; s < priv.num_key_down; s++) MSG_ERR("-%s",mp_input_get_key_name(&priv,priv.key_down[s])); + for(s=1; s < priv.num_key_down; s++) MSG_ERR("-%s",mp_input_get_key_name(priv,priv.key_down[s])); } MSG_ERR(" : %s \n",cmd); } return ret; } -static int mp_input_read_key_code(libinput_t* handle,int tim) { - libinput_t& priv = *handle; +static int mp_input_read_key_code(libinput_t& priv,int tim) { int n=0; unsigned i; @@ -811,7 +804,7 @@ // n == number of fd's to be select() checked for(i = 0; (unsigned int)i < priv.num_key_fd; i++) { if( (priv.key_fds[i].flags & MP_FD_DEAD) ) { - mp_input_rm_key_fd(&priv,priv.key_fds[i].opaque); + mp_input_rm_key_fd(priv,priv.key_fds[i].opaque); i--; continue; } else if(priv.key_fds[i].flags & MP_FD_NO_SELECT) continue; @@ -828,20 +821,19 @@ if(code == MP_INPUT_ERROR) MSG_ERR("Error on key input fd\n"); else if(code == MP_INPUT_DEAD) { MSG_ERR("Dead key input on fd\n"); - mp_input_rm_key_fd(&priv,priv.key_fds[i].opaque); + mp_input_rm_key_fd(priv,priv.key_fds[i].opaque); } } return MP_INPUT_NOTHING; } -static mp_cmd_t* mp_input_read_keys(libinput_t*handle,int tim) { - libinput_t& priv = *handle; - int code = mp_input_read_key_code(&priv,tim); +static mp_cmd_t* mp_input_read_keys(libinput_t& priv,int tim) { + int code = mp_input_read_key_code(priv,tim); unsigned int j; mp_cmd_t* ret; if(mp_input_key_cb) { - for( ; code >= 0 ; code = mp_input_read_key_code(&priv,0) ) { + for( ; code >= 0 ; code = mp_input_read_key_code(priv,0) ) { if(code & MP_KEY_DOWN) continue; code &= ~(MP_KEY_DOWN|MP_NO_REPEAT_KEY); mp_input_key_cb(code); @@ -849,7 +841,7 @@ return NULL; } - for( ; code >= 0 ; code = mp_input_read_key_code(&priv,0) ) { + for( ; code >= 0 ; code = mp_input_read_key_code(priv,0) ) { // key pushed if(code & MP_KEY_DOWN) { if(priv.num_key_down > MP_MAX_KEY_DOWN) { @@ -885,7 +877,7 @@ priv.last_key_down = 1; } // We ignore key from last combination - ret = priv.last_key_down ? mp_input_get_cmd_from_keys(&priv,priv.num_key_down,priv.key_down):NULL; + ret = priv.last_key_down ? mp_input_get_cmd_from_keys(priv,priv.num_key_down,priv.key_down):NULL; // Remove the key if(j+1 < priv.num_key_down) memmove(&priv.key_down[j],&priv.key_down[j+1],(priv.num_key_down-(j+1))*sizeof(int)); priv.num_key_down--; @@ -903,7 +895,7 @@ unsigned int t = GetTimer(); // First time : wait delay if(priv.ar_state == 0 && (t - priv.last_key_down) >= libinput_conf.ar_delay*1000) { - priv.ar_cmd = mp_input_get_cmd_from_keys(&priv,priv.num_key_down,priv.key_down); + priv.ar_cmd = mp_input_get_cmd_from_keys(priv,priv.num_key_down,priv.key_down); if(!priv.ar_cmd) { priv.ar_state = -1; return NULL; @@ -920,8 +912,7 @@ return NULL; } -static mp_cmd_t* mp_input_read_cmds(libinput_t* handle) { - libinput_t& priv = *handle; +static mp_cmd_t* mp_input_read_cmds(libinput_t& priv) { int n = 0,got_cmd = 0; unsigned i; mp_cmd_t* ret; @@ -931,7 +922,7 @@ for(i = 0; (unsigned int)i < priv.num_cmd_fd ; i++) { if(priv.cmd_fds[i].flags&MP_FD_EOF) { - mp_input_rm_cmd_fd(&priv,priv.cmd_fds[i].opaque); + mp_input_rm_cmd_fd(priv,priv.cmd_fds[i].opaque); i--; continue; } else if(priv.cmd_fds[i].flags & MP_FD_NO_SELECT) continue; @@ -958,8 +949,7 @@ return NULL; } -MPXP_Rc mp_input_queue_cmd(libinput_t* handle,mp_cmd_t* cmd) { - libinput_t& priv = *handle; +MPXP_Rc mp_input_queue_cmd(libinput_t& priv,mp_cmd_t* cmd) { if(priv.cmd_queue_length >= CMD_QUEUE_SIZE) return MPXP_False; priv.cmd_queue[priv.cmd_queue_end] = cmd; priv.cmd_queue_end = (priv.cmd_queue_end + 1) % CMD_QUEUE_SIZE; @@ -967,8 +957,7 @@ return MPXP_Ok; } -static mp_cmd_t* mp_input_get_queued_cmd(libinput_t* handle,int peek_only) { - libinput_t& priv = *handle; +static mp_cmd_t* mp_input_get_queued_cmd(libinput_t& priv,int peek_only) { mp_cmd_t* ret; if(priv.cmd_queue_length == 0) return NULL; @@ -986,18 +975,17 @@ * \param peek_only when set, the returned command stays in the queue. * Do not mp_free the returned cmd whe you set this! */ -mp_cmd_t* mp_input_get_cmd(libinput_t*handle,int tim, int paused, int peek_only) { - libinput_t& priv = *handle; +mp_cmd_t* mp_input_get_cmd(libinput_t& priv,int tim, int paused, int peek_only) { mp_cmd_t* ret = NULL; mp_cmd_filter_t* cf; int from_queue; from_queue = 1; - ret = mp_input_get_queued_cmd(&priv,peek_only); + ret = mp_input_get_queued_cmd(priv,peek_only); if(!ret) { from_queue = 0; - ret = mp_input_read_keys(&priv,tim); - if(!ret) ret = mp_input_read_cmds(&priv); + ret = mp_input_read_keys(priv,tim); + if(!ret) ret = mp_input_read_cmds(priv); } if(!ret) return NULL; @@ -1005,7 +993,7 @@ if(cf->filter(ret,paused,cf->ctx)) return NULL; } - if (!from_queue && peek_only) mp_input_queue_cmd(&priv,ret); + if (!from_queue && peek_only) mp_input_queue_cmd(priv,ret); return ret; } @@ -1033,7 +1021,7 @@ assert(cmd != NULL); #endif - ret = (mp_cmd_t*)mp_malloc(sizeof(mp_cmd_t)); + ret = new(zeromem) mp_cmd_t; memcpy(ret,cmd,sizeof(mp_cmd_t)); if(cmd->name) ret->name = mp_strdup(cmd->name); for(i = 0; i < MP_CMD_MAX_ARGS && cmd->args[i].type != -1; i++) { @@ -1043,8 +1031,7 @@ return ret; } -static const char* mp_input_get_key_name(libinput_t* handle,int key) { - libinput_t& priv = *handle; +static const char* mp_input_get_key_name(libinput_t& priv,int key) { unsigned i; for(i = 0; key_names[i].name != NULL; i++) { @@ -1061,7 +1048,7 @@ return priv.key_str; } -static int mp_input_get_key_from_name(char* name) { +static int mp_input_get_key_from_name(const char* name) { int i,ret = 0,len = strlen(name); if(len == 1) { // Direct key code ret = (unsigned char)name[0]; @@ -1076,7 +1063,8 @@ } static int mp_input_get_input_from_name(char* name,int* keys) { - char *end,*ptr; + char *end; + char *ptr; int n=0; ptr = name; @@ -1096,8 +1084,7 @@ return 1; } -static void mp_input_bind_keys(libinput_t* handle,int keys[MP_MAX_KEY_DOWN+1], char* cmd) { - libinput_t& priv = *handle; +static void mp_input_bind_keys(libinput_t& priv,int keys[MP_MAX_KEY_DOWN+1],const char* cmd) { int i = 0,j; mp_cmd_bind_t* _bind = NULL; @@ -1136,8 +1123,7 @@ #define BS_MAX 256 #define SPACE_CHAR " \n\r\t" -static int mp_input_parse_config(libinput_t* handle,const char *file) { - libinput_t& priv = *handle; +static int mp_input_parse_config(libinput_t& priv,const char *file) { int fd; int bs = 0,r,eof = 0,comments = 0; char *iter,*end; @@ -1234,8 +1220,8 @@ // Found new line if(iter[0] == '\n' || iter[0] == '\r') { int i; - MSG_ERR("No command found for key %s" ,mp_input_get_key_name(&priv,keys[0])); - for(i = 1; keys[i] != 0 ; i++) MSG_ERR("-%s",mp_input_get_key_name(&priv,keys[i])); + MSG_ERR("No command found for key %s" ,mp_input_get_key_name(priv,keys[0])); + for(i = 1; keys[i] != 0 ; i++) MSG_ERR("-%s",mp_input_get_key_name(priv,keys[i])); MSG_ERR("\n"); keys[0] = 0; if(iter > buffer) { @@ -1260,7 +1246,7 @@ strncpy(cmd,iter,end-iter); cmd[end-iter] = '\0'; //printf("Set bind %d => %s\n",keys[0],cmd); - mp_input_bind_keys(&priv,keys,cmd); + mp_input_bind_keys(priv,keys,cmd); n_binds++; keys[0] = 0; end++; @@ -1275,31 +1261,30 @@ return 0; } -static void mp_input_init(libinput_t* handle) { - libinput_t& priv = *handle; +static void mp_input_init(libinput_t& priv) { const char* file; file = config_file[0] != '/' ? get_path(config_file) : config_file; if(!file) return; - if(! mp_input_parse_config(handle,file)) { + if(! mp_input_parse_config(priv,file)) { // Try global conf dir file = CONFDIR "/input.conf"; - if(! mp_input_parse_config(handle,file)) MSG_WARN("Falling back on default (hardcoded) input config\n"); + if(! mp_input_parse_config(priv,file)) MSG_WARN("Falling back on default (hardcoded) input config\n"); } #ifdef HAVE_JOYSTICK if(libinput_conf.use_joystick) { any_t* joystick_fd; joystick_fd = mp_input_joystick_open(libinput_conf.js_dev); if(!joystick_fd) MSG_ERR("Can't init input joystick with using: %s\n",libinput_conf.js_dev); - else mp_input_add_key_fd(&priv,joystick_fd,1,mp_input_joystick_read,(mp_close_func_t)mp_input_joystick_close); + else mp_input_add_key_fd(priv,joystick_fd,1,mp_input_joystick_read,(mp_close_func_t)mp_input_joystick_close); } #endif #ifdef HAVE_LIRC if(libinput_conf.use_lirc) { any_t* lirc_fd = mp_input_lirc_open(); - if(lirc_fd) mp_input_add_cmd_fd(&priv,lirc_fd,0,mp_input_lirc_read_cmd,mp_input_lirc_close); + if(lirc_fd) mp_input_add_cmd_fd(priv,lirc_fd,0,mp_input_lirc_read_cmd,mp_input_lirc_close); } #endif @@ -1314,17 +1299,16 @@ if(stat(libinput_conf.in_file,&st)) MSG_ERR("Can't stat %s: %s\n",libinput_conf.in_file,strerror(errno)); else { priv.in_file_fd = open(libinput_conf.in_file,(S_ISFIFO(st.st_mode)?O_RDWR:O_RDONLY)|O_NONBLOCK); - if(priv.in_file_fd >= 0) mp_input_add_cmd_fd(&priv,&priv,1,NULL,(mp_close_func_t)close); + if(priv.in_file_fd >= 0) mp_input_add_cmd_fd(priv,&priv,1,NULL,(mp_close_func_t)close); else MSG_ERR("Can't open %s: %s\n",libinput_conf.in_file,strerror(errno)); } } priv.in_file_fd = 0; getch2_enable(); // prepare stdin for hotkeys... - mp_input_add_key_fd(&priv,&priv,1,NULL,(mp_close_func_t)close); + mp_input_add_key_fd(priv,&priv,1,NULL,(mp_close_func_t)close); } -static void mp_input_uninit(libinput_t* handle) { - libinput_t& priv = *handle; +static void mp_input_uninit(libinput_t& priv) { unsigned int i; for(i=0; i < priv.num_key_fd; i++) { @@ -1346,38 +1330,38 @@ if(priv.in_file_fd==0) getch2_disable(); } -libinput_t* mp_input_open(void) { - libinput_t* priv=new(zeromem) libinput_t; - priv->ar_state=-1; - priv->in_file_fd=-1; +libinput_t& mp_input_open() { + libinput_t& priv=*new(zeromem) libinput_t; + priv.ar_state=-1; + priv.in_file_fd=-1; mp_input_init(priv); if(libinput_conf.print_key_list) mp_input_print_key_list(priv); if(libinput_conf.print_cmd_list) mp_input_print_cmd_list(priv); return priv; } -void mp_input_close(libinput_t* handle) { +void mp_input_close(libinput_t& handle) { mp_input_uninit(handle); - delete handle; + delete &handle; } void mp_input_register_options(m_config_t* cfg) { m_config_register_options(cfg,mp_input_opts); } -void mp_input_print_keys(libinput_t*handle) { +void mp_input_print_keys(libinput_t& handle) { unsigned i; UNUSED(handle); MSG_INFO("List of available KEYS:\n"); for(i= 0; key_names[i].name != NULL ; i++) MSG_INFO("%s\n",key_names[i].name); } -static int mp_input_print_key_list(libinput_t*handle) { +static int mp_input_print_key_list(libinput_t& handle) { mp_input_print_keys(handle); exit(0); } -void mp_input_print_binds(libinput_t*handle) { +void mp_input_print_binds(libinput_t& handle) { unsigned i,j; MSG_INFO("List of available key bindings:\n"); for(i=0; def_cmd_binds[i].cmd != NULL ; i++) { @@ -1388,7 +1372,7 @@ } } -void mp_input_print_cmds(libinput_t*handle) { +void mp_input_print_cmds(libinput_t& handle) { const mp_cmd_t *cmd; int i,j; const char* type; @@ -1418,13 +1402,13 @@ } } -static int mp_input_print_cmd_list(libinput_t*handle) { +static int mp_input_print_cmd_list(libinput_t& handle) { mp_input_print_cmds(handle); exit(0); } -MPXP_Rc mp_input_check_interrupt(libinput_t* handle,int tim) { - libinput_t* priv = (libinput_t*)handle; +MPXP_Rc mp_input_check_interrupt(libinput_t& handle,int tim) { + libinput_t& priv = (libinput_t&)handle; mp_cmd_t* cmd; if((cmd = mp_input_get_cmd(handle,tim,0,1)) == NULL) return MPXP_False; switch(cmd->id) { Modified: mplayerxp/input2/input.h =================================================================== --- mplayerxp/input2/input.h 2012-12-12 16:21:04 UTC (rev 552) +++ mplayerxp/input2/input.h 2012-12-12 17:36:49 UTC (rev 553) @@ -135,34 +135,34 @@ typedef int (*mp_input_cmd_filter)(mp_cmd_t* cmd, int paused, any_t* ctx); // Should return 1 if the command was processed extern void (*mp_input_key_cb)(int code); // Set this to grab all incoming key code - extern mp_cmd_t* mp_input_get_cmd_from_keys(libinput_t* handle,int n,int* keys); + extern mp_cmd_t* mp_input_get_cmd_from_keys(libinput_t& handle,int n,int* keys); // This function can be used to reput a command in the system. It's used by libmpdemux // when it perform a blocking operation to resend the command it received to the main // loop. - extern MPXP_Rc mp_input_queue_cmd(libinput_t* handle,mp_cmd_t* cmd); + extern MPXP_Rc mp_input_queue_cmd(libinput_t& handle,mp_cmd_t* cmd); // This function retrive the next avaible command waiting no more than time msec. // If pause is true, the next input will always return a pause command. - extern mp_cmd_t* mp_input_get_cmd(libinput_t*handle,int time, int paused, int peek_only); + extern mp_cmd_t* mp_input_get_cmd(libinput_t& handle,int time, int paused, int peek_only); extern mp_cmd_t* mp_input_parse_cmd(const char* str); /// These filter allow you to process the command before mplayer /// If a filter return a true value mp_input_get_cmd will return NULL - extern void mp_input_add_cmd_filter(libinput_t* handle,mp_input_cmd_filter, any_t* ctx); + extern void mp_input_add_cmd_filter(libinput_t& handle,mp_input_cmd_filter, any_t* ctx); // After getting a command from mp_input_get_cmd you need to mp_free it using this // function extern void mp_cmd_free(mp_cmd_t* cmd); // When you create a new driver you should add it in this 2 functions. - extern libinput_t* mp_input_open(void); - extern void mp_input_close(libinput_t* handle); + extern libinput_t& mp_input_open(); + extern void mp_input_close(libinput_t& handle); - extern void mp_input_print_keys(libinput_t*handle); - extern void mp_input_print_cmds(libinput_t*handle); + extern void mp_input_print_keys(libinput_t& handle); + extern void mp_input_print_cmds(libinput_t& handle); - extern void mp_input_print_binds(libinput_t*handle); + extern void mp_input_print_binds(libinput_t& handle); // Interruptible usleep: (used by libmpdemux) - extern MPXP_Rc mp_input_check_interrupt(libinput_t* handle,int time); + extern MPXP_Rc mp_input_check_interrupt(libinput_t& handle,int time); } // namespace mpxp #endif Modified: mplayerxp/libmpcodecs/dec_video.cpp =================================================================== --- mplayerxp/libmpcodecs/dec_video.cpp 2012-12-12 16:21:04 UTC (rev 552) +++ mplayerxp/libmpcodecs/dec_video.cpp 2012-12-12 17:36:49 UTC (rev 553) @@ -47,20 +47,21 @@ struct decvideo_priv_t : public Opaque { public: - decvideo_priv_t(); + decvideo_priv_t(libinput_t&); virtual ~decvideo_priv_t(); sh_video_t* parent; const vd_functions_t* mpvdec; - libinput_t* libinput; + libinput_t& libinput; vd_private_t* ctx; vf_stream_t* vfilter; int vfilter_inited; put_slice_info_t* psi; }; -decvideo_priv_t::decvideo_priv_t() - :psi(new(zeromem) put_slice_info_t) +decvideo_priv_t::decvideo_priv_t(libinput_t& _libinput) + :libinput(_libinput), + psi(new(zeromem) put_slice_info_t) { } @@ -139,11 +140,10 @@ #endif } -video_decoder_t * mpcv_lavc_init(sh_video_t* sh_video,libinput_t* libinput) { +video_decoder_t * mpcv_lavc_init(sh_video_t* sh_video,libinput_t& libinput) { video_decoder_t* handle=new(zeromem) video_decoder_t; - decvideo_priv_t* priv = new(zeromem) decvideo_priv_t; + decvideo_priv_t* priv = new(zeromem) decvideo_priv_t(libinput); priv->parent=sh_video; - priv->libinput=libinput; handle->vd_private=priv; const video_probe_t* vprobe=NULL; /* Use lavc's drivers as last hope */ @@ -168,16 +168,15 @@ return handle; } -video_decoder_t * mpcv_init(sh_video_t *sh_video,const char* codecname,const char * vfm,int status,libinput_t*libinput){ +video_decoder_t * mpcv_init(sh_video_t *sh_video,const char* codecname,const char * vfm,int status,libinput_t&libinput){ UNUSED(codecname); UNUSED(status); int done=0; const video_probe_t* vprobe=NULL; sh_video->codec=NULL; video_decoder_t* handle=new(zeromem) video_decoder_t; - decvideo_priv_t* priv = new(zeromem) decvideo_priv_t; + decvideo_priv_t* priv = new(zeromem) decvideo_priv_t(libinput); priv->parent=sh_video; - priv->libinput=libinput; handle->vd_private=priv; MP_UNIT("init_video_filters"); Modified: mplayerxp/libmpcodecs/dec_video.h =================================================================== --- mplayerxp/libmpcodecs/dec_video.h 2012-12-12 16:21:04 UTC (rev 552) +++ mplayerxp/libmpcodecs/dec_video.h 2012-12-12 17:36:49 UTC (rev 553) @@ -12,9 +12,9 @@ }; // dec_video.c: -extern video_decoder_t* __FASTCALL__ mpcv_init(sh_video_t *sh_video, const char *codec_name,const char *family,int status,libinput_t*libinput); +extern video_decoder_t* __FASTCALL__ mpcv_init(sh_video_t *sh_video, const char *codec_name,const char *family,int status,libinput_t&libinput); extern void __FASTCALL__ mpcv_uninit(video_decoder_t *handle); -extern video_decoder_t* __FASTCALL__ mpcv_lavc_init(sh_video_t*,libinput_t* libinput); +extern video_decoder_t* __FASTCALL__ mpcv_lavc_init(sh_video_t*,libinput_t& libinput); extern int __FASTCALL__ mpcv_decode(video_decoder_t *handle,const enc_frame_t* frame); extern MPXP_Rc __FASTCALL__ mpcv_get_quality_max(video_decoder_t *handle,unsigned *qual); Modified: mplayerxp/libmpconf/cfgparser.cpp =================================================================== --- mplayerxp/libmpconf/cfgparser.cpp 2012-12-12 16:21:04 UTC (rev 552) +++ mplayerxp/libmpconf/cfgparser.cpp 2012-12-12 17:36:49 UTC (rev 553) @@ -220,14 +220,14 @@ return ret; } -m_config_t* m_config_new(play_tree_t* pt,libinput_t*libinput) { +m_config_t* m_config_new(play_tree_t* pt,libinput_t&libinput) { m_config_t* config; #ifdef MP_DEBUG assert(pt != NULL); #endif - config = (m_config_t*)mp_calloc(1,sizeof(m_config_t)); + config = new(zeromem) m_config_t(libinput); if(config == NULL) { MSG_ERR( "Can't allocate %d bytes of memory : %s\n",sizeof(m_config_t),strerror(errno)); return NULL; @@ -240,7 +240,6 @@ } SET_GLOBAL(config); // We always start with global options config->pt = pt; - config->libinput=libinput; return config; } Modified: mplayerxp/libmpconf/cfgparser.h =================================================================== --- mplayerxp/libmpconf/cfgparser.h 2012-12-12 16:21:04 UTC (rev 552) +++ mplayerxp/libmpconf/cfgparser.h 2012-12-12 17:36:49 UTC (rev 553) @@ -55,6 +55,9 @@ }; struct m_config { + m_config(libinput_t& _libinput):libinput(_libinput) {} + ~m_config() {} + const config_t** opt_list; config_save_t** config_stack; any_t**dynamics; @@ -67,7 +70,7 @@ play_tree_t* last_entry; // last added entry play_tree_t* last_parent; // if last_entry is NULL we must create child of this int recursion_depth; - libinput_t* libinput; + libinput_t& libinput; }; struct config_save { @@ -93,7 +96,7 @@ */ MPXP_Rc m_config_parse_command_line(m_config_t* config, int argc, char **argv, char **envp); -m_config_t* m_config_new(play_tree_t* pt,libinput_t*libinput); +m_config_t* m_config_new(play_tree_t* pt,libinput_t&libinput); void m_config_free(m_config_t* config); Modified: mplayerxp/libmpdemux/demuxer.cpp =================================================================== --- mplayerxp/libmpdemux/demuxer.cpp 2012-12-12 16:21:04 UTC (rev 552) +++ mplayerxp/libmpdemux/demuxer.cpp 2012-12-12 17:36:49 UTC (rev 553) @@ -434,14 +434,10 @@ return MPXP_Ok; } -Demuxer* Demuxer::open(Stream *vs,int audio_id,int video_id,int dvdsub_id){ +Demuxer* Demuxer::open(Stream *vs,libinput_t& libinput,int audio_id,int video_id,int dvdsub_id){ Stream *as = NULL,*ss = NULL; Demuxer *vd,*ad = NULL,*sd = NULL; int afmt = 0,sfmt = 0; - libinput_t* libinput=NULL; -#ifdef HAVE_STREAMIN - libinput=vs->streaming_strl->libinput; -#endif if(demux_conf.audio_stream) { as = new(zeromem) Stream(); Modified: mplayerxp/libmpdemux/demuxer.h =================================================================== --- mplayerxp/libmpdemux/demuxer.h 2012-12-12 16:21:04 UTC (rev 552) +++ mplayerxp/libmpdemux/demuxer.h 2012-12-12 17:36:49 UTC (rev 553) @@ -100,7 +100,7 @@ Switch_Subs =3 }; - static Demuxer* open(Stream* stream,int aid,int vid,int sid); + static Demuxer* open(Stream* stream,libinput_t& libinput,int aid,int vid,int sid); virtual MPXP_Rc open(); virtual int demux(Demuxer_Stream* ds); Modified: mplayerxp/libmpdemux/mpdemux.cpp =================================================================== --- mplayerxp/libmpdemux/mpdemux.cpp 2012-12-12 16:21:04 UTC (rev 552) +++ mplayerxp/libmpdemux/mpdemux.cpp 2012-12-12 17:36:49 UTC (rev 553) @@ -7,7 +7,7 @@ #include "mpdemux.h" #include "demux_msg.h" -int mpdemux_check_interrupt(libinput_t* libinput,int _time) { +int mpdemux_check_interrupt(libinput_t& libinput,int _time) { mp_cmd_t* cmd; if((cmd = mp_input_get_cmd(libinput,_time,0,1)) == NULL) return 0; Modified: mplayerxp/libmpdemux/mpdemux.h =================================================================== --- mplayerxp/libmpdemux/mpdemux.h 2012-12-12 16:21:04 UTC (rev 552) +++ mplayerxp/libmpdemux/mpdemux.h 2012-12-12 17:36:49 UTC (rev 553) @@ -1,5 +1,5 @@ #ifndef MPDEMUX_H #define MPDEMUX_H 1 -extern int mpdemux_check_interrupt(libinput_t* libinput,int time); +extern int mpdemux_check_interrupt(libinput_t& libinput,int time); #endif Modified: mplayerxp/libmpstream2/cache2.cpp =================================================================== --- mplayerxp/libmpstream2/cache2.cpp 2012-12-12 16:21:04 UTC (rev 552) +++ mplayerxp/libmpstream2/cache2.cpp 2012-12-12 17:36:49 UTC (rev 553) @@ -499,7 +499,7 @@ /* main interface here! */ -Cached_Stream::Cached_Stream(libinput_t* libinput,int size,int _min,int prefill,Stream::type_e t) +Cached_Stream::Cached_Stream(libinput_t& libinput,int size,int _min,int prefill,Stream::type_e t) :Stream(t) { int ss=sector_size()>1?sector_size():STREAM_BUFFER_SIZE; Modified: mplayerxp/libmpstream2/cdd.h =================================================================== --- mplayerxp/libmpstream2/cdd.h 2012-12-12 16:21:04 UTC (rev 552) +++ mplayerxp/libmpstream2/cdd.h 2012-12-12 17:36:49 UTC (rev 553) @@ -7,6 +7,9 @@ struct libinput_t; struct cddb_data_t { + cddb_data_t(libinput_t& _libinput):libinput(_libinput) {} + ~cddb_data_t() {} + std::string cddb_hello; unsigned long disc_id; unsigned int tracks; @@ -18,7 +21,7 @@ char* xmcd_file; size_t xmcd_file_size; any_t* user_data; - libinput_t* libinput; + libinput_t& libinput; }; struct cd_toc_t { @@ -74,7 +77,7 @@ virtual ~CDD_Interface(); virtual MPXP_Rc open_cdda(const std::string& dev,const std::string& track); - virtual MPXP_Rc open_cddb(libinput_t*,const std::string& dev,const std::string& track); + virtual MPXP_Rc open_cddb(libinput_t&,const std::string& dev,const std::string& track); virtual int read(char *buf,track_t* trackidx); virtual void seek(off_t pos,track_t *trackidx); Modified: mplayerxp/libmpstream2/cddb.cpp =================================================================== --- mplayerxp/libmpstream2/cddb.cpp 2012-12-12 16:21:04 UTC (rev 552) +++ mplayerxp/libmpstream2/cddb.cpp 2012-12-12 17:36:49 UTC (rev 553) @@ -525,12 +525,11 @@ return 0; } -static MPXP_Rc __FASTCALL__ cddb_resolve(libinput_t*libinput,char **xmcd_file) { +static MPXP_Rc __FASTCALL__ cddb_resolve(libinput_t&libinput,char **xmcd_file) { char cddb_cache_dir[] = DEFAULT_CACHE_DIR; char *home_dir = NULL; - cddb_data_t cddb_data; + cddb_data_t cddb_data(libinput); - cddb_data.libinput=libinput; cddb_data.tracks = read_toc(); cddb_data.disc_id = cddb_discid(cddb_data.tracks); cddb_data.anonymous = 1; // Don't send user info by default @@ -733,7 +732,7 @@ return MPXP_Ok; } -MPXP_Rc CDD_Interface::open_cddb(libinput_t *libinput,const std::string& dev, const std::string& track) { +MPXP_Rc CDD_Interface::open_cddb(libinput_t& libinput,const std::string& dev, const std::string& track) { char *xmcd_file = NULL; MPXP_Rc ret; Modified: mplayerxp/libmpstream2/s_cdd.cpp =================================================================== --- mplayerxp/libmpstream2/s_cdd.cpp 2012-12-12 16:21:04 UTC (rev 552) +++ mplayerxp/libmpstream2/s_cdd.cpp 2012-12-12 17:36:49 UTC (rev 553) @@ -20,7 +20,7 @@ namespace mpxp { class Cdda_Stream_Interface : public Stream_Interface { public: - Cdda_Stream_Interface(libinput_t* libinput); + Cdda_Stream_Interface(libinput_t& libinput); virtual ~Cdda_Stream_Interface(); virtual MPXP_Rc open(const std::string& filename,unsigned flags); @@ -40,7 +40,7 @@ track_t track_idx; }; -Cdda_Stream_Interface::Cdda_Stream_Interface(libinput_t* libinput) +Cdda_Stream_Interface::Cdda_Stream_Interface(libinput_t& libinput) :Stream_Interface(libinput), priv(new(zeromem) CDD_Interface), track_idx(255) {} @@ -119,7 +119,7 @@ return MPXP_False; } -static Stream_Interface* query_cdda_interface(libinput_t* libinput) { return new(zeromem) Cdda_Stream_Interface(libinput); } +static Stream_Interface* query_cdda_interface(libinput_t& libinput) { return new(zeromem) Cdda_Stream_Interface(libinput); } extern const stream_interface_info_t cdda_stream = { @@ -130,14 +130,14 @@ class Cddb_Stream_Interface : public Cdda_Stream_Interface { public: - Cddb_Stream_Interface(libinput_t* libinput); + Cddb_Stream_Interface(libinput_t& libinput); virtual ~Cddb_Stream_Interface(); virtual MPXP_Rc open(const std::string& filename,unsigned flags); private: - libinput_t* libinput; + libinput_t& libinput; }; -Cddb_Stream_Interface::Cddb_Stream_Interface(libinput_t*_libinput) +Cddb_Stream_Interface::Cddb_Stream_Interface(libinput_t&_libinput) :Cdda_Stream_Interface(_libinput), libinput(_libinput) {} Cddb_Stream_Interface::~Cddb_Stream_Interface() {} @@ -162,7 +162,7 @@ #endif } -static Stream_Interface* query_cddb_interface(libinput_t* libinput) { return new(zeromem) Cddb_Stream_Interface(libinput); } +static Stream_Interface* query_cddb_interface(libinput_t& libinput) { return new(zeromem) Cddb_Stream_Interface(libinput); } extern const stream_interface_info_t cddb_stream = { "cddb://", Modified: mplayerxp/libmpstream2/s_dvdnav.cpp =================================================================== --- mplayerxp/libmpstream2/s_dvdnav.cpp 2012-12-12 16:21:04 UTC (rev 552) +++ mplayerxp/libmpstream2/s_dvdnav.cpp 2012-12-12 17:36:49 UTC (rev 553) @@ -49,7 +49,7 @@ class DvdNav_Stream_Interface : public Stream_Interface { public: - DvdNav_Stream_Interface(libinput_t* libinput); + DvdNav_Stream_Interface(libinput_t& libinput); virtual ~DvdNav_Stream_Interface(); virtual MPXP_Rc open(const std::string& filename,unsigned flags); @@ -93,7 +93,7 @@ float _stream_pts; }; -DvdNav_Stream_Interface::DvdNav_Stream_Interface(libinput_t* libinput) +DvdNav_Stream_Interface::DvdNav_Stream_Interface(libinput_t& libinput) :Stream_Interface(libinput), hlev(*new(zeromem) dvdnav_highlight_event_t) {} DvdNav_Stream_Interface::~DvdNav_Stream_Interface() { @@ -590,7 +590,7 @@ return MPXP_False; } -static Stream_Interface* query_interface(libinput_t* libinput) { return new(zeromem) DvdNav_Stream_Interface(libinput); } +static Stream_Interface* query_interface(libinput_t& libinput) { return new(zeromem) DvdNav_Stream_Interface(libinput); } extern const stream_interface_info_t dvdnav_stream = { Modified: mplayerxp/libmpstream2/s_dvdread.cpp =================================================================== --- mplayerxp/libmpstream2/s_dvdread.cpp 2012-12-12 16:21:04 UTC (rev 552) +++ mplayerxp/libmpstream2/s_dvdread.cpp 2012-12-12 17:36:49 UTC (rev 553) @@ -51,7 +51,7 @@ class DvdRead_Stream_Interface : public Stream_Interface { public: - DvdRead_Stream_Interface(libinput_t* libinput); + DvdRead_Stream_Interface(libinput_t& libinput); virtual ~DvdRead_Stream_Interface(); virtual MPXP_Rc open(const std::string& filename,unsigned flags); @@ -112,7 +112,7 @@ off_t _end_pos; }; -DvdRead_Stream_Interface::DvdRead_Stream_Interface(libinput_t* libinput) +DvdRead_Stream_Interface::DvdRead_Stream_Interface(libinput_t& libinput) :Stream_Interface(libinput), dvd_chapter(1),dvd_angle(1) {} DvdRead_Stream_Interface::~DvdRead_Stream_Interface() {} @@ -780,7 +780,7 @@ return MPXP_False; } -static Stream_Interface* query_interface(libinput_t* libinput) { return new(zeromem) DvdRead_Stream_Interface(libinput); } +static Stream_Interface* query_interface(libinput_t& libinput) { return new(zeromem) DvdRead_Stream_Interface(libinput); } extern const stream_interface_info_t dvdread_stream = { Modified: mplayerxp/libmpstream2/s_file.cpp =================================================================== --- mplayerxp/libmpstream2/s_file.cpp 2012-12-12 16:21:04 UTC (rev 552) +++ mplayerxp/libmpstream2/s_file.cpp 2012-12-12 17:36:49 UTC (rev 553) @@ -22,7 +22,7 @@ namespace mpxp { class File_Stream_Interface : public Stream_Interface { public: - File_Stream_Interface(libinput_t* libinput); + File_Stream_Interface(libinput_t& libinput); virtual ~File_Stream_Interface(); virtual MPXP_Rc open(const std::string& filename,unsigned flags); @@ -42,7 +42,7 @@ off_t end_pos; }; -File_Stream_Interface::File_Stream_Interface(libinput_t*l) +File_Stream_Interface::File_Stream_Interface(libinput_t&l) :Stream_Interface(l), fd(0),was_open(0),spos(0) {} File_Stream_Interface::~File_Stream_Interface() {} @@ -103,7 +103,7 @@ return MPXP_Unknown; } -static Stream_Interface* query_file_interface(libinput_t* libinput) { return new(zeromem) File_Stream_Interface(libinput); } +static Stream_Interface* query_file_interface(libinput_t& libinput) { return new(zeromem) File_Stream_Interface(libinput); } extern const stream_interface_info_t file_stream = { @@ -114,20 +114,20 @@ class Stdin_Stream_Interface : public File_Stream_Interface { public: - Stdin_Stream_Interface(libinput_t* libinput); + Stdin_Stream_Interface(libinput_t& libinput); virtual ~Stdin_Stream_Interface(); virtual MPXP_Rc open(const std::string& filename,unsigned flags); }; -Stdin_Stream_Interface::Stdin_Stream_Interface(libinput_t*l):File_Stream_Interface(l) {} +Stdin_Stream_Interface::Stdin_Stream_Interface(libinput_t&l):File_Stream_Interface(l) {} Stdin_Stream_Interface::~Stdin_Stream_Interface() {} MPXP_Rc Stdin_Stream_Interface::open(const std::string& filename,unsigned flags) { UNUSED(filename); return File_Stream_Interface::open("-",flags); } -static Stream_Interface* query_stdin_interface(libinput_t* libinput) { return new(zeromem) Stdin_Stream_Interface(libinput); } +static Stream_Interface* query_stdin_interface(libinput_t& libinput) { return new(zeromem) Stdin_Stream_Interface(libinput); } extern const stream_interface_info_t stdin_stream = { Modified: mplayerxp/libmpstream2/s_ftp.cpp =================================================================== --- mplayerxp/libmpstream2/s_ftp.cpp 2012-12-12 16:21:04 UTC (rev 552) +++ mplayerxp/libmpstream2/s_ftp.cpp 2012-12-12 17:36:49 UTC (rev 553) @@ -27,7 +27,7 @@ namespace mpxp { class Ftp_Stream_Interface : public Stream_Interface { public: - Ftp_Stream_Interface(libinput_t* libinput); + Ftp_Stream_Interface(libinput_t& libinput); virtual ~Ftp_Stream_Interface(); virtual MPXP_Rc open(const std::string& filename,unsigned flags); @@ -62,7 +62,7 @@ off_t file_len; }; -Ftp_Stream_Interface::Ftp_Stream_Interface(libinput_t* libinput) +Ftp_Stream_Interface::Ftp_Stream_Interface(libinput_t& libinput) :Stream_Interface(libinput), tcp(libinput,-1) {} Ftp_Stream_Interface::~Ftp_Stream_Interface() { @@ -428,7 +428,7 @@ return MPXP_Unknown; } -static Stream_Interface* query_interface(libinput_t* libinput) { return new(zeromem) Ftp_Stream_Interface(libinput); } +static Stream_Interface* query_interface(libinput_t& libinput) { return new(zeromem) Ftp_Stream_Interface(libinput); } /* "reuse a bit of code from ftplib written by Thomas Pfau", */ extern const stream_interface_info_t ftp_stream = Modified: mplayerxp/libmpstream2/s_lavc.cpp =================================================================== --- mplayerxp/libmpstream2/s_lavc.cpp 2012-12-12 16:21:04 UTC (rev 552) +++ mplayerxp/libmpstream2/s_lavc.cpp 2012-12-12 17:36:49 UTC (rev 553) @@ -13,7 +13,7 @@ namespace mpxp { class Lavs_Stream_Interface : public Stream_Interface { public: - Lavs_Stream_Interface(libinput_t* libinput); + Lavs_Stream_Interface(libinput_t& libinput); virtual ~Lavs_Stream_Interface(); virtual MPXP_Rc open(const std::string& filename,unsigned flags); @@ -32,7 +32,7 @@ off_t end_pos; }; -Lavs_Stream_Interface::Lavs_Stream_Interface(libinput_t*libinput) +Lavs_Stream_Interface::Lavs_Stream_Interface(libinput_t&libinput) :Stream_Interface(libinput), ctx(NULL),end_pos(-1) {} Lavs_Stream_Interface::~Lavs_Stream_Interface() { @@ -87,7 +87,7 @@ 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); } +static Stream_Interface* query_interface(libinput_t& libinput) { return new(zeromem) Lavs_Stream_Interface(libinput); } extern const stream_interface_info_t lavs_stream = { Modified: mplayerxp/libmpstream2/s_network.cpp =================================================================== --- mplayerxp/libmpstream2/s_network.cpp 2012-12-12 16:21:04 UTC (rev 552) +++ mplayerxp/libmpstream2/s_network.cpp 2012-12-12 17:36:49 UTC (rev 553) @@ -23,7 +23,7 @@ namespace mpxp { class Network_Stream_Interface : public Stream_Interface { public: - Network_Stream_Interface(libinput_t* libinput); + Network_Stream_Interface(libinput_t& libinput); virtual ~Network_Stream_Interface(); virtual MPXP_Rc open(const std::string& filename,unsigned flags); @@ -43,7 +43,7 @@ networking_t* networking; }; -Network_Stream_Interface::Network_Stream_Interface(libinput_t* libinput) +Network_Stream_Interface::Network_Stream_Interface(libinput_t& libinput) :Stream_Interface(libinput), tcp(libinput,-1) {} Network_Stream_Interface::~Network_Stream_Interface() { @@ -114,7 +114,7 @@ return MPXP_Unknown; } -static Stream_Interface* query_interface(libinput_t* libinput) { return new(zeromem) Network_Stream_Interface(libinput); } +static Stream_Interface* query_interface(libinput_t& libinput) { return new(zeromem) Network_Stream_Interface(libinput); } extern const stream_interface_info_t network_stream = { Modified: mplayerxp/libmpstream2/s_null.cpp =================================================================== --- mplayerxp/libmpstream2/s_null.cpp 2012-12-12 16:21:04 UTC (rev 552) +++ mplayerxp/libmpstream2/s_null.cpp 2012-12-12 17:36:49 UTC (rev 553) @@ -10,7 +10,7 @@ namespace mpxp { class Null_Stream_Interface : public Stream_Interface { public: - Null_Stream_Interface(libinput_t* libinput); + Null_Stream_Interface(libinput_t& libinput); virtual ~Null_Stream_Interface(); virtual MPXP_Rc open(const std::string& filename,unsigned flags); @@ -25,7 +25,7 @@ virtual std::string mime_type() const; }; -Null_Stream_Interface::Null_Stream_Interface(libinput_t*libinput):Stream_Interface(libinput) {} +Null_Stream_Interface::Null_Stream_Interface(libinput_t&libinput):Stream_Interface(libinput) {} Null_Stream_Interface::~Null_Stream_Interface() {} MPXP_Rc Null_Stream_Interface::open(const std::string& filename,unsigned flags) { @@ -48,7 +48,7 @@ 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); } +static Stream_Interface* query_interface(libinput_t& libinput) { return new(zeromem) Null_Stream_Interface(libinput); } extern const stream_interface_info_t null_stream = { Modified: mplayerxp/libmpstream2/s_oss.cpp =================================================================== --- mplayerxp/libmpstream2/s_oss.cpp 2012-12-12 16:21:04 UTC (rev 552) +++ mplayerxp/libmpstream2/s_oss.cpp 2012-12-12 17:36:49 UTC (rev 553) @@ -30,7 +30,7 @@ namespace mpxp { class Oss_Stream_Interface : public Stream_Interface { public: - Oss_Stream_Interface(libinput_t* libinput); + Oss_Stream_Interface(libinput_t& libinput); virtual ~Oss_Stream_Interface(); virtual MPXP_Rc open(const std::string& filename,unsigned flags); @@ -52,7 +52,7 @@ unsigned _sector_size; }; -Oss_Stream_Interface::Oss_Stream_Interface(libinput_t* libinput) +Oss_Stream_Interface::Oss_Stream_Interface(libinput_t& libinput) :Stream_Interface(libinput) {} Oss_Stream_Interface::~Oss_Stream_Interface() {} @@ -272,7 +272,7 @@ return MPXP_Unknown; } -static Stream_Interface* query_interface(libinput_t* libinput) { return new(zeromem) Oss_Stream_Interface(libinput); } +static Stream_Interface* query_interface(libinput_t& libinput) { return new(zeromem) Oss_Stream_Interface(libinput); } extern const stream_interface_info_t oss_stream = { Modified: mplayerxp/libmpstream2/s_rtsp.cpp =================================================================== --- mplayerxp/libmpstream2/s_rtsp.cpp 2012-12-12 16:21:04 UTC (rev 552) +++ mplayerxp/libmpstream2/s_rtsp.cpp 2012-12-12 17:36:49 UTC (rev 553) @@ -29,7 +29,7 @@ namespace mpxp { class Rtsp_Stream_Interface : public Stream_Interface { public: - Rtsp_Stream_Interface(libinput_t* libinput); + Rtsp_Stream_Interface(libinput_t& libinput); virtual ~Rtsp_Stream_Interface(); virtual MPXP_Rc open(const std::string& filename,unsigned flags); @@ -49,7 +49,7 @@ Tcp tcp; }; -Rtsp_Stream_Interface::Rtsp_Stream_Interface(libinput_t* _libinput) +Rtsp_Stream_Interface::Rtsp_Stream_Interface(libinput_t& _libinput) :Stream_Interface(_libinput), tcp(_libinput,-1) {} Rtsp_Stream_Interface::~Rtsp_Stream_Interface() {} @@ -167,7 +167,7 @@ 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); } +static Stream_Interface* query_interface(libinput_t& libinput) { return new(zeromem) Rtsp_Stream_Interface(libinput); } /* "reuse a bit of code from ftplib written by Thomas Pfau", */ extern const stream_interface_info_t rtsp_stream = Modified: mplayerxp/libmpstream2/s_tv.cpp =================================================================== --- mplayerxp/libmpstream2/s_tv.cpp 2012-12-12 16:21:04 UTC (rev 552) +++ mplayerxp/libmpstream2/s_tv.cpp 2012-12-12 17:36:49 UTC (rev 553) @@ -581,7 +581,7 @@ /* fill demux->video and demux->audio */ class Tv_Stream_Interface : public Stream_Interface { public: - Tv_Stream_Interface(libinput_t* libinput); + Tv_Stream_Interface(libinput_t& libinput); virtual ~Tv_Stream_Interface(); virtual MPXP_Rc open(const std::string& filename,unsigned flags); @@ -599,7 +599,7 @@ tvi_handle_t* priv; }; -Tv_Stream_Interface::Tv_Stream_Interface(libinput_t*libinput):Stream_Interface(libinput) {} +Tv_Stream_Interface::Tv_Stream_Interface(libinput_t&libinput):Stream_Interface(libinput) {} Tv_Stream_Interface::~Tv_Stream_Interface() { delete priv; } MPXP_Rc Tv_Stream_Interface::open(const std::string& filename,unsigned flags) @@ -666,7 +666,7 @@ 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); } +static Stream_Interface* query_interface(libinput_t& libinput) { return new(zeromem) Tv_Stream_Interface(libinput); } extern const stream_interface_info_t tv_stream = { Modified: mplayerxp/libmpstream2/s_udp.cpp =================================================================== --- mplayerxp/libmpstream2/s_udp.cpp 2012-12-12 16:21:04 UTC (rev 552) +++ mplayerxp/libmpstream2/s_udp.cpp 2012-12-12 17:36:49 UTC (rev 553) @@ -28,7 +28,7 @@ namespace mpxp { class Udp_Stream_Interface : public Stream_Interface { public: - Udp_Stream_Interface(libinput_t* libinput); + Udp_Stream_Interface(libinput_t& libinput); virtual ~Udp_Stream_Interface(); virtual MPXP_Rc open(const std::string& filename,unsigned flags); @@ -49,7 +49,7 @@ Tcp tcp; }; -Udp_Stream_Interface::Udp_Stream_Interface(libinput_t* libinput) +Udp_Stream_Interface::Udp_Stream_Interface(libinput_t& libinput) :Stream_Interface(libinput), udp(-1), tcp(libinput,-1) {} @@ -122,7 +122,7 @@ 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); } +static Stream_Interface* query_interface(libinput_t& libinput) { return new(zeromem) Udp_Stream_Interface(libinput); } /* "reuse a bit of code from ftplib written by Thomas Pfau", */ extern const stream_interface_info_t rtsp_stream = Modified: mplayerxp/libmpstream2/s_vcdnav.cpp =================================================================== --- mplayerxp/libmpstream2/s_vcdnav.cpp 2012-12-12 16:21:04 UTC (rev 552) +++ mplayerxp/libmpstream2/s_vcdnav.cpp 2012-12-12 17:36:49 UTC (rev 553) @@ -31,7 +31,7 @@ class VcdNav_Stream_Interface : public Stream_Interface { public: - VcdNav_Stream_Interface(libinput_t* libinput); + VcdNav_Stream_Interface(libinput_t& libinput); virtual ~VcdNav_Stream_Interface(); virtual MPXP_Rc open(const std::string& filename,unsigned flags); @@ -64,7 +64,7 @@ lsn_t vcd_sector_lsn; }; -VcdNav_Stream_Interface::VcdNav_Stream_Interface(libinput_t* libinput) +VcdNav_Stream_Interface::VcdNav_Stream_Interface(libinput_t& libinput) :Stream_Interface(libinput) {} VcdNav_Stream_Interface::~VcdNav_Stream_Interface() { vcdinfo_close(fd); @@ -269,7 +269,7 @@ return MPXP_Unknown; } -static Stream_Interface* query_interface(libinput_t* libinput) { return new(zeromem) VcdNav_Stream_Interface(libinput); } +static Stream_Interface* query_interface(libinput_t& libinput) { return new(zeromem) VcdNav_Stream_Interface(libinput); } extern const stream_interface_info_t vcdnav_stream = { Modified: mplayerxp/libmpstream2/stream.cpp =================================================================== --- mplayerxp/libmpstream2/stream.cpp 2012-12-12 16:21:04 UTC (rev 552) +++ mplayerxp/libmpstream2/stream.cpp 2012-12-12 17:36:49 UTC (rev 553) @@ -119,7 +119,7 @@ int Stream::eof() const { return _eof; } void Stream::eof(int e) { if(!e) reset(); _eof = e; } -MPXP_Rc Stream::open(libinput_t*libinput,const std::string& filename,int* ff) +MPXP_Rc Stream::open(libinput_t&libinput,const std::string& filename,int* ff) { unsigned i,done; unsigned mrl_len; Modified: mplayerxp/libmpstream2/stream.h =================================================================== --- mplayerxp/libmpstream2/stream.h 2012-12-12 16:21:04 UTC (rev 552) +++ mplayerxp/libmpstream2/stream.h 2012-12-12 17:36:49 UTC (rev 553) @@ -58,7 +58,7 @@ static void print_drivers(); - virtual MPXP_Rc open(libinput_t*libinput,const std::string& filename,int* file_format); + virtual MPXP_Rc open(libinput_t&libinput,const std::string& filename,int* file_format); virtual int read(any_t* mem,int total); virtual off_t seek(off_t off); virtual int skip(off_t len); @@ -131,7 +131,7 @@ struct Cached_Stream : public Stream { public: - Cached_Stream(libinput_t* libinput,int size,int _min,int prefill,Stream::type_e type=Stream::Type_Unknown); + Cached_Stream(libinput_t& libinput,int size,int _min,int prefill,Stream::type_e type=Stream::Type_Unknown); virtual ~Cached_Stream(); virtual int read(any_t* mem,int total); Modified: mplayerxp/libmpstream2/stream_internal.h =================================================================== --- mplayerxp/libmpstream2/stream_internal.h 2012-12-12 16:21:04 UTC (rev 552) +++ mplayerxp/libmpstream2/stream_internal.h 2012-12-12 17:36:49 UTC (rev 553) @@ -11,7 +11,7 @@ /** Stream-driver interface */ class Stream_Interface : public Opaque { public: - Stream_Interface(libinput_t*) {} + Stream_Interface(libinput_t&) {} virtual ~Stream_Interface() {} /** Opens stream with given name * @param libinput points libinput2 @@ -68,7 +68,7 @@ struct stream_interface_info_t { const char* mrl; /**< MRL of stream driver */ const char* descr; /**< description of the driver */ - Stream_Interface* (*query_interface)(libinput_t*); + Stream_Interface* (*query_interface)(libinput_t&); }; } // namespace mpxp #endif Modified: mplayerxp/libmpstream2/tcp.cpp =================================================================== --- mplayerxp/libmpstream2/tcp.cpp 2012-12-12 16:21:04 UTC (rev 552) +++ mplayerxp/libmpstream2/tcp.cpp 2012-12-12 17:36:49 UTC (rev 553) @@ -225,7 +225,7 @@ } } -Tcp::Tcp(libinput_t* _libinput,const std::string& host,int port,tcp_af_e af) +Tcp::Tcp(libinput_t& _libinput,const std::string& host,int port,tcp_af_e af) :_fd(-1), _error(Tcp::Err_None), libinput(_libinput) @@ -233,7 +233,7 @@ open(host,port,af); } -Tcp::Tcp(libinput_t* _libinput,net_fd_t fd) +Tcp::Tcp(libinput_t& _libinput,net_fd_t fd) :_fd(fd), _error(Tcp::Err_None), libinput(_libinput) @@ -267,5 +267,5 @@ int Tcp::write(const uint8_t* buf,unsigned len,int flags) const { return ::send(_fd,buf,len,flags); } int Tcp::established() const { return _fd > 0; } Tcp::tcp_error_e Tcp::error() const { return _error; } -libinput_t* Tcp::get_libinput() const { return libinput; } +libinput_t& Tcp::get_libinput() const { return libinput; } } // namespace mpxp Modified: mplayerxp/libmpstream2/tcp.h =================================================================== --- mplayerxp/libmpstream2/tcp.h 2012-12-12 16:21:04 UTC (rev 552) +++ mplayerxp/libmpstream2/tcp.h 2012-12-12 17:36:49 UTC (rev 553) @@ -39,8 +39,8 @@ Err_Port =-1, /* unable to connect to a particular port */ Err_None =0 /* no error */ }; - Tcp(libinput_t* libinput,net_fd_t fd); - Tcp(libinput_t* libinput,const std::string& host,int port,tcp_af_e af=Tcp::IP4); + Tcp(libinput_t& libinput,net_fd_t fd); + Tcp(libinput_t& libinput,const std::string& host,int port,tcp_af_e af=Tcp::IP4); virtual ~Tcp(); Tcp& operator=(Tcp& other); @@ -49,7 +49,7 @@ virtual int established() const; virtual int has_data(int timeout) const; virtual tcp_error_e error() const; - virtual libinput_t* get_libinput() const; + virtual libinput_t& get_libinput() const; virtual void open(const std::string& host,int port,tcp_af_e af=Tcp::IP4); virtual int read(uint8_t* buf,unsigned len,int flags=0); @@ -58,7 +58,7 @@ private: net_fd_t _fd; tcp_error_e _error; - libinput_t* libinput; + libinput_t& libinput; }; } // namespace mpxp #endif /* TCP_H */ Modified: mplayerxp/libplaytree/asxparser.cpp =================================================================== --- mplayerxp/libplaytree/asxparser.cpp 2012-12-12 16:21:04 UTC (rev 552) +++ mplayerxp/libplaytree/asxparser.cpp 2012-12-12 17:36:49 UTC (rev 553) @@ -324,7 +324,7 @@ MSG_V("Adding file %s to element entry\n",href.c_str()); } -play_tree_t* ASX_Parser::entryref(libinput_t* libinput,const char* buffer,ASX_Attrib& _attribs) const { +play_tree_t* ASX_Parser::entryref(libinput_t& libinput,const char* buffer,ASX_Attrib& _attribs) const { play_tree_t* pt; std::string href; Stream* stream; @@ -386,7 +386,7 @@ return pt_ref; } -play_tree_t* ASX_Parser::repeat(libinput_t*libinput,const char* buffer,ASX_Attrib& _attribs) { +play_tree_t* ASX_Parser::repeat(libinput_t&libinput,const char* buffer,ASX_Attrib& _attribs) { ASX_Element element; play_tree_t *pt_repeat, *list=NULL, *pt_entry; std::string count; @@ -444,7 +444,7 @@ return pt_repeat; } -play_tree_t* ASX_Parser::build_tree(libinput_t*libinput,const char* buffer,int deep) { +play_tree_t* ASX_Parser::build_tree(libinput_t&libinput,const char* buffer,int deep) { ASX_Element asx_element,element; int r; play_tree_t *asx,*pt_entry,*list = NULL; Modified: mplayerxp/libplaytree/asxparser.h =================================================================== --- mplayerxp/libplaytree/asxparser.h 2012-12-12 16:21:04 UTC (rev 552) +++ mplayerxp/libplaytree/asxparser.h 2012-12-12 17:36:49 UTC (rev 553) @@ -51,7 +51,7 @@ ASX_Parser(); virtual ~ASX_Parser(); - static play_tree_t* build_tree(libinput_t* libinput,const char* buffer, int ref); + static play_tree_t* build_tree(libinput_t& libinput,const char* buffer, int ref); virtual int parse_attribs(const char* buffer,ASX_Attrib& _attribs) const; /* @@ -60,12 +60,12 @@ virtual int get_element(const char** _buffer,ASX_Element& _attribs); int get_line() const { return line; } private: - play_tree_t* repeat(libinput_t*libinput,const char* buffer,ASX_Attrib& _attribs); + play_tree_t* repeat(libinput_t&libinput,const char* buffer,ASX_Attrib& _attribs); void warning_attrib_required(const char *elem, const char *attr) const; void warning_body_parse_error(const char *elem) const; void param(ASX_Attrib& attribs, play_tree_t* pt) const; void ref(ASX_Attrib& attribs, play_tree_t* pt) const; - play_tree_t* entryref(libinput_t* libinput,const char* buffer,ASX_Attrib& _attribs) const; + play_tree_t* entryref(libinput_t& libinput,const char* buffer,ASX_Attrib& _attribs) const; play_tree_t* entry(const char* buffer,ASX_Attrib& _attribs); int line; // Curent line Modified: mplayerxp/libplaytree/playtree.h =================================================================== --- mplayerxp/libplaytree/playtree.h 2012-12-12 16:21:04 UTC (rev 552) +++ mplayerxp/libplaytree/playtree.h 2012-12-12 17:36:49 UTC (rev 553) @@ -167,11 +167,11 @@ char* play_tree_iter_get_file(play_tree_iter_t* iter, int d); -play_tree_t* parse_playtree(libinput_t* libinput,Stream * stream); +play_tree_t* parse_playtree(libinput_t& libinput,Stream * stream); play_tree_t* play_tree_cleanup(play_tree_t* pt); -play_tree_t* parse_playlist_file(libinput_t*libinput,const char* file); +play_tree_t* parse_playlist_file(libinput_t&libinput,const char* file); /// \defgroup PtAPI Playtree highlevel API /// \ingroup Playtree Modified: mplayerxp/libplaytree/playtreeparser.cpp =================================================================== --- mplayerxp/libplaytree/playtreeparser.cpp 2012-12-12 16:21:04 UTC (rev 552) +++ mplayerxp/libplaytree/playtreeparser.cpp 2012-12-12 17:36:49 UTC (rev 553) @@ -120,7 +120,7 @@ } -static play_tree_t* parse_asx(libinput_t* libinput,play_tree_parser_t* p) { +static play_tree_t* parse_asx(libinput_t& libinput,play_tree_parser_t* p) { int comments = 0,get_line = 1; char* line = NULL; @@ -340,7 +340,7 @@ retur... [truncated message content] |
From: <nic...@us...> - 2012-12-13 10:49:26
|
Revision: 556 http://mplayerxp.svn.sourceforge.net/mplayerxp/?rev=556&view=rev Author: nickols_k Date: 2012-12-13 10:49:20 +0000 (Thu, 13 Dec 2012) Log Message: ----------- anti-illegal patch cleanups: project compiled with -g3 lost >1MB of size. 119760K -> 118266K Modified Paths: -------------- mplayerxp/libmpstream2/s_rtsp.cpp mplayerxp/libmpstream2/s_udp.cpp mplayerxp/libmpstream2/stream.h mplayerxp/mplayerxp.cpp Modified: mplayerxp/libmpstream2/s_rtsp.cpp =================================================================== --- mplayerxp/libmpstream2/s_rtsp.cpp 2012-12-13 09:34:32 UTC (rev 555) +++ mplayerxp/libmpstream2/s_rtsp.cpp 2012-12-13 10:49:20 UTC (rev 556) @@ -22,6 +22,7 @@ #include "help_mp.h" #include "url.h" #include "tcp.h" +#include "network.h" #include "librtsp/rtsp.h" #include "librtsp/rtsp_session.h" #include "stream_msg.h" Modified: mplayerxp/libmpstream2/s_udp.cpp =================================================================== --- mplayerxp/libmpstream2/s_udp.cpp 2012-12-13 09:34:32 UTC (rev 555) +++ mplayerxp/libmpstream2/s_udp.cpp 2012-12-13 10:49:20 UTC (rev 556) @@ -21,6 +21,7 @@ #include "stream_internal.h" #include "help_mp.h" #include "tcp.h" +#include "network.h" #include "udp.h" #include "url.h" #include "stream_msg.h" Modified: mplayerxp/libmpstream2/stream.h =================================================================== --- mplayerxp/libmpstream2/stream.h 2012-12-13 09:34:32 UTC (rev 555) +++ mplayerxp/libmpstream2/stream.h 2012-12-13 10:49:20 UTC (rev 556) @@ -10,9 +10,6 @@ #include <string.h> #include "xmpcore/xmp_enums.h" -#ifdef HAVE_STREAMING -#include "network.h" -#endif struct networking_t; namespace mpxp { @@ -59,11 +56,12 @@ static void print_drivers(); virtual MPXP_Rc open(libinput_t&libinput,const std::string& filename,int* file_format); + virtual void close(); + virtual int read(any_t* mem,int total); virtual off_t seek(off_t off); virtual int skip(off_t len); virtual off_t tell() const; - virtual void close(); virtual MPXP_Rc ctrl(unsigned cmd,any_t* param); virtual void reset(); Modified: mplayerxp/mplayerxp.cpp =================================================================== --- mplayerxp/mplayerxp.cpp 2012-12-13 09:34:32 UTC (rev 555) +++ mplayerxp/mplayerxp.cpp 2012-12-13 10:49:20 UTC (rev 556) @@ -35,6 +35,7 @@ #include "help_mp.h" #include "libmpstream2/stream.h" +#include "libmpstream2/network.h" #include "libmpdemux/demuxer.h" #include "libmpconf/cfgparser.h" This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <nic...@us...> - 2012-12-13 13:52:46
|
Revision: 558 http://mplayerxp.svn.sourceforge.net/mplayerxp/?rev=558&view=rev Author: nickols_k Date: 2012-12-13 13:52:35 +0000 (Thu, 13 Dec 2012) Log Message: ----------- use m_config_t& instead of m_config_t* + constantization Modified Paths: -------------- mplayerxp/input2/input.cpp mplayerxp/libmpcodecs/ad.cpp mplayerxp/libmpcodecs/vd.cpp mplayerxp/libmpconf/cfgparser.cpp mplayerxp/libmpconf/cfgparser.h mplayerxp/libmpdemux/demuxer.cpp mplayerxp/libmpstream2/cdd.h mplayerxp/libmpstream2/cdda.cpp mplayerxp/libplaytree/asxparser.cpp mplayerxp/libplaytree/playtree.cpp mplayerxp/libplaytree/playtree.h mplayerxp/mplayerxp.cpp mplayerxp/mplayerxp.h mplayerxp/xmpcore/xmp_context.cpp Modified: mplayerxp/input2/input.cpp =================================================================== --- mplayerxp/input2/input.cpp 2012-12-13 11:45:25 UTC (rev 557) +++ mplayerxp/input2/input.cpp 2012-12-13 13:52:35 UTC (rev 558) @@ -1345,7 +1345,7 @@ delete &handle; } -void mp_input_register_options(m_config_t* cfg) { +void mp_input_register_options(m_config_t& cfg) { m_config_register_options(cfg,mp_input_opts); } Modified: mplayerxp/libmpcodecs/ad.cpp =================================================================== --- mplayerxp/libmpcodecs/ad.cpp 2012-12-13 11:45:25 UTC (rev 557) +++ mplayerxp/libmpcodecs/ad.cpp 2012-12-13 13:52:35 UTC (rev 558) @@ -66,7 +66,7 @@ static unsigned int nddrivers=sizeof(mpcodecs_ad_drivers)/sizeof(ad_functions_t*); -void libmpcodecs_ad_register_options(m_config_t* cfg) +void libmpcodecs_ad_register_options(m_config_t& cfg) { unsigned i; for(i=0;i<nddrivers;i++) { Modified: mplayerxp/libmpcodecs/vd.cpp =================================================================== --- mplayerxp/libmpcodecs/vd.cpp 2012-12-13 11:45:25 UTC (rev 557) +++ mplayerxp/libmpcodecs/vd.cpp 2012-12-13 13:52:35 UTC (rev 558) @@ -73,7 +73,7 @@ }; static unsigned int nddrivers=sizeof(mpcodecs_vd_drivers)/sizeof(vd_functions_t*); -void libmpcodecs_vd_register_options(m_config_t* cfg) +void libmpcodecs_vd_register_options(m_config_t& cfg) { unsigned i; for(i=0;i<nddrivers;i++) { Modified: mplayerxp/libmpconf/cfgparser.cpp =================================================================== --- mplayerxp/libmpconf/cfgparser.cpp 2012-12-13 11:45:25 UTC (rev 557) +++ mplayerxp/libmpconf/cfgparser.cpp 2012-12-13 13:52:35 UTC (rev 558) @@ -25,12 +25,6 @@ #define CONFIG_GLOBAL (1<<0) #define CONFIG_RUNNING (1<<1) -#define SET_GLOBAL(c) (c->flags |= CONFIG_GLOBAL) -#define UNSET_GLOBAL(c) (c->flags &= (!CONFIG_GLOBAL)) -#define IS_GLOBAL(c) (c->flags & CONFIG_GLOBAL) -#define SET_RUNNING(c) (c->flags |= CONFIG_RUNNING) -#define IS_RUNNING(c) (c->flags & CONFIG_RUNNING) - #define MAX_RECURSION_DEPTH 8 #ifdef MP_DEBUG @@ -39,21 +33,28 @@ #include "mplayerxp.h" #include "cfgparser.h" +#include "libplaytree/playtree.h" #define MSGT_CLASS MSGT_CFGPARSER #include "mp_msg.h" +inline void SET_GLOBAL(m_config_t& c) { c.flags |= CONFIG_GLOBAL; } +inline void UNSET_GLOBAL(m_config_t& c) { c.flags &= (!CONFIG_GLOBAL); } +inline int IS_GLOBAL(const m_config_t& c) { return c.flags & CONFIG_GLOBAL; } +inline void SET_RUNNING(m_config_t& c) { c.flags |= CONFIG_RUNNING; } +inline int IS_RUNNING(const m_config_t& c) { return c.flags & CONFIG_RUNNING; } + typedef int (*cfg_func_arg_param_t)(const config_t *,const char *,const char *); typedef int (*cfg_func_param_t)(const config_t *,const char *); typedef int (*cfg_func_t)(const config_t *); static void -m_config_save_option(m_config_t* config,const config_t* conf,const char* opt,const char *param) { +m_config_save_option(m_config_t& config,const config_t* conf,const char* opt,const char *param) { config_save_t* save; int sl=0; #ifdef MP_DEBUG assert(config != NULL); - assert(config->cs_level >= 0); + assert(config.cs_level >= 0); assert(conf != NULL); assert(opt != NULL); assert( ! (conf->flags & CONF_NOSAVE)); @@ -69,7 +70,7 @@ MSG_DBG2("Saving option %s\n",opt); - save = config->config_stack[config->cs_level]; + save = config.config_stack[config.cs_level]; if(save) { for(sl = 0; save[sl].opt != NULL; sl++){ @@ -108,17 +109,17 @@ MSG_ERR("Should never append in m_config_save_option : conf->type=%d\n",conf->type); } - config->config_stack[config->cs_level] = save; + config.config_stack[config.cs_level] = save; } -static int m_config_revert_option(m_config_t* config, config_save_t* save) { +static int m_config_revert_option(m_config_t& config, config_save_t* save) { const char* arg = NULL; config_save_t* iter=NULL; int i=-1; #ifdef MP_DEBUG assert(config != NULL); - assert(config->cs_level >= 0); + assert(config.cs_level >= 0); assert(save != NULL); #endif @@ -139,10 +140,10 @@ *((char**)save->opt->p) = reinterpret_cast<char*>(save->param.as_pointer); break; case CONF_TYPE_INCLUDE : - if(config->cs_level > 0) { - for(i = config->cs_level - 1 ; i >= 0 ; i--){ - if(config->config_stack[i] == NULL) continue; - for(iter = config->config_stack[i]; iter != NULL && iter->opt != NULL ; iter++) { + if(config.cs_level > 0) { + for(i = config.cs_level - 1 ; i >= 0 ; i--){ + if(config.config_stack[i] == NULL) continue; + for(iter = config.config_stack[i]; iter != NULL && iter->opt != NULL ; iter++) { if(iter->opt == save->opt && ((save->param.as_pointer == NULL || iter->param.as_pointer == NULL) || strcasecmp((const char *)save->param.as_pointer,(const char *)iter->param.as_pointer) == 0) && (save->opt_name == NULL || @@ -174,80 +175,68 @@ return 1; } -void m_config_push(m_config_t* config) { +void m_config_push(m_config_t& config) { #ifdef MP_DEBUG assert(config != NULL); - assert(config->cs_level >= 0); + assert(config.cs_level >= 0); #endif - config->cs_level++; - config->config_stack = (config_save_t**)mp_realloc(config->config_stack ,sizeof(config_save_t*)*(config->cs_level+1)); - if(config->config_stack == NULL) { - MSG_ERR( "Can't allocate %d bytes of memory : %s\n",sizeof(config_save_t*)*(config->cs_level+1),strerror(errno)); - config->cs_level = -1; + config.cs_level++; + config.config_stack = (config_save_t**)mp_realloc(config.config_stack ,sizeof(config_save_t*)*(config.cs_level+1)); + if(config.config_stack == NULL) { + MSG_ERR( "Can't allocate %d bytes of memory : %s\n",sizeof(config_save_t*)*(config.cs_level+1),strerror(errno)); + config.cs_level = -1; return; } - config->config_stack[config->cs_level] = NULL; - MSG_DBG2("Config pushed level=%d\n",config->cs_level); + config.config_stack[config.cs_level] = NULL; + MSG_DBG2("Config pushed level=%d\n",config.cs_level); } -int m_config_pop(m_config_t* config) { +int m_config_pop(m_config_t& config) { int i,ret= 1; config_save_t* cs; #ifdef MP_DEBUG assert(config != NULL); - //assert(config->cs_level > 0); + //assert(config.cs_level > 0); #endif - if(config->config_stack[config->cs_level] != NULL) { - cs = config->config_stack[config->cs_level]; + if(config.config_stack[config.cs_level] != NULL) { + cs = config.config_stack[config.cs_level]; for(i=0; cs[i].opt != NULL ; i++ ) { if (m_config_revert_option(config,&cs[i]) < 0) ret = -1; } - delete config->config_stack[config->cs_level]; + delete config.config_stack[config.cs_level]; } - config->config_stack = (config_save_t**)mp_realloc(config->config_stack ,sizeof(config_save_t*)*config->cs_level); - config->cs_level--; - if(config->cs_level > 0 && config->config_stack == NULL) { - MSG_ERR( "Can't allocate %d bytes of memory : %s\n",sizeof(config_save_t*)*config->cs_level,strerror(errno)); - config->cs_level = -1; + config.config_stack = (config_save_t**)mp_realloc(config.config_stack ,sizeof(config_save_t*)*config.cs_level); + config.cs_level--; + if(config.cs_level > 0 && config.config_stack == NULL) { + MSG_ERR( "Can't allocate %d bytes of memory : %s\n",sizeof(config_save_t*)*config.cs_level,strerror(errno)); + config.cs_level = -1; return -1; } - MSG_DBG2("Config poped level=%d\n",config->cs_level); + MSG_DBG2("Config poped level=%d\n",config.cs_level); return ret; } -m_config_t* m_config_new(play_tree_t* pt,libinput_t&libinput) { - m_config_t* config; - +m_config_t& m_config_new(play_tree_t* pt,libinput_t&libinput) { #ifdef MP_DEBUG assert(pt != NULL); #endif - - config = new(zeromem) m_config_t(libinput); - if(config == NULL) { - MSG_ERR( "Can't allocate %d bytes of memory : %s\n",sizeof(m_config_t),strerror(errno)); - return NULL; - } - config->config_stack = (config_save_t**)mp_calloc(1,sizeof(config_save_t*)); - if(config->config_stack == NULL) { - MSG_ERR( "Can't allocate %d bytes of memory : %s\n",sizeof(config_save_t*),strerror(errno)); - delete config; - return NULL; - } + m_config_t& config = *new(zeromem) m_config_t(libinput); + config.config_stack = (config_save_t**)mp_calloc(1,sizeof(config_save_t*)); SET_GLOBAL(config); // We always start with global options - config->pt = pt; + config.pt = pt; return config; } -static void m_config_add_dynamic(m_config_t *conf,any_t*ptr) { - if(!conf->dynasize) conf->dynamics = (any_t**)mp_malloc(sizeof(any_t*)); - else conf->dynamics = (any_t**)mp_realloc(conf->dynamics,(conf->dynasize+1)*sizeof(any_t*)); - conf->dynamics[conf->dynasize] = ptr; - conf->dynasize++; +static void m_config_add_dynamic(m_config_t& conf,any_t*ptr) { + if(!conf.dynasize) conf.dynamics = (any_t**)mp_malloc(sizeof(any_t*)); + else conf.dynamics = (any_t**)mp_realloc(conf.dynamics,(conf.dynasize+1)*sizeof(any_t*)); + conf.dynamics[conf.dynasize] = ptr; + conf.dynasize++; } void m_config_free(m_config_t* config) { @@ -264,36 +253,36 @@ } -static int init_conf(m_config_t *config, int mode) +static int init_conf(m_config_t& config, int mode) { #ifdef MP_DEBUG assert(config != NULL); - assert(config->pt != NULL); - assert(config->last_entry == NULL || config->last_entry->parent == config->pt); + assert(config.pt != NULL); + assert(config.last_entry == NULL || config.last_entry->parent == config.pt); if (mode != COMMAND_LINE && mode != CONFIG_FILE) { MSG_ERR( "init_conf: wrong mode!\n"); return -1; } #endif - config->parser_mode = mode; - config->dynamics=NULL; - config->dynasize=0; + config.parser_mode = mode; + config.dynamics=NULL; + config.dynasize=0; return 1; } -static int config_is_entry_option(m_config_t *config,const char *opt,const char *param) { +static int config_is_entry_option(m_config_t& config,const char *opt,const char *param) { play_tree_t* entry = NULL; #ifdef MP_DEBUG - assert(config->pt != NULL); + assert(config.pt != NULL); #endif if(strcasecmp(opt,"playlist") == 0) { // We handle playlist here if(!param) return ERR_MISSING_PARAM; - entry = parse_playlist_file(config->libinput,param); + entry = parse_playlist_file(config.libinput,param); if(!entry) { MSG_ERR( "Playlist parsing failed: %s\n",param); return 1; @@ -301,25 +290,25 @@ } if(entry) { - if(config->last_entry) - play_tree_append_entry(config->last_entry,entry); + if(config.last_entry) + play_tree_append_entry(config.last_entry,entry); else - play_tree_set_child(config->pt,entry); - config->last_entry = entry; - if(config->parser_mode == COMMAND_LINE) + play_tree_set_child(config.pt,entry); + config.last_entry = entry; + if(config.parser_mode == COMMAND_LINE) UNSET_GLOBAL(config); return 1; } else return 0; } -static MPXP_Rc cfg_include(m_config_t* conf,const char *filename){ +static MPXP_Rc cfg_include(m_config_t& conf,const char *filename){ return m_config_parse_config_file(conf, filename); } static int cfg_inc_int(int value){ return ++value; } -static int config_read_option(m_config_t *config,const config_t** conf_list,const char *opt,const char *param) +static int config_read_option(m_config_t& config,const config_t** conf_list,const char *opt,const char *param) { int i=0,nconf = 0; long tmp_int; @@ -356,12 +345,12 @@ MSG_DBG3( "read_option: name='%s' p=%p type=%d\n", conf[i].name, conf[i].p, conf[i].type); - if (conf[i].flags & CONF_NOCFG && config->parser_mode == CONFIG_FILE) { + if (conf[i].flags & CONF_NOCFG && config.parser_mode == CONFIG_FILE) { MSG_ERR( "this option can only be used on command line:\n", opt); ret = ERR_NOT_AN_OPTION; goto out; } - if (conf[i].flags & CONF_NOCMD && config->parser_mode == COMMAND_LINE) { + if (conf[i].flags & CONF_NOCMD && config.parser_mode == COMMAND_LINE) { MSG_ERR( "this option can only be used in config file:\n", opt); ret = ERR_NOT_AN_OPTION; goto out; @@ -379,7 +368,7 @@ switch (conf[i].type) { case CONF_TYPE_FLAG: /* flags need a parameter in config file */ - if (config->parser_mode == CONFIG_FILE) { + if (config.parser_mode == CONFIG_FILE) { if (!strcasecmp(param, "yes") || /* any other language? */ !strcasecmp(param, "ja") || !strcasecmp(param, "si") || @@ -531,7 +520,7 @@ sublist[0] = subconf; for (subconf_optnr = 0; subconf[subconf_optnr].name != NULL; subconf_optnr++) /* NOTHING */; - config->sub_conf = opt; + config.sub_conf = opt; token = strtok(p, (char *)&(":")); while(token) { @@ -561,7 +550,7 @@ } token = strtok(NULL, (char *)&(":")); } - config->sub_conf = NULL; + config.sub_conf = NULL; delete subparam; delete subopt; delete p; @@ -578,14 +567,14 @@ } out: if(ret >= 0 && ! IS_RUNNING(config) && ! IS_GLOBAL(config) && ! (conf[i].flags & CONF_GLOBAL) && conf[i].type != CONF_TYPE_SUBCONFIG ) { - play_tree_t* dest = config->last_entry ? config->last_entry : config->last_parent; + play_tree_t* dest = config.last_entry ? config.last_entry : config.last_parent; char* o; #ifdef MP_DEBUG assert(dest != NULL); #endif - if(config->sub_conf) { - o = new char [(strlen(config->sub_conf) + 1 + strlen(opt) + 1)]; - sprintf(o,"%s:%s",config->sub_conf,opt); + if(config.sub_conf) { + o = new char [(strlen(config.sub_conf) + 1 + strlen(opt) + 1)]; + sprintf(o,"%s:%s",config.sub_conf,opt); } else o =mp_strdup(opt); @@ -603,18 +592,18 @@ goto out; } -static const config_t* m_config_find_option(const config_t **list,const char *name); +static const config_t* m_config_find_option(const config_t**list,const char *name); -int m_config_set_option(m_config_t *config,const char *opt,const char *param) { +int m_config_set_option(m_config_t& config,const char *opt,const char *param) { const char *e; - const config_t **clist=config->opt_list; + const config_t**clist=config.opt_list; #ifdef MP_DEBUG assert(config != NULL); - assert(config->opt_list != NULL); + assert(config.opt_list != NULL); assert(opt != NULL); #endif MSG_DBG2( "Setting option %s=%s\n",opt,param); - clist = config->opt_list; + clist = config.opt_list; #if 1 if(strchr(opt,'.')) { int flg,ret; @@ -639,10 +628,10 @@ MSG_DBG2("switching next subconf=%s\n",subconf->name); } }while(1); - flg=config->flags; - config->flags|=CONFIG_GLOBAL; + flg=config.flags; + config.flags|=CONFIG_GLOBAL; ret=config_read_option(config,olist,opt,param); - config->flags=flg; + config.flags=flg; return ret; } #endif @@ -667,10 +656,10 @@ return ret; } - return config_read_option(config,config->opt_list,opt,param); + return config_read_option(config,config.opt_list,opt,param); } -MPXP_Rc m_config_parse_config_file(m_config_t *config,const char *conffile) +MPXP_Rc m_config_parse_config_file(m_config_t& config,const char *conffile) { #define PRINT_LINENUM MSG_ERR("%s(%d): ", conffile, line_num) #define MAX_LINE_LEN 1000 @@ -693,9 +682,9 @@ assert(config != NULL); // assert(conf_list != NULL); #endif - if (++config->recursion_depth > 1) MSG_INFO("Reading config file: %s", conffile); + if (++config.recursion_depth > 1) MSG_INFO("Reading config file: %s", conffile); - if (config->recursion_depth > MAX_RECURSION_DEPTH) { + if (config.recursion_depth > MAX_RECURSION_DEPTH) { MSG_FATAL(": too deep 'include'. check your configfiles\n"); ret = MPXP_False; goto out; @@ -713,12 +702,12 @@ } if ((fp = fopen(conffile, "r")) == NULL) { - if (config->recursion_depth > 1) MSG_ERR(": %s\n", strerror(errno)); + if (config.recursion_depth > 1) MSG_ERR(": %s\n", strerror(errno)); delete line; ret = MPXP_Ok; goto out; } - if (config->recursion_depth > 1) MSG_FATAL("\n"); + if (config.recursion_depth > 1) MSG_FATAL("\n"); while (fgets(line, MAX_LINE_LEN, fp)) { if (errors >= 16) { @@ -854,11 +843,11 @@ delete line; fclose(fp); out: - --config->recursion_depth; + --config.recursion_depth; return ret; } -MPXP_Rc m_config_parse_command_line(m_config_t *config, int argc, char **argv, char **envp) +MPXP_Rc m_config_parse_command_line(m_config_t& config, int argc, char **argv, char **envp) { int i; int tmp; @@ -868,16 +857,16 @@ #ifdef MP_DEBUG assert(config != NULL); - assert(config->pt != NULL); + assert(config.pt != NULL); assert(argv != NULL); assert(envp != NULL); assert(argc >= 1); #endif if (init_conf(config, COMMAND_LINE) == -1) return MPXP_False; - if(config->last_parent == NULL) config->last_parent = config->pt; + if(config.last_parent == NULL) config.last_parent = config.pt; /* in order to work recursion detection properly in parse_config_file */ - ++config->recursion_depth; + ++config.recursion_depth; for (i = 1; i < argc; i++) { //next: @@ -902,23 +891,23 @@ if((opt[0] == '{') && (opt[1] == '\0')) { play_tree_t* entry = play_tree_new(); UNSET_GLOBAL(config); - if(config->last_entry == NULL) { - play_tree_set_child(config->last_parent,entry); + if(config.last_entry == NULL) { + play_tree_set_child(config.last_parent,entry); } else { - play_tree_append_entry(config->last_entry,entry); - config->last_entry = NULL; + play_tree_append_entry(config.last_entry,entry); + config.last_entry = NULL; } - config->last_parent = entry; + config.last_parent = entry; continue; } if((opt[0] == '}') && (opt[1] == '\0')) { - if( ! config->last_parent || ! config->last_parent->parent) { + if( ! config.last_parent || ! config.last_parent->parent) { MSG_ERR( "too much }-\n"); goto err_out; } - config->last_entry = config->last_parent; - config->last_parent = config->last_entry->parent; + config.last_entry = config.last_parent; + config.last_parent = config.last_entry->parent; continue; } @@ -973,14 +962,14 @@ if(strcasecmp(argv[i],"-") == 0) m_config_set_option(config,"use-stdin",NULL); /* opt is not an option -> treat it as a filename */ UNSET_GLOBAL(config); // We start entry specific options - if(config->last_entry == NULL) play_tree_set_child(config->last_parent,entry); - else play_tree_append_entry(config->last_entry,entry); - config->last_entry = entry; + if(config.last_entry == NULL) play_tree_set_child(config.last_parent,entry); + else play_tree_append_entry(config.last_entry,entry); + config.last_entry = entry; } } - --config->recursion_depth; - if(config->last_parent != config->pt) MSG_ERR("Missing }- ?\n"); + --config.recursion_depth; + if(config.last_parent != config.pt) MSG_ERR("Missing }- ?\n"); UNSET_GLOBAL(config); SET_RUNNING(config); return MPXP_Ok; @@ -989,14 +978,14 @@ MSG_ERR( "can't allocate memory for filenames (%s)\n", strerror(errno)); #endif err_out: - --config->recursion_depth; + --config.recursion_depth; MSG_ERR( "command line: %s\n", argv[i]); return MPXP_False; } -int m_config_register_options(m_config_t *config,const config_t *args) { +int m_config_register_options(m_config_t& config,const config_t *args) { int list_len = 0; - const config_t** conf_list = config->opt_list; + const config_t** conf_list = config.opt_list; #ifdef MP_DEBUG assert(config != NULL); @@ -1016,7 +1005,7 @@ conf_list[list_len] = args; conf_list[list_len+1] = NULL; - config->opt_list = conf_list; + config.opt_list = conf_list; return 1; } @@ -1036,7 +1025,7 @@ return NULL; } -const config_t* m_config_get_option(m_config_t const*config,const char* arg) { +const config_t* m_config_get_option(const m_config_t& config,const char* arg) { const char *e; const config_t **conf_list; const config_t* cl[] = { NULL, NULL }; @@ -1057,11 +1046,11 @@ conf_list = cl; delete s; } else - conf_list = config->opt_list; + conf_list = config.opt_list; return m_config_find_option(conf_list,arg); } -any_t* m_config_get_option_ptr(m_config_t const*config,const char* arg) { +any_t* m_config_get_option_ptr(const m_config_t& config,const char* arg) { const config_t* conf; #ifdef MP_DEBUG @@ -1074,7 +1063,7 @@ return conf->p; } -int m_config_get_int (m_config_t const *config,const char* arg,int* err_ret) { +int m_config_get_int (const m_config_t& config,const char* arg,int* err_ret) { int *ret; #ifdef MP_DEBUG @@ -1093,7 +1082,7 @@ return (*ret); } -float m_config_get_float (m_config_t const *config,const char* arg,int* err_ret) { +float m_config_get_float (const m_config_t& config,const char* arg,int* err_ret) { float *ret; #ifdef MP_DEBUG @@ -1112,9 +1101,10 @@ return (*ret); } -#define AS_INT(c) (*((int*)c->p)) +inline int AS_INT(const config_t* c) { return *((int*)c->p); } +inline void AS_INT(const config_t* c,int val) { *((int*)c->p)=val; } -int m_config_set_int(m_config_t *config,const char* arg,int val) { +int m_config_set_int(m_config_t& config,const char* arg,int val) { const config_t* opt; #ifdef MP_DEBUG @@ -1133,12 +1123,12 @@ return ERR_OUT_OF_RANGE; m_config_save_option(config,opt,arg,NULL); - AS_INT(opt) = val; + AS_INT(opt,val); return 1; } -int m_config_set_float(m_config_t *config,const char* arg,float val) { +int m_config_set_float(m_config_t& config,const char* arg,float val) { const config_t* opt; #ifdef MP_DEBUG @@ -1163,7 +1153,7 @@ } -int m_config_switch_flag(m_config_t *config,const char* opt) { +int m_config_switch_flag(m_config_t& config,const char* opt) { const config_t *conf; #ifdef MP_DEBUG @@ -1173,14 +1163,14 @@ conf = m_config_get_option(config,opt); if(!conf || conf->type != CONF_TYPE_FLAG) return 0; - if( AS_INT(conf) == conf->min) AS_INT(conf) = conf->max; - else if(AS_INT(conf) == conf->max) AS_INT(conf) = conf->min; + if( AS_INT(conf) == conf->min) AS_INT(conf,conf->max); + else if(AS_INT(conf) == conf->max) AS_INT(conf,conf->min); else return 0; return 1; } -int m_config_set_flag(m_config_t* config,const char* opt, int state) { +int m_config_set_flag(m_config_t& config,const char* opt, int state) { const config_t *conf; #ifdef MP_DEBUG @@ -1190,30 +1180,26 @@ conf = m_config_get_option(config,opt); if(!conf || conf->type != CONF_TYPE_FLAG) return 0; - if(state) AS_INT(conf) = conf->max; - else AS_INT(conf) = conf->min; + if(state) AS_INT(conf,conf->max); + else AS_INT(conf,conf->min); return 1; } -int m_config_get_flag(m_config_t const *config,const char* opt) { - const config_t *conf; +int m_config_get_flag(const m_config_t& config,const char* opt) { #ifdef MP_DEBUG assert(config != NULL); assert(opt != NULL); #endif - conf = m_config_get_option(config,opt); + const config_t* conf = m_config_get_option(config,opt); if(!conf || conf->type != CONF_TYPE_FLAG) return -1; - if(AS_INT(conf) == conf->max) - return 1; - else if(AS_INT(conf) == conf->min) - return 0; - else - return -1; + if(AS_INT(conf) == conf->max) return 1; + else if(AS_INT(conf) == conf->min) return 0; + return -1; } -int m_config_is_option_set(m_config_t const*config,const char* arg) { +int m_config_is_option_set(const m_config_t& config,const char* arg) { const config_t* opt; config_save_t* save; int l,i; @@ -1228,8 +1214,8 @@ if(!opt) return -1; - for(l = config->cs_level ; l >= 0 ; l--) { - save = config->config_stack[l]; + for(l = config.cs_level ; l >= 0 ; l--) { + save = config.config_stack[l]; if(!save) continue; for(i = 0 ; save[i].opt != NULL ; i++) { @@ -1330,12 +1316,12 @@ }; } -void m_config_show_options(const m_config_t *args) { +void m_config_show_options(const m_config_t& args) { unsigned j; const config_t *opts; j=0; MSG_INFO("List of available command-line options:\n"); - while((opts=args->opt_list[j])!=NULL) { + while((opts=args.opt_list[j])!=NULL) { __m_config_show_options(2,NULL,opts); j++; }; Modified: mplayerxp/libmpconf/cfgparser.h =================================================================== --- mplayerxp/libmpconf/cfgparser.h 2012-12-13 11:45:25 UTC (rev 557) +++ mplayerxp/libmpconf/cfgparser.h 2012-12-13 13:52:35 UTC (rev 558) @@ -8,7 +8,7 @@ namespace mpxp { struct libinput_t; } - +struct play_tree_t; /* config types */ enum { CONF_TYPE_FLAG =0, @@ -40,8 +40,6 @@ typedef struct m_config m_config_t; typedef struct config_save config_save_t; -#include "libplaytree/playtree.h" - struct config_t { const char *name; any_t* const p; @@ -86,31 +84,31 @@ * 0 if can't open configfile * 1 on success */ -MPXP_Rc m_config_parse_config_file(m_config_t *config,const char *conffile); +MPXP_Rc m_config_parse_config_file(m_config_t& config,const char *conffile); /* parse_command_line returns: * -1 on error (invalid option...) * 1 otherwise */ -MPXP_Rc m_config_parse_command_line(m_config_t* config, int argc, char **argv, char **envp); +MPXP_Rc m_config_parse_command_line(m_config_t& config, int argc, char **argv, char **envp); -m_config_t* m_config_new(play_tree_t* pt,libinput_t&libinput); +m_config_t& m_config_new(play_tree_t* pt,libinput_t&libinput); void m_config_free(m_config_t* config); -void m_config_push(m_config_t* config); +void m_config_push(m_config_t& config); /* * Return 0 on error 1 on success */ -int m_config_pop(m_config_t* config); +int m_config_pop(m_config_t& config); /* * Return 0 on error 1 on success */ -int m_config_register_options(m_config_t *config,const config_t *args); +int m_config_register_options(m_config_t& config,const config_t *args); -void m_config_show_options(const m_config_t* args); +void m_config_show_options(const m_config_t& args); /* * For all the following function when it's a subconfig option @@ -120,55 +118,55 @@ /** Return 1 on sucess 0 on failure **/ -int m_config_set_option(m_config_t *config,const char *opt,const char *param); +int m_config_set_option(m_config_t& config,const char *opt,const char *param); /** Get the config struct defining an option * @return NULL on error **/ -const config_t* m_config_get_option(m_config_t const *config,const char* arg); +const config_t* m_config_get_option(const m_config_t& config,const char* arg); /** Get the p field of the struct defining an option * @return NULL on error **/ -any_t* m_config_get_option_ptr(m_config_t const *config,const char* arg); +any_t* m_config_get_option_ptr(const m_config_t& config,const char* arg); /** Tell is an option is alredy set or not * @return -1 one error (requested option arg exist) otherwise 0 or 1 **/ -int m_config_is_option_set(m_config_t const*config,const char* arg); +int m_config_is_option_set(const m_config_t& config,const char* arg); /** Return 0 on error 1 on success **/ -int m_config_switch_flag(m_config_t *config,const char* opt); +int m_config_switch_flag(m_config_t& config,const char* opt); /** Return 0 on error 1 on success **/ -int m_config_set_flag(m_config_t *config,const char* opt, int max); +int m_config_set_flag(m_config_t& config,const char* opt, int max); /** Return the value of a flag (O or 1) and -1 on error **/ -int m_config_get_flag(m_config_t const *config,const char* opt); +int m_config_get_flag(const m_config_t& config,const char* opt); /** Set the value of an int option * @return 0 on error 1 on success **/ -int m_config_set_int(m_config_t *config,const char* arg,int val); +int m_config_set_int(m_config_t& config,const char* arg,int val); /** Get the value of an int option * @param err_ret If it is not NULL it's set to 1 on error * @return the option value or -1 on error **/ -int m_config_get_int (m_config_t const *config,const char* arg,int* err_ret); +int m_config_get_int (const m_config_t&,const char* arg,int* err_ret); /** Set the value of a float option * @return 0 on error 1 on success **/ -int m_config_set_float(m_config_t *config,const char* arg,float val); +int m_config_set_float(m_config_t& config,const char* arg,float val); /** Get the value of a float option * @param err_ret If it is not NULL it's set to 1 on error * @return the option value or -1 on error **/ -float m_config_get_float (m_config_t const *config,const char* arg,int* err_ret); +float m_config_get_float (const m_config_t&,const char* arg,int* err_ret); #endif /* __CONFIG_H */ Modified: mplayerxp/libmpdemux/demuxer.cpp =================================================================== --- mplayerxp/libmpdemux/demuxer.cpp 2012-12-13 11:45:25 UTC (rev 557) +++ mplayerxp/libmpdemux/demuxer.cpp 2012-12-13 13:52:35 UTC (rev 558) @@ -119,7 +119,7 @@ const demuxer_driver_t* driver; /**< driver associated with this demuxer */ }; -void libmpdemux_register_options(m_config_t* cfg) +void libmpdemux_register_options(m_config_t& cfg) { unsigned i; for(i=0;ddrivers[i];i++) { @@ -469,7 +469,7 @@ delete ad; ad = NULL; } else if(ad->audio->sh && ((sh_audio_t*)ad->audio->sh)->wtag == 0x55) // MP3 - m_config_set_flag(mpxp_context().mconfig,"mp3.hr-seek",1); // Enable high res seeking + m_config_set_flag(*mpxp_context().mconfig,"mp3.hr-seek",1); // Enable high res seeking } if(ss) { sd = new(zeromem) Demuxer(ss,-2,-2,dvdsub_id); @@ -534,7 +534,7 @@ { NULL, NULL, 0, 0, 0, 0, NULL} }; -void demuxer_register_options(m_config_t* cfg) { +void demuxer_register_options(m_config_t& cfg) { m_config_register_options(cfg,demuxer_opts); } Modified: mplayerxp/libmpstream2/cdd.h =================================================================== --- mplayerxp/libmpstream2/cdd.h 2012-12-13 11:45:25 UTC (rev 557) +++ mplayerxp/libmpstream2/cdd.h 2012-12-13 13:52:35 UTC (rev 558) @@ -100,6 +100,6 @@ lsn_t end_sector; }; - void cdda_register_options(m_config_t* cfg); + void cdda_register_options(m_config_t& cfg); } // namespace mpxp #endif // __CDD_H__ Modified: mplayerxp/libmpstream2/cdda.cpp =================================================================== --- mplayerxp/libmpstream2/cdda.cpp 2012-12-13 11:45:25 UTC (rev 557) +++ mplayerxp/libmpstream2/cdda.cpp 2012-12-13 13:52:35 UTC (rev 558) @@ -33,7 +33,7 @@ { NULL,NULL, 0, 0, 0, 0, NULL} }; -void cdda_register_options(m_config_t* cfg) { +void cdda_register_options(m_config_t& cfg) { m_config_register_options(cfg,cdda_conf); } Modified: mplayerxp/libplaytree/asxparser.cpp =================================================================== --- mplayerxp/libplaytree/asxparser.cpp 2012-12-13 11:45:25 UTC (rev 557) +++ mplayerxp/libplaytree/asxparser.cpp 2012-12-13 13:52:35 UTC (rev 558) @@ -299,7 +299,7 @@ return; } val = cattribs.get("VALUE"); - if(m_config_get_option(mpxp_context().mconfig,name.c_str()) == NULL) { + if(m_config_get_option(*mpxp_context().mconfig,name.c_str()) == NULL) { MSG_WARN("Found unknow param in asx: %s",name.c_str()); if(!val.empty())MSG_WARN("=%s\n",val.c_str()); else MSG_WARN("\n"); Modified: mplayerxp/libplaytree/playtree.cpp =================================================================== --- mplayerxp/libplaytree/playtree.cpp 2012-12-13 11:45:25 UTC (rev 557) +++ mplayerxp/libplaytree/playtree.cpp 2012-12-13 13:52:35 UTC (rev 558) @@ -442,7 +442,7 @@ play_tree_t* pt; #ifdef MP_DEBUG assert(iter != NULL); - assert(iter->config != NULL); + assert(*iter->config != NULL); assert(iter->tree != NULL); #endif @@ -450,7 +450,7 @@ // We always push a config because we can set some option // while playing - m_config_push(iter->config); + m_config_push(*iter->config); if(pt->params == NULL) return; @@ -458,7 +458,7 @@ for(n = 0; pt->params[n].name != NULL ; n++) { int e; - if((e = m_config_set_option(iter->config,pt->params[n].name,pt->params[n].value)) < 0) { + if((e = m_config_set_option(*iter->config,pt->params[n].name,pt->params[n].value)) < 0) { MSG_ERR("Error %d while setting option '%s' with value '%s'\n",e, pt->params[n].name,pt->params[n].value); } @@ -470,7 +470,7 @@ } play_tree_iter_t* -play_tree_iter_new(play_tree_t* pt,m_config_t* config) { +play_tree_iter_new(play_tree_t* pt,m_config_t& config) { play_tree_iter_t* iter; #ifdef MP_DEBUG @@ -485,7 +485,7 @@ if(! iter) return NULL; iter->root = pt; iter->tree = NULL; - iter->config = config; + iter->config = &config; if(pt->parent) iter->loop = pt->parent->loop; @@ -562,7 +562,7 @@ if(iter->config && iter->entry_pushed > 0) { iter->entry_pushed = 0; - m_config_pop(iter->config); + m_config_pop(*iter->config); } if(iter->tree->parent && (iter->tree->parent->flags & PLAY_TREE_RND)) @@ -712,7 +712,7 @@ // Pop subtree params if(iter->config) { - m_config_pop(iter->config); + m_config_pop(*iter->config); if(iter->mode == PLAY_TREE_ITER_RND) iter->tree->flags |= PLAY_TREE_RND_PLAYED; } @@ -759,9 +759,9 @@ // This is used as a file name for vcd/tv/dvd char playtree_ret_filename[256]; -char* +const char* play_tree_iter_get_file(play_tree_iter_t* iter, int d) { - char* entry; + const char* entry; #ifdef MP_DEBUG assert(iter != NULL); assert(iter->tree->child == NULL); @@ -794,22 +794,23 @@ case PLAY_TREE_ENTRY_DVD : if(strlen(entry) == 0) entry = "1"; if(iter->config) - m_config_set_option(iter->config,"dvd",entry); + m_config_set_option(*iter->config,"dvd",entry); snprintf(playtree_ret_filename,255,"DVD title %s",entry); return playtree_ret_filename; case PLAY_TREE_ENTRY_VCD : if(strlen(entry) == 0) entry = "1"; if(iter->config) - m_config_set_option(iter->config,"vcd",entry); + m_config_set_option(*iter->config,"vcd",entry); snprintf(playtree_ret_filename,255,"vcd://%s",entry); return playtree_ret_filename; case PLAY_TREE_ENTRY_TV : { if(strlen(entry) != 0) { - char *s,*e, *val = (char*)mp_malloc(strlen(entry) + 11 + 1); + char *s,*val = (char*)mp_malloc(strlen(entry) + 11 + 1); + const char* e; sprintf(val,"on:channel=%s",entry); if(iter->config) - m_config_set_option(iter->config,"tv",val); + m_config_set_option(*iter->config,"tv",val); s = playtree_ret_filename + sprintf(playtree_ret_filename,"TV channel "); e = strchr(entry,':'); if(!e) strncpy(s,entry,255-11); @@ -822,7 +823,7 @@ return playtree_ret_filename; } else { if(iter->config) - m_config_set_option(iter->config,"tv","on"); + m_config_set_option(*iter->config,"tv","on"); return "TV"; } } @@ -895,7 +896,7 @@ // HIGH Level API, by Fabian Franz (mp...@fa...) // -play_tree_iter_t* pt_iter_create(play_tree_t** ppt, m_config_t* config) +play_tree_iter_t* pt_iter_create(play_tree_t** ppt, m_config_t& config) { play_tree_iter_t* r=NULL; #ifdef MP_DEBUG @@ -925,10 +926,10 @@ } } -char* pt_iter_get_file(play_tree_iter_t* iter, int d) +const char* pt_iter_get_file(play_tree_iter_t* iter, int d) { int i=0; - char* r; + const char* r; if (iter==NULL) return NULL; Modified: mplayerxp/libplaytree/playtree.h =================================================================== --- mplayerxp/libplaytree/playtree.h 2012-12-13 11:45:25 UTC (rev 557) +++ mplayerxp/libplaytree/playtree.h 2012-12-13 13:52:35 UTC (rev 558) @@ -37,10 +37,6 @@ /// \defgroup Playtree ///@{ -typedef struct play_tree play_tree_t; -typedef struct play_tree_iter play_tree_iter_t; -typedef struct play_tree_param play_tree_param_t; - #include "libmpconf/cfgparser.h" #if 0 @@ -55,12 +51,12 @@ } #endif -struct play_tree_param { +struct play_tree_param_t { char* name; char* value; }; -struct play_tree { +struct play_tree_t { play_tree_t* parent; play_tree_t* child; play_tree_t* next; @@ -74,18 +70,18 @@ int flags; }; -struct play_tree_iter { - play_tree_t* root; // Iter root tree - play_tree_t* tree; // Current tree - m_config_t* config; - int loop; // Looping status - int file; - int num_files; - int entry_pushed; - int mode; +struct play_tree_iter_t { + play_tree_t* root; // Iter root tree + play_tree_t* tree; // Current tree + m_config_t* config; + int loop; // Looping status + int file; + int num_files; + int entry_pushed; + int mode; - int* status_stack; // loop/valid stack to save/revert status when we go up/down - int stack_size; // status stack size + int* status_stack; // loop/valid stack to save/revert status when we go up/down + int stack_size; // status stack size }; play_tree_t* play_tree_new(void); @@ -145,7 +141,7 @@ /// Iterator play_tree_iter_t* -play_tree_iter_new(play_tree_t* pt, m_config_t* config); +play_tree_iter_new(play_tree_t* pt, m_config_t& config); play_tree_iter_t* play_tree_iter_new_copy(play_tree_iter_t const* old); @@ -165,7 +161,7 @@ int // Enter a node child list play_tree_iter_down_step(play_tree_iter_t* iter, int d,int with_nodes); -char* play_tree_iter_get_file(play_tree_iter_t* iter, int d); +const char* play_tree_iter_get_file(play_tree_iter_t* iter, int d); play_tree_t* parse_playtree(libinput_t& libinput,Stream * stream); @@ -186,11 +182,11 @@ void pt_iter_destroy(play_tree_iter_t** iter); /// Gets the next available file in the direction (d=-1 || d=+1). -char* pt_iter_get_file(play_tree_iter_t* iter, int d); +const char* pt_iter_get_file(play_tree_iter_t* iter, int d); // Two Macros that implement forward and backward direction. -static inline char* pt_iter_get_next_file(play_tree_iter_t* iter) { return pt_iter_get_file(iter, 1); } -static inline char* pt_iter_get_prev_file(play_tree_iter_t* iter) { return pt_iter_get_file(iter, -1); } +static inline const char* pt_iter_get_next_file(play_tree_iter_t* iter) { return pt_iter_get_file(iter, 1); } +static inline const char* pt_iter_get_prev_file(play_tree_iter_t* iter) { return pt_iter_get_file(iter, -1); } /// Inserts entry into the playtree. void pt_iter_insert_entry(play_tree_iter_t* iter, play_tree_t* entry); Modified: mplayerxp/mplayerxp.cpp =================================================================== --- mplayerxp/mplayerxp.cpp 2012-12-13 11:45:25 UTC (rev 557) +++ mplayerxp/mplayerxp.cpp 2012-12-13 13:52:35 UTC (rev 558) @@ -38,6 +38,7 @@ #include "libmpdemux/demuxer.h" #include "libmpconf/codec-cfg.h" +#include "libplaytree/playtree.h" #include "libmpcodecs/dec_video.h" #include "libmpcodecs/dec_audio.h" @@ -426,7 +427,7 @@ //"nosound=nein" "\n"; -void parse_cfgfiles( m_config_t* conf ) +void parse_cfgfiles( m_config_t& conf ) { char *conffile; int conffile_fd; @@ -604,7 +605,7 @@ void show_long_help(void) { MPXPSystem& MPXPSys=*mpxp_context().engine().MPXPSys; - m_config_show_options(mpxp_context().mconfig); + m_config_show_options(*mpxp_context().mconfig); mp_input_print_binds(MPXPSys.libinput()); Stream::print_drivers(); mpxp_context().video().output->print_help(); @@ -1633,7 +1634,7 @@ int stream_dump_type=0; input_state_t input_state = { 0, 0, 0 }; char *ao_subdevice; - char* filename=NULL; //"MI2-Trailer.avi"; + const char* filename=NULL; //"MI2-Trailer.avi"; int file_format=Demuxer::Type_UNKNOWN; // movie info: @@ -1666,13 +1667,14 @@ MPXPSys.playtree = play_tree_new(); - mpxp_context().mconfig = m_config_new(MPXPSys.playtree,MPXPSys.libinput()); - m_config_register_options(mpxp_context().mconfig,mplayer_opts); + m_config_t& m_config=m_config_new(MPXPSys.playtree,MPXPSys.libinput()); + mpxp_context().mconfig = &m_config; + m_config_register_options(m_config,mplayer_opts); // TODO : add something to let modules register their options - mp_register_options(mpxp_context().mconfig); - parse_cfgfiles(mpxp_context().mconfig); + mp_register_options(m_config); + parse_cfgfiles(m_config); - if(m_config_parse_command_line(mpxp_context().mconfig, argc, argv, envp)!=MPXP_Ok) + if(m_config_parse_command_line(m_config, argc, argv, envp)!=MPXP_Ok) exit_player("Error parse command line"); // error parsing cmdline if(!mp_conf.xp) { @@ -1695,7 +1697,7 @@ MPXPSys.playtree = play_tree_cleanup(MPXPSys.playtree); if(MPXPSys.playtree) { - playtree_iter = play_tree_iter_new(MPXPSys.playtree,mpxp_context().mconfig); + playtree_iter = play_tree_iter_new(MPXPSys.playtree,m_config); if(playtree_iter) { if(play_tree_iter_step(playtree_iter,0,0) != PLAY_TREE_ITER_ENTRY) { play_tree_iter_free(playtree_iter); Modified: mplayerxp/mplayerxp.h =================================================================== --- mplayerxp/mplayerxp.h 2012-12-13 11:45:25 UTC (rev 557) +++ mplayerxp/mplayerxp.h 2012-12-13 13:52:35 UTC (rev 558) @@ -17,6 +17,7 @@ struct audio_decoder_t; struct video_decoder_t; +struct play_tree_iter_t; namespace mpxp { /* List of all modules which require protection by pin-code */ enum { @@ -225,7 +226,7 @@ void mplayer_put_key(int code); - void mp_register_options(m_config_t* cfg); + void mp_register_options(m_config_t& cfg); extern play_tree_iter_t* playtree_iter; } Modified: mplayerxp/xmpcore/xmp_context.cpp =================================================================== --- mplayerxp/xmpcore/xmp_context.cpp 2012-12-13 11:45:25 UTC (rev 557) +++ mplayerxp/xmpcore/xmp_context.cpp 2012-12-13 13:52:35 UTC (rev 558) @@ -272,17 +272,17 @@ const config_t* mplayer_opts=mplayer_options; } // namespace mpxp -extern void libmpcodecs_ad_register_options(m_config_t* cfg); -extern void libmpcodecs_vd_register_options(m_config_t* cfg); +extern void libmpcodecs_ad_register_options(m_config_t& cfg); +extern void libmpcodecs_vd_register_options(m_config_t& cfg); namespace mpxp { #ifdef HAVE_LIBCDIO -extern void cdda_register_options(m_config_t* cfg); +extern void cdda_register_options(m_config_t& cfg); #endif -extern void mp_input_register_options(m_config_t* cfg); -extern void libmpdemux_register_options(m_config_t* cfg); -extern void demuxer_register_options(m_config_t* cfg); -void mp_register_options(m_config_t* cfg) +extern void mp_input_register_options(m_config_t& cfg); +extern void libmpdemux_register_options(m_config_t& cfg); +extern void demuxer_register_options(m_config_t& cfg); +void mp_register_options(m_config_t& cfg) { mp_input_register_options(cfg); libmpdemux_register_options(cfg); This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <nic...@us...> - 2012-12-14 15:13:48
|
Revision: 561 http://mplayerxp.svn.sourceforge.net/mplayerxp/?rev=561&view=rev Author: nickols_k Date: 2012-12-14 15:13:41 +0000 (Fri, 14 Dec 2012) Log Message: ----------- fixes Modified Paths: -------------- mplayerxp/libao2/ao_sdl.cpp mplayerxp/libvo2/vo_sdl.cpp mplayerxp/xmpcore/xmp_context.cpp Modified: mplayerxp/libao2/ao_sdl.cpp =================================================================== --- mplayerxp/libao2/ao_sdl.cpp 2012-12-14 14:52:33 UTC (rev 560) +++ mplayerxp/libao2/ao_sdl.cpp 2012-12-14 15:13:41 UTC (rev 561) @@ -67,18 +67,19 @@ unsigned buf_write; unsigned buf_read_pos; unsigned buf_write_pos; - unsigned volume; + unsigned* volume; int full_buffers; int buffered_bytes; }; SDL_AO_Interface::SDL_AO_Interface(const std::string& _subdevice) - :AO_Interface(_subdevice) {} + :AO_Interface(_subdevice),volume(new unsigned) {} SDL_AO_Interface::~SDL_AO_Interface() { MSG_V("SDL: Audio Subsystem shutting down!\n"); SDL_CloseAudio(); SDL_QuitSubSystem(SDL_INIT_AUDIO); + delete volume; } int SDL_AO_Interface::write_buffer(const uint8_t* data,int len){ @@ -107,7 +108,7 @@ if(full_buffers==0) break; // no more data buffered! x=std::min(unsigned(len),BUFFSIZE-buf_read_pos); memcpy(data+len2,buffer[buf_read]+buf_read_pos,x); - SDL_MixAudio(data+len2, data+len2, x, volume); + SDL_MixAudio(data+len2, data+len2, x, *volume); len2+=x; len-=x; buffered_bytes-=x; buf_read_pos+=x; if(buf_read_pos>=BUFFSIZE){ @@ -143,15 +144,15 @@ switch (cmd) { case AOCONTROL_GET_VOLUME: { ao_control_vol_t* vol = (ao_control_vol_t*)arg; - vol->left = vol->right = (float)((volume + 127)/2.55); + vol->left = vol->right = (float)((*volume + 127)/2.55); return MPXP_Ok; } case AOCONTROL_SET_VOLUME: { float diff; ao_control_vol_t* vol = (ao_control_vol_t*)arg; diff = (vol->left+vol->right) / 2; -// volume = (int)(diff * 2.55) - 127; -// return MPXP_Ok; + *volume = (int)(diff * 2.55) - 127; + return MPXP_Ok; return MPXP_False; } } @@ -170,7 +171,7 @@ { unsigned i; UNUSED(flags); - volume=127; + *volume=127; /* Allocate ring-priv->buffer memory */ for(i=0;i<NUM_BUFS;i++) buffer[i]=new uint8_t[BUFFSIZE]; Modified: mplayerxp/libvo2/vo_sdl.cpp =================================================================== --- mplayerxp/libvo2/vo_sdl.cpp 2012-12-14 14:52:33 UTC (rev 560) +++ mplayerxp/libvo2/vo_sdl.cpp 2012-12-14 15:13:41 UTC (rev 561) @@ -135,13 +135,12 @@ #endif #include "vo_msg.h" -int sdl_noxv; -int sdl_forcexv; -int sdl_forcegl; - #include <SDL/SDL.h> namespace mpxp { +int sdl_noxv; +int sdl_forcexv; +int sdl_forcegl; #if defined(sun) && defined(__svr4__) /* setenv is missing on solaris */ static void setenv(const char *name, const char *val, int _xx) Modified: mplayerxp/xmpcore/xmp_context.cpp =================================================================== --- mplayerxp/xmpcore/xmp_context.cpp 2012-12-14 14:52:33 UTC (rev 560) +++ mplayerxp/xmpcore/xmp_context.cpp 2012-12-14 15:13:41 UTC (rev 561) @@ -10,6 +10,7 @@ #include "libmpsub/spudec.h" #include "libmpstream2/network.h" +namespace mpxp { #ifdef HAVE_SDL //extern char *sdl_driver; extern int sdl_noxv; @@ -17,8 +18,6 @@ extern int sdl_forcegl; //extern char *sdl_adriver; #endif - -namespace mpxp { extern const char *oss_mixer_device; static const config_t xpcore_config[]={ This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <nic...@us...> - 2012-12-17 07:55:21
|
Revision: 565 http://mplayerxp.svn.sourceforge.net/mplayerxp/?rev=565&view=rev Author: nickols_k Date: 2012-12-17 07:55:13 +0000 (Mon, 17 Dec 2012) Log Message: ----------- convert struct ao_data into class Audio_Output! It seems that without intensive using of references my hacked compiler can produce something workable Modified Paths: -------------- mplayerxp/libao2/audio_out.cpp mplayerxp/libao2/audio_out.h mplayerxp/mplayerxp.cpp mplayerxp/mplayerxp.h mplayerxp/postproc/af.cpp mplayerxp/postproc/af_ao2.cpp mplayerxp/xmpcore/xmp_aplayer.cpp mplayerxp/xmpcore/xmp_vplayer.cpp Modified: mplayerxp/libao2/audio_out.cpp =================================================================== --- mplayerxp/libao2/audio_out.cpp 2012-12-15 17:27:08 UTC (rev 564) +++ mplayerxp/libao2/audio_out.cpp 2012-12-17 07:55:13 UTC (rev 565) @@ -37,7 +37,7 @@ #ifdef HAVE_JACK extern const ao_info_t audio_out_jack; #endif -} // namespace mpxp + static const ao_info_t* audio_out_drivers[] = { #ifdef USE_OSS_AUDIO @@ -69,12 +69,18 @@ NULL }; -typedef struct priv_s { - char antiviral_hole[RND_CHAR5]; - const ao_info_t* info; - AO_Interface* driver; -}priv_t; +struct priv_t : public Opaque { + public: + priv_t() {} + virtual ~priv_t() {} + char antiviral_hole[RND_CHAR5]; + const ao_info_t*info; + AO_Interface* driver; + int muted; + float mute_l,mute_r; +}; + const char * __FASTCALL__ ao_format_name(int format) { switch (format) @@ -176,9 +182,24 @@ return 8; } +Audio_Output::Audio_Output(const char* _subdevice) + :subdevice(mp_strdup(_subdevice)) +{ + priv_t* priv=new(zeromem) priv_t; + opaque=priv; + fill_false_pointers(antiviral_hole,reinterpret_cast<long>(&opaque)-reinterpret_cast<long>(&antiviral_hole)); + priv->driver=NULL; +} -void ao_print_help( void ) +Audio_Output::~Audio_Output() { + priv_t* priv=static_cast<priv_t*>(opaque); + delete priv->driver; + if(subdevice) delete subdevice; + delete priv; +} + +void Audio_Output::print_help() const { unsigned i; MSG_INFO("Available audio output drivers:\n"); i=0; @@ -189,20 +210,19 @@ MSG_INFO("\n"); } -MPXP_Rc __FASTCALL__ ao_register(ao_data_t* ao,const char *driver_name,unsigned flags) -{ - priv_t* priv=reinterpret_cast<priv_t*>(ao->opaque); +MPXP_Rc Audio_Output::_register(const char *driver_name,unsigned flags) const { + priv_t* priv=static_cast<priv_t*>(opaque); unsigned i; if(!driver_name) { priv->info=audio_out_drivers[0]; - priv->driver=audio_out_drivers[0]->query_interface(ao->subdevice); + priv->driver=audio_out_drivers[0]->query_interface(subdevice?subdevice:""); } else for (i=0; audio_out_drivers[i] != &audio_out_null; i++) { const ao_info_t *info = audio_out_drivers[i]; if(strcmp(info->short_name,driver_name) == 0){ priv->info = audio_out_drivers[i]; - priv->driver = audio_out_drivers[i]->query_interface(ao->subdevice?ao->subdevice:""); + priv->driver = audio_out_drivers[i]->query_interface(subdevice?subdevice:""); break; } } @@ -210,225 +230,143 @@ return MPXP_False; } -const ao_info_t* ao_get_info( const ao_data_t* ao ) -{ - priv_t* priv=reinterpret_cast<priv_t*>(ao->opaque); +const ao_info_t* Audio_Output::get_info() const { + priv_t* priv=static_cast<priv_t*>(opaque); return priv->info; } -ao_data_t* __FASTCALL__ ao_init(const char *subdevice) -{ - ao_data_t* ao; - ao=new(zeromem) ao_data_t; - if(subdevice) ao->subdevice=mp_strdup(subdevice); - priv_t* priv=new(zeromem) priv_t; - ao->opaque=priv; - fill_false_pointers(ao->antiviral_hole,offsetof(ao_data_t,opaque)-offsetof(ao_data_t,antiviral_hole)); - priv->driver=NULL; - return ao; +MPXP_Rc Audio_Output::configure(unsigned r,unsigned c,unsigned f) const { + priv_t* priv=static_cast<priv_t*>(opaque); + return priv->driver->configure(r,c,f); } -MPXP_Rc __FASTCALL__ ao_configure(ao_data_t*ao,unsigned rate,unsigned channels,unsigned format) -{ - priv_t* priv=reinterpret_cast<priv_t*>(ao->opaque); - return priv->driver->configure(rate,channels,format); +unsigned Audio_Output::channels() const { + priv_t* priv=static_cast<priv_t*>(opaque); + return priv->driver->channels(); } - -void ao_uninit(ao_data_t*ao) -{ - priv_t* priv=reinterpret_cast<priv_t*>(ao->opaque); - delete priv->driver; - if(ao->subdevice) delete ao->subdevice; - delete priv; - delete ao; - ao=NULL; +unsigned Audio_Output::samplerate() const { + priv_t* priv=static_cast<priv_t*>(opaque); + return priv->driver->samplerate(); } - -unsigned ao_channels(ao_data_t* ao) { - if(ao) { - priv_t* priv=reinterpret_cast<priv_t*>(ao->opaque); - return priv->driver->channels(); - } - return 0; +unsigned Audio_Output::format() const { + priv_t* priv=static_cast<priv_t*>(opaque); + return priv->driver->format(); } -unsigned ao_samplerate(ao_data_t* ao) { - if(ao) { - priv_t* priv=reinterpret_cast<priv_t*>(ao->opaque); - return priv->driver->samplerate(); - } - return 0; -} -unsigned ao_format(ao_data_t* ao) { - if(ao) { - priv_t* priv=reinterpret_cast<priv_t*>(ao->opaque); - return priv->driver->format(); - } - return 0; -} -MPXP_Rc ao_test_channels(ao_data_t* ao,unsigned c) { - if(ao) { - priv_t* priv=reinterpret_cast<priv_t*>(ao->opaque); - return priv->driver->test_channels(c); - } - return MPXP_False; +MPXP_Rc Audio_Output::test_channels(unsigned c) const { + priv_t* priv=static_cast<priv_t*>(opaque); + return priv->driver->test_channels(c); } -MPXP_Rc ao_test_rate(ao_data_t* ao,unsigned s) { - if(ao) { - priv_t* priv=reinterpret_cast<priv_t*>(ao->opaque); - return priv->driver->test_rate(s); - } - return MPXP_False; +MPXP_Rc Audio_Output::test_rate(unsigned s) const { + priv_t* priv=static_cast<priv_t*>(opaque); + return priv->driver->test_rate(s); } -MPXP_Rc ao_test_format(ao_data_t* ao,unsigned f) { - if(ao) { - priv_t* priv=reinterpret_cast<priv_t*>(ao->opaque); - return priv->driver->test_format(f); - } - return MPXP_False; +MPXP_Rc Audio_Output::test_format(unsigned f) const { + priv_t* priv=static_cast<priv_t*>(opaque); + return priv->driver->test_format(f); } -unsigned ao_bps(ao_data_t* ao) { - if(ao) { - priv_t* priv=reinterpret_cast<priv_t*>(ao->opaque); - return priv->driver->channels()* +unsigned Audio_Output::bps() const { + priv_t* priv=static_cast<priv_t*>(opaque); + return priv->driver->channels()* priv->driver->samplerate()* afmt2bps(priv->driver->format()); - } - return 0; } -unsigned ao_buffersize(ao_data_t* ao) { - if(ao) { - priv_t* priv=reinterpret_cast<priv_t*>(ao->opaque); - return priv->driver->buffersize(); - } - return 0; +unsigned Audio_Output::buffersize() const { + priv_t* priv=static_cast<priv_t*>(opaque); + return priv->driver->buffersize(); } -unsigned ao_outburst(ao_data_t* ao) { - if(ao) { - priv_t* priv=reinterpret_cast<priv_t*>(ao->opaque); - return priv->driver->outburst(); - } - return 0; +unsigned Audio_Output::outburst() const { + priv_t* priv=static_cast<priv_t*>(opaque); + return priv->driver->outburst(); } -void ao_reset(ao_data_t*ao) -{ - if(ao) { - priv_t* priv=reinterpret_cast<priv_t*>(ao->opaque); - priv->driver->reset(); - } +void Audio_Output::reset() const { + priv_t* priv=static_cast<priv_t*>(opaque); + priv->driver->reset(); } -unsigned ao_get_space(const ao_data_t*ao) -{ - if(ao) { - priv_t* priv=reinterpret_cast<priv_t*>(ao->opaque); - return priv->driver->get_space(); - } - return 0; +unsigned Audio_Output::get_space() const { + priv_t* priv=static_cast<priv_t*>(opaque); + return priv->driver->get_space(); } -float ao_get_delay(const ao_data_t*ao) -{ - if(ao) { - priv_t* priv=reinterpret_cast<priv_t*>(ao->opaque); - return priv->driver->get_delay(); - } - return 0; +float Audio_Output::get_delay() const { + priv_t* priv=static_cast<priv_t*>(opaque); + return priv->driver->get_delay(); } -unsigned __FASTCALL__ ao_play(ao_data_t*ao,const any_t* data,unsigned len,unsigned flags) -{ - if(ao) { - priv_t* priv=reinterpret_cast<priv_t*>(ao->opaque); - return priv->driver->play(data,len,flags); - } return 0; +unsigned Audio_Output::play(const any_t* data,unsigned len,unsigned flags) const { + priv_t* priv=static_cast<priv_t*>(opaque); + return priv->driver->play(data,len,flags); } -void ao_pause(ao_data_t*ao) -{ - if(ao) { - priv_t* priv=reinterpret_cast<priv_t*>(ao->opaque); - priv->driver->pause(); - } +void Audio_Output::pause() const { + priv_t* priv=static_cast<priv_t*>(opaque); + priv->driver->pause(); } -void ao_resume(ao_data_t*ao) -{ - if(ao) { - priv_t* priv=reinterpret_cast<priv_t*>(ao->opaque); - priv->driver->resume(); - } +void Audio_Output::resume() const { + priv_t* priv=static_cast<priv_t*>(opaque); + priv->driver->resume(); } -MPXP_Rc __FASTCALL__ ao_control(const ao_data_t*ao,int cmd,long arg) -{ - if(ao) { - priv_t* priv=reinterpret_cast<priv_t*>(ao->opaque); - return priv->driver->ctrl(cmd,arg); - } - return MPXP_Error; +MPXP_Rc Audio_Output::ctrl(int cmd,long arg) const { + priv_t* priv=static_cast<priv_t*>(opaque); + return priv->driver->ctrl(cmd,arg); } -void mixer_getvolume(const ao_data_t* ao, float *l,float *r ) -{ - ao_control_vol_t vol; - *l=0; *r=0; - if(MPXP_Ok != ao_control(ao,AOCONTROL_GET_VOLUME,(long)&vol)) return; - *r=vol.right; - *l=vol.left; +void Audio_Output::mixer_getvolume(float *l,float *r) const { + ao_control_vol_t vol; + *l=0; *r=0; + if(MPXP_Ok != ctrl(AOCONTROL_GET_VOLUME,(long)&vol)) return; + *r=vol.right; + *l=vol.left; } -void mixer_setvolume(const ao_data_t* ao,float l,float r ) -{ - ao_control_vol_t vol; - vol.right=r; vol.left=l; - ao_control(ao,AOCONTROL_SET_VOLUME,(long)&vol); +void Audio_Output::mixer_setvolume(float l,float r) const { + ao_control_vol_t vol; + vol.right=r; vol.left=l; + ctrl(AOCONTROL_SET_VOLUME,(long)&vol); } #define MIXER_CHANGE 3 -void mixer_incvolume(const ao_data_t* ao) -{ - float mixer_l, mixer_r; - mixer_getvolume(ao, &mixer_l,&mixer_r ); - mixer_l += MIXER_CHANGE; - if ( mixer_l > 100 ) mixer_l = 100; - mixer_r += MIXER_CHANGE; - if ( mixer_r > 100 ) mixer_r = 100; - mixer_setvolume(ao, mixer_l,mixer_r ); +void Audio_Output::mixer_incvolume() const { + float mixer_l, mixer_r; + mixer_getvolume(&mixer_l,&mixer_r ); + mixer_l += MIXER_CHANGE; + if ( mixer_l > 100 ) mixer_l = 100; + mixer_r += MIXER_CHANGE; + if ( mixer_r > 100 ) mixer_r = 100; + mixer_setvolume(mixer_l,mixer_r ); } -void mixer_decvolume(const ao_data_t* ao) -{ - float mixer_l, mixer_r; - mixer_getvolume(ao, &mixer_l,&mixer_r ); - mixer_l -= MIXER_CHANGE; - if ( mixer_l < 0 ) mixer_l = 0; - mixer_r -= MIXER_CHANGE; - if ( mixer_r < 0 ) mixer_r = 0; - mixer_setvolume(ao, mixer_l,mixer_r ); +void Audio_Output::mixer_decvolume() const { + float mixer_l, mixer_r; + mixer_getvolume(&mixer_l,&mixer_r ); + mixer_l -= MIXER_CHANGE; + if ( mixer_l < 0 ) mixer_l = 0; + mixer_r -= MIXER_CHANGE; + if ( mixer_r < 0 ) mixer_r = 0; + mixer_setvolume(mixer_l,mixer_r); } -float mixer_getbothvolume(const ao_data_t* ao) -{ - float mixer_l, mixer_r; - mixer_getvolume(ao, &mixer_l,&mixer_r ); - return ( mixer_l + mixer_r ) / 2; +float Audio_Output::mixer_getbothvolume() const { + float mixer_l, mixer_r; + mixer_getvolume(&mixer_l,&mixer_r); + return ( mixer_l + mixer_r ) / 2; } -static int muted=0; -static float mute_l,mute_r; -void mixer_mute(const ao_data_t* ao) -{ - if ( muted ) { mixer_setvolume(ao, mute_l,mute_r ); muted=0; } - else - { - mixer_getvolume(ao, &mute_l,&mute_r ); - mixer_setvolume(ao, 0,0 ); - muted=1; - } +void Audio_Output::mixer_mute() const { + priv_t* priv=static_cast<priv_t*>(opaque); + if ( priv->muted ) { mixer_setvolume(priv->mute_l,priv->mute_r ); priv->muted=0; } + else { + mixer_getvolume(&priv->mute_l,&priv->mute_r ); + mixer_setvolume(0,0); + priv->muted=1; + } } +} // namespace mpxp \ No newline at end of file Modified: mplayerxp/libao2/audio_out.h =================================================================== --- mplayerxp/libao2/audio_out.h 2012-12-15 17:27:08 UTC (rev 564) +++ mplayerxp/libao2/audio_out.h 2012-12-17 07:55:13 UTC (rev 565) @@ -16,64 +16,62 @@ const char *comment;/**< any additional comments */ AO_Interface* (*query_interface)(const std::string& subdevice); }; -} -/** Global data used by mplayerxp and plugins */ -struct ao_data_t -{ - char* subdevice; - char antiviral_hole[RND_CHAR2]; - any_t* opaque; /**< for internal use */ - any_t* priv; - float pts; /**< PTS of audio buffer */ -}; + enum { + AOCONTROL_GET_VOLUME=1, /**< Query volume level */ + AOCONTROL_SET_VOLUME /**< Sets new volume level */ + }; -enum { - AOCONTROL_GET_VOLUME=1, /**< Query volume level */ - AOCONTROL_SET_VOLUME /**< Sets new volume level */ -}; + struct ao_control_vol_t { + float left; + float right; + }; -struct ao_control_vol_t { - float left; - float right; -}; + /** Global data used by mplayerxp and plugins */ + struct Audio_Output : public Opaque { + public: + Audio_Output(const char* subdevice); + virtual ~Audio_Output(); -/* prototypes */ -extern const char * __FASTCALL__ ao_format_name(int format); -extern int __FASTCALL__ ao_format_bits(int format); + virtual void print_help() const; + virtual MPXP_Rc _register(const char *driver_name,unsigned flags) const; + virtual const ao_info_t* get_info() const; + virtual MPXP_Rc configure(unsigned rate,unsigned channels,unsigned format) const; + virtual unsigned buffersize() const; + virtual unsigned outburst() const; + virtual unsigned channels() const; + virtual unsigned samplerate() const; + virtual unsigned format() const; + virtual unsigned bps() const; + virtual MPXP_Rc test_channels(unsigned c) const; + virtual MPXP_Rc test_rate(unsigned s) const; + virtual MPXP_Rc test_format(unsigned f) const; -extern void ao_print_help( void ); -extern MPXP_Rc __FASTCALL__ ao_register(ao_data_t* ao,const char *driver_name,unsigned flags); -extern const ao_info_t* ao_get_info( const ao_data_t* ao ); -extern ao_data_t* __FASTCALL__ ao_init(const char *subdevice); -extern MPXP_Rc __FASTCALL__ ao_configure(ao_data_t* priv,unsigned rate,unsigned channels,unsigned format); -extern void __FASTCALL__ ao_uninit(ao_data_t* priv); -extern unsigned __FASTCALL__ ao_buffersize(ao_data_t* priv); -extern unsigned __FASTCALL__ ao_outburst(ao_data_t* priv); -extern unsigned __FASTCALL__ ao_channels(ao_data_t* priv); -extern unsigned __FASTCALL__ ao_samplerate(ao_data_t* priv); -extern unsigned __FASTCALL__ ao_format(ao_data_t* priv); -extern unsigned __FASTCALL__ ao_bps(ao_data_t* priv); -extern MPXP_Rc __FASTCALL__ ao_test_channels(ao_data_t* priv,unsigned c); -extern MPXP_Rc __FASTCALL__ ao_test_rate(ao_data_t* priv,unsigned s); -extern MPXP_Rc __FASTCALL__ ao_test_format(ao_data_t* priv,unsigned f); + virtual void reset() const; + virtual unsigned get_space() const; + virtual unsigned play(const any_t* data,unsigned len,unsigned flags) const; + virtual float get_delay() const; + virtual void pause() const; + virtual void resume() const; + virtual MPXP_Rc ctrl(int cmd,long arg) const; -extern void __FASTCALL__ ao_reset(ao_data_t* priv); -extern unsigned __FASTCALL__ ao_get_space(const ao_data_t* priv); -extern unsigned __FASTCALL__ ao_play(ao_data_t* priv,const any_t* data,unsigned len,unsigned flags); -extern float __FASTCALL__ ao_get_delay(const ao_data_t* priv); -extern void __FASTCALL__ ao_pause(ao_data_t* priv); -extern void __FASTCALL__ ao_resume(ao_data_t* priv); -extern MPXP_Rc __FASTCALL__ ao_control(const ao_data_t* priv,int cmd,long arg); + virtual void mixer_getvolume(float *l,float *r ) const; + virtual void mixer_setvolume(float l,float r ) const; + virtual void mixer_incvolume() const; + virtual void mixer_decvolume() const; + virtual float mixer_getbothvolume() const; + void mixer_mute() const; + //virtual void mixer_setbothvolume( int v ); + inline void mixer_setbothvolume(float v) const { mixer_setvolume(v,v); } -extern void mixer_getvolume(const ao_data_t* ao,float *l,float *r ); -extern void mixer_setvolume(const ao_data_t* ao,float l,float r ); -extern void mixer_incvolume(const ao_data_t* ao); -extern void mixer_decvolume(const ao_data_t* ao); -extern float mixer_getbothvolume(const ao_data_t* ao); -void mixer_mute(const ao_data_t* ao); - -//extern void mixer_setbothvolume( int v ); -static inline void mixer_setbothvolume(const ao_data_t* ao, float v ) { mixer_setvolume(ao,v,v); } - + char* subdevice; + float pts; /**< PTS of audio buffer */ + private: + char antiviral_hole[RND_CHAR2]; + any_t* opaque; /**< for internal use */ + }; + /* prototypes */ + extern const char * __FASTCALL__ ao_format_name(int format); + extern int __FASTCALL__ ao_format_bits(int format); +} // namespace mpxp #endif Modified: mplayerxp/mplayerxp.cpp =================================================================== --- mplayerxp/mplayerxp.cpp 2012-12-15 17:27:08 UTC (rev 564) +++ mplayerxp/mplayerxp.cpp 2012-12-17 07:55:13 UTC (rev 565) @@ -356,7 +356,7 @@ if(mask&INITED_AO){ inited_flags&=~INITED_AO; MP_UNIT("uninit_ao"); - ao_uninit(mpxp_context().audio().output); + delete mpxp_context().audio().output; mpxp_context().audio().output=NULL; } @@ -543,7 +543,7 @@ exit(0); } if(mp_conf.audio_driver && strcmp(mp_conf.audio_driver,"help")==0) { - ao_print_help(); + mpxp_context().audio().output->print_help(); mpxp_uninit_structs(); exit(0); } @@ -608,7 +608,7 @@ mp_input_print_binds(MPXPSys.libinput()); Stream::print_drivers(); mpxp_context().video().output->print_help(); - ao_print_help(); + mpxp_context().audio().output->print_help(); vf_help(); af_help(); vfm_help(); @@ -705,7 +705,7 @@ if(sh_audio){ MP_UNIT("seek_audio_reset"); mpca_resync_stream(mpxp_context().audio().decoder); - ao_reset(mpxp_context().audio().output); // stop audio, throwing away buffered data + mpxp_context().audio().output->reset(); // stop audio, throwing away buffered data } if (mpxp_context().video().output->vobsub) { @@ -801,12 +801,12 @@ sh_audio_t* sh_audio=reinterpret_cast<sh_audio_t*>(MPXPSys.demuxer()->audio->sh); if(xmp_test_model(XMP_Run_AudioPlayback)) MSG_STATUS("A:%6.1f %4.1f%%\r" - ,sh_audio->timer-ao_get_delay(mpxp_context().audio().output) + ,sh_audio->timer-mpxp_context().audio().output->get_delay() ,(sh_audio->timer>0.5)?100.0*(mpxp_context().bench->audio+mpxp_context().bench->audio_decode)/(double)sh_audio->timer:0 ); else MSG_STATUS("A:%6.1f %4.1f%% B:%4.1f\r" - ,sh_audio->timer-ao_get_delay(mpxp_context().audio().output) + ,sh_audio->timer-mpxp_context().audio().output->get_delay() ,(sh_audio->timer>0.5)?100.0*(mpxp_context().bench->audio+mpxp_context().bench->audio_decode)/(double)sh_audio->timer:0 ,get_delay_audio_buffer() ); @@ -1128,13 +1128,13 @@ d_audio->sh=NULL; sh_audio=reinterpret_cast<sh_audio_t*>(d_audio->sh); } else { - if(!(mpxp_context().audio().output=ao_init(ao_subdevice))) { + if(!(mpxp_context().audio().output=new(zeromem) Audio_Output(ao_subdevice?ao_subdevice:""))) { MSG_ERR(MSGTR_CannotInitAO); d_audio->sh=NULL; sh_audio=reinterpret_cast<sh_audio_t*>(d_audio->sh); } if(ao_subdevice) delete ao_subdevice; - ao_inited=ao_register(mpxp_context().audio().output,mp_conf.audio_driver,0); + ao_inited=mpxp_context().audio().output->_register(mp_conf.audio_driver?mp_conf.audio_driver:"",0); if (ao_inited!=MPXP_Ok){ MSG_FATAL(MSGTR_InvalidAOdriver,mp_conf.audio_driver); exit_player(MSGTR_Exit_error); @@ -1203,7 +1203,7 @@ sh_video_t* sh_video=reinterpret_cast<sh_video_t*>(_demuxer->video->sh); Demuxer_Stream *d_audio=_demuxer->audio; int rc=0; - const ao_info_t *info=ao_get_info(mpxp_context().audio().output); + const ao_info_t *info=mpxp_context().audio().output->get_info(); MP_UNIT("setup_audio"); MSG_V("AO: [%s] %iHz %s %s\n", info->short_name, @@ -1242,7 +1242,7 @@ ,sh_audio->audio_out_minsize); } - if(MPXP_Ok!=ao_configure(mpxp_context().audio().output, + if(MPXP_Ok!=mpxp_context().audio().output->configure( samplerate, channels, format)) { @@ -1256,8 +1256,11 @@ if(mpca_init_filters(mpxp_context().audio().decoder, sh_audio->rate, sh_audio->nch, mpaf_format_e(sh_audio->afmt), - ao_samplerate(mpxp_context().audio().output), ao_channels(mpxp_context().audio().output), mpaf_format_e(ao_format(mpxp_context().audio().output)), - ao_outburst(mpxp_context().audio().output)*4, ao_buffersize(mpxp_context().audio().output))!=MPXP_Ok) { + mpxp_context().audio().output->samplerate(), + mpxp_context().audio().output->channels(), + mpaf_format_e(mpxp_context().audio().output->format()), + mpxp_context().audio().output->outburst()*4, + mpxp_context().audio().output->buffersize())!=MPXP_Ok) { MSG_ERR("No matching audio filter found!\n"); } } @@ -1289,7 +1292,7 @@ unsigned ipts,rpts; unsigned char h,m,s,rh,rm,rs; static char ph=0,pm=0,ps=0; - ipts=(unsigned)(sh_audio->timer-ao_get_delay(mpxp_context().audio().output)); + ipts=(unsigned)(sh_audio->timer-mpxp_context().audio().output->get_delay()); rpts=_demuxer->movi_length-ipts; h = ipts/3600; m = (ipts/60)%60; @@ -1348,7 +1351,7 @@ mpxp_context().engine().xp_core->in_pause=1; while( !dec_ahead_can_aseek ) yield_timeslice(); } - ao_pause(mpxp_context().audio().output); // pause audio, keep data if possible + mpxp_context().audio().output->pause(); // pause audio, keep data if possible } while( (cmd = mp_input_get_cmd(_libinput,20,1,1)) == NULL) { @@ -1363,7 +1366,7 @@ if(osd_function==OSD_PAUSE) osd_function=OSD_PLAY; if (ao_inited==MPXP_Ok && sh_audio) { - ao_resume(mpxp_context().audio().output); // resume audio + mpxp_context().audio().output->resume(); // resume audio if(xmp_test_model(XMP_Run_AudioPlayer)) { mpxp_context().engine().xp_core->in_pause=0; __MP_SYNCHRONIZE(audio_play_mutex,pthread_cond_signal(&audio_play_cond)); @@ -1463,17 +1466,17 @@ } break; case MP_CMD_MUTE: - mixer_mute(mpxp_context().audio().output); + mpxp_context().audio().output->mixer_mute(); break; case MP_CMD_VOLUME : { int v = cmd->args[0].v.i; - if(v > 0) mixer_incvolume(mpxp_context().audio().output); - else mixer_decvolume(mpxp_context().audio().output); + if(v > 0) mpxp_context().audio().output->mixer_incvolume(); + else mpxp_context().audio().output->mixer_decvolume(); #ifdef USE_OSD if(mp_conf.osd_level){ osd->visible=sh_video->fps; // 1 sec mpxp_context().video().output->osd_progbar_type=OSD_VOLUME; - mpxp_context().video().output->osd_progbar_value=(mixer_getbothvolume(mpxp_context().audio().output)*256.0)/100.0; + mpxp_context().video().output->osd_progbar_value=(mpxp_context().audio().output->mixer_getbothvolume()*256.0)/100.0; vo_osd_changed(OSDTYPE_PROGBAR); } #endif Modified: mplayerxp/mplayerxp.h =================================================================== --- mplayerxp/mplayerxp.h 2012-12-15 17:27:08 UTC (rev 564) +++ mplayerxp/mplayerxp.h 2012-12-17 07:55:13 UTC (rev 565) @@ -157,7 +157,7 @@ struct audio_processing_t { audio_decoder_t* decoder; - ao_data_t* output; + Audio_Output* output; }; struct video_processing_t { Modified: mplayerxp/postproc/af.cpp =================================================================== --- mplayerxp/postproc/af.cpp 2012-12-15 17:27:08 UTC (rev 564) +++ mplayerxp/postproc/af.cpp 2012-12-17 07:55:13 UTC (rev 565) @@ -576,7 +576,7 @@ { af_instance_t* filt = s?s->first:NULL; const char *filt_name=filt?filt->info->name:"ao2"; - if(strcmp(filt_name,"ao2")==0) return ao_test_format(mpxp_context().audio().output,mpaf2afmt(fmt)); + if(strcmp(filt_name,"ao2")==0) return mpxp_context().audio().output->test_format(mpaf2afmt(fmt)); else if(afmt2mpaf(fmt)==filt->conf.format) return MPXP_True; return MPXP_False; } @@ -585,7 +585,7 @@ { af_instance_t* filt = s?s->first:NULL; const char *filt_name=filt?filt->info->name:"ao2"; - if(strcmp(filt_name,"ao2")==0) return ao_test_rate(mpxp_context().audio().output,rate); + if(strcmp(filt_name,"ao2")==0) return mpxp_context().audio().output->test_rate(rate); else if(rate==filt->conf.rate) return MPXP_True; return MPXP_False; } @@ -594,7 +594,7 @@ { af_instance_t* filt = s?s->first:NULL; const char *filt_name=filt?filt->info->name:"ao2"; - if(strcmp(filt_name,"ao2")==0) return ao_test_channels(mpxp_context().audio().output,nch); + if(strcmp(filt_name,"ao2")==0) return mpxp_context().audio().output->test_channels(nch); else if(nch==filt->conf.nch) return MPXP_True; return MPXP_False; } Modified: mplayerxp/postproc/af_ao2.cpp =================================================================== --- mplayerxp/postproc/af_ao2.cpp 2012-12-15 17:27:08 UTC (rev 564) +++ mplayerxp/postproc/af_ao2.cpp 2012-12-17 07:55:13 UTC (rev 565) @@ -20,23 +20,23 @@ { unsigned i,ii; MPXP_Rc rval; - rval=ao_test_rate(mpxp_context().audio().output,irate); + rval=mpxp_context().audio().output->test_rate(irate); if(rval == MPXP_True) return irate; for(i=0;i<sizeof(rates)/sizeof(unsigned)-1;i++) { if(irate >= rates[i] && irate < rates[i+1]) break; } ii=i; for(;i<sizeof(rates)/sizeof(unsigned);i++) { - rval=ao_test_rate(mpxp_context().audio().output,rates[i]); + rval=mpxp_context().audio().output->test_rate(rates[i]); if(rval == MPXP_True) return rates[i]; } i=ii; for(;i<sizeof(rates)/sizeof(unsigned);i--) { - rval=ao_test_rate(mpxp_context().audio().output,rates[i]); + rval=mpxp_context().audio().output->test_rate(rates[i]); if(rval == MPXP_True) return rates[i]; } for(i=0;i<sizeof(rates)/sizeof(unsigned);i++) { - rval=ao_test_rate(mpxp_context().audio().output,rates[i]); + rval=mpxp_context().audio().output->test_rate(rates[i]); if(rval == MPXP_True) return rates[i]; } return 44100; @@ -46,14 +46,14 @@ { unsigned i; MPXP_Rc rval; - rval=ao_test_channels(mpxp_context().audio().output,ich); + rval=mpxp_context().audio().output->test_channels(ich); if(rval == MPXP_True) return ich; for(i=ich>1?ich:1;i<AF_NCH;i++) { - rval=ao_test_channels(mpxp_context().audio().output,i); + rval=mpxp_context().audio().output->test_channels(i); if(rval == MPXP_True) return i; } for(i=1;i<AF_NCH;i++) { - rval=ao_test_channels(mpxp_context().audio().output,i); + rval=mpxp_context().audio().output->test_channels(i); if(rval == MPXP_True) return i; } return 2; @@ -87,7 +87,7 @@ { unsigned i,j,idx; MPXP_Rc rval; - rval=ao_test_format(mpxp_context().audio().output,ifmt); + rval=mpxp_context().audio().output->test_format(ifmt); if(rval == MPXP_True) return ifmt; idx=-1; for(i=0;i<sizeof(cvt_list)/sizeof(fmt_cvt_t);i++) { @@ -97,7 +97,7 @@ i=idx; for(j=0;j<20;j++) { if(cvt_list[i].cvt_fourcc[j]==0) break; - rval=ao_test_format(mpxp_context().audio().output,cvt_list[i].cvt_fourcc[j]); + rval=mpxp_context().audio().output->test_format(cvt_list[i].cvt_fourcc[j]); if(rval == MPXP_True) return cvt_list[i].cvt_fourcc[j]; } return AFMT_S16_LE; @@ -128,7 +128,7 @@ switch(cmd){ case AF_CONTROL_SHOWCONF: { char sbuf[256]; - const ao_info_t*info=ao_get_info(mpxp_context().audio().output); + const ao_info_t*info=mpxp_context().audio().output->get_info(); MSG_INFO("AO-CONF: [%s] %uHz nch=%u %s (%3.1f-kbit)\n" ,info->short_name,s->rate,s->nch,mpaf_fmt2str(s->format,sbuf,sizeof(sbuf)) ,(s->rate*s->nch*(s->format&MPAF_BPS_MASK)*8)*0.001f); Modified: mplayerxp/xmpcore/xmp_aplayer.cpp =================================================================== --- mplayerxp/xmpcore/xmp_aplayer.cpp 2012-12-15 17:27:08 UTC (rev 564) +++ mplayerxp/xmpcore/xmp_aplayer.cpp 2012-12-17 07:55:13 UTC (rev 565) @@ -46,7 +46,7 @@ int ret=0; mpxp_context().audio().output->pts=sh_audio->timer*90000.0; - playsize=ao_get_space(mpxp_context().audio().output); + playsize=mpxp_context().audio().output->get_space(); if(!playsize) { if(sh_video) @@ -88,9 +88,9 @@ } if(playsize>sh_audio->a_buffer_len) playsize=sh_audio->a_buffer_len; - if(xmp_test_model(XMP_Run_AudioPlayer)) dec_ahead_audio_delay=ao_get_delay(mpxp_context().audio().output); + if(xmp_test_model(XMP_Run_AudioPlayer)) dec_ahead_audio_delay=mpxp_context().audio().output->get_delay(); - playsize=ao_play(mpxp_context().audio().output,sh_audio->a_buffer,playsize,0); + playsize=mpxp_context().audio().output->play(sh_audio->a_buffer,playsize,0); if(playsize>0){ sh_audio->a_buffer_len-=playsize; @@ -100,7 +100,7 @@ if(mpxp_context().use_pts_fix2) { if(sh_audio->a_pts != HUGE) { sh_audio->a_pts_pos-=playsize; - if(sh_audio->a_pts_pos > -ao_get_delay(mpxp_context().audio().output)*sh_audio->af_bps) { + if(sh_audio->a_pts_pos > mpxp_context().audio().output->get_delay()*sh_audio->af_bps) { sh_audio->timer+=playsize/(float)(sh_audio->af_bps); } else { sh_audio->timer=sh_audio->a_pts-(float)sh_audio->a_pts_pos/(float)sh_audio->af_bps; @@ -143,7 +143,7 @@ int eof = 0; struct timeval now; float d; - const float MAX_AUDIO_TIME = (float)ao_get_space(mpxp_context().audio().output) / sh_audio->af_bps + ao_get_delay(mpxp_context().audio().output); + const float MAX_AUDIO_TIME = (float)mpxp_context().audio().output->get_space() / sh_audio->af_bps + mpxp_context().audio().output->get_delay(); float min_audio_time = MAX_AUDIO_TIME; float min_audio, max_audio; int samples, collect_samples; @@ -231,7 +231,7 @@ } LOCK_AUDIO_PLAY(); - d = ao_get_delay(mpxp_context().audio().output) - min_audio_time; + d = mpxp_context().audio().output->get_delay() - min_audio_time; if( d > 0 ) { gettimeofday(&now,NULL); audio_play_timeout.tv_nsec = now.tv_usec * 1000 + d*1000000000l; Modified: mplayerxp/xmpcore/xmp_vplayer.cpp =================================================================== --- mplayerxp/xmpcore/xmp_vplayer.cpp 2012-12-15 17:27:08 UTC (rev 564) +++ mplayerxp/xmpcore/xmp_vplayer.cpp 2012-12-17 07:55:13 UTC (rev 565) @@ -41,8 +41,8 @@ } static void show_status_line_no_apts(sh_audio_t* sh_audio,float v_pts) { - if(mp_conf.av_sync_pts && sh_audio && (!mpxp_context().engine().xp_core->audio->eof || ao_get_delay(mpxp_context().audio().output))) { - float a_pts = sh_audio->timer-ao_get_delay(mpxp_context().audio().output); + if(mp_conf.av_sync_pts && sh_audio && (!mpxp_context().engine().xp_core->audio->eof || mpxp_context().audio().output->get_delay())) { + float a_pts = sh_audio->timer-mpxp_context().audio().output->get_delay(); MSG_STATUS("A:%6.1f V:%6.1f A-V:%7.3f ct:%7.3f %3d/%3d %2d%% %2d%% %4.1f%% %d\r" ,a_pts ,v_pts @@ -70,7 +70,7 @@ { if(mpxp_context().use_pts_fix2 && sh_audio) { if(sh_video->chapter_change == -1) { /* First frame after seek */ - while(v_pts < 1.0 && sh_audio->timer==0.0 && ao_get_delay(mpxp_context().audio().output)==0.0) + while(v_pts < 1.0 && sh_audio->timer==0.0 && mpxp_context().audio().output->get_delay()==0.0) yield_timeslice(); /* Wait for audio to start play */ if(sh_audio->timer > 2.0 && v_pts < 1.0) { MSG_V("Video chapter change detected\n"); @@ -97,9 +97,9 @@ /* FIXME!!! need the same technique to detect mpxp_context().engine().xp_core->audio->eof as for video_eof! often ao_get_delay() never returns 0 :( */ if(mpxp_context().engine().xp_core->audio->eof && !get_delay_audio_buffer()) goto nosound_model; - if((!mpxp_context().engine().xp_core->audio->eof || ao_get_delay(mpxp_context().audio().output)) && + if((!mpxp_context().engine().xp_core->audio->eof || mpxp_context().audio().output->get_delay()) && (!mpxp_context().use_pts_fix2 || (!sh_audio->chapter_change && !sh_video->chapter_change))) - sleep_time=screen_pts-((sh_audio->timer-ao_get_delay(mpxp_context().audio().output)) + sleep_time=screen_pts-((sh_audio->timer-mpxp_context().audio().output->get_delay()) +(mp_conf.av_sync_pts?0:mpxp_context().engine().xp_core->initial_apts)); else if(mpxp_context().use_pts_fix2 && sh_audio->chapter_change) sleep_time=0; @@ -118,11 +118,11 @@ #define XP_MIN_AUDIOBUFF 0.05 #define XP_MAX_TIMESLICE 0.1 if(!mpxp_context().engine().xp_core->audio) sh_audio=NULL; - if(sh_audio && (!mpxp_context().engine().xp_core->audio->eof || ao_get_delay(mpxp_context().audio().output)) && sleep_time>XP_MAX_TIMESLICE) { + if(sh_audio && (!mpxp_context().engine().xp_core->audio->eof || mpxp_context().audio().output->get_delay()) && sleep_time>XP_MAX_TIMESLICE) { float t; if(xmp_test_model(XMP_Run_AudioPlayback)) { - t=ao_get_delay(mpxp_context().audio().output)-XP_MIN_AUDIOBUFF; + t=mpxp_context().audio().output->get_delay()-XP_MIN_AUDIOBUFF; if(t>XP_MAX_TIMESLICE) t=XP_MAX_TIMESLICE; } else @@ -233,11 +233,11 @@ like playing 48KHz audio on 44.1KHz soundcard and other. Now we know PTS of every audio frame so don't need to have it */ if(!mpxp_context().engine().xp_core->audio) sh_audio=NULL; - if(sh_audio && (!mpxp_context().engine().xp_core->audio->eof || ao_get_delay(mpxp_context().audio().output)) && !mp_conf.av_sync_pts) { + if(sh_audio && (!mpxp_context().engine().xp_core->audio->eof || mpxp_context().audio().output->get_delay()) && !mp_conf.av_sync_pts) { float a_pts=0; // unplayed bytes in our and soundcard/dma buffer: - float delay=ao_get_delay(mpxp_context().audio().output)+(float)sh_audio->a_buffer_len/(float)sh_audio->af_bps; + float delay=mpxp_context().audio().output->get_delay()+(float)sh_audio->a_buffer_len/(float)sh_audio->af_bps; if(xmp_test_model(XMP_Run_AudioPlayer)) delay += get_delay_audio_buffer(); This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |