[Mplayerxp-cvslog] SF.net SVN: mplayerxp:[656] mplayerxp
Brought to you by:
olov
|
From: <nic...@us...> - 2013-06-20 09:16:35
|
Revision: 656
http://sourceforge.net/p/mplayerxp/code/656
Author: nickols_k
Date: 2013-06-20 09:16:33 +0000 (Thu, 20 Jun 2013)
Log Message:
-----------
sync with beye
Modified Paths:
--------------
mplayerxp/dump.cpp
mplayerxp/libmpdemux/demux_aiff.cpp
mplayerxp/libmpdemux/demux_asf.cpp
mplayerxp/libmpdemux/demux_avi.cpp
mplayerxp/libmpdemux/demux_mpxp64.cpp
mplayerxp/libmpstream2/cache2.cpp
mplayerxp/xmpcore/binary_packet.cpp
mplayerxp/xmpcore/binary_packet.h
Modified: mplayerxp/dump.cpp
===================================================================
--- mplayerxp/dump.cpp 2013-06-14 21:51:03 UTC (rev 655)
+++ mplayerxp/dump.cpp 2013-06-20 09:16:33 UTC (rev 656)
@@ -66,7 +66,7 @@
mpxp_info<<"Dumping stream to "<<name<<std::endl;
while(!stream->eof()){
binary_packet bp=stream->read(4096);
- if(bp.size()>0) f.write(bp.cdata(),bp.size());
+ if(bp.size()>0) f<<bp;
}
f.close();
mpxp_info<<MSGTR_StreamDumped<<std::endl;
Modified: mplayerxp/libmpdemux/demux_aiff.cpp
===================================================================
--- mplayerxp/libmpdemux/demux_aiff.cpp 2013-06-14 21:51:03 UTC (rev 655)
+++ mplayerxp/libmpdemux/demux_aiff.cpp 2013-06-20 09:16:33 UTC (rev 656)
@@ -147,7 +147,7 @@
bp=s->read(chunk_size);
bp.resize(bp.size()+1);
bp[chunk_size]=0;
- demuxer->info().add(INFOT_NAME, bp.cdata());
+ demuxer->info().add(INFOT_NAME, (const char*)bp.data());
if(priv->verc && (chunk_size&1)) s->read(type_byte);
}
else
@@ -156,7 +156,7 @@
bp=s->read(chunk_size);
bp.resize(bp.size()+1);
bp[chunk_size]=0;
- demuxer->info().add(INFOT_AUTHOR, bp.cdata());
+ demuxer->info().add(INFOT_AUTHOR, (const char*)bp.data());
if(priv->verc && (chunk_size&1)) s->read(type_byte);
}
else
@@ -165,7 +165,7 @@
bp=s->read(chunk_size);
bp.resize(bp.size()+1);
bp[chunk_size]=0;
- demuxer->info().add(INFOT_COPYRIGHT, bp.cdata());
+ demuxer->info().add(INFOT_COPYRIGHT, (const char*)bp.data());
if(priv->verc && (chunk_size&1)) s->read(type_byte);
}
else
@@ -174,7 +174,7 @@
bp=s->read(chunk_size);
bp.resize(bp.size()+1);
bp[chunk_size]=0;
- demuxer->info().add(INFOT_DESCRIPTION, bp.cdata());
+ demuxer->info().add(INFOT_DESCRIPTION,(const char*)bp.data());
if(priv->verc && (chunk_size&1)) s->read(type_byte);
}
else
Modified: mplayerxp/libmpdemux/demux_asf.cpp
===================================================================
--- mplayerxp/libmpdemux/demux_asf.cpp 2013-06-14 21:51:03 UTC (rev 655)
+++ mplayerxp/libmpdemux/demux_asf.cpp 2013-06-20 09:16:33 UTC (rev 656)
@@ -64,13 +64,14 @@
};
// the variable string is modify in this function
-void pack_asf_string(char* string, int length) {
- int i,j;
- if( string==NULL ) return;
- for( i=0, j=0; i<length && string[i]!='\0'; i+=2, j++) {
- string[j]=string[i];
- }
- string[j]='\0';
+std::string pack_asf_string(const char* string, size_t length) {
+ std::string rc;
+ size_t i;
+ if( string==NULL ) return rc;
+ for( i=0; i<length && string[i]!='\0'; i+=2) {
+ rc.append(1,string[i]);
+ }
+ return rc;
}
// the variable string is modify in this function
@@ -253,32 +254,27 @@
// extract the title
if( apriv->contenth.title_size!=0 ) {
bp=demuxer->stream->read(apriv->contenth.title_size);
- pack_asf_string(bp.cdata(), bp.size());
- demuxer->info().add(INFOT_NAME, bp.cdata());
+ demuxer->info().add(INFOT_NAME, pack_asf_string((const char*)bp.data(), bp.size()).c_str());
}
// extract the author
if( apriv->contenth.author_size!=0 ) {
bp=demuxer->stream->read(apriv->contenth.author_size);
- pack_asf_string(bp.cdata(),bp.size());
- demuxer->info().add(INFOT_AUTHOR, bp.cdata());
+ demuxer->info().add(INFOT_AUTHOR, pack_asf_string((const char*)bp.data(), bp.size()).c_str());
}
// extract the copyright
if( apriv->contenth.copyright_size!=0 ) {
bp=demuxer->stream->read(apriv->contenth.copyright_size);
- pack_asf_string(bp.cdata(), bp.size());
- demuxer->info().add(INFOT_COPYRIGHT, bp.cdata());
+ demuxer->info().add(INFOT_COPYRIGHT, pack_asf_string((const char*)bp.data(), bp.size()).c_str());
}
// extract the comment
if( apriv->contenth.comment_size!=0 ) {
bp=demuxer->stream->read(apriv->contenth.comment_size);
- pack_asf_string(bp.cdata(), bp.size());
- demuxer->info().add(INFOT_COMMENTS, bp.cdata());
+ demuxer->info().add(INFOT_COMMENTS, pack_asf_string((const char*)bp.data(), bp.size()).c_str());
}
// extract the rating
if( apriv->contenth.rating_size!=0 ) {
bp=demuxer->stream->read(apriv->contenth.rating_size);
- pack_asf_string(bp.cdata(), bp.size());
- demuxer->info().add(INFOT_RATING, bp.cdata());
+ demuxer->info().add(INFOT_RATING, pack_asf_string((const char*)bp.data(), bp.size()).c_str());
}
MSG_V("\n");
break;
@@ -286,12 +282,13 @@
case ASF_GUID_PREFIX_stream_group: {
uint16_t stream_id, i;
uint32_t max_bitrate;
- char *object=NULL, *ptr=NULL;
+ char *object=NULL;
+ const char *ptr=NULL;
MSG_V("============ ASF Stream group == START ===\n");
MSG_V(" object size = %d\n", (int)apriv->objh.size);
bp=demuxer->stream->read(apriv->objh.size );
// FIXME: We need some endian handling below...
- ptr = bp.cdata();
+ ptr = (const char*)bp.data();
stream_count = le2me_16(*(uint16_t*)ptr);
ptr += sizeof(uint16_t);
if(stream_count > 0) streams = new uint32_t[2*stream_count];
Modified: mplayerxp/libmpdemux/demux_avi.cpp
===================================================================
--- mplayerxp/libmpdemux/demux_avi.cpp 2013-06-14 21:51:03 UTC (rev 655)
+++ mplayerxp/libmpdemux/demux_avi.cpp 2013-06-20 09:16:33 UTC (rev 656)
@@ -482,9 +482,9 @@
chunksize-=len;
bp.resize(bp.size()+1);
bp.cdata()[len]=0;
- MSG_V("%-10s: %s\n",hdr,bp.cdata());
- if(infot!=-1) demuxer->info().add(infot, bp.cdata());
- else MSG_V(" %s: %s\n",hdr,bp.cdata());
+ MSG_V("%-10s: %s\n",hdr,(const char*)bp.data());
+ if(infot!=-1) demuxer->info().add(infot, (const char*)bp.data());
+ else MSG_V(" %s: %s\n",hdr,(const char*)bp.data());
}
}
MSG_DBG2("list_end=0x%X pos=0x%X chunksize=0x%X next=0x%X\n",
Modified: mplayerxp/libmpdemux/demux_mpxp64.cpp
===================================================================
--- mplayerxp/libmpdemux/demux_mpxp64.cpp 2013-06-14 21:51:03 UTC (rev 655)
+++ mplayerxp/libmpdemux/demux_mpxp64.cpp 2013-06-20 09:16:33 UTC (rev 656)
@@ -411,7 +411,7 @@
{
binary_packet bp=s->read(len);
sub_data.cp=nls_get_screen_cp(mpxp_get_environment());
- demuxer->info().add(infot,nls_recode2screen_cp(codepage,bp.cdata(),bp.size()));
+ demuxer->info().add(infot,nls_recode2screen_cp(codepage,(const char*)bp.data(),bp.size()));
}
else s->skip(len);
}
Modified: mplayerxp/libmpstream2/cache2.cpp
===================================================================
--- mplayerxp/libmpstream2/cache2.cpp 2013-06-14 21:51:03 UTC (rev 655)
+++ mplayerxp/libmpstream2/cache2.cpp 2013-06-20 09:16:33 UTC (rev 656)
@@ -402,7 +402,7 @@
static binary_packet __FASTCALL__ c2_stream_read(cache_vars_t* c,size_t total){
binary_packet rc(total);
int len=total,eof,mlen;
- char *mem=rc.cdata();
+ uint8_t *mem=rc.cdata();
unsigned buf_pos;
unsigned cur,i,npackets;
Modified: mplayerxp/xmpcore/binary_packet.cpp
===================================================================
--- mplayerxp/xmpcore/binary_packet.cpp 2013-06-14 21:51:03 UTC (rev 655)
+++ mplayerxp/xmpcore/binary_packet.cpp 2013-06-20 09:16:33 UTC (rev 656)
@@ -1,9 +1,9 @@
#include "mpxp_config.h"
#include "osdep/mplib.h"
using namespace usr;
-#include <stdexcept>
+#include <stdint.h>
+#include <stdlib.h>
#include <string.h>
-
#include "binary_packet.h"
namespace usr {
@@ -20,7 +20,7 @@
{
if(from.len) {
buffer=new char[from.len];
- ::memcpy(buffer,from.buffer,len);
+ memcpy(buffer,from.buffer,len);
}
}
@@ -30,7 +30,7 @@
{
if(sz) {
buffer=new char[sz];
- ::memcpy(buffer,src,sz);
+ memcpy(buffer,src,sz);
}
}
@@ -42,7 +42,7 @@
len=sz;
if(sz) {
buffer = new char[sz];
- ::memcpy(buffer,_data,sz);
+ memcpy(buffer,_data,sz);
}
return *this;
}
@@ -50,7 +50,7 @@
binary_packet& binary_packet::append(const any_t* _data,size_t sz) {
if(sz) {
buffer = mp_realloc(buffer,len+sz);
- ::memcpy(&((char*)buffer)[len],_data,sz);
+ memcpy(&((char*)buffer)[len],_data,sz);
}
len+=sz;
return *this;
@@ -58,6 +58,40 @@
binary_packet& binary_packet::append(const binary_packet& it) { return append(it.buffer,it.len); }
+binary_packet& binary_packet::insert(size_t pos,const any_t* sdata,size_t slen) {
+ resize(len+slen);
+ memmove(&((uint8_t*)buffer)[pos+slen],&((uint8_t*)buffer)[pos],slen);
+ memcpy(&((uint8_t*)buffer)[pos],sdata,slen);
+ return *this;
+}
+
+binary_packet& binary_packet::insert(size_t pos,const binary_packet& it) { return insert(pos,it.buffer,it.len); }
+
+binary_packet& binary_packet::replace(size_t pos,const any_t* sdata,size_t slen) {
+ if(pos+slen>len) {
+ std::ostringstream os;
+ os<<"."<<get_caller_address()<<" => binary_packet::replace("<<pos<<","<<slen<<")";
+ throw std::out_of_range(os.str());
+ }
+ memcpy(&((uint8_t*)buffer)[pos],sdata,slen);
+ return *this;
+}
+
+binary_packet& binary_packet::replace(size_t pos,const binary_packet& it) { return replace(pos,it.buffer,it.len); }
+
+binary_packet& binary_packet::remove(size_t pos,size_t n) {
+ if(pos+n==len) resize(len-n);
+ else if(pos+n<len){
+ memmove(&((uint8_t*)buffer)[pos],&((uint8_t*)buffer)[pos+n],n);
+ resize(len-n);
+ } else {
+ std::ostringstream os;
+ os<<"."<<get_caller_address()<<" => binary_packet::remove("<<pos<<","<<n<<")";
+ throw std::out_of_range(os.str());
+ }
+ return *this;
+}
+
binary_packet binary_packet::operator+(const binary_packet& rhs) const {
binary_packet rc(len+rhs.len);
::memcpy(rc.buffer,buffer,len);
@@ -75,56 +109,74 @@
return *this;
}
-char& binary_packet::operator[](size_t idx) { return at(idx); }
-const char& binary_packet::operator[](size_t idx) const { return at(idx); }
+uint8_t& binary_packet::operator[](size_t idx) { return at(idx); }
+const uint8_t& binary_packet::operator[](size_t idx) const { return at(idx); }
-
bool binary_packet::operator==(const binary_packet& from) const {
- if(len==from.len) return ::memcmp(buffer,from.buffer,len)==0;
+ if(len==from.len) return memcmp(buffer,from.buffer,len)==0;
return false;
}
bool binary_packet::operator!=(const binary_packet& from) const {
- if(len==from.len) return ::memcmp(buffer,from.buffer,len)!=0;
+ if(len==from.len) return memcmp(buffer,from.buffer,len)!=0;
return true;
}
bool binary_packet::operator<(const binary_packet& from) const {
- if(len==from.len) return ::memcmp(buffer,from.buffer,len)<0;
+ if(len==from.len) return memcmp(buffer,from.buffer,len)<0;
return len<from.len;
}
bool binary_packet::operator<=(const binary_packet& from) const {
- if(len==from.len) return ::memcmp(buffer,from.buffer,len)<=0;
+ if(len==from.len) return memcmp(buffer,from.buffer,len)<=0;
return len<from.len;
}
bool binary_packet::operator>(const binary_packet& from) const {
- if(len==from.len) return ::memcmp(buffer,from.buffer,len)>0;
+ if(len==from.len) return memcmp(buffer,from.buffer,len)>0;
return len>from.len;
}
bool binary_packet::operator>=(const binary_packet& from) const {
- if(len==from.len) return ::memcmp(buffer,from.buffer,len)>=0;
+ if(len==from.len) return memcmp(buffer,from.buffer,len)>=0;
return len>from.len;
}
-char& binary_packet::front() { return ((char*)buffer)[0]; }
-const char& binary_packet::front() const { return ((const char*)buffer)[0]; }
-char& binary_packet::back() { return ((char*)buffer)[len-1]; }
-const char& binary_packet::back() const { return ((const char*)buffer)[len-1]; }
+uint8_t& binary_packet::front() { return ((uint8_t*)buffer)[0]; }
+const uint8_t& binary_packet::front() const { return ((const uint8_t*)buffer)[0]; }
+uint8_t& binary_packet::back() { return ((uint8_t*)buffer)[len-1]; }
+const uint8_t& binary_packet::back() const { return ((const uint8_t*)buffer)[len-1]; }
-char& binary_packet::at(size_t idx) {
- if(idx<len) return ((char*)buffer)[idx];
- throw std::out_of_range("binary_packet.at");
+uint8_t& binary_packet::at(size_t idx) {
+ if(idx<len) return ((uint8_t*)buffer)[idx];
+ std::ostringstream os;
+ os<<"."<<get_caller_address()<<" => binary_packet::at("<<idx<<")";
+ throw std::out_of_range(os.str());
}
-const char& binary_packet::at(size_t idx) const {
- if(idx<len) return ((const char*)buffer)[idx];
- throw std::out_of_range("binary_packet.at const");
+const uint8_t& binary_packet::at(size_t idx) const {
+ if(idx<len) return ((const uint8_t*)buffer)[idx];
+ std::ostringstream os;
+ os<<"."<<get_caller_address()<<" => binary_packet::at("<<idx<<")";
+ throw std::out_of_range(os.str());
}
binary_packet binary_packet::subpacket(size_t start,size_t length) const {
- if(start+length>len) throw std::out_of_range("binary_packet.subpacket");
+ if(start+length>len) {
+ std::ostringstream os;
+ os<<"."<<get_caller_address()<<" => binary_packet::subpacket("<<start<<","<<length<<")";
+ throw std::out_of_range(os.str());
+ }
binary_packet rc(length);
- ::memcpy(rc.buffer,&((char*)buffer)[start],length);
+ memcpy(rc.buffer,&((char*)buffer)[start],length);
return rc;
}
+std::ostream& operator<<(std::ostream& os,const binary_packet& bp) {
+ os.write((const char*)bp.data(),bp.size());
+ return os;
+}
+
+std::istream& operator>>(std::istream& is,binary_packet& bp) {
+ bp.resize(is.width());
+ is.read((char*)bp.data(),bp.size());
+ return is;
+}
+
binary_packet::~binary_packet() { if(buffer) delete (char*)buffer; }
} // namespace usr
Modified: mplayerxp/xmpcore/binary_packet.h
===================================================================
--- mplayerxp/xmpcore/binary_packet.h 2013-06-14 21:51:03 UTC (rev 655)
+++ mplayerxp/xmpcore/binary_packet.h 2013-06-20 09:16:33 UTC (rev 656)
@@ -1,6 +1,9 @@
#ifndef BINARY_PACKET_HPP_INCLUDED
#define BINARY_PACKET_HPP_INCLUDED 1
#include "osdep/mplib.h"
+#include <iostream>
+#include <sstream>
+#include <stdexcept>
namespace usr {
class binary_packet : public Opaque {
@@ -13,8 +16,8 @@
binary_packet& operator=(const binary_packet& from);
binary_packet& operator+=(const binary_packet& from);
binary_packet operator+(const binary_packet& rhs) const;
- char& operator[](size_t idx);
- const char& operator[](size_t idx) const;
+ uint8_t& operator[](size_t idx);
+ const uint8_t& operator[](size_t idx) const;
bool operator==(const binary_packet& from) const;
bool operator!=(const binary_packet& from) const;
@@ -26,12 +29,17 @@
virtual binary_packet& assign(const any_t* data,size_t len);
virtual binary_packet& append(const any_t* data,size_t len);
virtual binary_packet& append(const binary_packet& it);
- virtual char& at(size_t idx);
- virtual const char& at(size_t idx) const;
- virtual char& front();
- virtual const char& front() const;
- virtual char& back();
- virtual const char& back() const;
+ virtual binary_packet& insert(size_t pos,const any_t* data,size_t len);
+ virtual binary_packet& insert(size_t pos,const binary_packet& it);
+ virtual binary_packet& replace(size_t pos,const any_t* data,size_t len);
+ virtual binary_packet& replace(size_t pos,const binary_packet& it);
+ virtual binary_packet& remove(size_t pos,size_t n);
+ virtual uint8_t& at(size_t idx);
+ virtual const uint8_t& at(size_t idx) const;
+ virtual uint8_t& front();
+ virtual const uint8_t& front() const;
+ virtual uint8_t& back();
+ virtual const uint8_t& back() const;
virtual binary_packet subpacket(size_t start,size_t length) const;
@@ -41,11 +49,40 @@
virtual size_t size() const { return len; }
virtual any_t* data() { return buffer; }
virtual const any_t* data() const { return buffer; }
- virtual char* cdata() { return (char*)buffer; }
- virtual const char* cdata() const { return (char*)buffer; }
+ virtual uint8_t* cdata() { return (uint8_t*)buffer; }
+ virtual const uint8_t* cdata() const { return (uint8_t*)buffer; }
private:
any_t* buffer;
size_t len;
};
+
+ std::ostream& operator<<(std::ostream& os,const binary_packet&);
+ std::istream& operator>>(std::istream& is,binary_packet&); // use std::setw() or istream.width() before using this operator
+
+ template<class T>
+ class objects_container : public binary_packet {
+ public:
+ objects_container(size_t sz):binary_packet(sz) {}
+ objects_container(const any_t* src,size_t sz):binary_packet(src,sz) {}
+ objects_container(const objects_container& from):binary_packet(from) {}
+ virtual ~objects_container() {}
+
+ T& operator[](size_t idx) {
+ if((idx+1)*sizeof(T)<=size()) return ((T*)data())[idx];
+ std::ostringstream os;
+ os<<"."<<get_caller_address()<<" => object_container["<<idx<<"]";
+ throw std::out_of_range(os.str());
+ }
+
+ const T& operator[](size_t idx) const {
+ if((idx+1)*sizeof(T)<=size()) return ((const T*)data())[idx];
+ std::ostringstream os;
+ os<<"."<<get_caller_address()<<" => object_container["<<idx<<"] const";
+ throw std::out_of_range(os.str());
+ }
+
+ virtual T* tdata() { return (T*)data(); }
+ virtual const T* tdata() const { return (const T*)data(); }
+ };
} // namespace usr
#endif
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|