Make code simpler on VCMEncodedCallback.
R=marpan@webrtc.org
Review URL: https://webrtc-codereview.appspot.com/6689004
git-svn-id: http://webrtc.googlecode.com/svn/trunk@5358 4adac7df-926f-26a2-2b94-8c16560cd09d
diff --git a/webrtc/modules/video_coding/main/source/generic_encoder.cc b/webrtc/modules/video_coding/main/source/generic_encoder.cc
index 7fa0cc6..68296fc 100644
--- a/webrtc/modules/video_coding/main/source/generic_encoder.cc
+++ b/webrtc/modules/video_coding/main/source/generic_encoder.cc
@@ -15,6 +15,39 @@
#include "webrtc/system_wrappers/interface/critical_section_wrapper.h"
namespace webrtc {
+namespace {
+// Map information from info into rtp. If no relevant information is found
+// in info, rtp is set to NULL.
+void CopyCodecSpecific(const CodecSpecificInfo* info, RTPVideoHeader** rtp) {
+ if (!info) {
+ *rtp = NULL;
+ return;
+ }
+ switch (info->codecType) {
+ case kVideoCodecVP8: {
+ (*rtp)->codec = kRtpVideoVp8;
+ (*rtp)->codecHeader.VP8.InitRTPVideoHeaderVP8();
+ (*rtp)->codecHeader.VP8.pictureId = info->codecSpecific.VP8.pictureId;
+ (*rtp)->codecHeader.VP8.nonReference =
+ info->codecSpecific.VP8.nonReference;
+ (*rtp)->codecHeader.VP8.temporalIdx = info->codecSpecific.VP8.temporalIdx;
+ (*rtp)->codecHeader.VP8.layerSync = info->codecSpecific.VP8.layerSync;
+ (*rtp)->codecHeader.VP8.tl0PicIdx = info->codecSpecific.VP8.tl0PicIdx;
+ (*rtp)->codecHeader.VP8.keyIdx = info->codecSpecific.VP8.keyIdx;
+ (*rtp)->simulcastIdx = info->codecSpecific.VP8.simulcastIdx;
+ return;
+ }
+ case kVideoCodecGeneric:
+ (*rtp)->codec = kRtpVideoGeneric;
+ (*rtp)->simulcastIdx = info->codecSpecific.generic.simulcast_idx;
+ return;
+ default:
+ // No codec specific info. Change RTP header pointer to NULL.
+ *rtp = NULL;
+ return;
+ }
+}
+} // namespace
//#define DEBUG_ENCODER_BIT_STREAM
@@ -50,10 +83,6 @@
_bitRate = settings->startBitrate * 1000;
_frameRate = settings->maxFramerate;
_codecType = settings->codecType;
- if (_VCMencodedFrameCallback != NULL)
- {
- _VCMencodedFrameCallback->SetCodecType(_codecType);
- }
return _encoder.InitEncode(settings, numberOfCores, maxPayloadSize);
}
@@ -127,8 +156,6 @@
VCMGenericEncoder::RegisterEncodeCallback(VCMEncodedFrameCallback* VCMencodedFrameCallback)
{
_VCMencodedFrameCallback = VCMencodedFrameCallback;
-
- _VCMencodedFrameCallback->SetCodecType(_codecType);
_VCMencodedFrameCallback->SetInternalSource(_internalSource);
return _encoder.RegisterEncodeCompleteCallback(_VCMencodedFrameCallback);
}
@@ -146,9 +173,7 @@
EncodedImageCallback* post_encode_callback):
_sendCallback(),
_mediaOpt(NULL),
-_encodedBytes(0),
_payloadType(0),
-_codecType(kVideoCodecUnknown),
_internalSource(false),
post_encode_callback_(post_encode_callback)
#ifdef DEBUG_ENCODER_BIT_STREAM
@@ -198,14 +223,7 @@
RTPVideoHeader rtpVideoHeader;
RTPVideoHeader* rtpVideoHeaderPtr = &rtpVideoHeader;
- if (codecSpecificInfo)
- {
- CopyCodecSpecific(*codecSpecificInfo, &rtpVideoHeaderPtr);
- }
- else
- {
- rtpVideoHeaderPtr = NULL;
- }
+ CopyCodecSpecific(codecSpecificInfo, &rtpVideoHeaderPtr);
int32_t callbackReturn = _sendCallback->SendData(
frameType,
@@ -225,9 +243,8 @@
{
return VCM_UNINITIALIZED;
}
- _encodedBytes = encodedBytes;
if (_mediaOpt != NULL) {
- _mediaOpt->UpdateWithEncodedData(_encodedBytes, encodedImage._timeStamp,
+ _mediaOpt->UpdateWithEncodedData(encodedBytes, encodedImage._timeStamp,
frameType);
if (_internalSource)
{
@@ -237,12 +254,6 @@
return VCM_OK;
}
-uint32_t
-VCMEncodedFrameCallback::EncodedBytes()
-{
- return _encodedBytes;
-}
-
void
VCMEncodedFrameCallback::SetMediaOpt(
media_optimization::MediaOptimization *mediaOpt)
@@ -250,30 +261,4 @@
_mediaOpt = mediaOpt;
}
-void VCMEncodedFrameCallback::CopyCodecSpecific(const CodecSpecificInfo& info,
- RTPVideoHeader** rtp) {
- switch (info.codecType) {
- case kVideoCodecVP8: {
- (*rtp)->codec = kRtpVideoVp8;
- (*rtp)->codecHeader.VP8.InitRTPVideoHeaderVP8();
- (*rtp)->codecHeader.VP8.pictureId = info.codecSpecific.VP8.pictureId;
- (*rtp)->codecHeader.VP8.nonReference =
- info.codecSpecific.VP8.nonReference;
- (*rtp)->codecHeader.VP8.temporalIdx = info.codecSpecific.VP8.temporalIdx;
- (*rtp)->codecHeader.VP8.layerSync = info.codecSpecific.VP8.layerSync;
- (*rtp)->codecHeader.VP8.tl0PicIdx = info.codecSpecific.VP8.tl0PicIdx;
- (*rtp)->codecHeader.VP8.keyIdx = info.codecSpecific.VP8.keyIdx;
- (*rtp)->simulcastIdx = info.codecSpecific.VP8.simulcastIdx;
- return;
- }
- case kVideoCodecGeneric:
- (*rtp)->codec = kRtpVideoGeneric;
- (*rtp)->simulcastIdx = info.codecSpecific.generic.simulcast_idx;
- return;
- default:
- // No codec specific info. Change RTP header pointer to NULL.
- *rtp = NULL;
- return;
- }
-}
} // namespace webrtc
diff --git a/webrtc/modules/video_coding/main/source/generic_encoder.h b/webrtc/modules/video_coding/main/source/generic_encoder.h
index 83c6c46..9277260 100644
--- a/webrtc/modules/video_coding/main/source/generic_encoder.h
+++ b/webrtc/modules/video_coding/main/source/generic_encoder.h
@@ -41,10 +41,6 @@
const CodecSpecificInfo* codecSpecificInfo = NULL,
const RTPFragmentationHeader* fragmentationHeader = NULL);
/*
- * Get number of encoded bytes
- */
- uint32_t EncodedBytes();
- /*
* Callback implementation - generic encoder encode complete
*/
int32_t SetTransportCallback(VCMPacketizationCallback* transport);
@@ -54,22 +50,12 @@
void SetMediaOpt (media_optimization::MediaOptimization* mediaOpt);
void SetPayloadType(uint8_t payloadType) { _payloadType = payloadType; };
- void SetCodecType(VideoCodecType codecType) {_codecType = codecType;};
void SetInternalSource(bool internalSource) { _internalSource = internalSource; };
private:
- /*
- * Map information from info into rtp. If no relevant information is found
- * in info, rtp is set to NULL.
- */
- static void CopyCodecSpecific(const CodecSpecificInfo& info,
- RTPVideoHeader** rtp);
-
VCMPacketizationCallback* _sendCallback;
media_optimization::MediaOptimization* _mediaOpt;
- uint32_t _encodedBytes;
uint8_t _payloadType;
- VideoCodecType _codecType;
bool _internalSource;
EncodedImageCallback* post_encode_callback_;