1c237f0ad875cde990bf9d89f41424b18809cc345henrike@webrtc.org/* 2c237f0ad875cde990bf9d89f41424b18809cc345henrike@webrtc.org * libjingle 3c237f0ad875cde990bf9d89f41424b18809cc345henrike@webrtc.org * Copyright 2013 Google Inc. 4c237f0ad875cde990bf9d89f41424b18809cc345henrike@webrtc.org * 5c237f0ad875cde990bf9d89f41424b18809cc345henrike@webrtc.org * Redistribution and use in source and binary forms, with or without 6c237f0ad875cde990bf9d89f41424b18809cc345henrike@webrtc.org * modification, are permitted provided that the following conditions are met: 7c237f0ad875cde990bf9d89f41424b18809cc345henrike@webrtc.org * 8c237f0ad875cde990bf9d89f41424b18809cc345henrike@webrtc.org * 1. Redistributions of source code must retain the above copyright notice, 9c237f0ad875cde990bf9d89f41424b18809cc345henrike@webrtc.org * this list of conditions and the following disclaimer. 10c237f0ad875cde990bf9d89f41424b18809cc345henrike@webrtc.org * 2. Redistributions in binary form must reproduce the above copyright notice, 11c237f0ad875cde990bf9d89f41424b18809cc345henrike@webrtc.org * this list of conditions and the following disclaimer in the documentation 12c237f0ad875cde990bf9d89f41424b18809cc345henrike@webrtc.org * and/or other materials provided with the distribution. 13c237f0ad875cde990bf9d89f41424b18809cc345henrike@webrtc.org * 3. The name of the author may not be used to endorse or promote products 14c237f0ad875cde990bf9d89f41424b18809cc345henrike@webrtc.org * derived from this software without specific prior written permission. 15c237f0ad875cde990bf9d89f41424b18809cc345henrike@webrtc.org * 16c237f0ad875cde990bf9d89f41424b18809cc345henrike@webrtc.org * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR IMPLIED 17c237f0ad875cde990bf9d89f41424b18809cc345henrike@webrtc.org * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF 18c237f0ad875cde990bf9d89f41424b18809cc345henrike@webrtc.org * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO 19c237f0ad875cde990bf9d89f41424b18809cc345henrike@webrtc.org * EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, 20c237f0ad875cde990bf9d89f41424b18809cc345henrike@webrtc.org * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, 21c237f0ad875cde990bf9d89f41424b18809cc345henrike@webrtc.org * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; 22c237f0ad875cde990bf9d89f41424b18809cc345henrike@webrtc.org * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, 23c237f0ad875cde990bf9d89f41424b18809cc345henrike@webrtc.org * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR 24c237f0ad875cde990bf9d89f41424b18809cc345henrike@webrtc.org * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF 25c237f0ad875cde990bf9d89f41424b18809cc345henrike@webrtc.org * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 26c237f0ad875cde990bf9d89f41424b18809cc345henrike@webrtc.org */ 27c237f0ad875cde990bf9d89f41424b18809cc345henrike@webrtc.org 28c237f0ad875cde990bf9d89f41424b18809cc345henrike@webrtc.org#include "talk/media/webrtc/webrtctexturevideoframe.h" 29c237f0ad875cde990bf9d89f41424b18809cc345henrike@webrtc.org 30c237f0ad875cde990bf9d89f41424b18809cc345henrike@webrtc.org#include "talk/base/common.h" 31c237f0ad875cde990bf9d89f41424b18809cc345henrike@webrtc.org#include "talk/base/logging.h" 32c237f0ad875cde990bf9d89f41424b18809cc345henrike@webrtc.org#include "talk/base/stream.h" 33c237f0ad875cde990bf9d89f41424b18809cc345henrike@webrtc.org 34c237f0ad875cde990bf9d89f41424b18809cc345henrike@webrtc.org#define UNIMPLEMENTED \ 35c237f0ad875cde990bf9d89f41424b18809cc345henrike@webrtc.org LOG(LS_ERROR) << "Call to unimplemented function "<< __FUNCTION__; \ 36c237f0ad875cde990bf9d89f41424b18809cc345henrike@webrtc.org ASSERT(false) 37c237f0ad875cde990bf9d89f41424b18809cc345henrike@webrtc.org 38c237f0ad875cde990bf9d89f41424b18809cc345henrike@webrtc.orgnamespace cricket { 39c237f0ad875cde990bf9d89f41424b18809cc345henrike@webrtc.org 40c237f0ad875cde990bf9d89f41424b18809cc345henrike@webrtc.orgWebRtcTextureVideoFrame::WebRtcTextureVideoFrame( 41c237f0ad875cde990bf9d89f41424b18809cc345henrike@webrtc.org webrtc::NativeHandle* handle, int width, int height, int64 elapsed_time, 42c237f0ad875cde990bf9d89f41424b18809cc345henrike@webrtc.org int64 time_stamp) 43c237f0ad875cde990bf9d89f41424b18809cc345henrike@webrtc.org : handle_(handle), width_(width), height_(height), 44c237f0ad875cde990bf9d89f41424b18809cc345henrike@webrtc.org elapsed_time_(elapsed_time), time_stamp_(time_stamp) {} 45c237f0ad875cde990bf9d89f41424b18809cc345henrike@webrtc.org 46c237f0ad875cde990bf9d89f41424b18809cc345henrike@webrtc.orgWebRtcTextureVideoFrame::~WebRtcTextureVideoFrame() {} 47c237f0ad875cde990bf9d89f41424b18809cc345henrike@webrtc.org 48c237f0ad875cde990bf9d89f41424b18809cc345henrike@webrtc.orgbool WebRtcTextureVideoFrame::InitToBlack( 49c237f0ad875cde990bf9d89f41424b18809cc345henrike@webrtc.org int w, int h, size_t pixel_width, size_t pixel_height, int64 elapsed_time, 50c237f0ad875cde990bf9d89f41424b18809cc345henrike@webrtc.org int64 time_stamp) { 51c237f0ad875cde990bf9d89f41424b18809cc345henrike@webrtc.org UNIMPLEMENTED; 52c237f0ad875cde990bf9d89f41424b18809cc345henrike@webrtc.org return false; 53c237f0ad875cde990bf9d89f41424b18809cc345henrike@webrtc.org} 54c237f0ad875cde990bf9d89f41424b18809cc345henrike@webrtc.org 55c237f0ad875cde990bf9d89f41424b18809cc345henrike@webrtc.orgbool WebRtcTextureVideoFrame::Reset( 56c237f0ad875cde990bf9d89f41424b18809cc345henrike@webrtc.org uint32 fourcc, int w, int h, int dw, int dh, uint8* sample, 57c237f0ad875cde990bf9d89f41424b18809cc345henrike@webrtc.org size_t sample_size, size_t pixel_width, size_t pixel_height, 58c237f0ad875cde990bf9d89f41424b18809cc345henrike@webrtc.org int64 elapsed_time, int64 time_stamp, int rotation) { 59c237f0ad875cde990bf9d89f41424b18809cc345henrike@webrtc.org UNIMPLEMENTED; 60c237f0ad875cde990bf9d89f41424b18809cc345henrike@webrtc.org return false; 61c237f0ad875cde990bf9d89f41424b18809cc345henrike@webrtc.org} 62c237f0ad875cde990bf9d89f41424b18809cc345henrike@webrtc.org 63c237f0ad875cde990bf9d89f41424b18809cc345henrike@webrtc.orgconst uint8* WebRtcTextureVideoFrame::GetYPlane() const { 64c237f0ad875cde990bf9d89f41424b18809cc345henrike@webrtc.org UNIMPLEMENTED; 65c237f0ad875cde990bf9d89f41424b18809cc345henrike@webrtc.org return NULL; 66c237f0ad875cde990bf9d89f41424b18809cc345henrike@webrtc.org} 67c237f0ad875cde990bf9d89f41424b18809cc345henrike@webrtc.org 68c237f0ad875cde990bf9d89f41424b18809cc345henrike@webrtc.orgconst uint8* WebRtcTextureVideoFrame::GetUPlane() const { 69c237f0ad875cde990bf9d89f41424b18809cc345henrike@webrtc.org UNIMPLEMENTED; 70c237f0ad875cde990bf9d89f41424b18809cc345henrike@webrtc.org return NULL; 71c237f0ad875cde990bf9d89f41424b18809cc345henrike@webrtc.org} 72c237f0ad875cde990bf9d89f41424b18809cc345henrike@webrtc.org 73c237f0ad875cde990bf9d89f41424b18809cc345henrike@webrtc.orgconst uint8* WebRtcTextureVideoFrame::GetVPlane() const { 74c237f0ad875cde990bf9d89f41424b18809cc345henrike@webrtc.org UNIMPLEMENTED; 75c237f0ad875cde990bf9d89f41424b18809cc345henrike@webrtc.org return NULL; 76c237f0ad875cde990bf9d89f41424b18809cc345henrike@webrtc.org} 77c237f0ad875cde990bf9d89f41424b18809cc345henrike@webrtc.org 78c237f0ad875cde990bf9d89f41424b18809cc345henrike@webrtc.orguint8* WebRtcTextureVideoFrame::GetYPlane() { 79c237f0ad875cde990bf9d89f41424b18809cc345henrike@webrtc.org UNIMPLEMENTED; 80c237f0ad875cde990bf9d89f41424b18809cc345henrike@webrtc.org return NULL; 81c237f0ad875cde990bf9d89f41424b18809cc345henrike@webrtc.org} 82c237f0ad875cde990bf9d89f41424b18809cc345henrike@webrtc.org 83c237f0ad875cde990bf9d89f41424b18809cc345henrike@webrtc.orguint8* WebRtcTextureVideoFrame::GetUPlane() { 84c237f0ad875cde990bf9d89f41424b18809cc345henrike@webrtc.org UNIMPLEMENTED; 85c237f0ad875cde990bf9d89f41424b18809cc345henrike@webrtc.org return NULL; 86c237f0ad875cde990bf9d89f41424b18809cc345henrike@webrtc.org} 87c237f0ad875cde990bf9d89f41424b18809cc345henrike@webrtc.org 88c237f0ad875cde990bf9d89f41424b18809cc345henrike@webrtc.orguint8* WebRtcTextureVideoFrame::GetVPlane() { 89c237f0ad875cde990bf9d89f41424b18809cc345henrike@webrtc.org UNIMPLEMENTED; 90c237f0ad875cde990bf9d89f41424b18809cc345henrike@webrtc.org return NULL; 91c237f0ad875cde990bf9d89f41424b18809cc345henrike@webrtc.org} 92c237f0ad875cde990bf9d89f41424b18809cc345henrike@webrtc.org 93c237f0ad875cde990bf9d89f41424b18809cc345henrike@webrtc.orgint32 WebRtcTextureVideoFrame::GetYPitch() const { 94c237f0ad875cde990bf9d89f41424b18809cc345henrike@webrtc.org UNIMPLEMENTED; 95c237f0ad875cde990bf9d89f41424b18809cc345henrike@webrtc.org return width_; 96c237f0ad875cde990bf9d89f41424b18809cc345henrike@webrtc.org} 97c237f0ad875cde990bf9d89f41424b18809cc345henrike@webrtc.org 98c237f0ad875cde990bf9d89f41424b18809cc345henrike@webrtc.orgint32 WebRtcTextureVideoFrame::GetUPitch() const { 99c237f0ad875cde990bf9d89f41424b18809cc345henrike@webrtc.org UNIMPLEMENTED; 100c237f0ad875cde990bf9d89f41424b18809cc345henrike@webrtc.org return (width_ + 1) / 2; 101c237f0ad875cde990bf9d89f41424b18809cc345henrike@webrtc.org} 102c237f0ad875cde990bf9d89f41424b18809cc345henrike@webrtc.org 103c237f0ad875cde990bf9d89f41424b18809cc345henrike@webrtc.orgint32 WebRtcTextureVideoFrame::GetVPitch() const { 104c237f0ad875cde990bf9d89f41424b18809cc345henrike@webrtc.org UNIMPLEMENTED; 105c237f0ad875cde990bf9d89f41424b18809cc345henrike@webrtc.org return (width_ + 1) / 2; 106c237f0ad875cde990bf9d89f41424b18809cc345henrike@webrtc.org} 107c237f0ad875cde990bf9d89f41424b18809cc345henrike@webrtc.org 108c237f0ad875cde990bf9d89f41424b18809cc345henrike@webrtc.orgVideoFrame* WebRtcTextureVideoFrame::Copy() const { 109c237f0ad875cde990bf9d89f41424b18809cc345henrike@webrtc.org return new WebRtcTextureVideoFrame( 110c237f0ad875cde990bf9d89f41424b18809cc345henrike@webrtc.org handle_, width_, height_, elapsed_time_, time_stamp_); 111c237f0ad875cde990bf9d89f41424b18809cc345henrike@webrtc.org} 112c237f0ad875cde990bf9d89f41424b18809cc345henrike@webrtc.org 113c237f0ad875cde990bf9d89f41424b18809cc345henrike@webrtc.orgbool WebRtcTextureVideoFrame::MakeExclusive() { 114c237f0ad875cde990bf9d89f41424b18809cc345henrike@webrtc.org UNIMPLEMENTED; 115c237f0ad875cde990bf9d89f41424b18809cc345henrike@webrtc.org return false; 116c237f0ad875cde990bf9d89f41424b18809cc345henrike@webrtc.org} 117c237f0ad875cde990bf9d89f41424b18809cc345henrike@webrtc.org 118c237f0ad875cde990bf9d89f41424b18809cc345henrike@webrtc.orgsize_t WebRtcTextureVideoFrame::CopyToBuffer(uint8* buffer, size_t size) const { 119c237f0ad875cde990bf9d89f41424b18809cc345henrike@webrtc.org UNIMPLEMENTED; 120c237f0ad875cde990bf9d89f41424b18809cc345henrike@webrtc.org return 0; 121c237f0ad875cde990bf9d89f41424b18809cc345henrike@webrtc.org} 122c237f0ad875cde990bf9d89f41424b18809cc345henrike@webrtc.org 123c237f0ad875cde990bf9d89f41424b18809cc345henrike@webrtc.orgsize_t WebRtcTextureVideoFrame::ConvertToRgbBuffer( 124c237f0ad875cde990bf9d89f41424b18809cc345henrike@webrtc.org uint32 to_fourcc, uint8* buffer, size_t size, int stride_rgb) const { 125c237f0ad875cde990bf9d89f41424b18809cc345henrike@webrtc.org UNIMPLEMENTED; 126c237f0ad875cde990bf9d89f41424b18809cc345henrike@webrtc.org return 0; 127c237f0ad875cde990bf9d89f41424b18809cc345henrike@webrtc.org} 128c237f0ad875cde990bf9d89f41424b18809cc345henrike@webrtc.org 129c237f0ad875cde990bf9d89f41424b18809cc345henrike@webrtc.orgbool WebRtcTextureVideoFrame::CopyToPlanes( 130c237f0ad875cde990bf9d89f41424b18809cc345henrike@webrtc.org uint8* dst_y, uint8* dst_u, uint8* dst_v, int32 dst_pitch_y, 131c237f0ad875cde990bf9d89f41424b18809cc345henrike@webrtc.org int32 dst_pitch_u, int32 dst_pitch_v) const { 132c237f0ad875cde990bf9d89f41424b18809cc345henrike@webrtc.org UNIMPLEMENTED; 133c237f0ad875cde990bf9d89f41424b18809cc345henrike@webrtc.org return false; 134c237f0ad875cde990bf9d89f41424b18809cc345henrike@webrtc.org} 135c237f0ad875cde990bf9d89f41424b18809cc345henrike@webrtc.org 136c237f0ad875cde990bf9d89f41424b18809cc345henrike@webrtc.orgvoid WebRtcTextureVideoFrame::CopyToFrame(VideoFrame* dst) const { 137c237f0ad875cde990bf9d89f41424b18809cc345henrike@webrtc.org UNIMPLEMENTED; 138c237f0ad875cde990bf9d89f41424b18809cc345henrike@webrtc.org} 139c237f0ad875cde990bf9d89f41424b18809cc345henrike@webrtc.org 140c237f0ad875cde990bf9d89f41424b18809cc345henrike@webrtc.orgtalk_base::StreamResult WebRtcTextureVideoFrame::Write( 141c237f0ad875cde990bf9d89f41424b18809cc345henrike@webrtc.org talk_base::StreamInterface* stream, int* error) { 142c237f0ad875cde990bf9d89f41424b18809cc345henrike@webrtc.org UNIMPLEMENTED; 143c237f0ad875cde990bf9d89f41424b18809cc345henrike@webrtc.org return talk_base::SR_ERROR; 144c237f0ad875cde990bf9d89f41424b18809cc345henrike@webrtc.org} 145c237f0ad875cde990bf9d89f41424b18809cc345henrike@webrtc.orgvoid WebRtcTextureVideoFrame::StretchToPlanes( 146c237f0ad875cde990bf9d89f41424b18809cc345henrike@webrtc.org uint8* dst_y, uint8* dst_u, uint8* dst_v, int32 dst_pitch_y, 147c237f0ad875cde990bf9d89f41424b18809cc345henrike@webrtc.org int32 dst_pitch_u, int32 dst_pitch_v, size_t width, size_t height, 148c237f0ad875cde990bf9d89f41424b18809cc345henrike@webrtc.org bool interpolate, bool vert_crop) const { 149c237f0ad875cde990bf9d89f41424b18809cc345henrike@webrtc.org UNIMPLEMENTED; 150c237f0ad875cde990bf9d89f41424b18809cc345henrike@webrtc.org} 151c237f0ad875cde990bf9d89f41424b18809cc345henrike@webrtc.org 152c237f0ad875cde990bf9d89f41424b18809cc345henrike@webrtc.orgsize_t WebRtcTextureVideoFrame::StretchToBuffer( 153c237f0ad875cde990bf9d89f41424b18809cc345henrike@webrtc.org size_t dst_width, size_t dst_height, uint8* dst_buffer, size_t size, 154c237f0ad875cde990bf9d89f41424b18809cc345henrike@webrtc.org bool interpolate, bool vert_crop) const { 155c237f0ad875cde990bf9d89f41424b18809cc345henrike@webrtc.org UNIMPLEMENTED; 156c237f0ad875cde990bf9d89f41424b18809cc345henrike@webrtc.org return 0; 157c237f0ad875cde990bf9d89f41424b18809cc345henrike@webrtc.org} 158c237f0ad875cde990bf9d89f41424b18809cc345henrike@webrtc.org 159c237f0ad875cde990bf9d89f41424b18809cc345henrike@webrtc.orgvoid WebRtcTextureVideoFrame::StretchToFrame( 160c237f0ad875cde990bf9d89f41424b18809cc345henrike@webrtc.org VideoFrame* dst, bool interpolate, bool vert_crop) const { 161c237f0ad875cde990bf9d89f41424b18809cc345henrike@webrtc.org UNIMPLEMENTED; 162c237f0ad875cde990bf9d89f41424b18809cc345henrike@webrtc.org} 163c237f0ad875cde990bf9d89f41424b18809cc345henrike@webrtc.org 164c237f0ad875cde990bf9d89f41424b18809cc345henrike@webrtc.orgVideoFrame* WebRtcTextureVideoFrame::Stretch( 165c237f0ad875cde990bf9d89f41424b18809cc345henrike@webrtc.org size_t dst_width, size_t dst_height, bool interpolate, 166c237f0ad875cde990bf9d89f41424b18809cc345henrike@webrtc.org bool vert_crop) const { 167c237f0ad875cde990bf9d89f41424b18809cc345henrike@webrtc.org UNIMPLEMENTED; 168c237f0ad875cde990bf9d89f41424b18809cc345henrike@webrtc.org return NULL; 169c237f0ad875cde990bf9d89f41424b18809cc345henrike@webrtc.org} 170c237f0ad875cde990bf9d89f41424b18809cc345henrike@webrtc.org 171c237f0ad875cde990bf9d89f41424b18809cc345henrike@webrtc.orgbool WebRtcTextureVideoFrame::SetToBlack() { 172c237f0ad875cde990bf9d89f41424b18809cc345henrike@webrtc.org UNIMPLEMENTED; 173c237f0ad875cde990bf9d89f41424b18809cc345henrike@webrtc.org return false; 174c237f0ad875cde990bf9d89f41424b18809cc345henrike@webrtc.org} 175c237f0ad875cde990bf9d89f41424b18809cc345henrike@webrtc.org 176c237f0ad875cde990bf9d89f41424b18809cc345henrike@webrtc.orgVideoFrame* WebRtcTextureVideoFrame::CreateEmptyFrame( 177c237f0ad875cde990bf9d89f41424b18809cc345henrike@webrtc.org int w, int h, size_t pixel_width, size_t pixel_height, int64 elapsed_time, 178c237f0ad875cde990bf9d89f41424b18809cc345henrike@webrtc.org int64 time_stamp) const { 179c237f0ad875cde990bf9d89f41424b18809cc345henrike@webrtc.org UNIMPLEMENTED; 180c237f0ad875cde990bf9d89f41424b18809cc345henrike@webrtc.org return NULL; 181c237f0ad875cde990bf9d89f41424b18809cc345henrike@webrtc.org} 182c237f0ad875cde990bf9d89f41424b18809cc345henrike@webrtc.org 183c237f0ad875cde990bf9d89f41424b18809cc345henrike@webrtc.org} // namespace cricket 184