Remove use of MapWrapper in video_coding.
BUG= TEST= Review URL: https://webrtc-codereview.appspot.com/344018 git-svn-id: http://webrtc.googlecode.com/svn/trunk@1498 4adac7df-926f-26a2-2b94-8c16560cd09d
This commit is contained in:
parent
d798953846
commit
f27916a76a
@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright (c) 2011 The WebRTC project authors. All Rights Reserved.
|
||||
* Copyright (c) 2012 The WebRTC project authors. All Rights Reserved.
|
||||
*
|
||||
* Use of this source code is governed by a BSD-style license
|
||||
* that can be found in the LICENSE file in the root of the source
|
||||
@ -451,23 +451,24 @@ VCMCodecDataBase::RegisterReceiveCodec(const VideoCodec* receiveCodec,
|
||||
return WEBRTC_VIDEO_CODEC_ERR_PARAMETER;
|
||||
}
|
||||
VideoCodec* newReceiveCodec = new VideoCodec(*receiveCodec);
|
||||
_decMap.Insert(receiveCodec->plType,
|
||||
new VCMDecoderMapItem(newReceiveCodec, numberOfCores, requireKeyFrame));
|
||||
_decMap[receiveCodec->plType] =
|
||||
new VCMDecoderMapItem(newReceiveCodec, numberOfCores, requireKeyFrame);
|
||||
|
||||
return VCM_OK;
|
||||
}
|
||||
|
||||
WebRtc_Word32 VCMCodecDataBase::DeRegisterReceiveCodec(WebRtc_UWord8 payloadType)
|
||||
WebRtc_Word32 VCMCodecDataBase::DeRegisterReceiveCodec(
|
||||
WebRtc_UWord8 payloadType)
|
||||
{
|
||||
MapItem* item = _decMap.Find(payloadType);
|
||||
if (item == NULL)
|
||||
DecoderMap::iterator it = _decMap.find(payloadType);
|
||||
if (it == _decMap.end())
|
||||
{
|
||||
return VCM_PARAMETER_ERROR;
|
||||
}
|
||||
VCMDecoderMapItem* decItem = static_cast<VCMDecoderMapItem*>(item->GetItem());
|
||||
VCMDecoderMapItem* decItem = (*it).second;
|
||||
delete decItem->_settings;
|
||||
delete decItem;
|
||||
_decMap.Erase(item);
|
||||
_decMap.erase(it);
|
||||
if (_receiveCodec.plType == payloadType)
|
||||
{
|
||||
// This codec is currently in use.
|
||||
@ -483,31 +484,18 @@ VCMCodecDataBase::ResetReceiver()
|
||||
ReleaseDecoder(_ptrDecoder);
|
||||
_ptrDecoder = NULL;
|
||||
memset(&_receiveCodec, 0, sizeof(VideoCodec));
|
||||
MapItem* item = _decMap.First();
|
||||
while (item != NULL)
|
||||
{
|
||||
VCMDecoderMapItem* decItem = static_cast<VCMDecoderMapItem*>(item->GetItem());
|
||||
if (decItem != NULL)
|
||||
for (DecoderMap::iterator it = _decMap.begin(); it != _decMap.end(); ++it) {
|
||||
if ((*it).second->_settings != NULL)
|
||||
{
|
||||
if (decItem->_settings != NULL)
|
||||
{
|
||||
delete decItem->_settings;
|
||||
}
|
||||
delete decItem;
|
||||
delete (*it).second->_settings;
|
||||
}
|
||||
_decMap.Erase(item);
|
||||
item = _decMap.First();
|
||||
delete (*it).second;
|
||||
_decMap.erase(it);
|
||||
}
|
||||
item = _decExternalMap.First();
|
||||
while (item != NULL)
|
||||
{
|
||||
VCMExtDecoderMapItem* decItem = static_cast<VCMExtDecoderMapItem*>(item->GetItem());
|
||||
if (decItem != NULL)
|
||||
{
|
||||
delete decItem;
|
||||
}
|
||||
_decExternalMap.Erase(item);
|
||||
item = _decExternalMap.First();
|
||||
for (ExternalDecoderMap::iterator it = _decExternalMap.begin();
|
||||
it != _decExternalMap.end(); ++it) {
|
||||
delete (*it).second;
|
||||
_decExternalMap.erase(it);
|
||||
}
|
||||
_currentDecIsExternal = false;
|
||||
return VCM_OK;
|
||||
@ -516,8 +504,8 @@ VCMCodecDataBase::ResetReceiver()
|
||||
WebRtc_Word32
|
||||
VCMCodecDataBase::DeRegisterExternalDecoder(WebRtc_UWord8 payloadType)
|
||||
{
|
||||
MapItem* item = _decExternalMap.Find(payloadType);
|
||||
if (item == NULL)
|
||||
ExternalDecoderMap::iterator it = _decExternalMap.find(payloadType);
|
||||
if (it == _decExternalMap.end())
|
||||
{
|
||||
// Not found
|
||||
return VCM_PARAMETER_ERROR;
|
||||
@ -529,9 +517,8 @@ VCMCodecDataBase::DeRegisterExternalDecoder(WebRtc_UWord8 payloadType)
|
||||
_ptrDecoder = NULL;
|
||||
}
|
||||
DeRegisterReceiveCodec(payloadType);
|
||||
VCMExtDecoderMapItem* decItem = static_cast<VCMExtDecoderMapItem*>(item->GetItem());
|
||||
delete decItem;
|
||||
_decExternalMap.Erase(item);
|
||||
delete (*it).second;
|
||||
_decExternalMap.erase(it);
|
||||
return VCM_OK;
|
||||
}
|
||||
|
||||
@ -551,7 +538,7 @@ VCMCodecDataBase::RegisterExternalDecoder(VideoDecoder* externalDecoder,
|
||||
return VCM_MEMORY;
|
||||
}
|
||||
DeRegisterExternalDecoder(payloadType);
|
||||
_decExternalMap.Insert(payloadType, extDecoder);
|
||||
_decExternalMap[payloadType] = extDecoder;
|
||||
|
||||
return VCM_OK;
|
||||
}
|
||||
@ -559,7 +546,7 @@ VCMCodecDataBase::RegisterExternalDecoder(VideoDecoder* externalDecoder,
|
||||
bool
|
||||
VCMCodecDataBase::DecoderRegistered() const
|
||||
{
|
||||
return (_decMap.Size() > 0);
|
||||
return !_decMap.empty();
|
||||
}
|
||||
|
||||
WebRtc_Word32
|
||||
@ -584,7 +571,8 @@ VCMCodecDataBase::ReceiveCodec() const
|
||||
}
|
||||
|
||||
VCMGenericDecoder*
|
||||
VCMCodecDataBase::SetDecoder(WebRtc_UWord8 payloadType, VCMDecodedFrameCallback& callback)
|
||||
VCMCodecDataBase::SetDecoder(WebRtc_UWord8 payloadType,
|
||||
VCMDecodedFrameCallback& callback)
|
||||
{
|
||||
if (payloadType == _receiveCodec.plType || payloadType == 0)
|
||||
{
|
||||
@ -597,7 +585,8 @@ VCMCodecDataBase::SetDecoder(WebRtc_UWord8 payloadType, VCMDecodedFrameCallback&
|
||||
_ptrDecoder = NULL;
|
||||
memset(&_receiveCodec, 0, sizeof(VideoCodec));
|
||||
}
|
||||
_ptrDecoder = CreateAndInitDecoder(payloadType, _receiveCodec, _currentDecIsExternal);
|
||||
_ptrDecoder = CreateAndInitDecoder(payloadType, _receiveCodec,
|
||||
_currentDecIsExternal);
|
||||
if (_ptrDecoder == NULL)
|
||||
{
|
||||
return NULL;
|
||||
@ -625,12 +614,15 @@ VCMCodecDataBase::CreateAndInitDecoder(WebRtc_UWord8 payloadType,
|
||||
return NULL;
|
||||
}
|
||||
VCMGenericDecoder* ptrDecoder = NULL;
|
||||
VCMExtDecoderMapItem* externalDecItem = FindExternalDecoderItem(payloadType);
|
||||
VCMExtDecoderMapItem* externalDecItem = FindExternalDecoderItem(
|
||||
payloadType);
|
||||
if (externalDecItem != NULL)
|
||||
{
|
||||
// External codec
|
||||
ptrDecoder = new VCMGenericDecoder(*externalDecItem->_externalDecoderInstance, _id,
|
||||
true);
|
||||
ptrDecoder = new VCMGenericDecoder(
|
||||
*externalDecItem->_externalDecoderInstance,
|
||||
_id,
|
||||
true);
|
||||
external = true;
|
||||
}
|
||||
else
|
||||
@ -717,10 +709,10 @@ VCMCodecDataBase::ReleaseDecoder(VCMGenericDecoder* decoder) const
|
||||
VCMDecoderMapItem*
|
||||
VCMCodecDataBase::FindDecoderItem(WebRtc_UWord8 payloadType) const
|
||||
{
|
||||
MapItem* item = _decMap.Find(payloadType);
|
||||
if (item != NULL)
|
||||
DecoderMap::const_iterator it = _decMap.find(payloadType);
|
||||
if (it != _decMap.end())
|
||||
{
|
||||
return static_cast<VCMDecoderMapItem*>(item->GetItem());
|
||||
return (*it).second;
|
||||
}
|
||||
return NULL;
|
||||
}
|
||||
@ -728,10 +720,10 @@ VCMCodecDataBase::FindDecoderItem(WebRtc_UWord8 payloadType) const
|
||||
VCMExtDecoderMapItem*
|
||||
VCMCodecDataBase::FindExternalDecoderItem(WebRtc_UWord8 payloadType) const
|
||||
{
|
||||
MapItem* item = _decExternalMap.Find(payloadType);
|
||||
if (item != NULL)
|
||||
ExternalDecoderMap::const_iterator it = _decExternalMap.find(payloadType);
|
||||
if (it != _decExternalMap.end())
|
||||
{
|
||||
return static_cast<VCMExtDecoderMapItem*>(item->GetItem());
|
||||
return (*it).second;
|
||||
}
|
||||
return NULL;
|
||||
}
|
||||
|
@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright (c) 2011 The WebRTC project authors. All Rights Reserved.
|
||||
* Copyright (c) 2012 The WebRTC project authors. All Rights Reserved.
|
||||
*
|
||||
* Use of this source code is governed by a BSD-style license
|
||||
* that can be found in the LICENSE file in the root of the source
|
||||
@ -11,12 +11,13 @@
|
||||
#ifndef WEBRTC_MODULES_VIDEO_CODING_CODEC_DATABASE_H_
|
||||
#define WEBRTC_MODULES_VIDEO_CODING_CODEC_DATABASE_H_
|
||||
|
||||
#include "video_coding.h"
|
||||
#include "video_codec_interface.h"
|
||||
#include "generic_decoder.h"
|
||||
#include "generic_encoder.h"
|
||||
#include <map>
|
||||
|
||||
#include "modules/video_coding/codecs/interface/video_codec_interface.h"
|
||||
#include "modules/video_coding/main/interface/video_coding.h"
|
||||
#include "modules/video_coding/main/source/generic_decoder.h"
|
||||
#include "modules/video_coding/main/source/generic_encoder.h"
|
||||
#include "typedefs.h"
|
||||
#include "map_wrapper.h"
|
||||
|
||||
namespace webrtc
|
||||
{
|
||||
@ -191,22 +192,23 @@ protected:
|
||||
VCMExtDecoderMapItem* FindExternalDecoderItem(WebRtc_UWord8 payloadType) const;
|
||||
|
||||
private:
|
||||
WebRtc_Word32 _id;
|
||||
WebRtc_UWord32 _numberOfCores;
|
||||
WebRtc_UWord32 _maxPayloadSize;
|
||||
bool _periodicKeyFrames;
|
||||
bool _currentEncIsExternal;
|
||||
VideoCodec _sendCodec;
|
||||
VideoCodec _receiveCodec;
|
||||
WebRtc_UWord8 _externalPayloadType;
|
||||
VideoEncoder* _externalEncoder;
|
||||
bool _internalSource;
|
||||
VCMGenericEncoder* _ptrEncoder;
|
||||
VCMGenericDecoder* _ptrDecoder;
|
||||
bool _currentDecIsExternal;
|
||||
MapWrapper _decMap;
|
||||
MapWrapper _decExternalMap;
|
||||
|
||||
typedef std::map<uint8_t, VCMDecoderMapItem*> DecoderMap;
|
||||
typedef std::map<uint8_t, VCMExtDecoderMapItem*> ExternalDecoderMap;
|
||||
WebRtc_Word32 _id;
|
||||
WebRtc_UWord32 _numberOfCores;
|
||||
WebRtc_UWord32 _maxPayloadSize;
|
||||
bool _periodicKeyFrames;
|
||||
bool _currentEncIsExternal;
|
||||
VideoCodec _sendCodec;
|
||||
VideoCodec _receiveCodec;
|
||||
WebRtc_UWord8 _externalPayloadType;
|
||||
VideoEncoder* _externalEncoder;
|
||||
bool _internalSource;
|
||||
VCMGenericEncoder* _ptrEncoder;
|
||||
VCMGenericDecoder* _ptrDecoder;
|
||||
bool _currentDecIsExternal;
|
||||
DecoderMap _decMap;
|
||||
ExternalDecoderMap _decExternalMap;
|
||||
}; // end of VCMCodecDataBase class definition
|
||||
|
||||
} // namespace webrtc
|
||||
|
Loading…
x
Reference in New Issue
Block a user