77 lines
2.1 KiB
C++

/*
* Copyright (c) 2011 The WebRTC project authors. All Rights Reserved.
*
* Use of this source code is governed by a BSD-style license
* that can be found in the LICENSE file in the root of the source
* tree. An additional intellectual property rights grant can be found
* in the file PATENTS. All contributing project authors may
* be found in the AUTHORS file in the root of the source tree.
*/
/*
* interpolator.h
* Interface to the WebRTC's interpolation functionality
*/
#ifndef WEBRTC_COMMON_VIDEO_INTERFACE_INTERPOLATOR_H
#define WEBRTC_COMMON_VIDEO_INTERFACE_INTERPOLATOR_H
#include "typedefs.h"
#include "vplib.h"
namespace webrtc
{
// supported interpolation types
enum interpolatorType
{
kBilinear
};
class interpolator
{
public:
interpolator();
~interpolator();
// Set interpolation properties:
//
// Return value : 0 if OK,
// : -1 - parameter error
// : -2 - general error
WebRtc_Word32 Set(WebRtc_UWord32 srcWidth, WebRtc_UWord32 srcHeight,
WebRtc_UWord32 dstWidth, WebRtc_UWord32 dstHeight,
VideoType srcVideoType, VideoType dstVideoType,
interpolatorType type);
// Interpolate frame
//
// Return value : Height of interpolated frame if OK,
// : -1 - parameter error
// : -2 - general error
WebRtc_Word32 Interpolate(const WebRtc_UWord8* srcFrame,
WebRtc_UWord8*& dstFrame);
private:
// Extract computation method given actual type
WebRtc_Word32 Method(interpolatorType type);
// Determine if the VideoTypes are currently supported
WebRtc_Word32 SupportedVideoType(VideoType srcVideoType,
VideoType dstVideoType);
interpolatorType _method;
WebRtc_UWord32 _srcWidth;
WebRtc_UWord32 _srcHeight;
WebRtc_UWord32 _dstWidth;
WebRtc_UWord32 _dstHeight;
};
} // namespace webrtc
#endif // WEBRTC_COMMON_VIDEO_INTERFACE_INTERPOLATOR_H