Remove operator overloading from RTPFragmentationHeader.
Instead supply a CopyFrom() method. TEST=vie_auto_test Review URL: https://webrtc-codereview.appspot.com/972004 git-svn-id: http://webrtc.googlecode.com/svn/trunk@3158 4adac7df-926f-26a2-2b94-8c16560cd09d
This commit is contained in:
@@ -14,16 +14,17 @@
|
|||||||
#include <cstring> // memcpy
|
#include <cstring> // memcpy
|
||||||
#include <assert.h>
|
#include <assert.h>
|
||||||
|
|
||||||
#include "typedefs.h"
|
#include "webrtc/common_types.h"
|
||||||
#include "common_types.h"
|
#include "webrtc/system_wrappers/interface/constructor_magic.h"
|
||||||
|
#include "webrtc/typedefs.h"
|
||||||
|
|
||||||
#ifdef _WIN32
|
#ifdef _WIN32
|
||||||
#pragma warning(disable:4351) // remove warning "new behavior: elements of array
|
#pragma warning(disable:4351) // remove warning "new behavior: elements of array
|
||||||
// 'array' will be default initialized"
|
// 'array' will be default initialized"
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
namespace webrtc
|
namespace webrtc {
|
||||||
{
|
|
||||||
struct RTPHeader
|
struct RTPHeader
|
||||||
{
|
{
|
||||||
bool markerBit;
|
bool markerBit;
|
||||||
@@ -144,14 +145,14 @@ public:
|
|||||||
delete [] fragmentationPlType;
|
delete [] fragmentationPlType;
|
||||||
}
|
}
|
||||||
|
|
||||||
RTPFragmentationHeader& operator=(const RTPFragmentationHeader& header)
|
void CopyFrom(const RTPFragmentationHeader& src)
|
||||||
{
|
{
|
||||||
if(this == &header)
|
if(this == &src)
|
||||||
{
|
{
|
||||||
return *this;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
if(header.fragmentationVectorSize != fragmentationVectorSize)
|
if(src.fragmentationVectorSize != fragmentationVectorSize)
|
||||||
{
|
{
|
||||||
// new size of vectors
|
// new size of vectors
|
||||||
|
|
||||||
@@ -165,59 +166,59 @@ public:
|
|||||||
delete [] fragmentationPlType;
|
delete [] fragmentationPlType;
|
||||||
fragmentationPlType = NULL;
|
fragmentationPlType = NULL;
|
||||||
|
|
||||||
if(header.fragmentationVectorSize > 0)
|
if(src.fragmentationVectorSize > 0)
|
||||||
{
|
{
|
||||||
// allocate new
|
// allocate new
|
||||||
if(header.fragmentationOffset)
|
if(src.fragmentationOffset)
|
||||||
{
|
{
|
||||||
fragmentationOffset = new WebRtc_UWord32[header.fragmentationVectorSize];
|
fragmentationOffset = new WebRtc_UWord32[src.fragmentationVectorSize];
|
||||||
}
|
}
|
||||||
if(header.fragmentationLength)
|
if(src.fragmentationLength)
|
||||||
{
|
{
|
||||||
fragmentationLength = new WebRtc_UWord32[header.fragmentationVectorSize];
|
fragmentationLength = new WebRtc_UWord32[src.fragmentationVectorSize];
|
||||||
}
|
}
|
||||||
if(header.fragmentationTimeDiff)
|
if(src.fragmentationTimeDiff)
|
||||||
{
|
{
|
||||||
fragmentationTimeDiff = new WebRtc_UWord16[header.fragmentationVectorSize];
|
fragmentationTimeDiff = new WebRtc_UWord16[src.fragmentationVectorSize];
|
||||||
}
|
}
|
||||||
if(header.fragmentationPlType)
|
if(src.fragmentationPlType)
|
||||||
{
|
{
|
||||||
fragmentationPlType = new WebRtc_UWord8[header.fragmentationVectorSize];
|
fragmentationPlType = new WebRtc_UWord8[src.fragmentationVectorSize];
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
// set new size
|
// set new size
|
||||||
fragmentationVectorSize = header.fragmentationVectorSize;
|
fragmentationVectorSize = src.fragmentationVectorSize;
|
||||||
}
|
}
|
||||||
|
|
||||||
if(header.fragmentationVectorSize > 0)
|
if(src.fragmentationVectorSize > 0)
|
||||||
{
|
{
|
||||||
// copy values
|
// copy values
|
||||||
if(header.fragmentationOffset)
|
if(src.fragmentationOffset)
|
||||||
{
|
{
|
||||||
memcpy(fragmentationOffset, header.fragmentationOffset,
|
memcpy(fragmentationOffset, src.fragmentationOffset,
|
||||||
header.fragmentationVectorSize * sizeof(WebRtc_UWord32));
|
src.fragmentationVectorSize * sizeof(WebRtc_UWord32));
|
||||||
}
|
}
|
||||||
if(header.fragmentationLength)
|
if(src.fragmentationLength)
|
||||||
{
|
{
|
||||||
memcpy(fragmentationLength, header.fragmentationLength,
|
memcpy(fragmentationLength, src.fragmentationLength,
|
||||||
header.fragmentationVectorSize * sizeof(WebRtc_UWord32));
|
src.fragmentationVectorSize * sizeof(WebRtc_UWord32));
|
||||||
}
|
}
|
||||||
if(header.fragmentationTimeDiff)
|
if(src.fragmentationTimeDiff)
|
||||||
{
|
{
|
||||||
memcpy(fragmentationTimeDiff, header.fragmentationTimeDiff,
|
memcpy(fragmentationTimeDiff, src.fragmentationTimeDiff,
|
||||||
header.fragmentationVectorSize * sizeof(WebRtc_UWord16));
|
src.fragmentationVectorSize * sizeof(WebRtc_UWord16));
|
||||||
}
|
}
|
||||||
if(header.fragmentationPlType)
|
if(src.fragmentationPlType)
|
||||||
{
|
{
|
||||||
memcpy(fragmentationPlType, header.fragmentationPlType,
|
memcpy(fragmentationPlType, src.fragmentationPlType,
|
||||||
header.fragmentationVectorSize * sizeof(WebRtc_UWord8));
|
src.fragmentationVectorSize * sizeof(WebRtc_UWord8));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return *this;
|
|
||||||
}
|
}
|
||||||
void VerifyAndAllocateFragmentationHeader( const WebRtc_UWord16 size)
|
|
||||||
|
void VerifyAndAllocateFragmentationHeader(const WebRtc_UWord16 size)
|
||||||
{
|
{
|
||||||
if( fragmentationVectorSize < size)
|
if(fragmentationVectorSize < size)
|
||||||
{
|
{
|
||||||
WebRtc_UWord16 oldVectorSize = fragmentationVectorSize;
|
WebRtc_UWord16 oldVectorSize = fragmentationVectorSize;
|
||||||
{
|
{
|
||||||
@@ -270,6 +271,9 @@ public:
|
|||||||
WebRtc_UWord16* fragmentationTimeDiff; // Timestamp difference relative "now" for
|
WebRtc_UWord16* fragmentationTimeDiff; // Timestamp difference relative "now" for
|
||||||
// each fragmentation
|
// each fragmentation
|
||||||
WebRtc_UWord8* fragmentationPlType; // Payload type of each fragmentation
|
WebRtc_UWord8* fragmentationPlType; // Payload type of each fragmentation
|
||||||
|
|
||||||
|
private:
|
||||||
|
DISALLOW_COPY_AND_ASSIGN(RTPFragmentationHeader);
|
||||||
};
|
};
|
||||||
|
|
||||||
struct RTCPVoIPMetric
|
struct RTCPVoIPMetric
|
||||||
@@ -344,7 +348,7 @@ public:
|
|||||||
completeFrame = data.completeFrame;
|
completeFrame = data.completeFrame;
|
||||||
missingFrame = data.missingFrame;
|
missingFrame = data.missingFrame;
|
||||||
payloadSize = data.payloadSize;
|
payloadSize = data.payloadSize;
|
||||||
fragmentationHeader = data.fragmentationHeader;
|
fragmentationHeader.CopyFrom(data.fragmentationHeader);
|
||||||
frameType = data.frameType;
|
frameType = data.frameType;
|
||||||
codec = data.codec;
|
codec = data.codec;
|
||||||
if (data.payloadSize > 0)
|
if (data.payloadSize > 0)
|
||||||
@@ -378,7 +382,7 @@ public:
|
|||||||
completeFrame = data.completeFrame;
|
completeFrame = data.completeFrame;
|
||||||
missingFrame = data.missingFrame;
|
missingFrame = data.missingFrame;
|
||||||
payloadSize = data.payloadSize;
|
payloadSize = data.payloadSize;
|
||||||
fragmentationHeader = data.fragmentationHeader;
|
fragmentationHeader.CopyFrom(data.fragmentationHeader);
|
||||||
frameType = data.frameType;
|
frameType = data.frameType;
|
||||||
codec = data.codec;
|
codec = data.codec;
|
||||||
if (data.payloadSize > 0)
|
if (data.payloadSize > 0)
|
||||||
|
|||||||
@@ -44,7 +44,7 @@ RtpFormatVp8::RtpFormatVp8(const WebRtc_UWord8* payload_data,
|
|||||||
num_partitions_(fragmentation.fragmentationVectorSize),
|
num_partitions_(fragmentation.fragmentationVectorSize),
|
||||||
max_payload_len_(max_payload_len),
|
max_payload_len_(max_payload_len),
|
||||||
packets_calculated_(false) {
|
packets_calculated_(false) {
|
||||||
part_info_ = fragmentation;
|
part_info_.CopyFrom(fragmentation);
|
||||||
}
|
}
|
||||||
|
|
||||||
RtpFormatVp8::RtpFormatVp8(const WebRtc_UWord8* payload_data,
|
RtpFormatVp8::RtpFormatVp8(const WebRtc_UWord8* payload_data,
|
||||||
|
|||||||
@@ -142,7 +142,7 @@ WebRtc_Word32 VideoCoder::SendData(
|
|||||||
_videoEncodedData->frameType = frameType;
|
_videoEncodedData->frameType = frameType;
|
||||||
_videoEncodedData->payloadType = payloadType;
|
_videoEncodedData->payloadType = payloadType;
|
||||||
_videoEncodedData->timeStamp = timeStamp;
|
_videoEncodedData->timeStamp = timeStamp;
|
||||||
_videoEncodedData->fragmentationHeader = fragmentationHeader;
|
_videoEncodedData->fragmentationHeader.CopyFrom(fragmentationHeader);
|
||||||
memcpy(_videoEncodedData->payloadData, payloadData,
|
memcpy(_videoEncodedData->payloadData, payloadData,
|
||||||
sizeof(WebRtc_UWord8) * payloadSize);
|
sizeof(WebRtc_UWord8) * payloadSize);
|
||||||
_videoEncodedData->payloadSize = payloadSize;
|
_videoEncodedData->payloadSize = payloadSize;
|
||||||
|
|||||||
@@ -65,8 +65,7 @@ VCMEncodedFrame::VCMEncodedFrame(const VCMEncodedFrame& rhs)
|
|||||||
memcpy(_buffer, rhs._buffer, rhs._length);
|
memcpy(_buffer, rhs._buffer, rhs._length);
|
||||||
_length = rhs._length;
|
_length = rhs._length;
|
||||||
}
|
}
|
||||||
// Deep operator=
|
_fragmentation.CopyFrom(rhs._fragmentation);
|
||||||
_fragmentation = rhs._fragmentation;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
VCMEncodedFrame::~VCMEncodedFrame()
|
VCMEncodedFrame::~VCMEncodedFrame()
|
||||||
|
|||||||
Reference in New Issue
Block a user