video_frame.cc revision 5d1f7b1de12d16ceb2c938c56701a3e8bfa558f7
11ad5e5bc944bfb46689d87ace2773109cb54f5ephilip.liard@gmail.com// Copyright 2014 The Chromium Authors. All rights reserved. 21ad5e5bc944bfb46689d87ace2773109cb54f5ephilip.liard@gmail.com// Use of this source code is governed by a BSD-style license that can be 31ad5e5bc944bfb46689d87ace2773109cb54f5ephilip.liard@gmail.com// found in the LICENSE file. 41ad5e5bc944bfb46689d87ace2773109cb54f5ephilip.liard@gmail.com 51ad5e5bc944bfb46689d87ace2773109cb54f5ephilip.liard@gmail.com#include "ppapi/cpp/video_frame.h" 61ad5e5bc944bfb46689d87ace2773109cb54f5ephilip.liard@gmail.com 71ad5e5bc944bfb46689d87ace2773109cb54f5ephilip.liard@gmail.com#include "ppapi/cpp/module.h" 81ad5e5bc944bfb46689d87ace2773109cb54f5ephilip.liard@gmail.com#include "ppapi/cpp/module_impl.h" 91ad5e5bc944bfb46689d87ace2773109cb54f5ephilip.liard@gmail.com 101ad5e5bc944bfb46689d87ace2773109cb54f5ephilip.liard@gmail.comnamespace pp { 111ad5e5bc944bfb46689d87ace2773109cb54f5ephilip.liard@gmail.com 121ad5e5bc944bfb46689d87ace2773109cb54f5ephilip.liard@gmail.comnamespace { 131ad5e5bc944bfb46689d87ace2773109cb54f5ephilip.liard@gmail.com 141ad5e5bc944bfb46689d87ace2773109cb54f5ephilip.liard@gmail.comtemplate <> const char* interface_name<PPB_VideoFrame_0_1>() { 151ad5e5bc944bfb46689d87ace2773109cb54f5ephilip.liard@gmail.com return PPB_VIDEOFRAME_INTERFACE_0_1; 164784d0d0f3a84cdac8d7a6b99b72fbb6b1a98ca5philip.liard@gmail.com} 171ad5e5bc944bfb46689d87ace2773109cb54f5ephilip.liard@gmail.com 181ad5e5bc944bfb46689d87ace2773109cb54f5ephilip.liard@gmail.com} 191ad5e5bc944bfb46689d87ace2773109cb54f5ephilip.liard@gmail.com 201ad5e5bc944bfb46689d87ace2773109cb54f5ephilip.liard@gmail.comVideoFrame::VideoFrame() { 211ad5e5bc944bfb46689d87ace2773109cb54f5ephilip.liard@gmail.com} 221ad5e5bc944bfb46689d87ace2773109cb54f5ephilip.liard@gmail.com 231ad5e5bc944bfb46689d87ace2773109cb54f5ephilip.liard@gmail.comVideoFrame::VideoFrame(const VideoFrame& other) : Resource(other) { 241ad5e5bc944bfb46689d87ace2773109cb54f5ephilip.liard@gmail.com} 251ad5e5bc944bfb46689d87ace2773109cb54f5ephilip.liard@gmail.com 261ad5e5bc944bfb46689d87ace2773109cb54f5ephilip.liard@gmail.comVideoFrame::VideoFrame(const Resource& resource) : Resource(resource) { 271ad5e5bc944bfb46689d87ace2773109cb54f5ephilip.liard@gmail.com} 281ad5e5bc944bfb46689d87ace2773109cb54f5ephilip.liard@gmail.com 291ad5e5bc944bfb46689d87ace2773109cb54f5ephilip.liard@gmail.comVideoFrame::VideoFrame(PassRef, PP_Resource resource) 301ad5e5bc944bfb46689d87ace2773109cb54f5ephilip.liard@gmail.com : Resource(PASS_REF, resource) { 311ad5e5bc944bfb46689d87ace2773109cb54f5ephilip.liard@gmail.com} 324784d0d0f3a84cdac8d7a6b99b72fbb6b1a98ca5philip.liard@gmail.com 331ad5e5bc944bfb46689d87ace2773109cb54f5ephilip.liard@gmail.comVideoFrame::~VideoFrame() { 341ad5e5bc944bfb46689d87ace2773109cb54f5ephilip.liard@gmail.com} 351ad5e5bc944bfb46689d87ace2773109cb54f5ephilip.liard@gmail.com 361ad5e5bc944bfb46689d87ace2773109cb54f5ephilip.liard@gmail.comPP_TimeDelta VideoFrame::GetTimestamp() const { 371ad5e5bc944bfb46689d87ace2773109cb54f5ephilip.liard@gmail.com if (has_interface<PPB_VideoFrame_0_1>()) 381ad5e5bc944bfb46689d87ace2773109cb54f5ephilip.liard@gmail.com return get_interface<PPB_VideoFrame_0_1>()->GetTimestamp(pp_resource()); 391ad5e5bc944bfb46689d87ace2773109cb54f5ephilip.liard@gmail.com return 0.0; 401ad5e5bc944bfb46689d87ace2773109cb54f5ephilip.liard@gmail.com} 411ad5e5bc944bfb46689d87ace2773109cb54f5ephilip.liard@gmail.com 421ad5e5bc944bfb46689d87ace2773109cb54f5ephilip.liard@gmail.comvoid VideoFrame::SetTimestamp(PP_TimeDelta timestamp) { 431ad5e5bc944bfb46689d87ace2773109cb54f5ephilip.liard@gmail.com if (has_interface<PPB_VideoFrame_0_1>()) 441ad5e5bc944bfb46689d87ace2773109cb54f5ephilip.liard@gmail.com get_interface<PPB_VideoFrame_0_1>()->SetTimestamp(pp_resource(), timestamp); 454784d0d0f3a84cdac8d7a6b99b72fbb6b1a98ca5philip.liard@gmail.com} 464784d0d0f3a84cdac8d7a6b99b72fbb6b1a98ca5philip.liard@gmail.com 471ad5e5bc944bfb46689d87ace2773109cb54f5ephilip.liard@gmail.comPP_VideoFrame_Format VideoFrame::GetFormat() const { 484784d0d0f3a84cdac8d7a6b99b72fbb6b1a98ca5philip.liard@gmail.com if (has_interface<PPB_VideoFrame_0_1>()) 494784d0d0f3a84cdac8d7a6b99b72fbb6b1a98ca5philip.liard@gmail.com return get_interface<PPB_VideoFrame_0_1>()->GetFormat(pp_resource()); 504784d0d0f3a84cdac8d7a6b99b72fbb6b1a98ca5philip.liard@gmail.com return PP_VIDEOFRAME_FORMAT_UNKNOWN; 514784d0d0f3a84cdac8d7a6b99b72fbb6b1a98ca5philip.liard@gmail.com} 524784d0d0f3a84cdac8d7a6b99b72fbb6b1a98ca5philip.liard@gmail.com 534784d0d0f3a84cdac8d7a6b99b72fbb6b1a98ca5philip.liard@gmail.combool VideoFrame::GetSize(Size* size) const { 544784d0d0f3a84cdac8d7a6b99b72fbb6b1a98ca5philip.liard@gmail.com if (has_interface<PPB_VideoFrame_0_1>()) 554784d0d0f3a84cdac8d7a6b99b72fbb6b1a98ca5philip.liard@gmail.com return PP_ToBool(get_interface<PPB_VideoFrame_0_1>()->GetSize( 564784d0d0f3a84cdac8d7a6b99b72fbb6b1a98ca5philip.liard@gmail.com pp_resource(), &size->pp_size())); 574784d0d0f3a84cdac8d7a6b99b72fbb6b1a98ca5philip.liard@gmail.com return false; 584784d0d0f3a84cdac8d7a6b99b72fbb6b1a98ca5philip.liard@gmail.com} 594784d0d0f3a84cdac8d7a6b99b72fbb6b1a98ca5philip.liard@gmail.com 604784d0d0f3a84cdac8d7a6b99b72fbb6b1a98ca5philip.liard@gmail.comvoid* VideoFrame::GetDataBuffer() { 614784d0d0f3a84cdac8d7a6b99b72fbb6b1a98ca5philip.liard@gmail.com if (has_interface<PPB_VideoFrame_0_1>()) 621ad5e5bc944bfb46689d87ace2773109cb54f5ephilip.liard@gmail.com return get_interface<PPB_VideoFrame_0_1>()->GetDataBuffer(pp_resource()); 631ad5e5bc944bfb46689d87ace2773109cb54f5ephilip.liard@gmail.com return NULL; 644784d0d0f3a84cdac8d7a6b99b72fbb6b1a98ca5philip.liard@gmail.com} 654784d0d0f3a84cdac8d7a6b99b72fbb6b1a98ca5philip.liard@gmail.com 664784d0d0f3a84cdac8d7a6b99b72fbb6b1a98ca5philip.liard@gmail.comuint32_t VideoFrame::GetDataBufferSize() const { 674784d0d0f3a84cdac8d7a6b99b72fbb6b1a98ca5philip.liard@gmail.com if (has_interface<PPB_VideoFrame_0_1>()) { 684784d0d0f3a84cdac8d7a6b99b72fbb6b1a98ca5philip.liard@gmail.com return get_interface<PPB_VideoFrame_0_1>()->GetDataBufferSize( 694784d0d0f3a84cdac8d7a6b99b72fbb6b1a98ca5philip.liard@gmail.com pp_resource()); 704784d0d0f3a84cdac8d7a6b99b72fbb6b1a98ca5philip.liard@gmail.com } 714784d0d0f3a84cdac8d7a6b99b72fbb6b1a98ca5philip.liard@gmail.com return 0; 724784d0d0f3a84cdac8d7a6b99b72fbb6b1a98ca5philip.liard@gmail.com} 734784d0d0f3a84cdac8d7a6b99b72fbb6b1a98ca5philip.liard@gmail.com 744784d0d0f3a84cdac8d7a6b99b72fbb6b1a98ca5philip.liard@gmail.com} // namespace pp 754784d0d0f3a84cdac8d7a6b99b72fbb6b1a98ca5philip.liard@gmail.com