* Update libjingle to 50389769.
* Together with "Add texture support for i420 video frame." from
wuchengli@chromium.org.
https://webrtc-codereview.appspot.com/1413004
RISK=P1
TESTED=try bots
R=fischman@webrtc.org
Review URL: https://webrtc-codereview.appspot.com/1967004
git-svn-id: http://webrtc.googlecode.com/svn/trunk@4489 4adac7df-926f-26a2-2b94-8c16560cd09d
diff --git a/webrtc/modules/utility/source/video_frames_queue.cc b/webrtc/modules/utility/source/video_frames_queue.cc
index 535660c..d3d37be 100644
--- a/webrtc/modules/utility/source/video_frames_queue.cc
+++ b/webrtc/modules/utility/source/video_frames_queue.cc
@@ -14,6 +14,7 @@
#include <assert.h>
+#include "webrtc/common_video/interface/texture_video_frame.h"
#include "webrtc/modules/interface/module_common_types.h"
#include "webrtc/system_wrappers/interface/tick_util.h"
#include "webrtc/system_wrappers/interface/trace.h"
@@ -48,6 +49,16 @@
}
int32_t VideoFramesQueue::AddFrame(const I420VideoFrame& newFrame) {
+ if (newFrame.native_handle() != NULL) {
+ _incomingFrames.PushBack(new TextureVideoFrame(
+ static_cast<NativeHandle*>(newFrame.native_handle()),
+ newFrame.width(),
+ newFrame.height(),
+ newFrame.timestamp(),
+ newFrame.render_time_ms()));
+ return 0;
+ }
+
I420VideoFrame* ptrFrameToAdd = NULL;
// Try to re-use a VideoFrame. Only allocate new memory if it is necessary.
if (!_emptyFrames.Empty()) {
@@ -113,12 +124,17 @@
}
int32_t VideoFramesQueue::ReturnFrame(I420VideoFrame* ptrOldFrame) {
- ptrOldFrame->set_timestamp(0);
- ptrOldFrame->set_width(0);
- ptrOldFrame->set_height(0);
- ptrOldFrame->set_render_time_ms(0);
- ptrOldFrame->ResetSize();
- _emptyFrames.PushBack(ptrOldFrame);
+ // No need to reuse texture frames because they do not allocate memory.
+ if (ptrOldFrame->native_handle() == NULL) {
+ ptrOldFrame->set_timestamp(0);
+ ptrOldFrame->set_width(0);
+ ptrOldFrame->set_height(0);
+ ptrOldFrame->set_render_time_ms(0);
+ ptrOldFrame->ResetSize();
+ _emptyFrames.PushBack(ptrOldFrame);
+ } else {
+ delete ptrOldFrame;
+ }
return 0;
}