Trace encoding/decoding time in a generic way.
Removes VP8::Encode trace in favor of VCMGenericEncoder ones and adds one to InitEncode. Also adds an instant event to ::Encoded since this can be done on a different thread. Also adds the corresponding traces to VCMGenericDecoder. BUG=webrtc:5167 R=stefan@webrtc.org Review URL: https://codereview.webrtc.org/1412573010 Cr-Commit-Position: refs/heads/master@{#10674}
This commit is contained in:
@ -716,8 +716,6 @@ uint32_t VP8EncoderImpl::MaxIntraTarget(uint32_t optimalBuffersize) {
|
||||
int VP8EncoderImpl::Encode(const VideoFrame& frame,
|
||||
const CodecSpecificInfo* codec_specific_info,
|
||||
const std::vector<FrameType>* frame_types) {
|
||||
TRACE_EVENT1("webrtc", "VP8::Encode", "timestamp", frame.timestamp());
|
||||
|
||||
if (!inited_)
|
||||
return WEBRTC_VIDEO_CODEC_UNINITIALIZED;
|
||||
if (frame.IsZeroSize())
|
||||
|
||||
@ -9,6 +9,7 @@
|
||||
*/
|
||||
|
||||
#include "webrtc/base/logging.h"
|
||||
#include "webrtc/base/trace_event.h"
|
||||
#include "webrtc/modules/video_coding/main/interface/video_coding.h"
|
||||
#include "webrtc/modules/video_coding/main/source/generic_decoder.h"
|
||||
#include "webrtc/modules/video_coding/main/source/internal_defines.h"
|
||||
@ -52,6 +53,8 @@ int32_t VCMDecodedFrameCallback::Decoded(VideoFrame& decodedImage) {
|
||||
|
||||
int32_t VCMDecodedFrameCallback::Decoded(VideoFrame& decodedImage,
|
||||
int64_t decode_time_ms) {
|
||||
TRACE_EVENT_INSTANT1("webrtc", "VCMDecodedFrameCallback::Decoded",
|
||||
"timestamp", decodedImage.timestamp());
|
||||
// TODO(holmer): We should improve this so that we can handle multiple
|
||||
// callbacks from one call to Decode().
|
||||
VCMFrameInformation* frameInfo;
|
||||
@ -147,14 +150,15 @@ VCMGenericDecoder::~VCMGenericDecoder()
|
||||
int32_t VCMGenericDecoder::InitDecode(const VideoCodec* settings,
|
||||
int32_t numberOfCores)
|
||||
{
|
||||
TRACE_EVENT0("webrtc", "VCMGenericDecoder::InitDecode");
|
||||
_codecType = settings->codecType;
|
||||
|
||||
return _decoder.InitDecode(settings, numberOfCores);
|
||||
}
|
||||
|
||||
int32_t VCMGenericDecoder::Decode(const VCMEncodedFrame& frame,
|
||||
int64_t nowMs)
|
||||
{
|
||||
int32_t VCMGenericDecoder::Decode(const VCMEncodedFrame& frame, int64_t nowMs) {
|
||||
TRACE_EVENT1("webrtc", "VCMGenericDecoder::Decode", "timestamp",
|
||||
frame.EncodedImage()._timeStamp);
|
||||
_frameInfos[_nextFrameInfoIdx].decodeStartTimeMs = nowMs;
|
||||
_frameInfos[_nextFrameInfoIdx].renderTimeMs = frame.RenderTimeMs();
|
||||
_frameInfos[_nextFrameInfoIdx].rotation = frame.rotation();
|
||||
|
||||
@ -10,6 +10,7 @@
|
||||
|
||||
#include "webrtc/base/checks.h"
|
||||
#include "webrtc/base/logging.h"
|
||||
#include "webrtc/base/trace_event.h"
|
||||
#include "webrtc/engine_configurations.h"
|
||||
#include "webrtc/modules/video_coding/main/source/encoded_frame.h"
|
||||
#include "webrtc/modules/video_coding/main/source/generic_encoder.h"
|
||||
@ -112,6 +113,7 @@ int32_t VCMGenericEncoder::Release() {
|
||||
int32_t VCMGenericEncoder::InitEncode(const VideoCodec* settings,
|
||||
int32_t numberOfCores,
|
||||
size_t maxPayloadSize) {
|
||||
TRACE_EVENT0("webrtc", "VCMGenericEncoder::InitEncode");
|
||||
{
|
||||
rtc::CritScope lock(¶ms_lock_);
|
||||
encoder_params_.target_bitrate = settings->startBitrate * 1000;
|
||||
@ -132,6 +134,9 @@ int32_t VCMGenericEncoder::InitEncode(const VideoCodec* settings,
|
||||
int32_t VCMGenericEncoder::Encode(const VideoFrame& inputFrame,
|
||||
const CodecSpecificInfo* codecSpecificInfo,
|
||||
const std::vector<FrameType>& frameTypes) {
|
||||
TRACE_EVENT1("webrtc", "VCMGenericEncoder::Encode", "timestamp",
|
||||
inputFrame.timestamp());
|
||||
|
||||
for (FrameType frame_type : frameTypes)
|
||||
RTC_DCHECK(frame_type == kVideoFrameKey || frame_type == kVideoFrameDelta);
|
||||
|
||||
@ -253,6 +258,8 @@ int32_t VCMEncodedFrameCallback::Encoded(
|
||||
const EncodedImage& encodedImage,
|
||||
const CodecSpecificInfo* codecSpecificInfo,
|
||||
const RTPFragmentationHeader* fragmentationHeader) {
|
||||
TRACE_EVENT_INSTANT1("webrtc", "VCMEncodedFrameCallback::Encoded",
|
||||
"timestamp", encodedImage._timeStamp);
|
||||
RTC_DCHECK(encodedImage._frameType == kVideoFrameKey ||
|
||||
encodedImage._frameType == kVideoFrameDelta);
|
||||
post_encode_callback_->Encoded(encodedImage, NULL, NULL);
|
||||
|
||||
Reference in New Issue
Block a user