Disable temporal layers when building with Chromium.
BUG= TEST= Review URL: http://webrtc-codereview.appspot.com/301010 git-svn-id: http://webrtc.googlecode.com/svn/trunk@1099 4adac7df-926f-26a2-2b94-8c16560cd09d
This commit is contained in:
parent
af71f0e5d9
commit
0ae71b9ccb
@ -29,8 +29,9 @@ struct vpx_codec_cx_pkt;
|
||||
|
||||
namespace webrtc
|
||||
{
|
||||
#if WEBRTC_LIBVPX_VERSION >= 971
|
||||
class TemporalLayers;
|
||||
|
||||
#endif
|
||||
class ReferencePictureSelection;
|
||||
|
||||
/******************************/
|
||||
@ -175,7 +176,9 @@ private:
|
||||
WebRtc_UWord32 _rcMaxIntraTarget;
|
||||
int _tokenPartitions;
|
||||
ReferencePictureSelection* _rps;
|
||||
#if WEBRTC_LIBVPX_VERSION >= 971
|
||||
TemporalLayers* _temporalLayers;
|
||||
#endif
|
||||
|
||||
vpx_codec_ctx_t* _encoder;
|
||||
vpx_codec_enc_cfg_t* _cfg;
|
||||
|
@ -49,7 +49,9 @@ VP8Encoder::VP8Encoder():
|
||||
_rcMaxIntraTarget(0),
|
||||
_tokenPartitions(VP8_ONE_TOKENPARTITION),
|
||||
_rps(new ReferencePictureSelection),
|
||||
#if WEBRTC_LIBVPX_VERSION >= 971
|
||||
_temporalLayers(NULL),
|
||||
#endif
|
||||
_encoder(NULL),
|
||||
_cfg(NULL),
|
||||
_raw(NULL)
|
||||
@ -113,11 +115,13 @@ VP8Encoder::Release()
|
||||
delete _raw;
|
||||
_raw = NULL;
|
||||
}
|
||||
#if WEBRTC_LIBVPX_VERSION >= 971
|
||||
if (_temporalLayers != NULL)
|
||||
{
|
||||
delete _temporalLayers;
|
||||
_temporalLayers = NULL;
|
||||
}
|
||||
#endif
|
||||
_inited = false;
|
||||
|
||||
return WEBRTC_VIDEO_CODEC_OK;
|
||||
@ -172,10 +176,12 @@ VP8Encoder::SetRates(WebRtc_UWord32 newBitRateKbit, WebRtc_UWord32 newFrameRate)
|
||||
}
|
||||
_cfg->rc_target_bitrate = newBitRateKbit; // in kbit/s
|
||||
|
||||
#if WEBRTC_LIBVPX_VERSION >= 971
|
||||
if (_temporalLayers)
|
||||
{
|
||||
_temporalLayers->ConfigureBitrates(newBitRateKbit, _cfg);
|
||||
}
|
||||
#endif
|
||||
_maxFrameRate = newFrameRate;
|
||||
|
||||
// update encoder context
|
||||
@ -238,12 +244,14 @@ VP8Encoder::InitEncode(const VideoCodec* inst,
|
||||
_width = inst->width;
|
||||
_height = inst->height;
|
||||
|
||||
#if WEBRTC_LIBVPX_VERSION >= 971
|
||||
if (inst->codecSpecific.VP8.numberOfTemporalLayers > 1)
|
||||
{
|
||||
assert(_temporalLayers == NULL);
|
||||
_temporalLayers =
|
||||
new TemporalLayers(inst->codecSpecific.VP8.numberOfTemporalLayers);
|
||||
}
|
||||
#endif
|
||||
|
||||
// random start 16 bits is enough.
|
||||
_pictureID = ((WebRtc_UWord16)rand()) & 0x7FFF;
|
||||
@ -274,10 +282,12 @@ VP8Encoder::InitEncode(const VideoCodec* inst,
|
||||
{
|
||||
_cfg->rc_target_bitrate = inst->startBitrate; // in kbit/s
|
||||
}
|
||||
#if WEBRTC_LIBVPX_VERSION >= 971
|
||||
if (_temporalLayers)
|
||||
{
|
||||
_temporalLayers->ConfigureBitrates(inst->startBitrate, _cfg);
|
||||
}
|
||||
#endif
|
||||
// setting the time base of the codec
|
||||
_cfg->g_timebase.num = 1;
|
||||
_cfg->g_timebase.den = 90000;
|
||||
@ -436,9 +446,11 @@ VP8Encoder::Encode(const RawImage& inputImage,
|
||||
_raw->planes[PLANE_V] = &inputImage._buffer[_height * _width * 5 >> 2];
|
||||
|
||||
int flags = 0;
|
||||
#if WEBRTC_LIBVPX_VERSION >= 971
|
||||
if (_temporalLayers) {
|
||||
flags |= _temporalLayers->EncodeFlags();
|
||||
}
|
||||
#endif
|
||||
bool sendKeyFrame = frameTypes && (*frameTypes == kKeyFrame);
|
||||
if (sendKeyFrame)
|
||||
{
|
||||
@ -490,13 +502,17 @@ void VP8Encoder::PopulateCodecSpecific(CodecSpecificInfo* codec_specific,
|
||||
vp8Info->simulcastIdx = _simulcastIdx;
|
||||
vp8Info->keyIdx = kNoKeyIdx; // TODO(hlundin) populate this
|
||||
vp8Info->nonReference = (pkt.data.frame.flags & VPX_FRAME_IS_DROPPABLE);
|
||||
#if WEBRTC_LIBVPX_VERSION >= 971
|
||||
if (_temporalLayers) {
|
||||
_temporalLayers->PopulateCodecSpecific(
|
||||
(pkt.data.frame.flags & VPX_FRAME_IS_KEY) ? true : false, vp8Info);
|
||||
} else {
|
||||
#endif
|
||||
vp8Info->temporalIdx = kNoTemporalIdx;
|
||||
vp8Info->tl0PicIdx = kNoTl0PicIdx;
|
||||
#if WEBRTC_LIBVPX_VERSION >= 971
|
||||
}
|
||||
#endif
|
||||
_pictureID = (_pictureID + 1) % 0x7FFF; // prepare next
|
||||
}
|
||||
|
||||
|
@ -36,6 +36,10 @@
|
||||
'defines': [
|
||||
'WEBRTC_LIBVPX_VERSION=971' # Cayuga
|
||||
],
|
||||
'sources': [
|
||||
'temporal_layers.h',
|
||||
'temporal_layers.cc',
|
||||
],
|
||||
}],
|
||||
],
|
||||
'direct_dependent_settings': {
|
||||
@ -50,8 +54,6 @@
|
||||
'reference_picture_selection.cc',
|
||||
'../interface/vp8.h',
|
||||
'../interface/vp8_simulcast.h',
|
||||
'temporal_layers.h',
|
||||
'temporal_layers.cc',
|
||||
'vp8.cc',
|
||||
'vp8_simulcast.cc',
|
||||
],
|
||||
|
Loading…
x
Reference in New Issue
Block a user