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